Jetracer Steuerung: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(20 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 7: Zeile 7:
::'''Steuerung per Joystick'''
::'''Steuerung per Joystick'''
::Der intuitivste Steurungsmodus ist das steuern per Game Controller, hier genannt Joystick. Für diesen Modus muss allerdings erst der Controller mit der Virtualbox verbunden werden. Hierfür muss in den Einstellungen der VM der Controller als USB Input Gerät festgelegt werden. Außerdem muss vielleicht der Input an der Virtualbox von js0 auf js1 geändert werden, da sonst die Maus als Input für die Steuerung benutzt wird. In diesem Tutorial: [https://ubuntuforums.org/showthread.php?t=1595666#: Assign specific device input paths] wird beschrieben wie dies in einer ubunutu Umgebung möglich ist.
::Der intuitivste Steurungsmodus ist das steuern per Game Controller, hier genannt Joystick. Für diesen Modus muss allerdings erst der Controller mit der Virtualbox verbunden werden. Hierfür muss in den Einstellungen der VM der Controller als USB Input Gerät festgelegt werden. Außerdem muss vielleicht der Input an der Virtualbox von js0 auf js1 geändert werden, da sonst die Maus als Input für die Steuerung benutzt wird. In diesem Tutorial: [https://ubuntuforums.org/showthread.php?t=1595666#: Assign specific device input paths] wird beschrieben wie dies in einer ubunutu Umgebung möglich ist.
:Falls der Roboter nicht geradeaus fährt wenn man eine gerade Bewegung eingibt, könnte es daran liegen das die Räder beim Aufbau leicht versetzt montiert wurden. Dies kann durch eine Änderung des Fahrtwinkels kompensiert werden. In diesem Tutorial: [https://www.waveshare.com/wiki/JetRacer_ROS_AI_Kit_Tutorial_VII:_Robot_Odometer_Calibration#: Robot Odometer Calibration] wird beschrieben wie man den Winkel einstellen kann. Außerdem nützlich dafür ist dieser Beitrag: [https://success.trendmicro.com/dcx/s/solution/1113864-editing-configuration-files-of-linux-based-products?language=en_US#: Editing Cfg Files in Linux] welcher erklärt wie man eine config Datei in Linux bearbeitet.


=='''"Serial User Group" hinzufügen'''==
=='''serielle Benutzer Gruppe hinzufügen'''==
*Enter the command ls /dev in jetson nano to check whether the driver board is connected to jetbot normally, and whether ttyACM0 and ttyACM1 devices are found [where ttyACM0 is used to communicate with the microcontroller, and ttyACM1 is used to communicate with the radar].
*Geben Sie den Befehl ls /dev in jetson nano ein, um zu prüfen, ob die Treiberplatine normal mit jetracer verbunden ist und ob die Geräte ttyACM0 und ttyACM1 gefunden werden. (Wobei ttyACM0 für die Kommunikation mit dem Mikrocontroller und ttyACM1 für die Kommunikation mit dem Radargerät verwendet wird).
  ls /dev
  ls /dev
[]
[[Datei:JetRacer_Steuerung_Group_Step01.png|Step01]]
*Enter the following command to add the serial port user group, otherwise, you will not have permission to operate the serial port. Using the configured system has already added permissions, you can skip this step.
*Geben Sie den folgenden Befehl ein, um die Benutzergruppe für den seriellen Anschluss hinzuzufügen, andernfalls haben Sie keine Berechtigung, den seriellen Anschluss zu bedienen. Wenn das konfigurierte System bereits Berechtigungen hinzugefügt hat, können Sie diesen Schritt überspringen.
  ls -l /dev/ttyACM*          #View the serial port user group as dialout
  ls -l /dev/ttyACM*          #Sehen sie die Einwahl der Benutzer Gruppe
  id -Gn                      #View the user group that the current user belongs to, the first one is the current user
  id -Gn                      #Anzeige der Benutzergruppe, zu der der aktuelle Benutzer gehört; die erste Gruppe ist der aktuelle Benutzer
  sudo adduser jetson dialout  #Add the current user to the user group dialout where the serial port is located
  sudo adduser jetson dialout  #Hinzufügen des aktuellen Benutzers zur Benutzergruppe dialout, in der sich die serielle Schnittstelle befindet
[]
[[Datei:JetRacer_Steuerung_Group_Step02.png|Step02]]
*Enter the command "sudo reboot" to restart, the password is jetbot [Note: The above addition command can take effect only after restarting, and when there is no serial port permission, the robot chassis node will always report an error after booting up].
*Geben Sie den Befehl „sudo reboot“ ein, um neu zu starten, das Passwort ist jetson
*<span style="color:red">Der obige Befehl zum Hinzufügen kann erst nach dem Neustart wirksam werden, und wenn keine Berechtigung für den seriellen Anschluss besteht, meldet der Roboterchassis-Knoten nach dem Hochfahren immer einen Fehler.</span>
  sudo reboot  #restart jetson nano
  sudo reboot  #restart jetson nano


=='''Roboter Karosserie Knoten öffnen'''==
=='''Roboter Karosserie Knoten öffnen'''==
*Connect SSH to the robot to open the terminal and enter the following command to start the robot master node.
*Verbinden Sie SSH mit dem Roboter, um das Terminal zu öffnen, und geben Sie den folgenden Befehl ein, um den Roboter-Masterknoten zu starten.
  roscore #Start the robot master node
  roscore #Start des Roboter-Masterknotens
[]
[[Datei:JetRacer_Steuerung_Node_Step01.png|Step01]]
*The following roslaunch command will also automatically start the master node, but the purpose of starting the master node alone is to keep connected to the virtual machine all the time. Otherwise, the master node will be automatically closed when the chassis node is closed, resulting in the virtual machine being disconnected.
*Der folgende roslaunch-Befehl startet auch automatisch den Master-Knoten, aber der Zweck des Starts des Master-Knotens allein ist es, die Verbindung zur virtuellen Maschine ständig aufrechtzuerhalten. Andernfalls wird der Master-Knoten automatisch geschlossen, wenn der Chassis-Knoten geschlossen wird, was dazu führt, dass die virtuelle Maschine nicht mehr verbunden ist.
*Enter the following command to start the robot chassis node.
*Geben Sie den folgenden Befehl ein, um den Roboter-Chassis-Knoten zu starten.
  roslaunch jetbot_pro jetbot.launch #Start the robot chassis node
  roslaunch jetracer_ros jetracer.launch #Start des Roboter Chassis Knoten
[]
[[Datei:JetRacer_Steuerung_Node_Step02.png|Step03]]
*Open the Ubuntu virtual machine terminal and enter the following command in the terminal to verify that the multi-machine communication connection is normal.
*Öffnen Sie das Terminal der virtuellen Ubuntu-Maschine und geben Sie den folgenden Befehl in das Terminal ein, um zu überprüfen, ob die Kommunikationsverbindung zwischen den Maschinen normal funktioniert.
  rostopic list
  rostopic list
*If the content shown in the figure below appears after running the code, it means that the multi-device communication is successful; if it cannot be connected, recheck whether the ip and hostname in the above steps are incorrect or whether they are connected to the same WiFi.
*Wenn nach der Ausführung des Befehls der in der Abbildung unten gezeigte Inhalt erscheint, bedeutet dies, dass die Kommunikation zwischen den verschiedenen Geräten erfolgreich ist; wenn keine Verbindung hergestellt werden kann, überprüfen Sie, ob die IP-Adresse und der Hostname in den obigen Schritten falsch sind oder ob sie mit demselben WiFi verbunden sind.
[]
[[Datei:JetRacer_Steuerung_Node_Step02.png|Step03]]
*#/cmd_vel is the topic about robot movement and is controlled by the robot.
*#/cmd_vel ist das Thema der Roboterbewegung und wird vom Roboter gesteuert.
*#/imu is the robot IMU topic.
*#/imu ist das IMU-Thema des Roboters.
*#/motor/* indicates the actual encoded speed and set the speed of the left and right motors.
*#/motor/* zeigt die aktuelle eingestellte Geschwindigkeit an und stellt die Geschwindigkeit des linken und rechten Motors ein.
*#/odom encodes the odometer for the robot.
*#/odom ist der Kilometerzähler des Roboters.
*#/odom_combined is the robot fusion odometer, which is obtained by combining the encoded odometer with IMU data.
*#/odom_combined ist der Fusionskilometerzähler des Roboters, der sich aus der Kombination des kodierten Kilometerzählers mit den IMU-Daten ergibt.


=='''Steuerung per Veröffentlichungs Knoten'''==
=='''Steuerung per Veröffentlichungs Knoten'''==
*Nachdem die Kommunikation zwischen den Maschinen normal verlaufen ist, lassen Sie bitte den Chassis-Knoten des Roboters normal laufen und stellen Sie das Auto auf den Boden.
*Öffnen Sie ein Terminal in der virtuellen Ubuntu-Maschine und geben Sie den folgenden Befehl ein, um die Topic Publishing Node zu starten.
rosrun rqt_publisher rqt_publisher #Start der Topic Publishing node
[[Datei:JetRacer_Steuerung_Publishing_Step01.png|Step01]]
*Im Pop-up-Fenster wählen Sie bitte das Thema /cmd_vel, klicken Sie auf „+“, um ein neues Thema zu erstellen, /cmd_vel ist das Thema der Steuerung der Bewegung des Roboters, linear->x gibt die lineare Geschwindigkeit des Roboters an, und angular->x gibt die Winkelgeschwindigkeit des Roboters an.
*Ändern Sie den Wert von linear.x auf 0,5, klicken Sie mit der rechten Maustaste und wählen Sie „Ausgewähltes veröffentlichen“. Wenn Sie ein Thema veröffentlichen, bewegt sich der Roboter 0,5 Meter vorwärts und hält dann an; wenn linear.x auf 0 und angular.z auf 3,14 geändert wird, dreht sich der Roboter um einen halben Kreis.
*<span style="color:red">Das Thema, das wir hier sehen, ist cmd_vel, bitte wählen Sie den Typ Twist, und wählen Sie andere Themen, das Auto darf sich nicht bewegen.</span>
[[Datei:JetRacer_Steuerung_Publishing_Step02.png|Step02]]
*Drücken Sie Strg+C, um die Topic Publishing Node zu schließen.
*Öffnen Sie erneut ein Terminal auf der Roboterseite und geben Sie den folgenden Befehl ein, um die Themeninformationen der Bewegung des Roboters anzuzeigen.
rostopic echo /cmd_vel #Zeigt die Infos im /cmd_vel Thema an
[[Datei:JetRacer_Steuerung_Publishing_Step03.png|Step03]]
=='''Steuerung per Tastatur'''==
=='''Steuerung per Tastatur'''==
*Drücken Sie „Strg+Alt+t“ auf der virtuellen Ubuntu-Maschine, um ein neues Terminal zu öffnen, und geben Sie den folgenden Befehl ein, um den Themenknoten für die Tastatursteuerung zu öffnen.
roslaunch jetracer_ros keyboard.launch
[[Datei:JetRacer_Steuerung_Keyboard_Step01.png|Step01]]
*Jetzt können Sie mit den Auf- und Ab-Tasten die Bewegung des Roboters steuern, und die Bewegungsdaten können in den vom Roboterterminal empfangenen Themen angezeigt werden.
[[Datei:JetRacer_Steuerung_Keyboard_Step02.png|Step02]]
*Drücken Sie ctrl+c, um die Ausführung des Knotens zu unterbrechen und zu beenden
*<span style="color:red">Die obigen Steuerungen sind nur gültig, wenn der Roboter-Masterknoten und der Roboter-Chassis-Knoten aktiviert sind. Wenn sich der Roboter nicht bewegt, nachdem Sie die Taste gedrückt oder den entsprechenden Wert im Thema geändert haben, ist der Knoten möglicherweise nicht eingeschaltet oder die Kommunikation zwischen den Maschinen ist gestört. Bitte überprüfen Sie dann die Schritte die zur Kommunikation zwischen den Maschinen durchgeführt wurden.</span>
=='''Steuerung per Kontroller'''==
=='''Steuerung per Kontroller'''==
*Verbinden Sie den USB-Empfänger des Gamepads mit dem Computer und wählen Sie Connect to Virtual Machine -> Ubuntu Jetracer.
[[Datei:JetRacer_Steuerung_Kontroller_Step01.png|Step01]]
*Führen Sie den folgenden Befehl in der virtuellen Maschine aus, um zu testen, ob das Gamepad normal angeschlossen ist. <span style="color:red">Schließen Sie den Empfänger des Gamepads zur Steuerung an die virtuelle Maschine an; wenn das Gamepad zur Steuerung mit dem jetson nano verbunden ist, kommt es zu erheblichen Verzögerungen</span>
ls /dev/input/
[[Datei:JetRacer_Steuerung_Kontroller_Step02.png|Step02]]
*Unter den Inputs steht js0 für den Kontroller. Führen Sie den folgenden Befehl aus, um zu testen, ob die Verbindung normal ist.
jstest /dev/input/js0
[[Datei:JetRacer_Steuerung_Kontroller_Step03.png|Step03]]
*Drücken Sie verschiedene Tasten auf dem Kontroller, der Wert der entsprechenden Taste ändert sich.
*Drücken Sie „Strg+C“, um den Knoten zu beenden.
*Geben Sie in der virtuellen Maschine den folgenden Befehl ein, um den Kontroller-Steuerknoten zu starten.
roslaunch jetracer_ros joy.launch
[[Datei:JetRacer_Steuerung_Kontroller_Step04.png|Step04]]
*Schalten Sie den Kontroller ein und drücken Sie die HOME-Taste, danach wird ein rotes Licht angezeigt. Dann müssen Sie die R2-Taste gedrückt halten und können dann mit dem linken Joystick die Richtung und mit dem rechten Joystick die Vor- und Rückbewegung steuern.
[[Datei:JetRacer_Steuerung_Kontroller_Step05.png|Step05]]
*Wenn die Fernsteuerung fehlschlägt, können Sie den folgenden Befehl in der virtuellen Maschine eingeben, das Programm ~/catkin_ws/src/jetracer_ros/scripts/teleop_joy.py öffnen und die Werte von axes[ ] und buttons[ ] in die tatsächlichen Werte der entsprechenden Schaltflächen ändern.
sudo nano catkin_ws/src/jetracer_ros/scripts/teleop_joy.py #Öffnet die Remote Control Steuerungs Datei
[[Datei:JetRacer_Steuerung_Kontroller_Step06.png|Step06]]

Aktuelle Version vom 15. Dezember 2024, 16:07 Uhr

Verschiedene manuelle Steuerungsmodi
Die verschiedenen Möglichkeiten wie der JetRacer gesteuert werden kann werden im Tutorial Robot Movement Control beschrieben. Hierbei ist zu beachten das beim Befehl "sudo adduser jetbot dialout" welcher den User hinzufügt, das jetbot durch ein jetracer ersetzt werden muss.
Steuerung per Node Publishing
Wie im Tutorial beschrieben kann der Roboter anhand einer Publishing Note Befehl für Befehl gesteuert werden. Dies ist zu Beginn nützlich um zu testen ob alle Bewegungsmöglichkeiten funktionieren.
Steuerung per Tastatur
Ebenfalls kann der Roboter per Tastatur gesteuert werden. Dieser Modus läuft flüssiger als die Publishing Node, ist aber gewöhnungsbedürftig.
Steuerung per Joystick
Der intuitivste Steurungsmodus ist das steuern per Game Controller, hier genannt Joystick. Für diesen Modus muss allerdings erst der Controller mit der Virtualbox verbunden werden. Hierfür muss in den Einstellungen der VM der Controller als USB Input Gerät festgelegt werden. Außerdem muss vielleicht der Input an der Virtualbox von js0 auf js1 geändert werden, da sonst die Maus als Input für die Steuerung benutzt wird. In diesem Tutorial: Assign specific device input paths wird beschrieben wie dies in einer ubunutu Umgebung möglich ist.

serielle Benutzer Gruppe hinzufügen

  • Geben Sie den Befehl ls /dev in jetson nano ein, um zu prüfen, ob die Treiberplatine normal mit jetracer verbunden ist und ob die Geräte ttyACM0 und ttyACM1 gefunden werden. (Wobei ttyACM0 für die Kommunikation mit dem Mikrocontroller und ttyACM1 für die Kommunikation mit dem Radargerät verwendet wird).
ls /dev

Step01

  • Geben Sie den folgenden Befehl ein, um die Benutzergruppe für den seriellen Anschluss hinzuzufügen, andernfalls haben Sie keine Berechtigung, den seriellen Anschluss zu bedienen. Wenn das konfigurierte System bereits Berechtigungen hinzugefügt hat, können Sie diesen Schritt überspringen.
ls -l /dev/ttyACM*           #Sehen sie die Einwahl der Benutzer Gruppe
id -Gn                       #Anzeige der Benutzergruppe, zu der der aktuelle Benutzer gehört; die erste Gruppe ist der aktuelle Benutzer
sudo adduser jetson dialout  #Hinzufügen des aktuellen Benutzers zur Benutzergruppe dialout, in der sich die serielle Schnittstelle befindet

Step02

  • Geben Sie den Befehl „sudo reboot“ ein, um neu zu starten, das Passwort ist jetson
  • Der obige Befehl zum Hinzufügen kann erst nach dem Neustart wirksam werden, und wenn keine Berechtigung für den seriellen Anschluss besteht, meldet der Roboterchassis-Knoten nach dem Hochfahren immer einen Fehler.
sudo reboot  #restart jetson nano

Roboter Karosserie Knoten öffnen

  • Verbinden Sie SSH mit dem Roboter, um das Terminal zu öffnen, und geben Sie den folgenden Befehl ein, um den Roboter-Masterknoten zu starten.
roscore #Start des Roboter-Masterknotens

Step01

  • Der folgende roslaunch-Befehl startet auch automatisch den Master-Knoten, aber der Zweck des Starts des Master-Knotens allein ist es, die Verbindung zur virtuellen Maschine ständig aufrechtzuerhalten. Andernfalls wird der Master-Knoten automatisch geschlossen, wenn der Chassis-Knoten geschlossen wird, was dazu führt, dass die virtuelle Maschine nicht mehr verbunden ist.
  • Geben Sie den folgenden Befehl ein, um den Roboter-Chassis-Knoten zu starten.
roslaunch jetracer_ros jetracer.launch #Start des Roboter Chassis Knoten

Step03

  • Öffnen Sie das Terminal der virtuellen Ubuntu-Maschine und geben Sie den folgenden Befehl in das Terminal ein, um zu überprüfen, ob die Kommunikationsverbindung zwischen den Maschinen normal funktioniert.
rostopic list
  • Wenn nach der Ausführung des Befehls der in der Abbildung unten gezeigte Inhalt erscheint, bedeutet dies, dass die Kommunikation zwischen den verschiedenen Geräten erfolgreich ist; wenn keine Verbindung hergestellt werden kann, überprüfen Sie, ob die IP-Adresse und der Hostname in den obigen Schritten falsch sind oder ob sie mit demselben WiFi verbunden sind.

Step03

    1. /cmd_vel ist das Thema der Roboterbewegung und wird vom Roboter gesteuert.
    2. /imu ist das IMU-Thema des Roboters.
    3. /motor/* zeigt die aktuelle eingestellte Geschwindigkeit an und stellt die Geschwindigkeit des linken und rechten Motors ein.
    4. /odom ist der Kilometerzähler des Roboters.
    5. /odom_combined ist der Fusionskilometerzähler des Roboters, der sich aus der Kombination des kodierten Kilometerzählers mit den IMU-Daten ergibt.

Steuerung per Veröffentlichungs Knoten

  • Nachdem die Kommunikation zwischen den Maschinen normal verlaufen ist, lassen Sie bitte den Chassis-Knoten des Roboters normal laufen und stellen Sie das Auto auf den Boden.
  • Öffnen Sie ein Terminal in der virtuellen Ubuntu-Maschine und geben Sie den folgenden Befehl ein, um die Topic Publishing Node zu starten.
rosrun rqt_publisher rqt_publisher #Start der Topic Publishing node

Step01

  • Im Pop-up-Fenster wählen Sie bitte das Thema /cmd_vel, klicken Sie auf „+“, um ein neues Thema zu erstellen, /cmd_vel ist das Thema der Steuerung der Bewegung des Roboters, linear->x gibt die lineare Geschwindigkeit des Roboters an, und angular->x gibt die Winkelgeschwindigkeit des Roboters an.
  • Ändern Sie den Wert von linear.x auf 0,5, klicken Sie mit der rechten Maustaste und wählen Sie „Ausgewähltes veröffentlichen“. Wenn Sie ein Thema veröffentlichen, bewegt sich der Roboter 0,5 Meter vorwärts und hält dann an; wenn linear.x auf 0 und angular.z auf 3,14 geändert wird, dreht sich der Roboter um einen halben Kreis.
  • Das Thema, das wir hier sehen, ist cmd_vel, bitte wählen Sie den Typ Twist, und wählen Sie andere Themen, das Auto darf sich nicht bewegen.

Step02

  • Drücken Sie Strg+C, um die Topic Publishing Node zu schließen.
  • Öffnen Sie erneut ein Terminal auf der Roboterseite und geben Sie den folgenden Befehl ein, um die Themeninformationen der Bewegung des Roboters anzuzeigen.
rostopic echo /cmd_vel #Zeigt die Infos im /cmd_vel Thema an

Step03

Steuerung per Tastatur

  • Drücken Sie „Strg+Alt+t“ auf der virtuellen Ubuntu-Maschine, um ein neues Terminal zu öffnen, und geben Sie den folgenden Befehl ein, um den Themenknoten für die Tastatursteuerung zu öffnen.
roslaunch jetracer_ros keyboard.launch

Step01

  • Jetzt können Sie mit den Auf- und Ab-Tasten die Bewegung des Roboters steuern, und die Bewegungsdaten können in den vom Roboterterminal empfangenen Themen angezeigt werden.

Step02

  • Drücken Sie ctrl+c, um die Ausführung des Knotens zu unterbrechen und zu beenden
  • Die obigen Steuerungen sind nur gültig, wenn der Roboter-Masterknoten und der Roboter-Chassis-Knoten aktiviert sind. Wenn sich der Roboter nicht bewegt, nachdem Sie die Taste gedrückt oder den entsprechenden Wert im Thema geändert haben, ist der Knoten möglicherweise nicht eingeschaltet oder die Kommunikation zwischen den Maschinen ist gestört. Bitte überprüfen Sie dann die Schritte die zur Kommunikation zwischen den Maschinen durchgeführt wurden.

Steuerung per Kontroller

  • Verbinden Sie den USB-Empfänger des Gamepads mit dem Computer und wählen Sie Connect to Virtual Machine -> Ubuntu Jetracer.

Step01

  • Führen Sie den folgenden Befehl in der virtuellen Maschine aus, um zu testen, ob das Gamepad normal angeschlossen ist. Schließen Sie den Empfänger des Gamepads zur Steuerung an die virtuelle Maschine an; wenn das Gamepad zur Steuerung mit dem jetson nano verbunden ist, kommt es zu erheblichen Verzögerungen
ls /dev/input/

Step02

  • Unter den Inputs steht js0 für den Kontroller. Führen Sie den folgenden Befehl aus, um zu testen, ob die Verbindung normal ist.
jstest /dev/input/js0

Step03

  • Drücken Sie verschiedene Tasten auf dem Kontroller, der Wert der entsprechenden Taste ändert sich.
  • Drücken Sie „Strg+C“, um den Knoten zu beenden.
  • Geben Sie in der virtuellen Maschine den folgenden Befehl ein, um den Kontroller-Steuerknoten zu starten.
roslaunch jetracer_ros joy.launch

Step04

  • Schalten Sie den Kontroller ein und drücken Sie die HOME-Taste, danach wird ein rotes Licht angezeigt. Dann müssen Sie die R2-Taste gedrückt halten und können dann mit dem linken Joystick die Richtung und mit dem rechten Joystick die Vor- und Rückbewegung steuern.

Step05

  • Wenn die Fernsteuerung fehlschlägt, können Sie den folgenden Befehl in der virtuellen Maschine eingeben, das Programm ~/catkin_ws/src/jetracer_ros/scripts/teleop_joy.py öffnen und die Werte von axes[ ] und buttons[ ] in die tatsächlichen Werte der entsprechenden Schaltflächen ändern.
sudo nano catkin_ws/src/jetracer_ros/scripts/teleop_joy.py #Öffnet die Remote Control Steuerungs Datei

Step06