Ps4 Controller mit ROS2

Wie kann ich einen Ps4 Controller unter ros2 nutzen?

Hallo,

wir bei EduArt verwenden nur den PS5 Controller. In meiner studentischen Tätigkeit habe ich mal diesen hier verwendet: GitHub - naoki-mizuno/ds4_driver: DualShock 4 driver for both ROS1 and ROS2

Gruß
Markus :robot:

Du kannst jeden Joystick der linux-kompatibel ist benutzen um zu fahren , manche sind nur von den Achsen her anders ausgelegt. (Ich gehe im folgenden davon aus dass ihr auch edu_robot nutzt)

Exkurs controller in Linux

In Linux sind Joysticks und Controller gleichgestellt; beide haben Achsen und Knöpfe.
Die Knöpfe & Achsen haben einen Index (von 0…n), und der ist pro controller anders (weil jeder controller anders gebaut ist).
→Du musst dem Programm sagen was was machen soll.

Ein prima programm ist jstest (teil der joystick suite sudo apt install joystick)
Das zeigt an welcher Achsen-/Knopfindex zu welcher bewegung am controller gehört

edu_robot_control

EduArt - Joystick support gibts in diesem repo .
Da ist eine parameter-datei, die die Belegung einstellt.
Du musst nur die Ziffern ändern damit eine sinnvolle Belegung für dein Controller herauskommt. Am besten du kopierst die Datei und nutzt sie als Vorlage wo du deine Belegung reinschreibst.

Dann kannst du diese launch Datei kopieren und umbenennen und in zeile 19 deine parameter-datei reinschreiben. Dadurch kannst du deinen joystick-knoten mit ros2 launch ... starten.

Danach das ganze wie gewohnt in einem src ordner durch colcon build schieben, das workspace sourcen und voilá kannst du mit joystick fahren!

Als Bespiel kannst du unser Repo anschauen.
:warning: Das Repo ist für bento-roboter ausgelegt, es wird ohne modifikation nicht mit stock EduArt software funktionieren!

PS: Under the hood

edu_robot_control redet tatsächlich nicht selber mit dem Joystick, es nutzt den joy_node, der im hintergrund gestartet wird (zeile 22-28). Dieser spuckt dann eine standard ‘Joy’ message aus, die dann von edu_robot_control in fahrtrichtungen übersetzt wird.

2 Likes

Bitte den joy_linux_node verwenden, wenn möglich. Dieser läuft am besten.