malandereideen

Das Ruckeln kam nicht von der Firmware

·Robotik

Der Arm greift, hebt, setzt ab. Nur eine Achse tanzt. shoulder_pan zittert bei langsamen Bewegungen sichtbar, die anderen fünf laufen glatt. Zwei Wochen lang hatte ich die Firmware im Verdacht. War sie nicht. Und bis die richtige Erklärung kam, habe ich drei falsche verbrannt.

Die falsche Fährte

Ich dachte erst, es ist mechanisch. Alle Armteile sitzen mit M3-Flachkopfschrauben auf den Adapterplatten der Servos. Kernloch 3,3 mm, und Kreuzschlitz kriegst du nicht ordentlich fest, der rastet konstruktionsbedingt aus bevor die Verbindung richtig klemmt. Klang für mich plausibel: zu wenig Vorspannung, Teil wandert unter Last. Also alles auf Innensechskant umgebaut, ordentlich angezogen, neu gemessen. Richtungsversatz am Ellbogen vorher 13,2 Ticks, nachher 12,6. Das ist Streuung, sonst nichts. Die Rohdaten lagen praktisch übereinander. Der Umbau war trotzdem richtig. Schrauben, die man nicht festziehen kann, sind ein Mangel. Nur eben nicht mein Problem. Das Spiel ist Getriebespiel im Servo, und 1,14° sind für ein ST3215 völlig normal.

Der Versuch, der alles gedreht hat

Was am Ende geholfen hat: Servo raus aus dem Arm. Ich hab einen Versuchsarm mit Gewicht dran gebaut und dort beide Servos nacheinander in exakt dieselbe Mechanik gesetzt. Einmal den Waveshare mit Firmware 3.9, einmal einen Feetech mit 3.10. Beide standen dabei auf den Werkswerten P=32 und D=32. Speed ist der Geschwindigkeitswert, den man dem Servo mitgibt, keine Drehzahl. 300 ist langsam, 790 ist ungefähr das, was der Arm im Betrieb fährt.

SpeedFeetech 3.10Waveshare 3.9Faktor
3000,352,346,7×
6000,432,205,1×
7900,450,912,0×

Streuung in Ticks, drei Geschwindigkeiten mit je drei Wiederholungen. Faktor 6,7 bei identischer Mechanik. Damit waren Montage, Verschraubung, Kabelbaum und Armgeometrie als Ursache erledigt, weil der Versuchsarm das Problem außerhalb des Arms nachstellt. Und die Waveshare-Werte lagen fast genau auf dem, was ich vorher an der Pan-Achse im Arm gemessen hatte. Zwei Belege, die sich decken: die Zahlen und mein Auge.

Die Zahl, die es verraten hat

Spannend wurde es, als ich mir die Schwingung selber angeschaut habe statt nur wie stark sie ist.

SpeedPeriode in msPeriode in Ticks
30014844
60014687
790155122

Die Millisekunden bleiben stehen, die Tick-Periode wächst mit der Geschwindigkeit mit. Mehr Beweis braucht es nicht. Bei einem Zahneingriff oder einem schief sitzenden Encoder-Magnet wäre es andersrum, dann hinge die Periode am zurückgelegten Weg und nicht an der Zeit. Rund 150 ms sind 6,7 Hz. Das ist keine Mechanik. Das ist ein Regelkreis, der schwingt.

P runter statt Firmware drauf

P und D sind die Regelparameter im Servo. P bestimmt, wie hart es auf eine Abweichung reagiert, D bremst die Reaktion ab. Zu viel P und der Regler schießt über und fängt an zu pendeln. Beide Servos stehen ab Werk auf P=32. Der Feetech läuft damit sauber, der Waveshare schwingt. Bei gleicher Mechanik heißt das: Die beiden Firmware-Stände rechnen denselben P-Wert unterschiedlich um.

PD300600790
3232 (Werk)2,211,991,10
24320,690,400,44
16320,360,390,45
32482,291,281,21
32642,412,301,96

Der Feetech liegt im selben Aufbau bei 0,35 / 0,43 / 0,45. Mit P=16 kannst du den Waveshare vom Feetech nicht mehr unterscheiden. Guck dir mal die untere Hälfte der Tabelle an: Mehr D macht es schlechter. Es fehlt also keine Dämpfung, es ist einfach zu viel Verstärkung. Nur P runter hilft. Und P ist ein Registerwert, kein Flash. Kein Windows, keine Feetech-Software, kein Risiko das Servo zu bricken.

Was noch offen ist

Weniger P heißt größerer Positionsfehler unter Last. Alle meine Messungen liefen um die Home-Stellung rum, also bei fast keinem Hebelmoment. Ein Fremdtest an derselben Servoklasse misst bei 10 kg·cm rund 22 Ticks Positionsfehler, bei 15 kg·cm schon 30. Bevor P=16 auf alle sechs Achsen wandert, muss ich den Haltefehler bei P=16 gegen P=32 messen. Jede Achse einzeln, und zwar in einer Stellung mit echtem Moment und nicht eingeklappt. Steifigkeit ist der Preis dafür, und wie hoch der ausfällt weiß ich noch nicht.

Was ich mitnehme

Erst im Versuchsaufbau messen, nicht am fertigen Gerät. Im Arm hätte ich die beiden Servos nie sauber vergleichen können. Die Frequenz verrät dir, in welcher Ecke die Ursache sitzt. Zeitfest heißt Regelung, wegfest heißt Mechanik. Diese eine Unterscheidung hat zwei Wochen Rätselraten beendet. Und: Eine Zahl, die zu zwei Erklärungen passt, bestätigt keine davon. Genau deswegen hat sich meine Schraubenhypothese so lange gehalten. Das Firmware-Update liegt übrigens weiter in der Schublade, falls P=16 am echten Arm doch nicht trägt. Angefasst hab ich es nicht.

Entwurf mit KI aus meinen Projektnotizen, redigiert von mir.Wie diese Texte entstehen