🧪 Neue Tutorials in Arbeit — vom Roboterarm bis zum Sensor
Zum Inhalt springen

02 · Validierung des Simulationsmodells (MJCF laden und ansteuern) ​

Voraussetzung: 01 Umgebung einrichten abgeschlossen. Dieses Kapitel ist reine Simulationsvalidierung; Hardware muss nicht angeschlossen werden.

Modellquellen ​

Die drei öffentlichen MJCF-Modelle des SO-ARM101 sind in diesem Projekt alle als funktionsfähig verifiziert:

KurznameDateiQuelle
Offiziell – neue KalibrierungSO101/so101_new_calib.xmlOffizielles Repository TheRobotStudio/SO-ARM100 (die Vergleichsvalidierung dieses Tutorials stammt von dort; dieses Repository enthält das Original-Zip nicht)
Offiziell – alte KalibrierungSO101/so101_old_calib.xmlDasselbe Repository (nicht im Zip enthalten, muss heruntergeladen werden)
ROS2-Beschreibungspaketso_arm101_description/mjcf/so_arm101.xmlTutorial-Anhang dieses Repositories SO-ARM101_ROS2.zip

Hinweis: Der Zip-Extraktionsablauf wird von einer früheren Version von so101_assets.py bereitgestellt und bleibt nachvollziehbar erhalten; seit dem 2026-10-16 wurde der Simulationsroboter auf das SO-ARM100-Modell aus mujoco_menagerie umgestellt (vendored unter assets/menagerie_so_arm100/; Gründe und Kernpunkte der Migration siehe Designhinweise in 07).

Ansteuerungs- und Rendering-Validierung ​

bash
export UV_CACHE_DIR='C:\Users\admin\AppData\Local\Temp\uv-cache'

# 仓库自带、可直接运行的是 menagerie 模型(仿真机器人默认也用它)
uv run --frozen --with mujoco python examples/so101_mujoco/load_and_drive.py \
    --model examples/so101_mujoco/assets/menagerie_so_arm100/so_arm100.xml \
    --out-dir examples/so101_mujoco/outputs/renders/model_check
ParameterBeschreibung
--modelPfad zum MJCF-Modell. Direkt aus dem Repository nutzbar ist examples/so101_mujoco/assets/menagerie_so_arm100/so_arm100.xml (die drei historischen Modelle aus der Tabelle oben müssen für eine erneute Prüfung zuerst aus dem jeweiligen Repository der Spalte „Quelle“ beschafft und der Pfad entsprechend ersetzt werden)
--out-dirAusgabeverzeichnis: Validierungsvideo, Standbilder und die Textdatei mit der Strukturzusammenfassung werden hier abgelegt (Standard out)
--tagPräfix der Ausgabedateinamen, standardmäßig der Modell-Dateiname
--settle / --fps / --width / --heightStabilisierungsdauer pro Pose (Sekunden), Videobildrate, Rendering-Auflösung; Standard 25 fps, 960×720, normalerweise nicht zu ändern

Das Skript gibt eine Strukturzusammenfassung aus (Gelenke/Aktoren/Verstärkungen/Bereiche) und rendert ein Validierungsvideo aus „sechs Gelenke nacheinander durchfahren + koordinierte Sinuskurve“ sowie Standbilder. Beispiele der Strukturzusammenfassung siehe reports/ (im Repository enthalten); die Vergleichsvideos (media/) sind zu groß und werden nicht mit dem Repository ausgeliefert – mit dem obigen Befehl lassen sie sich jederzeit neu erzeugen.

Wesentliche Unterschiede der drei Modelle (gemessen) ​

ElementOffiziell – neue KalibrierungOffiziell – alte KalibrierungROS2-Beschreibungspaket
Nullpunkt-SemantikStellwegmitte des Gelenkshorizontal vollständig gestreckte PositionMitte des Stellwegs
Gelenknamenshoulder_panwie linksshoulder_pan_joint (Suffix)
Positionsverstärkungkp=998.22, kv=2.731kp=17.8, kv=0kp=998.22
GreifereinheitBogenmaß, HingeBogenmaß, Hinge0–1 normalisiert
Selbstkollisionsausschlusskeinerkeinervorhanden (6 Paare)

Gemessener Tracking-Fehler: Neue Kalibrierung und Beschreibungspaket halten im Stillstand eine Abweichung von 0,0005 rad, die alte Kalibrierung 0,03 rad (Absinken um ca. 1,7°, kp um Faktor 56 schwächer). Wird dieselbe Policy in der Simulation mit einem anderen Modell evaluiert, ergeben sich andere Dynamiken – darauf achten, welche Version aufgezeichnet wurde.

Modellverhalten, das man sich merken muss ​

  1. Positive Richtung von shoulder_lift zeigt nach unten: Beim Ansteuern wird „Absenken“ mit positivem Winkel verwendet; bei Teleoperations-Mapping oder Datenumrechnung zuerst das Vorzeichen prüfen.
  2. Bodenkontakt blockiert: Am unteren Anschlag berührt die Fingerspitze den Boden und wird gestoppt (das Skript hat einen eingebauten 8-cm-Bodenabstandsschutz, der die Amplitude automatisch begrenzt).
  3. Die offiziellen Modelle haben keine Kamera und kein Keyframe; die Variante mit Kamera so101_new_calib_camera.xml existiert und kann später für visuelle Daten genutzt werden.