Inférence sur D-Robotics RDK S100
Le processus d'implémentation détaillé est disponible via ce lien Documentation complète du flux LeRobot ACT Policy
Déploiement de bout en bout du modèle ACT sur RDK S100/S100P
Cette section vous guide à travers la boucle complète de déploiement du modèle ACT sur le matériel de la série RDK S100 de D-Robotics. L'ensemble du processus se divise en trois phases clés : export du modèle, compilation et quantification et exécution sur la carte.
Prérequis :
Machine de développement (Host) : sert à exécuter les étapes 1 et 2 ; il s'agit généralement de votre machine d'entraînement de modèles (elle doit être assez performante et avoir Docker installé).
Carte (Edge) : D-Robotics RDK S100/S100P, utilisée pour l'étape 3.
Chaîne d'outils : ce document s'appuie sur le dépôt
rdk_LeRobot_tools; pour plus de détails, voir adresse du dépôt GitHub.
Avertissement important sur la compatibilité des versions (à lire) : le flux d'export ONNX de la version actuelle de rdk_LeRobot_tools est parfaitement compatible avec la version LeRobot datasets v2.1. Comme la dernière version v3.0 a modifié la structure des données, il est fortement recommandé, avant d'effectuer les opérations de cette section, de basculer le dépôt principal lerobot d'origine sur le commit spécifique compatible avec v2.1, afin de garantir un flux d'export fluide.
Commit ID recommandé : 8cfab3882480bdde38e42d93a9752de5ed42cae2
Phase 1 : export du modèle au format ONNX 💻 (à effectuer sur la machine de développement)
Tout d'abord, nous devons exporter le modèle entraîné avec PyTorch vers un format intermédiaire (ONNX).
1. Récupérer le dépôt de la chaîne d'outils
Placez-vous dans votre répertoire de travail lerobot et clonez la chaîne d'outils dédiée à RDK :
cd lerobot
# 1. Passer à la version stable compatible avec les datasets v2.1
git checkout 8cfab3882480bdde38e42d93a9752de5ed42cae2
# 2. Récupérer la chaîne d'outils dédiée au robot D-Robotics RDK
git clone https://github.com/D-Robotics/rdk_LeRobot_tools.git2. Configurer les paramètres d'export
Éditez le fichier rdk_LeRobot_tools/bpu_export_config.yaml et adaptez la configuration à vos chemins réels :
dataset:
root: "data/so101_pick_place" # chemin absolu ou relatif de votre dataset
act_path: "outputs/train/act_so101/checkpoints/050000/pretrained_model" # chemin des poids du modèle PyTorch d'origine
type: "nash-e" # architecture matérielle cible : RDK S100 correspond à nash-e / S100P correspond à nash-m3. Exécuter le script d'export
# Exporter l'ONNX (machine de développement)
python export_bpu_actpolicy.py --config bpu_export_config.yaml✅ Signe de réussite : un dossier bpu_export_output est généré dans le répertoire courant ; il contient le script build_all.sh et les données de calibration de quantification nécessaires par la suite.
Phase 2 : compilation du modèle BPU 🐳 (à effectuer dans l'environnement Docker de la machine de développement)
La quantification et la compilation du modèle BPU de D-Robotics dépendent de l'environnement OpenExplorer (OE). Nous recommandons d'utiliser Docker pour isoler l'environnement.
1. Préparer l'environnement Docker et l'image
Assurez-vous que Docker est installé sur la machine de développement (guide d'installation officiel). Téléchargez l'image CPU recommandée et chargez-la :
# Charger l'archive d'image hors ligne téléchargée
sudo docker load -i ai_toolchain_ubuntu_22_s100_xxx.tar2. Démarrer le conteneur de compilation
Conseil pour éviter les pièges : la compilation du modèle nécessite une mémoire partagée assez grande. Ajoutez impérativement le paramètre --shm-size=15g, sinon des erreurs de mémoire IPC surviennent très facilement.
Montez le répertoire de travail de la machine de développement (contenant le dossier que vous venez d'exporter) dans le conteneur :
sudo docker run -it --rm \
--network host \
--shm-size=15g \
-v "$(pwd)":/workspace \
--workdir /workspace \
<docker-image-name> /bin/bash(Remarque : remplacez <docker-image-name> par le nom réel de l'image affiché par sudo docker images.)
3. Exécuter la compilation dans le conteneur
Une fois à l'intérieur du conteneur, exécutez le script de compilation en une commande :
cd /workspace/bpu_export_output
bash build_all.sh4. Vérifier les artefacts de compilation
Une fois la compilation terminée, un dossier bpu_output/ est généré sous bpu_export_output. Il contient tous les fichiers essentiels nécessaires à l'exécution sur la carte RDK :
Cliquez pour voir la structure du répertoire
bpu_output/BPU_ACTPolicy_TransformerLayers.hbm(fichier de modèle quantifié)BPU_ACTPolicy_VisionEncoder.hbm(fichier de modèle quantifié)action_mean.npyet d'autres paramètres de normalisation du datasetcamera1_mean.npyet d'autres paramètres statistiques de caméra
Phase 3 : déploiement et inférence sur la carte 🤖 (à effectuer sur le RDK S100)
Vérification des prérequis :
L'environnement d'exécution
D-Robotics/lerobotest déjà configuré sur la carte RDK, ethbm_runtimeest installé.Le dossier complet
bpu_output/généré à l'étape précédente a été copié sur la carte RDK viascp, une clé USB, etc.La configuration de base de la téléopération est terminée : vérifiez que le port série du bras, le port USB de la caméra et les fichiers de calibration sont correctement configurés.
1. Lancer l'inférence accélérée par BPU
Dans le terminal de la carte RDK, placez-vous dans le répertoire de la chaîne d'outils et lancez le script de contrôle :
cd rdk_LeRobot_tools
python bpu_control_robot.py \
--bpu-act-path ../bpu_output \
--fps 30 \
--inference-time 60🛠️ Résolution des problèmes courants (Troubleshooting)
En cas de problème lors du déploiement, vérifiez la liste suivante :
Le bras ne bouge pas ?
Vérifiez le montage des périphériques : saisissez
ls /dev/ttyACM*dans le terminal et confirmez que le numéro de port correspondant au bras est correct.Vérifiez les permissions : essayez d'exécuter le script d'inférence avec
sudo, ou ajoutez l'utilisateur actuel au groupedialout.
Erreur de flux caméra / image anormale / le bras tremble sur place ?
- Vérifiez si l'index de la caméra (Camera Index) a dérivé à cause d'un branchement à chaud, et si la configuration des paramètres de caméra dans le code correspond bien aux
/dev/video*réels.
- Vérifiez si l'index de la caméra (Camera Index) a dérivé à cause d'un branchement à chaud, et si la configuration des paramètres de caméra dans le code correspond bien aux
La machine de développement affiche « permissions insuffisantes » lors de la copie des fichiers générés par le conteneur ?
- Les fichiers créés dans un répertoire monté par Docker appartiennent par défaut à root ; exécutez
sudo chown -R $USER:$USER bpu_export_outputsur la machine de développement pour corriger cela.
- Les fichiers créés dans un répertoire monté par Docker appartiennent par défaut à root ; exécutez

