Elektronik, Verkabelung und Stromversorgung
Strido teilt den Roboter in zwei Versorgungsdomänen mit gemeinsamer Masse:
- Servodomäne (6,0 V): Akku → 25-A-Hauptsicherung → Arming-Loop-Key → zwei Hobbywing UBEC-10A → WAGO-Servobus im vorderen und hinteren Hohlraum → 12 Servos. Der PCA9685 liefert nur die Servo-Signale; Servostrom fließt nie über eine Logikplatine.
- Logikdomäne (5 V): Akku → 25-A-Hauptsicherung → 7,5-A-Logiksicherung → Pololu-Tasterschalter → INA260 (misst Akkuspannung und Logikstrom) → Pololu D36V50F5 5 V/5,5 A → 5-V-GPIO-Pins des Raspberry Pi 5. Der Pi versorgt den XIAO ESP32-S3 (Bewegungscontroller) und den LiDAR-Adapter über USB.
Die Platinenpositionen sind im CAD festgelegt; die Durchdringungsprüfung erfasst jede Platine, jeden Abstandsbolzen und jeden Steckverbinderkörper. Auch jedes Kabel wird im CAD verlegt (hardware/wiring.yaml, siehe Kabelbaum): Die Renderings, die 3D-Ansicht und die Montageanleitung stellen es dar, und die Verkabelungsprüfung weist nach, dass jede Leitung ihr Ziel erreicht, jede Schlaufe über ein Hüftgelenk über den gesamten Hüftbereich Spiel hat und kein Kabel in den Betriebsposen ein bewegtes Teil berührt.
Stromversorgung (Servodomäne links, Logikdomäne rechts):
Signale:
Nennwerte und Begründung der Teileauswahl
| Element | Nennwert | Last in diesem Roboter | Reserve / Hinweis |
|---|---|---|---|
| Servo SPT5435LV | nur 4,8–6,0 V; PWM-Signal 3,3–5,0 V; 35 kg·cm @ 6 V; Blockierstrom 3,5 A | Stehen ≈ 0,7 N·m am Knie (MuJoCo) | 6,0 V ist die Obergrenze: Verwenden Sie nicht die 7,4-V-Einstellung des UBEC. Der PCA9685 gibt 3,3-V-Pulse aus (VCC = XIAO 3V3), genau den niedrigsten zulässigen Signalpegel des Servos: innerhalb der Spezifikation, ohne Reserve |
| Hobbywing UBEC-10A ×2 | 2–6S Eingang; 6,0 V ohne Jumper; je 10 A dauerhaft, 15 A Spitze | je 6 Servos | insgesamt 20 A dauerhaft / 30 A Spitze. Sechs blockierte Servos ziehen 21 A, mehr als die 15 A Spitze eines UBEC: Fahren Sie nie alle Beine gegen harte Anschläge und schalten Sie nie Strom zu, während Servos angesteuert werden (siehe erstes Einschalten) |
| WAGO 221-415 | 32 A, 0,2–4 mm² | ≤ 3 Servos + Einspeisung je Klemme | 2 Klemmen (+/–) je Bein, insgesamt 8 |
| Hauptsicherung (ATO) | 25 A | Servozweig (≤ 2 × 10 A UBEC-Ausgang ≈ 21 A bei leerem Akku) + Logik | schützt die 14-AWG-Hauptleitung dahinter; W01 (≈ 0,15 m vom Akkueingang) ist wie die eigene Leitung des Akkus ungesichert |
| Logiksicherung (ATO) | 7,5 A | Logikzweig ≤ 3 A | schützt die 18-AWG-Logikverkabelung nach ihrem Halter. Der Abgriff von W02 ist die eigene 14-AWG-Leitung des Halters, daher liegt kein Draht dünner als 14 AWG allein hinter der 25-A-Sicherung |
| Pololu #2813 (Big Pushbutton Power Switch HP) | 4,5–40 V; 6 A dauerhaft bei 55 °C | Logikzweig ≤ 3 A | nie im Servozweig; kein Not-Aus (Pololu) |
| INA260 | 36 V, 15 A, 1,25 mA LSB | Logikzweig | misst die Akkuspannung für die Unterspannungsabschaltung. Erforderlich: ohne ihn verweigert die Firmware die Ansteuerung der Servos |
| Pololu D36V50F5 | 5 V ± 4 %, 5,5 A typisch dauerhaft | Pi 5 + USB + Kamera ≈ 2–3 A | Pi benötigt PSU_MAX_CURRENT=5000 (siehe unten) |
| XT60-Arming-Port | 30 A dauerhaft | Servozweig | der Loop-Key ist ein XT60 mit 14-AWG-Brücke, siehe die Steckerregel unten |
Jeder Versorgungseingang und jedes Logiksignal wird von python -m strido_verify.electronics gegen seinen Nennbereich geprüft (Schienen, Versorgungen und Signale in hardware/electronics.yaml; Bericht in verification/electronics.md). Drei bestehen ohne Reserve: Servo-PWM und LCD laufen mit 3,3 V, dem niedrigsten Pegel, den beide akzeptieren; eine schwache 3V3-Schiene des XIAO (unter 3,3 V) ist daher das Erste, was Sie messen sollten, wenn ein Servo zittert oder das LCD dunkel bleibt.
XT60-Kontaktregel (der Loop-Key darf nie auf den Akku passen)
Beschreiben Sie XT60-Hälften nach ihren Kontakten, nicht als „Stecker/Buchse“ (Händler verwenden beide Wörter für beide Hälften): Eine Hälfte hat Stifte, die andere Buchsenkontakte (Amass: XT60-M = Stifte, XT60-F = Buchsenkontakte). Der Loop-Key ist ein kurzgeschlossener Steckverbinder, daher muss er denselben Kontakttyp wie der Steckverbinder des Akkus tragen: Dann lässt er sich nicht mit dem Akku verbinden. Der Akkueingang des Roboters und der Arming-Port tragen den anderen Typ. Beispiel: Akku mit Buchsenkontakten → Akkueingang des Roboters Stifte, Arming-Port Stifte, Loop-Key Buchsenkontakte. Das CAD modelliert einen Arming-Port XT60H-F (Buchsenkontakte), also einen Akku mit Stiften; tauschen Sie alle drei, wenn Ihr Akku Buchsenkontakte hat.
Prüfen Sie vor dem Brücken des Steckers: Nehmen Sie das ungebrückte Steckergehäuse und versuchen Sie es auf den Akkustecker zu stecken; es darf nicht passen. Testen Sie nie mit einem gebrückten Stecker. Der Akku selbst passt in den Arming-Port; beschriften Sie den Port mit „ARM“ und schließen Sie den Akku immer am Akkueingang unter dem Deck an (W00 in den XT60H von W01/W04).
Verkabelungsliste
Jedes Kabel aus hardware/wiring.yaml; Verläufe, Zuschnittlängen und die Prüfungen stehen in der Verkabelungsprüfung (aus dem CAD neu erzeugt). Farbe: rot = +, schwarz/braun = –, Signale wie angegeben.
| ID | Von | Nach | Kabel | Anschluss |
|---|---|---|---|---|
| W00 | Akku (eigene 12-AWG-Leitung) | Akkueingang XT60H, unter dem Deck | mit dem Akku geliefert | in Schritt 22 einstecken |
| W01 | Akkueingang XT60H (+) | Halter der 25-A-Hauptsicherung (hinterer Hohlraum) | 14 AWG rot in Spiralschlauch | löten, Schrumpfschlauch; an die auf 20 mm gekürzte Halterleitung gespleißt; ungesichert |
| W02 | Ausgang Hauptsicherung (Halterleitung auf 20 mm gekürzt) | Spleiß in der Rückschale → Arming-Port Kontakt 1 und eigene Eingangsleitung des Logiksicherungshalters (auf Zuschnittlänge gekürzt) | 14 AWG rot | löten + Schrumpfschlauch an den Spleißen |
| W03 | Arming-Port Kontakt 2 | Spleiß unter dem Deck → UBEC vorne IN+ und UBEC hinten IN+ | 14 AWG rot | löten; der Loop-Key verbindet die beiden Kontakte des Ports |
| W04 | Akkueingang XT60H (–) | Massestern daneben → UBEC IN– ×2 (14 AWG), Schalter GND (18 AWG) | 14 / 18 AWG schwarz | ein Sternpunkt am Akkueingang |
| W05 / W06 | UBEC vorne / hinten OUT | Port 0 von WAGO-Platz 0, vorderer / hinterer Hohlraum | UBEC-Leitung mit 18-AWG-Paar verlängert | 11 mm abisolieren, in das WAGO-Paar (rot V+ oben, schwarz GND unten) |
| W07 / W08 | WAGO-Port 4 von Platz 0 | Port 0 von Platz 1 (zweites Bein des Hohlraums) | 18 AWG, ein Draht je Schiene | entlang der WAGO-Stirnseiten |
| S-leg-joint (12) | Servokabel | am Basis-Kabelbinder aufgeteilt: rot/braun → WAGO-Paar des Beins (Port Hüfte 1, Oberschenkel 2, Knie 3); orange → PCA9685-Kanal | eigenes 260-mm-Servokabel, auf Länge gekürzt | rot/braun abisoliert in die WAGO; orange neu gecrimpt (Dupont-Buchse, 1-poliges Gehäuse) |
| W09 | Ausgang 7,5-A-Logiksicherung (Halterleitung auf 20 mm gekürzt) | Schalter VIN | 18 AWG rot | Spleiß am Halter, Schraubklemme am Schalter; seine Masse ist W04 |
| W10 | Schalter VOUT | INA260 VIN+ | 18 AWG rot | Schraubklemmen; der INA260 ist ein High-Side-Shunt |
| W11 | INA260 VIN– | D36V50F5 VIN | 18 AWG rot | Schraubklemme, löten |
| W24 | Schalter GND | D36V50F5 GND | 18 AWG schwarz | die Klemmleiste des INA260 nimmt nur VIN+ und VIN– auf; seine Logikmasse kommt über I²C (W19) |
| W12 | D36V50F5 VOUT / GND | Pi-5-Header Pins 2 + 4 (5 V), 6 + 14 (GND) | 22 AWG ×4 | Dupont-Buchse gecrimpt, ein Draht je Pin (2 × 1,5 A je Schiene) |
| W13 | 12-mm-Taster | Schalter A und B | 22-AWG-Paar | löten, Schrumpfschlauch |
| W14 | Pi 5 USB-A (unterer Port des linken Stapels) | XIAO USB-C | 20 cm USB-A (90°) → C | Überlänge im vorderen Hohlraum falten |
| W15 | Pi 5 USB-A (oberer Port) | LiDAR-USB-Adapter (im Sockel) | 20 cm USB-A (90°) → C | über den Pi neben dem Kühlerlüfter, nach oben durch den Schlitz der Oberschale |
| W16 | Pi 5 CAM/DISP 0 | Camera Module 3 Wide | Flachbandkabel 22→15 Pin, 300 mm | durch beide Schulterrahmenöffnungen und den Schlitz der Frontschale; flach falten |
| W17 | XIAO D4/D5 (SDA/SCL), 3V3, GND | linker Header des PCA9685 (SDA, SCL, VCC, GND) | 22 AWG ×4 | an die XIAO-Pins gelötet (kein Platz für Gehäuse unter dem oberen Schulterrahmen), Dupont-Crimps am PCA |
| W18 | rechter Header des PCA9685 (VCC, SDA, SCL, GND) | LSM6DSOX STEMMA QT | STEMMA QT → Buchsenkontakte, 150 mm | die IMU sitzt 2,5 mm unter dem Pi: nur der flache STEMMA-QT-Stecker passt |
| W19 | zweiter STEMMA QT des LSM6DSOX | INA260-Header (VCC, SDA, SCL, GND) | STEMMA QT → Buchsenkontakte, 150 mm | INA260-Jumper A0 gebrückt → 0x41 |
| W20 | XIAO D3 | PCA9685 OE | 22 AWG grün | high = alle Servoausgänge aus. Löten Sie einen 2,2-kΩ-Widerstand von OE nach VCC am PCA9685-Header: Die Platine zieht OE auf low, ohne ihn bleiben die Ausgänge also aktiv, während der XIAO zurückgesetzt wird oder im Bootloader steht |
| W21 | XIAO D8, D10, D9, D0, D1, D2, 3V3, GND | LCD CLK, DIN, DC, CS, RST, BL, VCC, GND | Displaykabel (PH2.0 8-polig, 200 mm, mitgeliefert) | seine Dupont-Enden an die XIAO-Pins gelötet; 3V3 und GND teilen sich die Pins mit W17 |
| W22 (optional) | Pi 5 GPIO 26 (Pin 37) | Schalter OFF | 22 AWG weiß | Dupont-Crimp am Pi, am Schalter gelötet; ermöglicht dem Pi, nach dem Herunterfahren die eigene Versorgung abzuschalten, siehe unten |
| W23 | RPLIDAR C1 | sein USB-Adapter | eigenes Kabel des Sensors | durch die Kerbe vorne am Sockel |
Pinbelegungen
XIAO ESP32-S3 (firmware/strido_esp32s3/src/board_config.h ist die maßgebliche Quelle)
| XIAO-Pin | GPIO | Funktion |
|---|---|---|
| D0 | 1 | LCD CS |
| D1 | 2 | LCD RST |
| D2 | 3 | LCD-Hintergrundbeleuchtung (PWM; Strapping-Pin, erst nach dem Booten angesteuert) |
| D3 | 4 | PCA9685 OE (Low-aktive Freigabe; Firmware hält ihn bis zum Scharfschalten auf high) |
| D4 | 5 | I²C SDA |
| D5 | 6 | I²C SCL |
| D8 | 7 | LCD SCK |
| D9 | 8 | LCD DC |
| D10 | 9 | LCD MOSI |
| — | 21 | Onboard-Benutzer-LED (Status) |
PCA9685-Kanäle (200 Hz, 500–2500 µs)
| Bein | Hüfte | Oberschenkel | Kniekurbel |
|---|---|---|---|
| FL | 15 | 11 | 7 |
| FR | 14 | 10 | 6 |
| RL | 13 | 9 | 5 |
| RR | 12 | 8 | 4 |
I²C-Bus: PCA9685 0x40 (und seine All-Call-Adresse 0x70), LSM6DSOX 0x6A, INA260 0x41 (A0 gebrückt; 0x40 würde mit dem PCA9685 kollidieren).
Leistungsbudget und Laufzeit
| Verbraucher | Typisch | Spitze | Quelle |
|---|---|---|---|
| 12 Servos stehend | ≈ 30 W (≈ 5 A bei 6 V) | — | [ESTIMATE] aus den MuJoCo-Stehmomenten und dem Blockierstrom von 3,5 A bei 3,43 N·m |
| 12 Servos im Trot | ≈ 50 W | > 150 W für ms | [ESTIMATE] |
| Pi 5 + Kühler | 5–7 W | 12 W | Raspberry Pi |
| RPLIDAR C1 | ≈ 1,2 W | — | Slamtec-Datenblatt |
| Kamera, XIAO, LCD, IMU, PCA | ≈ 1,5 W | — | Datenblätter |
| Gesamt im Trot | ≈ 60 W aus dem Akku (90 % Wandler) |
2S 5000 mAh ≈ 37 Wh, 80 % nutzbar → ≈ 30 min Trot, ≈ 45 min Stehen [ESTIMATE; messen Sie mit /battery_state und den Strom am Loop-Key mit einer Strommesszange]. Die Firmware warnt bei 6,8 V (3,4 V/Zelle) und entspannt die Servos bei 6,4 V (3,2 V/Zelle).
Kabelbaum

