Schritt 8: Inferenz auf D-Robotics RDK S100
Den detaillierten Implementierungsablauf finden Sie unter diesem LinkLeRobot ACT Policy Full Workflow Document
End-to-End-Bereitstellung des ACT-Modells auf RDK S100/S100P
Dieser Abschnitt führt Sie durch den vollständigen Bereitstellungszyklus für das ACT-Modell auf der Hardware der Serie D-Robotics RDK S100. Der gesamte Prozess umfasst drei Kernphasen: Modellexport, Quantisierungs-Kompilierung und Ausführung auf dem Board.
Voraussetzungen:
- Entwicklungsrechner (Host): wird verwendet, um die Schritte 1 und 2 auszuführen, üblicherweise Ihr Modell-Trainingsrechner (er benötigt ordentliche Leistung und eine installierte Docker-Umgebung).
- Board (Edge): das D-Robotics RDK S100/S100P, wird verwendet, um Schritt 3 auszuführen.
- Toolchain: Dieser Artikel stützt sich auf das Repository
rdk_LeRobot_tools; Details finden Sie im GitHub-Repository.
Wichtiger Hinweis zur Versionskompatibilität (unbedingt lesen): Der aktuelle ONNX-Exportablauf von rdk_LeRobot_tools ist vollständig kompatibel mit LeRobot-Datensätzen v2.1. Da die neueste Version v3.0 die Datenstruktur ändert, wird dringend empfohlen, das Haupt-lerobot-Repository vor den Arbeiten in diesem Abschnitt auf den spezifischen Commit umzuschalten, der mit v2.1 kompatibel ist, damit der Exportablauf reibungslos läuft. Empfohlene Commit-ID: 8cfab3882480bdde38e42d93a9752de5ed42cae2
Phase 1: Modell in das ONNX-Format exportieren 💻 (auf dem Entwicklungsrechner)
Zunächst müssen wir das mit PyTorch trainierte Modell in ein Zwischenformat (ONNX) exportieren.
1. Das Toolchain-Repository klonen
Gehen Sie in Ihr Arbeitsverzeichnis lerobot und klonen Sie die RDK-spezifische Toolchain:
cd lerobot
# 1. Auf die stabile, mit v2.1-Datensätzen kompatible Version umschalten
git checkout 8cfab3882480bdde38e42d93a9752de5ed42cae2
# 2. Die D-Robotics-RDK-spezifische Toolchain klonen
git clone https://github.com/D-Robotics/rdk_LeRobot_tools.git2. Die Exportparameter konfigurieren
Bearbeiten Sie die Datei rdk_LeRobot_tools/bpu_export_config.yaml und passen Sie die Konfiguration an Ihre tatsächlichen Pfade an:
dataset:
root: "data/so101_pick_place" # absoluter oder relativer Pfad zu Ihrem Datensatz
act_path: "outputs/train/act_so101/checkpoints/050000/pretrained_model" # Pfad zu den ursprünglichen PyTorch-Modellgewichten
type: "nash-e" # Zielhardware-Architektur; RDK S100 entspricht nash-e / S100P entspricht nash-m3. Das Exportskript ausführen
# ONNX exportieren (Entwicklungsrechner)
python export_bpu_actpolicy.py --config bpu_export_config.yaml✅ Erfolgsanzeige: Im aktuellen Verzeichnis wird ein Ordner bpu_export_output angelegt, der das Skript build_all.sh und die später benötigten Quantisierungskalibrierungsdaten enthält.
Phase 2: Das BPU-Modell kompilieren 🐳 (in einer Docker-Umgebung auf dem Entwicklungsrechner)
Das Quantisieren und Kompilieren von D-Robotics-BPU-Modellen erfordert eine OpenExplorer-(OE-)Umgebung. Wir empfehlen, die Umgebung mit Docker zu isolieren.
1. Docker-Umgebung und Image vorbereiten
Stellen Sie sicher, dass Docker auf dem Entwicklungsrechner installiert ist (offizielle Installationsanleitung). Laden Sie das empfohlene CPU-Image herunter und laden Sie es:
# Das heruntergeladene Offline-Image-Archiv laden
sudo docker load -i ai_toolchain_ubuntu_22_s100_xxx.tar2. Den Kompilierungscontainer starten
Warnung vor einer Stolperfalle: Das Kompilieren des Modells benötigt eine große Menge Shared Memory. Fügen Sie unbedingt das Argument --shm-size=15g hinzu, sonst sind IPC-Speicherfehler sehr wahrscheinlich.
Binden Sie das Arbeitsverzeichnis des Entwicklungsrechners (mit dem gerade exportierten Ordner) in den Container ein:
sudo docker run -it --rm \
--network host \
--shm-size=15g \
-v "$(pwd)":/workspace \
--workdir /workspace \
<docker-image-name> /bin/bash(Hinweis: Ersetzen Sie <docker-image-name> durch den tatsächlichen Image-Namen, den Sie über sudo docker images sehen.)
3. Die Kompilierung im Container ausführen
Sobald Sie sich im Container befinden, führen Sie das Ein-Klick-Kompilierungsskript aus:
cd /workspace/bpu_export_output
bash build_all.sh4. Die Build-Artefakte prüfen
Nach Abschluss der Kompilierung wird unter bpu_export_output ein Ordner bpu_output/ angelegt. Er enthält alle Kern-Dateien, die zum Ausführen auf dem RDK-Board benötigt werden:
Klicken Sie, um die Verzeichnisstruktur von
bpu_output/anzuzeigenBPU_ACTPolicy_TransformerLayers.hbm(quantisierte Modelldatei)BPU_ACTPolicy_VisionEncoder.hbm(quantisierte Modelldatei)action_mean.npyund mehrere weitere Normalisierungsparameter des Datensatzescamera1_mean.npyund weitere Kamera-Statistikparameter
Phase 3: Bereitstellung auf dem Board und Inferenz 🤖 (auf dem RDK S100)
Prüfung der Voraussetzungen:
- Auf dem RDK-Board ist bereits die Laufzeitumgebung
D-Robotics/leroboteingerichtet, mit installiertemhbm_runtime. - Der gesamte im vorherigen Schritt erzeugte Ordner
bpu_output/wurde vollständig auf das RDK-Board kopiert, perscp, USB-Stick oder Ähnlichem. - Die grundlegende Teleoperations-Konfiguration ist bereits erledigt, sodass der serielle Port des Arms, der USB-Port der Kamera und die Kalibrierungsdatei korrekt konfiguriert sind.
1. BPU-beschleunigte Inferenz ausführen
Gehen Sie im Terminal auf dem RDK-Board in das Toolchain-Verzeichnis und starten Sie das Steuerungsskript:
cd rdk_LeRobot_tools
python bpu_control_robot.py \
--bpu-act-path ../bpu_output \
--fps 30 \
--inference-time 60🛠️ Fehlerbehebung
Wenn bei einer tatsächlichen Bereitstellung Probleme auftreten, prüfen Sie anhand der folgenden Liste:
Der Arm bewegt sich nicht?
- Prüfen Sie, ob das Gerät eingebunden ist: Geben Sie im Terminal
ls /dev/ttyACM*ein und bestätigen Sie, dass der serielle Port des Arms korrekt ist. - Prüfen Sie die Berechtigungen: Versuchen Sie, das Inferenzskript mit
sudoauszuführen, oder fügen Sie den aktuellen Benutzer zur Gruppedialouthinzu.
- Prüfen Sie, ob das Gerät eingebunden ist: Geben Sie im Terminal
Kamera-Streaming-Fehler / anormales Bild / der Arm zittert auf der Stelle?
- Bestätigen Sie, ob der Kamera-Index wegen eines Hot-Plugs verrutscht ist, und prüfen Sie, ob die Kameraparameter im Code zu den tatsächlichen
/dev/video*passen.
- Bestätigen Sie, ob der Kamera-Index wegen eines Hot-Plugs verrutscht ist, und prüfen Sie, ob die Kameraparameter im Code zu den tatsächlichen
Beim Kopieren von vom Container erzeugten Dateien auf dem Entwicklungsrechner erscheint „unzureichende Berechtigungen"?
- In einem Docker-eingebundenen Verzeichnis erzeugte Dateien gehören standardmäßig root; führen Sie auf dem Entwicklungsrechner
sudo chown -R $USER:$USER bpu_export_outputaus, um das zu beheben.
- In einem Docker-eingebundenen Verzeichnis erzeugte Dateien gehören standardmäßig root; führen Sie auf dem Entwicklungsrechner

