Navigation eines FTF mit ROS2: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 161: Zeile 161:
* 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:29 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

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

Motoren

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
ControlWord Bits
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