Fortsetzung der Artikelserie.
Beiträge in der Reihe:
8. Wir steuern von der Telefon-ROS-Steuerung, GPS-Knoten7. Roboterlokalisierung: Gmapping, AMCL, Referenzpunkte auf der Raumkarte6. Kilometerzähler mit Radgebern, Raumkarte, Lidar5. Wir arbeiten in RVIZ und Pavillon: XACRO, neue Sensoren.4. Erstellen Sie mit den Editoren rviz und gazebo eine Robotersimulation.3. Beschleunigen, Kamera wechseln, Gang korrigieren2. Software1. EisenWenn Karten auf einem Roboter auf engstem Raum erstellt werden, gibt es keine Probleme. Indem Sie den Roboter über die Tastatur von der Steuerstation oder am Roboter selbst steuern, können Sie seine Bewegungen visuell beobachten und unerwünschte Hindernisse rechtzeitig vermeiden. Bei mehreren Räumen ist die Situation kompliziert. Und hier gibt es mehrere Möglichkeiten, einen Roboter beim Erstellen einer Karte zu beobachten, wenn er den Raum des Bedieners verlässt:
- Schließen Sie die Kamera direkt an den Roboter an.
- Verwenden Sie das vorhandene Videoüberwachungssystem außerhalb des Roboters.
- Steuerung mit Wi-Fi, Bluetooth-Tastatur in der Nähe des Roboters
- "Tragen Sie den Roboter in Ihren Armen", damit der Lidar Daten sammelt;
- Steuern Sie den Roboter vom Telefon aus.
Die letztere Option mag zweckmäßig erscheinen. Um den Roboter vom Telefon aus zu steuern, neigen Sie ihn (das Telefon) einfach in die richtige Richtung, während der Roboter eine Karte erstellt. Eine solche Mission ist möglich.
Lassen Sie uns überlegen, wie Sie den Roboter vom Telefon aus steuern und die entsprechenden Nachrichten an die ROS-Themen des Roboters senden.
Für die angegebenen Zwecke ist es nicht erforderlich, eine separate Anwendung auf dem Telefon zu schreiben. Um die vorhandenen Praktiken zu nutzen, laden Sie sie einfach auf Ihr Telefon herunter und installieren Sie die Android-Anwendung vom Markt - „ROS Control“.
Richten Sie die ROS Control App auf Ihrem Telefon ein.
Die Anwendung ist intuitiv - ein Roboter wird mit einem "+" - Zeichen hinzugefügt, seine IP wird eingestellt:
Wählen Sie als Nächstes "Erweiterte Optionen anzeigen" und schreiben Sie Themen für den Roboterwagen vor:
Nachrichten vom Telefon werden in diese Themen aufgenommen und auch in einem Format akzeptiert, das ROS versteht.
In der Bewerbung stehen uns folgende Themen zur Verfügung:
- Joystick-Thema - Steuerung vom Telefon aus;
- Laserscan-Thema - Daten aus dem Lidar;
- nav sat topic - GPS-Roboterdaten;
- Odom - Odometrie (alles, was von Encodern und / oder Imu und / oder Lidar kommt);
- pose - "position", die Position des Roboters.
Meistern Sie das Joystick-Thema.
Der Roboter selbst wird nicht gehen, daher werden wir ein Thema über den Roboter mit einem Bewegungstreiber starten, das bereits in früheren Beiträgen vorgestellt wurde:
1. Terminal:
rosrun rosbots_driver part2_cmr.py
Klicken Sie auf dem Telefon in der Anwendung ROS Control auf die Zeile mit dem Namen des Roboters und führen Sie im Robotersteuerungsmenü einen Fehler aus:
Wenn Sie jetzt mit dem Finger (in eine beliebige Richtung) am Joystick ziehen, fährt der Wagen. Hier ist alles einfach.
Wenn Sie sich ansehen, was mit dem Thema des auf Himbeere ausgeführten Lokomotivtreibers passiert, werden Sie feststellen, dass das Telefon Nachrichten im entsprechenden Format veröffentlicht und der Treiber empfängt:

