Controller-Dateien und Motorprofile
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
gravityModelbeziehen 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
jointserforderlich. - Tuning und Profilanwendung erfordern
joints: [{"followerId": 1}, …], die jeden gesteuerten Motor abdecken. - Live-Teleoperation und Sitzungswiedergabe erfordern
leaderId,followerIdundmapping.
Ü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.