Damiao AGV Community und FAQ
Häufig gestellte Fragen zum DBUS-Protokoll, Navigation, Fehlerbehebung und mobilen Manipulation mit OpenArm. Forum- und Support-Links.
Häufig gestellte Fragen
Wie lauten die genauen Einstellungen der seriellen Schnittstelle für das Damiao AGV?
Die AGV-Firmware hört auf UART5 (Pin PD2, RX) auf 100.000 Baud mit 8 Datenbits, gerader Parität und 2 Stoppbits (8E2). Öffnen Sie in pyserial den Port mit:
serial.Serial(
port='/dev/ttyUSB0',
baudrate=100000,
bytesize=serial.EIGHTBITS,
parity=serial.PARITY_EVEN,
stopbits=serial.STOPBITS_TWO
)
Ein sehr häufiger Fehler ist die Verwendung von 8N1 (keine Parität, 1 Stoppbit). Das AGV scheint eine Verbindung herzustellen, ignoriert jedoch stillschweigend alle Frames oder misst sie falsch. Immer verwenden PARITY_EVEN Und STOPBITS_TWO.
Wie codiert der 18-Byte-DBUS-Frame die Geschwindigkeit?
Der DBUS-Frame packt vier 11-Bit-Kanalwerte (ch0–ch3) mithilfe der Little-Endian-Bitpackung in die Bytes 0–5. Jeder Kanal reicht von 0 bis 2047 mit 1024 als Mitte (Neutral/Stopp). Die Geschwindigkeitsabbildung ist: ch3 = 1024 + vx × amp (nach vorne), ch2 = 1024 + vy × amp (seitlich), ch0 = 1024 + (−vw) × amp (Drehung). Die Bytes 6–15 sind auf Null gesetzte Maus-/Tastaturfelder. Die Bytes 16–17 enthalten Kanal 4, festgelegt auf 1024. Siehe Spezifikationen für die vollständige Kanalkartentabelle.
Das AGV bewegt sich kurz und stoppt dann – was passiert?
Dies ist die Auslösung der Befehls-Timeout-Sicherheitsfunktion. Wenn kein Bewegungs- oder Stoppbefehl empfangen wird --cmd-timeout-ms (Standard 300 ms), setzt der Agent automatisch alle Geschwindigkeitskanäle auf Null und das AGV stoppt. Dies bedeutet normalerweise, dass die Plattform Befehle nicht schnell genug sendet oder dass es durch Netzwerklatenz zu Lücken kommt. Lösungen: (1) erhöhen --cmd-timeout-ms 500 Stellen Sie bei Verbindungen mit hoher Latenz (2) sicher, dass das Browser-Teleop-Panel aktiv wiederholt sendet move Befehle mit ~10 Hz, während eine Richtungstaste gedrückt gehalten wird. (3) Überprüfen Sie Ihre Netzwerk-RTT zur Plattform.
Das AGV bewegt sich in die falsche Richtung – wie kann ich das beheben?
Verwenden Sie die Achseninversionsflags auf dem Agenten – keine Firmware-Änderungen erforderlich:
# Flip forward/backward python3 dami_agent.py --session RC-XXXX --serial-port /dev/ttyUSB0 --invert-x # Flip lateral (left/right) python3 dami_agent.py ... --invert-y # Flip rotation direction python3 dami_agent.py ... --invert-z
Testen Sie jede Achse einzeln (z. B. senden Sie nur einen X-Befehl, beobachten Sie die Bewegung), um festzustellen, welche Flags für Ihre physische Installationsausrichtung benötigt werden.
Kann ich ohne das physische AGV testen?
Ja. Passieren --mock beim Starten dami_agent.py. Im Mock-Modus wird die serielle Schnittstelle nie geöffnet. Der Regelkreis codiert weiterhin DBUS-Frames (im Speicher gespeichert), Telemetriedaten werden an die Plattform WebSocket weitergeleitet und die gesamte Befehlsanalyse funktioniert identisch. Auf diese Weise können Sie die vollständige WebSocket-Pipeline überprüfen, die Benutzeroberfläche der Plattform testen und ohne Hardware in CI integrieren:
python3 dami_agent.py --session RC-XXXX-XXXX --mock
Ich erhalte beim Starten die Fehlermeldung „pyserial.SerialException“ – was muss ich überprüfen?
Erste: ls /dev/ttyUSB* Zur Bestätigung erscheint der Adapter. Ist dies nicht der Fall, ist der USB-zu-TTL-Adaptertreiber möglicherweise nicht geladen (versuchen Sie es mit einem anderen USB-Anschluss). Wenn der Port angezeigt wird, Sie aber einen Berechtigungsfehler erhalten, fügen Sie Ihren Benutzer zur Dialout-Gruppe hinzu:
sudo usermod -aG dialout $USER
# Log out and back in, then retry
Wenn der Port in der Geräteliste angezeigt wird, der Agent ihn aber immer noch nicht öffnen kann, ist er möglicherweise von einem anderen Prozess geöffnet (z. B. einer vorherigen Agenteninstanz oder einem seriellen Monitor). Schließen Sie alle anderen Prozesse, die den Port verwenden.
Der Agent stellt eine Verbindung her, aber die Plattform zeigt keine Telemetrie an – was ist los?
Bestätigen Sie die übergebene Sitzungs-ID --session ist immer noch in der Plattform-Benutzeroberfläche aktiv. Sitzungen können bei Inaktivität ablaufen. Überprüfen Sie die Terminalausgabe des Agenten auf die Registrierungs-Handshake-Antwort. Wenn „Handshake fehlgeschlagen“ oder nicht „Bereit“ ausgegeben wird, ist die Sitzung möglicherweise abgelaufen. Erstellen Sie eine neue Sitzung auf der Plattform und übergeben Sie die neue ID an den Agenten. Überprüfen Sie das auch --backend verweist auf die richtige WebSocket-URL der Plattform.
Wie stelle ich die Geschwindigkeit des AGV ein?
Passen Sie die an --amp Parameter. Dadurch wird der Kanalversatz von der Mitte (1024) festgelegt, der den Bewegungsbefehl darstellt. Der Standardwert ist 660, was etwa 64 % der Höchstgeschwindigkeit entspricht. Für einen langsameren, kontrollierteren Betrieb bei am Arm montierten Manipulationsaufgaben verwenden Sie --amp 400. Für maximale Geschwindigkeit auf offenem Boden verwenden Sie bis zu --amp 900. Beachten Sie, dass Mecanum-Räder bei sehr hohen Geschwindigkeiten etwas an seitlicher Effizienz verlieren – behalten Sie es bei --amp unter 800 für seitliche Manöver.
Tipps zur Integration mit OpenArm
Planen Sie Ihre Kabelführung, bevor Sie den Arm montieren
Führen Sie die CAN-/USB-Kabel des Arms durch den internen Kabelführungskanal des AGV, bevor Sie den Arm festschrauben. Sobald der Arm montiert ist, ist es schwierig, die Kabel neu zu verlegen, ohne ihn zu entfernen. Lassen Sie am Handgelenk 20–30 cm zusätzlichen Kabelspielraum – der Arbeitsbereich des Arms erstreckt sich zu den Seiten und nach hinten, wo die Kabelspannung bei Gelenkbewegungen zu unerwartetem Widerstand führen kann.
Verwenden Sie den niedrigeren --amp, wenn der Arm montiert und in Bewegung ist
Ein Roboterarm am AGV hebt den Massenschwerpunkt an. Eine schnelle Querbeschleunigung kann dazu führen, dass die Plattform wackelt, was zu Störungen in der Flugbahn des Arms führt – insbesondere bei Positionen mit größerer Reichweite. Beginnen Sie mit --amp 400 für die Basisbewegung während der Armbedienung und erhöhen Sie diese nur bei Bedarf. Bei der Teleoperationsdatenerfassung führt eine konsistente langsame Basisbewegung zu saubereren Trainingsdaten als schnelle, ruckartige Bewegungen.
Registrieren Sie beide Agenten mit unterschiedlichen --node-id-Werten
Wenn Sie den AGV-Agenten und den Arm-Agenten gleichzeitig in derselben Plattformsitzung ausführen, geben Sie jedem einen eigenen Namen --node-id. Dadurch wird sichergestellt, dass die Plattform separate Telemetrieströme anzeigt und das Episoden-JSONL-Archiv die Daten jedes Knotens unabhängig kennzeichnet. Empfohlene Namenskonvention: damiao-base für das AGV und openarm-right / openarm-left für Armknoten.
Koordinieren Sie die Basisbewegung und die Armbewegung im Teleop
Im Teleop-Panel der Fearless Platform erscheinen beide Knoten gleichzeitig. Ein nützliches Teleoperationsmuster ist: Basis anhalten, Arm zum Greifen bewegen, Basis zum Neupositionieren bewegen, wiederholen. Das Episoden-JSONL-Archiv erfasst die Telemetriedaten aller Knoten synchron nach Zeitstempel, sodass nachgelagerte Richtlinien aus dem gesamten Verlauf der mobilen Manipulation lernen können. Erwägen Sie die Verwendung der Aufzeichnungsmarkierungen der Plattform, um zu kommentieren, wo in jeder Episode die Basisbewegung in die Armbewegung übergeht.
Fügen Sie den Paxini GEN3-Sensor für kontaktreiche mobile Manipulationsdaten hinzu
Montieren Paxini PX-6AX GEN3 taktile Sensoren an den OpenArm-Fingerspitzen oder am Endeffektor. Registrieren Sie die Sensorbrücke als dritten Knoten in derselben Sitzung. Die Plattform zeichnet taktile, Armgelenk- und Basisgeschwindigkeitsströme synchron auf und erstellt so umfangreiche kontaktbewusste mobile Manipulationsdatensätze für das Verhaltensklonen und Verstärkungslernen.
Dokumentation und zugehörige Hardware
Forum & Support
Haben Sie eine Frage, die hier nicht beantwortet wurde? Fragen Sie die SVRC-Community oder wenden Sie sich an den Hardware-Support.
Gehen Sie zum Forum → Kontaktieren Sie den Support →