Zum Artikel

Controller-Dateien und Motorprofile

Geprüft 2026-11-01

Ergebnis: Bereiten Sie eine vollständige Konfiguration für Ihren Arm vor. Die Controller-Datei wählt Ports, Motoren und Workflow aus; Ein Profil legt die Steuerparameter eines Motors fest. Diese Dateien ersetzen weder die Encoderkalibrierung noch die gespeicherten Verfahrgrenzen.

Erstellen Sie lokale Dateien

Beginnen Sie für die Wiedergabe benannter Posen mit dem Beispiel:

macOS / Linux
cp tools/poses/replay.example.json tools/poses/controller.local.json
cp host/arm-control/profile.example.json tools/poses/motor-1.local.json
Windows PowerShell
Copy-Item tools/poses/replay.example.json tools/poses/controller.local.json
Copy-Item host/arm-control/profile.example.json tools/poses/motor-1.local.json

Bearbeiten Sie die lokalen Kopien. Das Beispiel controller.local.json enthält nur Motor 1. Fügen Sie alle aufgezeichneten IDs für einen Arm hinzu. Erstellen Sie separate motor-2.local.json-, motor-3.local.json– und andere Profile, die jeweils auf ihre Verbindung überprüft werden.

Die Struktur mit sechs Motoren unten veranschaulicht das Format, keine allgemein sicheren Einstellungen. Ersetzen Sie /dev/ttyUSB0 durch den tatsächlichen Port, z. B. COM3 unter Windows. Die Variable SERVO_PORT eines Terminals wird nicht automatisch in JSON ersetzt.

{
  "followerPort": "/dev/ttyUSB0",
  "baudRate": 1000000,
  "maxAgeMs": 100,
  "acceleration": 1000,
  "rampTimeMs": 50,
  "profiles": {
    "1": "motor-1.local.json",
    "2": "motor-2.local.json",
    "3": "motor-3.local.json",
    "4": "motor-4.local.json",
    "5": "motor-5.local.json",
    "6": "motor-6.local.json"
  },
  "replay": {
    "speed": 500,
    "holdMs": 1000,
    "repeat": 1,
    "moveTimeoutMs": 30000,
    "toleranceCounts": 10
  }
}

Speichern Sie dieses JSON als tools/poses/controller.local.json, mit motor-1.local.json bis motor-6.local.json daneben. Aktualisieren Sie Profilschlüssel, Posenaufzeichnungen und verbundene Geräte für verschiedene IDs konsistent.

Profileinstellungen

Das vollständige Quellbeispiel ist:

{
  "kpQ8": 256,
  "kdQ8": 32,
  "kiQ8": 0,
  "integralLimit": 0,
  "effortLimit": 100,
  "velocityLimit": 500,
  "velocityFilterQ8": 64,
  "gravitySlewEffortPerS": 1000,
  "velocityFeedforward": {
    "positiveGainQ8": 0,
    "negativeGainQ8": 0,
    "effortLimit": 0
  }
}
Einstellung Interpretation
kpQ8, kdQ8, kiQ8 Verstärkung multipliziert mit 256: 256 bedeutet 1,0 und 32 bedeutet 0,125
integralLimit Begrenzung nur des Integralbeitrags
effortLimit Gesamtleistungsgrenze, 1–1000 PWM-Stellgrößeneinheiten; weder Drehmoment noch Ampere
velocityLimit Die maximale Geschwindigkeit dieses Motors in Counts/s
velocityFilterQ8 1–255; Ein größerer Wert reagiert schneller, filtert aber weniger Rauschen
gravitySlewEffortPerS Geschwindigkeitsbegrenzung für Änderungen der Schwerkraft-Stellgröße; Es aktiviert kein Modell allein
velocityFeedforward Zwei nichtnegative Richtungssteuerungsverstärkungen und eine Ausgangsobergrenze; Alle drei auf Null setzen, um sie zu deaktivieren

Gemeinsame acceleration und rampTimeMs gehören zur Controller-Datei. Ein Motorprofil kann sie mit accelerationLimit und rampTimeMs überschreiben. Bereiche und Beziehungen finden Sie im Konfigurationsregister.

Pfade und IDs

  • Profilpfade und gravityModel beziehen sich auf die Controller-Datei, nicht auf das Arbeitsverzeichnis.
  • Der config-Pfad eines Optimierungsplans ist relativ zur Plandatei.
  • Benannte Posen liefern Motor-IDs; Für diese Wiedergabe sind keine joints erforderlich.
  • Tuning und Profilanwendung erfordern joints: [{"followerId": 1}, …], die jeden gesteuerten Motor abdecken.
  • Live-Teleoperation und Sitzungswiedergabe erfordern leaderId, followerId und mapping.

Überprüfen Sie die Pfade, wenn Sie ein Beispiel zwischen Verzeichnissen verschieben. Das weggelassene joints-Array ist im Wiedergabebeispiel mit benannter Pose beabsichtigt.

Anwenden von Einstellungen

Profile werden in den Erweiterungs-RAM geschrieben und müssen nach dem Zurücksetzen erneut angewendet werden. EEPROM-Kalibrierung und Verfahrweggrenzen sind getrennt. Replay wendet seine Konfiguration automatisch an. Ein geändertes Profil deaktiviert diesen Motor kurzzeitig; Durch einen Neuanlauf können alle konfigurierten Motoren freigegeben werden.

Die mitgelieferten Einstellungen für host/arm-control/profiles/so101/ und so102/ stammen von bestimmten aufrechten Armen mit leeren Greifern. Das SO-101-Profil behält die unaufgelöste M1-Oszillation und langsamere M2-Auslenkungen bei; Das schnelle SO-102-Profil benötigt noch eine Hardwarevalidierung. Es handelt sich nicht um universelle Standardwerte für die Erstausführung.

Überprüfen Sie: gültiges JSON, vorhandene relative Dateien, ein Profil pro Motor und überprüfte Einstellungen für den Mechanismus. Führen Sie dann eine Wiederholungsvorschau durch. Eine gültige Datei stellt kein sicheres Hardwareverhalten her.


Startseite der Dokumentation · Quellrevision: a995f77. Erweiterung 9.0.