Alle anderen Themen arbeiten nach dem gleichen Prinzip.
* Wenn dennoch ein Fehler aufgetreten ist, müssen Sie im Steuermodus des Roboters auf drei parallele Streifen oben links im Anwendungsbildschirm klicken. In den "Einstellungen" fehlschlagen und dann "Themen" auswählen:
Klicken Sie anschließend auf das entsprechende Thema und registrieren Sie den Pfad (Wert):
Mal sehen, was Lidar in der Anwendung ist.
Führen Sie auf dem Roboter den Lidar-Knoten aus:
roslaunch rplidar_ros rplidar.launch
Wenn Sie die Anwendung erneut aufrufen, werden auf dem Bildschirm der Robotersteuerung charakteristische Punkte und ein blauer Pfeil angezeigt:
* Sie können auch fahren, indem Sie das Telefon in verschiedene Richtungen neigen und den Neigungssteuerungsmodus auswählen:
Es gibt andere Modi des "Fahrens", sogar mit der Fähigkeit, einen Punkt auf der Karte direkt auf dem Telefon anzuzeigen, aber da die Karte sehr willkürlich ist, wird die Reise auch bedingt sein, dh nirgendwohin führen.
Bei Bewegungsthemen wie Kameras (wir werden es nicht berücksichtigen) ist alles mehr oder weniger klar, wir werden uns mit GPS befassen.
Es gibt wenig Sinn im Raum von GPS, aber es ist interessant zu sehen, wie es funktioniert.
Für Tests ist jede GPS-Pfeife geeignet. Meine Option ist wie folgt -
Damit es funktioniert, müssen Sie zuerst den GPS-Knoten auf Himbeere installieren.
Aber lassen Sie uns zuerst prüfen, ob die GPS-Pfeife funktioniert, sonst werden alle anderen Gespräche zugunsten der Armen geführt.
Wir setzen Pakete auf Himbeere:
sudo apt-get install gpsd
sudo apt-get install gpsd-clients
Überprüfen Sie, ob die GPS-Pfeife unter den USB-Geräten definiert ist:
lsusb

Überprüfen Sie nun, ob das GPS etwas akzeptiert:
gpscat -s 9600 /dev/ttyACM1
* Anstelle von ttyACM1 können andere Werte (ttyACM0, ttyUSB0, ttyAMA0) verwendet werden, je nachdem, an welchem Port die GPS-Pfeife aktiviert ist.
GPS-Nachrichten werden im Terminal verteilt:
Weitere strukturierte (für das Auge ansprechende) Daten können wie folgt erhalten werden:
gpsmon /dev/ttyACM1
* Die Koordinaten sind nicht meine, was seltsam ist. Es ist nicht klar, womit dies verbunden ist.
Installieren Sie den GPS-Knoten auf Himbeere:
sudo apt-get install libgps-dev
cd catkin_ws/src
git clone https://github.com/ros-drivers/nmea_navsat_driver
git clone https://github.com/ros/roslint
cd /home/pi/rosbots_catkin_ws
catkin_make
Nachdem wir den GPS-Knoten zusammengestellt haben, führen Sie ihn aus (auf dem Roboter):
rosrun nmea_navsat_driver nmea_serial_driver _port:=/dev/ttyACM1 _baud:=9600
Wenn Sie sich die Themen ansehen (in einem anderen Terminal des Roboters), können Sie sehen, dass das Telefon ein Thema abonniert hat und die Veröffentlichung eines GPS-Knotens zu einem anderen wechselt:
Ändern Sie das empfangende Thema auf dem Telefon in das Thema / fix über die oben beschriebenen Einstellungen.
Nach der Änderung ist die Veröffentlichung und Rezeption in einem Thema:
Und am Telefon können Sie die Koordinaten beobachten:
Kilometerzähler (Thema / Kilometer).
Wenn Sie den Kilometerzählerknoten von früheren Posts aus ausführen, können Sie beim Bewegen des Roboters auch die linearen und Winkelgeschwindigkeiten des Roboters auf dem Telefon abrufen (Geschwindigkeiten werden nicht mit GPS berechnet).
Auf dem Roboter:
cd /home/pi/rosbots_catkin_ws/src/rosbots_driver/scripts/rosbots_driver
python diff_tf.py
Am Telefon: