Jetracer Odometer Kalibration
Zur Navigation springen
Zur Suche springen
Einführung
- Der Roboter kann Kilometerzählerinformationen ausgeben, um zu erfahren, wie weit der Roboter gefahren ist und wie viel er sich gedreht hat. Es kann jedoch zu Fehlern zwischen dem Kilometerzähler und den vom Standardprogramm ausgegebenen Informationen kommen. Der Kilometerzähler kann aber, durch das anpassen von Parametern, so kalibriert werden, das eine höhere Genauigkeit erreicht wird.
- In diesem Kapitel ist es relevant zu wissen wie man in Linux eine config Datei bearbeiten kann:
- Die Datei kann mit dem "vim" Befehl und dem Namen geöffnet werden.
- In der Datei muss "I" gedrückt werden damit man die Werte anpassen kann.
- Um das geschriebene abzuspeichen muss erst "ESC" gedrückt und dann ":wq!" getippt und geentert werden. Falls nicht gespeichert werden soll muss "q!" eingegeben werden.
Roboter Orientierung kalibrieren
- Verbinden Sie sich mit dem Roboter und öffnen sie ein Terminal. Danach können Sie den folgenden Befehl eingeben, um den Fahrwerksknoten zu aktivieren.
- Der Fahrwerksknoten des Roboters sollte nicht wiederholt aktiviert werden, da dies sonst zu Fehlern führt. Wenn der Fahrwerksknoten nicht geschlossen wurde, brauchen Sie ihn nicht erneut zu aktivieren.
roslaunch jetracer jetracer.launch #Startet den Fahrwerksknoten
- Drücken Sie „Strg + Alt + t“, um das neue Terminal in der virtuellen Box zu öffnen, und geben Sie den folgenden Befehl ein, um die Tastatur zur Steuerung des Kalibrierknotens zu aktivieren.
roslaunch jetracer keyboard.launch
- Drücken Sie die Taste „I“ auf der Tastatur, um den Roboter vorwärts fahren zu lassen, und beobachten Sie, ob er sich in einer geraden Linie bewegt. Wenn der Roboter zu einer Seite geneigt ist, kann er auf folgende Weise kalibriert werden.
- Öffnen Sie wieder ein neues Terminal und führen Sie den folgenden Befehl aus, um das Tool rqt_reconfig zu starten
rosrun rqt_reconfigure rqt_reconfigure
- Passen Sie den Wert von servo_bias an und ändern Sie den anfänglichen Offset des Servos, bis sich der Roboter in einer geraden Linie bewegen kann.
- Die Anpassung der dynamischen Parameter wirkt sich nur auf den laufenden Effekt zu diesem Zeitpunkt aus, die Parameter werden nicht in der Parameterdatei gespeichert und wirken sich nicht auf den nächsten Startvorgang aus. Die Parameter müssen in der Datei jetracer_ros/cfg/jetracer.cfg angepasst werden.
vi ~/catkin_ws/src/jetracer_ros/cfg/jetracer.cfg
- Ändern Sie die Zeile servo_bias, setzen Sie den fünften Parameter auf den soeben eingestellten Wert und speichern Sie ihn.
Roboter Distanz & Geschwindigkeit kalibrieren
- Das Startprogramm für die lineare Kalibrierung hat den Roboter-Fahrwerks-Knoten bereits standardmäßig gestartet. Bitte schließen Sie den zuvor gestarteten Roboter-Chassis-Knoten und lassen Sie den „Roboter-Master-Knoten“ laufen, da sonst nach der Ausführung des Befehls eine Fehlermeldung angezeigt wird.
- Öffnen Sie ein Terminal im Jetson Nano und führen Sie die folgenden Befehle aus, um das Programm für die lineare Geschwindigkeitskalibrierung zu aktivieren.
roslaunch jetracer calibrate_linear.launch
- Schließen Sie das Programm nach der Aktivierung nicht, sonst wird die Kalibrierungsoption im Befehlsfeld der virtuellen Maschine nicht angezeigt.
- Führen Sie die folgenden Befehle in der virtuellen Maschine aus und öffnen Sie die Schnittstelle zur Konfiguration der dynamischen Parameter. Wenn das Programm für die lineare Geschwindigkeitskalibrierung normal läuft, sehen Sie die Option „calibrate_linear“.
rosrun rqt_reconfigure rqt_reconfigure
- Dabei steht:
- Test_distance für die Test Distant, der Standard ist 1m.
- Speed für die lineare Geschwindigkeit des Roboters.
- Tolerance für die Fehlertoleranz bis wir das Ziel erreichen.
- odom_linear_scale_correction für die Skalierung des Odometers. Dieser Wert wird solange angepasst bis wir das gewünschte Endergebnis erhalten.
- Start_test startet die Roboter Kalibration.
- Stellen Sie den Roboter auf den Boden, markieren Sie die Roboterposition, klicken Sie "start_test", sodass der Roboter beginnt sich zu bewegen, warten Sie, bis der Roboter anhält, und messen Sie die Bewegungsdistanz des Roboters. Erfassen Sie das Verhältnis der Bewegungsdistanz geteilt durch die Zieldistanz und multiplizieren Sie odom_linear_scale_correction mit diesem Verhältnis als neuen Parameter. Wiederholen Sie den Test, bis die tatsächliche Bewegungsdistanz 1 m beträgt.
- Wenn z.B. die Bewegung auf 1 m eingestellt ist und der tatsächliche Vorgang 1,2 m beträgt, ist das Verhältnis 1,2, und die odom_linear_scale_correction wird auf 1x1,2 aktualisiert, d.h. 1,2, um den Test erneut zu starten. Wenn der Effekt zufriedenstellend ist, beträgt der lineare Kalibrierungsparameter 1,2. Wenn die tatsächliche Bewegung 1,1 m beträgt, wird die Korrektur odom_linear_scale_correction auf 1,2* 1,1 = 1,32 aktualisiert. Wiederholen Sie diesen Vorgang, bis Sie mit dem Endergebnis zufrieden sind.
- Geben Sie den folgenden Befehl in jetson nano ein, öffnen Sie die Datei catkin_ws/src/jetracer_ros/launch/jetracer.launch und ändern Sie den Wert von linear_correction auf den Kalibrierungsparameter odom_linear_scale_correction, den Sie soeben bei der Kalibrierung erhalten haben. Starten Sie die Kalibrierungsprozedur erneut, um zu prüfen ob der Roboter tatsächlich eine Strecke von 1 m fährt.
vi ~/catkin_ws/src/jetracer_ros/launch/jetracer.launch #Modifiziert die Kalibrations Parameter
Kurven Geschwindigkeit kalibrieren
- Da der Drehwinkel des Servos nicht gleich dem Lenkwinkel des Reifens ist, müssen wir den Lenkwinkel des Reifens bei verschiedenen Servowinkeln erfassen und dann ein Polynom verwenden, um die Beziehung zwischen den beiden zu bestimmen.
- Der Kalibrierungsprozess der Servos ist komplizierter. Wenn die Anforderungen nicht hoch sind, können Sie diesen Schritt überspringen und nicht neu kalibrieren.
- Das Programm verwendet die folgende Trinomialanpassung, wobei x für den Lenkwinkel des Reifens, y für den Drehwinkel des Servos und servo_bias für den linearen Kalibrierungsparameter steht. Unter normalen Umständen sollte dieses Element 0 sein. a, b, c und d sind Anpassungsparameter.
y = a*x^3 + b*x^2 + c*x + d + servo_bias.
- Vor der Kalibrierung müssen Sie das Motorkabel abziehen, um den Motor in einem freien Zustand zu halten. Gleichzeitig müssen die Parameter so geändert werden, dass das Servo seine Lenkung direkt steuern kann, d. h. y = x. Daher werden a, b, d und servo_bias alle auf 0 und c auf 1 gesetzt.
- Öffnen Sie die Datei jetracer_ros/cfg/jetracer.cfg und setzen Sie servo_bias auf 0. Dafür müssen Sie in der Zeile servo_bias, den fünften Parameter auf 0 setzen und die Datei speichern.
vi ~/catkin_ws/src/jetracer_ros/cfg/jetracer.cfg
- Öffnen Sie die Datei jetracer_ros/launch/jetracer.launc und setzen Sie „coefficient_a, coefficient_b, coefficient_d“ auf 0, und setzen Sie coefficient_a auf 1.
vi ~/catkin_ws/src/jetracer_ros/launch/jetracer.launch
- Verbinden Sie sich mit dem Roboter und öffnen Sie das Terminal und geben Sie die folgenden Befehle ein, um den Fahrwerksknoten des Roboters zu aktivieren.
- Aktivieren Sie den Fahrwerksknoten des Roboters nicht wiederholt, da sonst ein Fehler auftritt. Wenn Sie den Fahrgestellknoten nicht geschlossen haben, müssen Sie ihn nicht erneut aktivieren.
roslaunch jetracer jetracer.launch #Startet den Fahrwerksknoten
- Aktivieren Sie die Themenveröffentlichungsfunktion mit dem Befehl „rqt_publisher“ in der virtuellen Maschine, wählen Sie „/cmd_vel“, um weitere Themeninformationen hinzuzufügen.
rosrun rqt_publisher rqt_publisher
- Setzen Sie den Wert von „/cmd_vel.augular.z“ auf -1 und veröffentlichen Sie ihn. Drehen Sie das Servo nach links und schieben Sie den JetRacer langsam. Testen Sie den Drehdurchmesser des Fahrzeugs und zeichnen Sie ihn auf.
- Setzen Sie /cmd_vel.augular.z auf [-1, -0.9, -0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1], und messen und notieren Sie den Drehdurchmesser des Fahrzeugs bei verschiedenen Werten.
- Öffnen Sie das Programm in der virtuellen Maschine und ersetzen Sie die Drehdurchmesser bei verschiedenen Winkeln durch die soeben erhaltenen tatsächlichen Daten, wobei das Feld R der tatsächliche Drehdurchmesser und das Feld y der entsprechende Lenkradwinkel ist.
vi ~/catkin_ws/src/jetracer_ros/scripts/servo_calibratin.py
- Führen Sie den folgenden Befehl aus, um den Servo zu kalibrieren.
python ~/catkin_ws/src/jetracer_ros/scripts/servo_calibratin.py
- Nach der Ausführung des Programms wird die Anpassungskurve in der nachstehenden Abbildung dargestellt, wobei die rote Linie das Ergebnis der Anpassung und die grüne Linie die erfassten Daten darstellt.
- Nachdem das Programm ausgeführt wurde, wird das Ergebnis in der folgenden Abbildung dargestellt;
- Die letzte Zeile sind die Anpassungsparameter, die den Parametern a, b, c bzw. d entsprechen.
- Speichern Sie die Parameter in der Startdatei.
vi ~/catkin_ws/src/jetracer_ros/launch/jetracer.launch
- Die Ausgabe im Programm erfolgt in wissenschaftlicher Notation und muss in Fließkommazahlen umgewandelt werden, bevor sie in einer Datei gespeichert wird.
- Nach der normalen Kalibrierung sollte das Fahrzeug in der Lage sein, in einer geraden Linie zu fahren, und die Servovorspannung ist direkt 0 ohne Änderung. Wenn das Auto in einer geraden Linie fährt, können Sie den Servo-Bias-Parameter leicht anpassen oder den d-Parameter direkt anpassen.