6 📐 Kalibrierung
"Ein Verfehlen ist so gut wie eine Meile." 🎯
Die Kalibrierung ist für die einwandfreie Funktion von Nybble unerlässlich.
In den vorangegangenen Abschnitten haben wir die Körperteile vorbereitet, sie aber nicht auf die Servos geschraubt. Wenn wir die Servos nicht vor dem Anbringen kalibrieren, können sie sich in jede Richtung drehen, stecken bleiben und die Servos oder Körperteile beschädigen.
Die Kalibrierung erfolgt in vier Schritten:
Schreib Konstante an das Board
Einschalten, Servos frei bis zum Nullwinkel/Kalibrierungszustand drehen lassen
Körperteile an den Servos befestigen
Feinabstimmung der Abweichungen (Offsets) in der Software
Die Logik hinter der Kalibrierung kann im OpenCat Forum gefunden werden.
6.1. Schreibe Konstante
6.1.1. Es gibt drei Arten von Konstanten, die im NyBoard gespeichert werden:
Montagebezogene Definitionen, wie Gelenkabbildung, Drehrichtung, Sensorpins. Sie sind weitgehend festgelegt und werden in OpenCat.h definiert. Sie werden auch für meine zukünftigen Roboter einheitlich gehalten;
Kalibrierungsbezogene Parameter, wie MPU6050-Verschiebungen und Gelenkkorrekturen. Sie werden in Echtzeit gemessen und im integrierten EEPROM gespeichert. Diese müssen nur einmal gemessen werden;
Geschicklichkeitsdaten, wie Haltungen, Gangarten und vorprogrammierte Verhaltensweisen. Sie werden in Instinct.h definiert. Es können auch weitere Fähigkeiten hinzugefügt werden.
6.1.2. WriteInstinct.ino hochladen und ausführen
Die Rolle von WriteInstinct.ino besteht darin, Konstanten entweder in das Onboard oder in das I2C-EEPROM zu schreiben und die Kalibrierungswerte zu speichern. Diese werden danach mit dem Sketch Nybble.ino überschrieben.
Sie müssen den * von #define NyBoard_V*_*
in Instinct.h ändern, damit er mit der Version des NyBoards übereinstimmt. Die Versionsnummer ist links neben dem grünen Akkuanschluss.
Nachdem das Hochladen von WriteInstinct.ino abgeschlossen ist, öffne den seriellen Monitor. Es erscheinen mehrere Fragen:
Reset all joint calibration? (Y/n)
Wenn die Gelenke noch nie kalibriert wurden oder neu kalibriert werden müssen, gebe bei der Frage 'Y' ein. Beachte GROß- KLEINSCHREIBUNG!
Do you need to update Instincts? (Y/n)
Wenn die Instinct.h in irgendeiner Weise verändert wurde, sollte 'Y' eingegeben werden. Dies ist nicht immer notwendig ist, erfordert aber ein tieferes Verständnis der Speicherverwaltung.
Calibrate MPU? (Y/n)
Wenn der MPU6050, d.h. also Kreisel-/Beschleunigungssensor noch nie kalibriert wurde, 'Y' eingeben.
Manchmal kann das Programm in der Verbindungsphase hängen bleiben. Durch Schließen und erneutes Öffnen des seriellen Monitors oder durch Drücken der Reset-Taste auf dem NyBoard kann man das Programm neu starten.
6.2. Kalibrierungsmodus aufrufen
Der Kalibrierungszustand ist als der mittlere Punkt des zulässigen Servobereichs definiert. Die Kalibrierung für Servos kann entweder in WriteInstinct.ino oder Nybble.ino durchgeführt werden. Ich empfehle, dies mit WriteInstinct.ino zu tun falls etwas mit den Konstanten nicht stimmt.
Es MÜSSEN alle Servos und der Akku für eine ordnungsgemäße Kalibrierung eingesteckt sein. Gebe dann auf dem seriellen Monitor 'c' ein, um in den Kalibrierungsmodus zu gelangen. Die Servos sollten sich in unmerklichen Zeitabständen nacheinander drehen und dann anhalten. Abhängig von ihrer anfänglichen Ausrichtung können einige Servos größere Winkel zurücklegen, bis sie in der Mitte zum Stillstand kommen. Man hört auch ein Geräusch vom Getriebe der Servos. Hier sieht man die Kalibrierungstabelle:
Die erste Reihe ist der Gelenk-Index, die zweite Reihe der Kalibrierungs-Offset:
Die Anfangswerte sind "-1" oder "0" und sollten durch die Kalibrierung verändert werden.
Die Servos verwenden Potentiometer in Rückkopplungsschleife zur Positionsregelung. Wenn sie in statischer Position gehalten werden, neigen sie dazu, um den Zielwinkel zu schwingen. Nach einiger Zeit ensteht eine Parkinson ähnliche Schwingung. Bei kontinuierlicher Bewegung wird sie sich kaum auswirken. Bessere Servos ohne diese Probleme könnten das 10-fache kosten, so dass der Austausch eines ausgefallenen Servos die kostengünstigere Lösung ist.
6.3. Kopf, Schwanz und Beine anbringen
6.3.1. Koordinatensystem
Nach der Eingabe von 'c', bei der alle Servos auf ihren Nullwinkel gedreht sind, werden nun Kopf, Schwanz und Beine, die im vorherigen Abschnitt vorbereitet wurden, am Körper befestigt. Diese stehen in der Regel senkrecht zum verbundenen Körperrahmen. Vermeide es, die Servowelle während des Vorgangs zu drehen.
Die drehung der Gliedmaßen gegen den Uhrzeigersinn aus ihrem Nullzustand heraus ist positiv (wie bei den Polarkoordinaten). Die einzige Ausnahme ist der Neigungswinkel des Kopfes. Es ist einfacher zu sagen: Kopf nach oben, während er sich aus der Drehung im Uhrzeigersinn ergibt.
6.3.2. Die Winkel-Einteilungen verstehen
Wenn wir uns die Servowelle genauer ansehen, sehen wir, dass diese eine bestimmte Anzahl von Zähnen hat. Das ist für die Befestigung der Servoarme und um ein gleiten in Drehrichtung zu vermeiden. In unserer Beispiel Servo sind die Zahnräder um 360 Grad in 20 Sektoren unterteilt, von denen jeder 18 Grad einnimmt. Das bedeutet, dass wir nicht immer eine exakt senkrechte Installation erhalten können. Versuche, sie möglichst nahe an ihren Nullzustand zu bringen. Benutze Schraube A, um die Glieder an die Servos zu schrauben.
6.4. Finde und sichere die Kalibrierungs-Offsets
6.4.1. Feinabstimmung der Kalibrierung auf Softwareseite
Der Befehl für die Kalibrierung (siehe Serielles kommunikations Protokoll für NyBoard) ist als cIndex Offset
formatiert. Beachte, dass zwischen Index und Offset ein Leerzeichen ist.
Zum Beispiel bedeutet c8 6
, dem 8. Servo einen Versatz von 6 Grad zu geben. Finde den besten Offset, der die Gliedmaße in den Nullzustand bringt.
Ist der absolute Wert des Offsets größer als 9, wurde das Körperteil nicht perfekt am Nullpunkt angebracht. Dies führt zu einer verringerung des zulässigen Bereichs eines Servos auf beiden Seiten. Nehme das Körperteil ab und drehe es um einen Zahn. Dies führt zu einem entgegengesetzten, aber kleineren Versatz.
Wenn z.B. -13 als Kalibrierwert verwendet wurde, nehme das Gliedmaß ab, drehe dieses entgegengesetzt um einen Zahn und setze sie wieder ein. Der neue Kalibrierwert sollte dann etwa 5 betragen, d.h. sie summieren sich auf 18. Vermeide es, das Servo während dieser justierung zu drehen.
Denke nach der Kalibrierung daran, 's' einzugeben, um die Offsets zu speichern. Andernfalls werde diese beim Verlassen des Kalibrierungszustandes nicht gespeichert. Man sollte jedes Mal speichern, wenn ein Servo kalibriert ist.
6.4.2. ’L’-förmiger Gelenksteller
Wenn man etwas beobachtet, ändert sich dies aus verschiedenen Perspektiven. Deshalb sollten wir bei der Längenmessung immer direkt über dem Lineal nachsehen.
Es ist besonders wichtig, dass bei der Kalibrierung von Nybble eine parallele Perspektive beibehalten wird. Verwende den 'L'-förmigen Gelenksteller als Parallelreferenz, um Ablesefehler zu vermeiden. Richte die Spitzen des Abstimmgerätes auf die Mitte der Schrauben in den Schulter- und Kniegelenken und auf das kleine Loch an der Fußspitze aus. Schaue entlang der Koaxialachse der Zentren. Kalibriere diese für jedes Bein. Zuerst die Schulterservos (8-11) und dann die Knieservos (12-15). Verwende bei der Kalibrierung des Knies die passenden Dreiecksfenster sowohl am Abstimmgerät als auch am Schaft, um eine parallele Ausrichtung zu gewährleisten.
6.4.3. Validierung
Gebe nach der Kalibrierung 'd' oder 'kbalance' ein, um die Kalibrierung zu validieren. Dies führt dazu, dass Nybble seine Gliedmaßen zwischen Ruhe und Stehen Zustand symmetrisch bewegt.
6.4.4. Masseschwerpunkt
Versuche zu verstehen, wie Nybble auch beim gehen das Gleichgewicht hält. Wenn Nybble mit neuen Komponenten ausgestattet wird, versuche das Gewicht symmetrisch auf die Wirbelsäule zu verteilen. Möglicherweise muss der Akkuhalter auch hin- und her geschoben werden, um die beste Stelle für das Gleichgewicht zu finden.
Last updated