Der Kabelbaum wird im CAD konstruiert, nicht beim Bau improvisiert: hardware/wiring.yaml benennt jedes Kabel, den Steckverbinder an jedem Ende und die Befestigungspunkte, die es passiert; strido_cad.wiring verlegt die Abschnitte zwischen diesen Punkten durch den freien Raum des Roboters (jedes Basisteil und alles, was die Beine über ihre Gelenkbereiche überstreichen, wird ausgespart), und das Ergebnis wird in den Renderings, der 3D-Ansicht und der Montageanleitung (Schritte 14–16, die Schalenschritte und Schritt 20) dargestellt. Die Verkabelungsprüfung weist dann unabhängig vom Router nach:
- Reichweite: jede fertig konfektionierte Leitung (Servokabel 260 mm, USB 200 mm, Flachband 300 mm, STEMMA QT 150 mm, Akkuleitung) deckt ihren Verlauf mit mindestens 10 mm Reserve ab;
- Material: die Zuschnittliste (Verlauf + Abisolier-/Lötzugabe + 8 % Spiel) passt zu Draht, Spiralschlauch und Kabelbindern in der Stückliste;
- Hüftschlaufen: die Servokabel der Oberschenkel- und Knieservos laufen auf der Hüfte mit und kreuzen das Hüftgelenk nahe seiner Achse; jedes hat eine freie Schlaufe von mindestens dem 1,2-Fachen des größten Abstands, den seine zwei Befestigungspunkte über den gesamten Hüftbereich erreichen (36 mm Oberschenkel, 40 mm Knie);
- Freigang: kein Kabel verläuft durch ein Teil, und gegenüber jedem Teil eines anderen Körpers (Beine, Hörner, Koppeln) hält es in den 13 Betriebsposen den Laufabstand der Prüfung bewegter Teile ein (der Router hält Kabel aus allem heraus, was die Beine über ein Raster von Gelenkwinkeln überstreichen);
- Ports: ein Kabel je WAGO-Eingang, ein Stecker je PCA9685-Kanal.
Bauablauf (die Anleitung stellt jeden Schritt dar):
- Servobus. Klipsen Sie die vier WAGO 221-415 in jeden Bushalter: je Bein eine V+-Klemme (oben) und eine GND-Klemme (unten); alle Eingänge zeigen zur linken Seite des Roboters. Platz 0 (vorne in jedem Hohlraum): UBEC-Einspeisung Port 0, Hüfte/Oberschenkel/Knie Ports 1–3, Brücke Port 4. Platz 1: Brücke Port 0, Servos 1–3, Port 4 frei. Klipsen Sie ein WAGO-Paar aus, um seine Hebel zu öffnen: Auf Platz 0 blockiert die XIAO-Plattform sie.
- UBECs. Lassen Sie den Ausgangsjumper offen (6,0 V). Messen Sie die Leerlaufausgangsspannung, bevor Sie ein Servo anschließen: zulässig sind 5,8–6,0 V (das Servo ist bis 6,0 V spezifiziert; senden Sie ein Gerät mit höherem Messwert zurück). Kleben Sie beide UBECs mit Schaumklebeband in die Seitentaschen unter dem Deck.
- Stromeingang (Schritt 14). Akkueingang XT60H mit W01 (rot, im Spiralschlauch) und W04 (schwarz) in der Tasche neben dem Akku; Massestern; Hauptsicherungshalter (Leitungen auf 20 mm gekürzt) am hinteren WAGO-Bus, am oberen Schulterrahmen befestigt; W02, W03 und W09 laufen in den Raum der Rückschale; noch keine Sicherungen.
- Servokabel (Schritt 15). Binden Sie jedes Oberschenkel- und Kniekabel an der Servohalterplatte fest, lassen Sie die freie Schlaufe, binden Sie es am Schulterrahmen oder Bushalter fest; teilen Sie es dort auf: rot/braun auf Länge gekürzt in das WAGO-Paar des Beins, orange auf Länge gekürzt und neu gecrimpt für seinen PCA9685-Kanal. Die Kabel der Hüftservos werden an der Öffnung des inneren Rahmens aufgeteilt.
- Logik und Signale (Schritt 16). W10/W11 (18 AWG rot) vom Schalter über den INA260 (A0 gebrückt) zum D36V50F5, W24 (18 AWG schwarz) Schalter-GND zu Regler-GND, W12 gecrimpt, aber noch nicht eingesteckt in den Pi, W14, W17–W20, W22.
- Schalenschritte. Displaykabel W21 (Schritt 17), Kamera-Flachbandkabel W16 (Schritt 18); Rückwand (Schritt 19): Taster W13, W02/W03 an den Arming-Port gelötet, Logiksicherungshalter in W02 und W09 gespleißt.
- Versorgungsprüfung und Kabelführung (Schritt 20). Akku kurz eingesteckt, beide Sicherungen eingesetzt, Loop-Key gezogen, Taster gedrückt: 4,8–5,2 V an den Dupont-Enden von W12 (D36V50F5: 5 V ± 4 %); Sicherungen wieder heraus, dann W12 auf die Pi-Pins 2/4/6/14 stecken. Spiralschlauch über jedes Bündel aus drei oder mehr Kabeln und über W01, Kabelbinder an den markierten Punkten, zwei selbstklebende Kabelbinder-Sockel auf dem Deck; bewegen Sie jedes Bein von Hand durch seinen Bereich und prüfen Sie, dass nichts zieht oder scheuert. Die LiDAR-Kabel kommen mit der Oberschale (Schritt 21), die Akkuleitung mit dem Akku (Schritt 22).
- Rauchtest ohne Servos: Sicherungen eingesetzt, Loop-Key gezogen, einschalten → Pi bootet,
ros2 topic echo /battery_statezeigt die Akkuspannung,/diagnosticszeigtpwm_ok,imu_ok,power_ok. Halten Sie die BOOT-Taste des XIAO und drücken Sie RESET: OE muss ≥ 2,4 V (Ausgänge aus) anzeigen, solange er im Bootloader steht.
Warum der Kabelbaum so ausgelegt ist: Kabelmanagement (Entscheidung: ADR-011).
Konfiguration des Raspberry Pi
Die Versorgung über die 5-V-GPIO-Pins umgeht USB-PD; teilen Sie dem Pi daher mit, dass die Versorgung 5 A liefern kann:
sudo rpi-eeprom-config --edit # add: PSU_MAX_CURRENT=5000
echo "usb_max_current_enable=1" | sudo tee -a /boot/firmware/config.txtStabile Gerätenamen (ros2/strido_bringup/config/99-strido.rules):
sudo cp ros2/strido_bringup/config/99-strido.rules /etc/udev/rules.d/ && sudo udevadm control --reload && sudo udevadm triggerOptionale Selbstabschaltung (W22): dtoverlay=gpio-poweroff,gpiopin=26 in config.txt setzt GPIO 26 nach dem Herunterfahren auf high, was einen Puls auf den OFF-Eingang des Schalters gibt. [UNVERIFIED on Pi 5: test with the servos disarmed before relying on it.]
Sicherheitsregeln
- Laden Sie nur in einem LiPo-Sack mit einem Balancer-Ladegerät; lassen Sie den Ladevorgang nie unbeaufsichtigt.
- Der Loop-Key ist die Servo-Abschaltung: Ziehen Sie ihn zum Entschärfen. Der Tasterschalter ist kein Not-Aus (Pololu sagt das ausdrücklich).
/strido/estoprastet ein: Die Firmware setzt PCA9685 OE auf high und stoppt alle Pulse.- Einschaltreihenfolge: Logik ein → Roboter liegt in der Ruhepose (Beine eingeklappt) → Loop-Key einsetzen (Servos bleiben schlaff; der Controller sendet vor dem ersten Positionsbefehl keine Pulse) →
ros2 launch strido_bringup robot.launch.pystarten (Servos fahren in die Ruhepose, dann 3 s Aufstehen). Setzen Sie den Loop-Key nie ein, während Positionsbefehle laufen: Alle Servos würden gleichzeitig springen. - Die Firmware verweigert die Ansteuerung ohne funktionierenden INA260 (sonst gäbe es keine Unterspannungsabschaltung). Die Abschaltung benötigt 5 aufeinanderfolgende Messwerte (0,5 s) unter 6,4 V, damit Spannungseinbrüche unter Last den Roboter nicht mitten im Schritt absetzen.
- Ohne Befehle für 200 ms halten die Servos ihre Pose; 2 s später entspannen sie. Es gibt kein separates Keep-alive: Fällt der Gait- oder Policy-Node aus, hält der Roboter und entspannt dann.