
Dies ist ein einfaches Beispiel dafür, wie Sie mit ROS mehrere Geräte über ein Netzwerk verbinden und Steuerdaten senden können.
Unter dem Schnitt am Ende befindet sich eine Videodemonstration der Robotersteuerung vom Joystick.
Wir brauchen einen Joystick selbst. Sie können ihn von Ihrem ps4 nehmen oder in einem Geschäft kaufen. Ich habe Dualshock 4 v2 gekauft, die erste Version sollte auch funktionieren.
Sie benötigen auch ein Bluetooth auf Ihrem Computer mit ROS. In der Treiberdokumentation empfehlen wir USB-Blutooth-Adapter Version 2.1+. Ich habe perfekt mit dem im Laptop eingebauten Adapter gearbeitet. Sie können auch einen Joystick und nur ein USB-Kabel anschließen.
Dann müssen Sie in Ubuntu mit ROS den
Treiber gemäß den Anweisungen installieren.
Nachdem wir die Treiber installiert und den Joystick über Bluetooth verbunden haben, starten wir das grafische Dienstprogramm jstest-gtk und stellen fest, dass wir zwei Joysticks haben. Wir benötigen den zweiten, da er alle Tasten und Sticks enthält.

Da ROS standardmäßig mit joy0 arbeitet, müssen wir es auf joy1 neu definieren:
sudo chmod a+rw /dev/input/js1 rosparam set joy_node/dev "/dev/input/js1"
Jetzt müssen wir alles in einem einzigen Netzwerk verbinden. Ein Laptop mit ROS wird Master, und EduMip mit BeagleBone Blue ROS wird über WLAN eine Verbindung zum Laptop herstellen. Beide Geräte befinden sich im lokalen Netzwerk des WLAN-Routers.
Stellen Sie auf Ihrem PC die ROS-Umgebungsvariablen so ein, dass mit den Befehlen .bashrc auf dem PC nach dem Assistenten ros (roscore) gesucht wird (fügen Sie diese Befehle am Ende Ihrer .bashrc-Datei hinzu):
“export ROS_MASTER_URI=http://192.168.10.101:11311” <- ROS IP- , ros (roscore). “export ROS_IP=192.168.10.101” <- ROS IP- ( ).
Stellen Sie in Ihrem EduMIP die ROS-Umgebungsvariablen so ein, dass der Ros-Assistent (Roscore) mit den Befehlen .bashrc auf dem PC gefunden wird (fügen Sie diese Befehle am Ende Ihrer .bashrc-Datei hinzu):
“export ROS_MASTER_URI=http://192.168.10.101:11311” <- ROS IP- , ros (roscore). “export ROS_IP=192.168.10.102” <- ROS IP- ( EduMIP).
Es bleibt nur ein Programm zu schreiben, das die Position des Sticks vom Joystick liest und an das Thema sendet, und der Roboter, um dieses Thema zu lesen.
Auf Ihrem PC können Sie Knoten und Themen visuell anzeigen, indem Sie rqt_graph ausführen:

Demonstration der Robotersteuerung mit dem Joystick:
Zusammenfassung: Mit ROS können Sie ein System für Arbeiten erstellen, die auf mehrere Geräte verteilt sind, und beispielsweise umfangreiche Berechnungen auf dem Hauptcomputer durchführen, wobei nur das übrig bleibt, was für eine schnelle Reaktion auf den Roboter selbst erforderlich ist. BeagleBone Blue verfügt über ein programmierbares Echtzeit-Subsystem (PRU - ICSS).
PRU-ICSS besteht aus einem Mikroprozessor, der auf zwei 32-Bit-Kernen mit einer RISC-Architektur basiert und mit einer Frequenz von 200 MHz arbeitet. Jeder Kern verfügt über einen eigenen Speicherbereich sowie einen Linux-kompatiblen Speicherbereich. Er kann Allzweck-Pins an den P8-P9-Anschlüssen verwenden und Interrupts erzeugen.
Darüber hinaus kann der beim Ändern der Position auf BeagleBone Blue installierte MPU9250-Sensor einen Interrupt bilden, an dem Sie Ihre Funktion aufhängen können. Genau das wurde in EduMip getan.
Wenn wir über den nächsten Evolutionsschritt sprechen, ist dies ROS2, wobei einer der Unterschiede DDS (Data Distribution Service) ist, mit dem Sie ein Netzwerk aus verschiedenen interagierenden Robotern und Geräten aufbauen können, auf denen ROS nicht ausgeführt wird.