Navigation eines FTF mit ROS2: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 52: Zeile 52:


Mit <code> cocomm "<node> <r/w> <index> <subindex> <datatype> <value>"</code> können Befehle gesendet/ausgelesen werden. <br>
Mit <code> cocomm "<node> <r/w> <index> <subindex> <datatype> <value>"</code> können Befehle gesendet/ausgelesen werden. <br>
<br>
==== Nützliche Befehle ====
'''0x6040 ControlWord''' <br>
Das ControlWord dient zur Bewegungssteuerung <br>
* Data Type: UNSIGNED16
* Access Type:  write only
{| class="wikitable"
|+ ControlWord Bits
! 15 !! 11 !! 10 !! 9 !! 8 !! 7 !! 6 !! 4 !! 3 !! 2 !! 1 !! 0
|-
|colspan="2"| Manufacturer Specific
|colspan="2"| Reserved
| Halt
| Fault Reset
|colspan="2"| Operation Mode Specific
| Enable Operation
| Quick Stop
| Enable Voltage
| Switch on
|-
|}
<br>
'''0x6060 Modes_of_operation'''
Schalter zur Auswahl des Operationsmodus.<br>
* Data Type: INTEGER8
* Access Type: write only
{| class="wikitable"
! 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'''. <br>
'''0x6064 Position_value_calculated''' <br>
Zeigt die Motorposition.<br>
* Data Type: INTEGER32
* Access Type: read only
<br>
'''0x607A target_position'''
Zielposition für den Profile Position Mode.<br>
* Data Type: INTEGER32
* Access Type: read/write
'''ControlWord''' Bit 6 setzen:
* 0 für absolute Position
* 1 für relative Position
<br>
'''0x6081 P2P_profile_velocity'''
Maximale Geschwindigkeit.<br>
* Data Type: UNSIGNED32
* Access Type: read/write
<br>
'''0x6083/0x6084 profile_acceleration/deceleration'''
Profil Beschleunigungs/Verzögerungsgeschwindigkeit in 100 rps/s.<br>
* Data Type: UNSIGNED32
* Access Type: read/write


== Ergebnis ==
== Ergebnis ==

Version vom 22. Juni 2022, 12:28 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

  1. Studentische Arbeiten bei Prof. Schneider
  2. Anforderungen an eine wissenschaftlich Arbeit


Projektplan

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.

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

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