Étape 8 : Inférence sur D-Robotics RDK S100
Pour le déroulé détaillé de la mise en œuvre, consultez ce lienDocumentation complète du flux de travail LeRobot ACT Policy
Déploiement de bout en bout du modèle ACT sur RDK S100/S100P
Cette section vous guide à travers la boucle de déploiement complète du modèle ACT sur le matériel D-Robotics RDK S100. L'ensemble du processus se divise en trois étapes clés : l'export du modèle, la compilation de quantification et l'exécution à bord.
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 disposer de Docker).
- Carte (Edge) : la D-Robotics RDK S100/S100P, sert à exécuter l'étape 3.
- Chaîne d'outils : cet article s'appuie sur le dépôt
rdk_LeRobot_tools; voir le dépôt GitHub pour plus de détails.
Note importante sur la compatibilité des versions (à lire absolument) : le flux d'export ONNX actuel de rdk_LeRobot_tools est parfaitement compatible avec les jeux de données LeRobot v2.1. Comme la dernière version v3.0 modifie 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 sur le commit spécifique compatible avec la v2.1, afin que le flux d'export se déroule sans accroc. Commit ID recommandé : 8cfab3882480bdde38e42d93a9752de5ed42cae2
Étape 1 : exporter le modèle au format ONNX 💻 (sur la machine de développement)
D'abord, nous devons exporter le modèle entraîné avec PyTorch vers un format intermédiaire (ONNX).
1. Cloner 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 spécifique au RDK :
cd lerobot
# 1. Basculer vers la version stable compatible avec les jeux de données v2.1
git checkout 8cfab3882480bdde38e42d93a9752de5ed42cae2
# 2. Cloner la chaîne d'outils spécifique au RDK de D-Robotics
git clone https://github.com/D-Robotics/rdk_LeRobot_tools.git2. Configurer les paramètres d'export
Modifiez le fichier rdk_LeRobot_tools/bpu_export_config.yaml et ajustez la configuration pour qu'elle corresponde à vos chemins réels :
dataset:
root: "data/so101_pick_place" # chemin absolu ou relatif vers votre jeu de données
act_path: "outputs/train/act_so101/checkpoints/050000/pretrained_model" # chemin vers les 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 en ONNX (machine de développement)
python export_bpu_actpolicy.py --config bpu_export_config.yaml✅ Indicateur de succès : un dossier bpu_export_output est créé dans le répertoire courant, contenant le script build_all.sh et les données de calibration de quantification nécessaires par la suite.
Étape 2 : compiler le modèle BPU 🐳 (dans un environnement Docker sur la machine de développement)
La quantification et la compilation des modèles BPU D-Robotics nécessitent un 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
Mise en garde : la compilation du modèle nécessite une grande quantité de mémoire partagée. Veillez à ajouter l'argument --shm-size=15g, sinon des erreurs de mémoire IPC sont très probables.
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 que vous voyez via sudo docker images.)
3. Lancer la compilation à l'intérieur du conteneur
Une fois à l'intérieur du conteneur, lancez le script de compilation en un clic :
cd /workspace/bpu_export_output
bash build_all.sh4. Vérifier les artefacts de build
Une fois la compilation terminée, un dossier bpu_output/ est créé 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 plusieurs autres paramètres de normalisation du jeu de donnéescamera1_mean.npyet d'autres paramètres statistiques de la caméra
Étape 3 : déploiement à bord et inférence 🤖 (sur le RDK S100)
Vérification des prérequis :
- La carte RDK dispose déjà de l'environnement d'exécution
D-Robotics/lerobotconfiguré, avechbm_runtimeinstallé. - L'intégralité du dossier
bpu_output/généré à l'étape précédente a été copiée sur la carte RDK, viascp, une clé USB ou un moyen similaire. - La configuration de base de la téléopération est déjà effectuée, en s'assurant que le port série du bras, le port USB de la caméra et le fichier 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 démarrez le script de contrôle :
cd rdk_LeRobot_tools
python bpu_control_robot.py \
--bpu-act-path ../bpu_output \
--fps 30 \
--inference-time 60🛠️ Dépannage
Si vous rencontrez des problèmes lors d'un déploiement réel, reportez-vous à la liste suivante :
Le bras ne bouge pas ?
- Vérifiez que le périphérique est monté : tapez
ls /dev/ttyACM*dans le terminal et confirmez que le port série du bras est correct. - Vérifiez les permissions : essayez d'exécuter le script d'inférence avec
sudo, ou ajoutez l'utilisateur courant au groupedialout.
- Vérifiez que le périphérique est monté : tapez
Erreur de flux caméra / image anormale / le bras tremble sur place ?
- Vérifiez si l'index de la caméra a changé à cause d'un branchement à chaud, et contrôlez que les paramètres de la caméra dans le code correspondent bien au
/dev/video*réel.
- Vérifiez si l'index de la caméra a changé à cause d'un branchement à chaud, et contrôlez que les paramètres de la caméra dans le code correspondent bien au
La copie des fichiers générés par le conteneur sur la machine de développement signale des « permissions insuffisantes » ?
- Les fichiers créés dans un répertoire monté par Docker appartiennent à root par défaut ; 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 à root par défaut ; exécutez

