Navigation eines FTF mit ROS2: Unterschied zwischen den Versionen
Zeile 67: | Zeile 67: | ||
== Ansteuerung der FTF Aktoren == | == Ansteuerung der FTF Aktoren == | ||
=== CANopenLinux === | |||
Zur Ansteuerung der Motoren wird eine CANopen Node mit der ID=3 eröffnet. <br> | Zur Ansteuerung der Motoren wird eine CANopen Node mit der ID=3 eröffnet. <br> | ||
Um den PCAN Treiber zu laden muss folgender Befehl ausgeführt werden: <br> | Um den PCAN Treiber zu laden muss folgender Befehl ausgeführt werden: <br> | ||
Zeile 89: | Zeile 88: | ||
<code>sudo ip link set up can0</code> <br> | <code>sudo ip link set up can0</code> <br> | ||
=== Nützliche Befehle === | |||
====0x6040 ControlWord==== | |||
Das ControlWord dient zur Bewegungssteuerung <br> | Das ControlWord dient zur Bewegungssteuerung <br> | ||
* Data Type: UNSIGNED16 | * Data Type: UNSIGNED16 | ||
Zeile 113: | Zeile 112: | ||
====0x6060 Modes_of_operation==== | |||
Schalter zur Auswahl des Operationsmodus.<br> | Schalter zur Auswahl des Operationsmodus.<br> | ||
* Data Type: INTEGER8 | * Data Type: INTEGER8 | ||
Zeile 136: | Zeile 135: | ||
====0x6064 Position_value_calculated==== | |||
Zeigt die Motorposition.<br> | Zeigt die Motorposition.<br> | ||
* Data Type: INTEGER32 | * Data Type: INTEGER32 | ||
Zeile 142: | Zeile 141: | ||
<br> | <br> | ||
====0x607A target_position==== | |||
Zielposition für den Profile Position Mode.<br> | Zielposition für den Profile Position Mode.<br> | ||
* Data Type: INTEGER32 | * Data Type: INTEGER32 | ||
Zeile 151: | Zeile 150: | ||
<br> | <br> | ||
====0x6081 P2P_profile_velocity==== | |||
Maximale Geschwindigkeit.<br> | Maximale Geschwindigkeit.<br> | ||
* Data Type: UNSIGNED32 | * Data Type: UNSIGNED32 | ||
Zeile 157: | Zeile 156: | ||
<br> | <br> | ||
====0x6083/0x6084 profile_acceleration/deceleration==== | |||
Profil Beschleunigungs/Verzögerungsgeschwindigkeit in 100 rps/s.<br> | Profil Beschleunigungs/Verzögerungsgeschwindigkeit in 100 rps/s.<br> | ||
* Data Type: UNSIGNED32 | * Data Type: UNSIGNED32 | ||
* Access Type: read/write | * Access Type: read/write | ||
=== Diff drive controller === | |||
== Inbetriebnahme == | == Inbetriebnahme == |
Version vom 16. September 2022, 09:30 Uhr
Autor: Yannick Schmidt
Art: Projektarbeit
Dauer: April - September 2022
Betreuer: Prof. Schneider
Thema
Das Thema der Projektarbeit ist es das Fahrerlose Transportfahrzeug mit ROS2 zu navigieren
Aufgabenstellung
- Einarbeitung in ROS 2 und die FTF Hardware
- Optimierung der Navigation in der WeBots Simulation
- Inbetriebnahme der FTF Sensoren
- Sicherer Betriebszustand und Notaus
- Ansteuerung der FTF Aktoren
- Schnittstelle ROS2 zum FTF herstellen
- Navigation des FTF in einer realen Umgebung
- Ausblick auf Optimierungspotential
- Dokumentation der Erkenntnisse in einem Wiki Artikel
Anforderungen an die Projektarbeit
- Wissenschaftliche Vorgehensweise (Projektplan, etc.), nützlicher Artikel: Gantt Diagramm erstellen
- Zweiwöchentlicher Fortschrittsberichte (informativ)
- Projektvorstellung im Wiki
- Regeln zum Umgang mit SVN
- Studentische Arbeiten bei Prof. Schneider
- Anforderungen an eine wissenschaftlich Arbeit
Projektplan
Nützlicher Artikel: Gantt Diagramm erstellen
Notwendige ROS2 Bibliotheken
Kartografierung
- cartographer_node
- occupancy_grid_node
- RP_Lidar
- map_server
Lokalisierung
- nav2_amcl
Pfad Planung
- nav2_planner
- nav2_controller
- nav2_bt_navigator
- nav2_recoveries
Aktorsteuerung
- ros2_canopen?
Objektumgehung
- nav2_coastmap
Inbetriebnahme der FTF Sensoren
Lidar
- RPLidar mit rplidar_ros2 package ansteuerbar
6-Achsen Gyroskop
Ansteuerung der FTF Aktoren
CANopenLinux
Zur Ansteuerung der Motoren wird eine CANopen Node mit der ID=3 eröffnet.
Um den PCAN Treiber zu laden muss folgender Befehl ausgeführt werden:
sudo modprobe pcan
Dazu muss zunächst die CAN Schnittstelle zugewiesen werden:
sudo ip link set up can0 type can bitrate 250000
Anschließend wird die Node erstellt:
canopend can0 -i 3 -c "local-/tmp/CO_command_socket"
Der CANBus kann mit candump can0
ausgelesen werden.
Mit cocomm "<node> <r/w> <index> <subindex> <datatype> <value>"
können Befehle gesendet/ausgelesen werden.
Peak CANController Setup für ros2_canopen:
sudo modprobe peak_usb
sudo ip link set can0 up type can bitrate 250000
sudo ip link set can0 txqueuelen 250
sudo ip link set up can0
Nützliche Befehle
0x6040 ControlWord
Das ControlWord dient zur Bewegungssteuerung
- Data Type: UNSIGNED16
- Access Type: write only
15 | 11 | 10 | 9 | 8 | 7 | 6 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|
Manufacturer Specific | Reserved | Halt | Fault Reset | Operation Mode Specific | Enable Operation | Quick Stop | Enable Voltage | Switch on |
0x6060 Modes_of_operation
Schalter zur Auswahl des Operationsmodus.
- Data Type: INTEGER8
- Access Type: write only
Mode of Operation | Action |
---|---|
-2 | SYNC Q Mode |
-1 | Normal Q Mode |
1 | Profile Position Mode |
3 | Profile Velocity Mode |
4 | Torque Profile Mode |
6 | Homing Mode |
Der Operationsmodus steht in 0x6061.
0x6064 Position_value_calculated
Zeigt die Motorposition.
- Data Type: INTEGER32
- Access Type: read only
0x607A target_position
Zielposition für den Profile Position Mode.
- Data Type: INTEGER32
- Access Type: read/write
ControlWord Bit 6 setzen:
- 0 für absolute Position
- 1 für relative Position
0x6081 P2P_profile_velocity
Maximale Geschwindigkeit.
- Data Type: UNSIGNED32
- Access Type: read/write
0x6083/0x6084 profile_acceleration/deceleration
Profil Beschleunigungs/Verzögerungsgeschwindigkeit in 100 rps/s.
- Data Type: UNSIGNED32
- Access Type: read/write
Diff drive controller
Inbetriebnahme
1. Pakete bauen
- Hinweis: erst canopen_interfaces mit
colcon build --merge-install --packages-select canopen_interfaces
bauen
Dann mit colcon build --merge-install
alles bauen.
Ergebnis
Zusammenfassung
Lessons Learned
Projektunterlagen
Link zu dem SVN_Ordner des Projekt.
YouTube Video
Das Video von diesem Projekt finden Sie auf Youtube unter dem Link:
Weblinks
Literatur
→ zurück zum Hauptartikel: Studentische Arbeiten