Darstellung der Ergebnisse: Unterschied zwischen den Versionen
Zeile 16: | Zeile 16: | ||
Oder er fährt links (I heard: "left"), da für den rechten IR-Sensor eine 0 und für den linken eine 1 ausgelesen wurde. | Oder er fährt links (I heard: "left"), da für den rechten IR-Sensor eine 0 und für den linken eine 1 ausgelesen wurde. | ||
[[Datei:IR_Left.jpg|left|mini|500px|Abb. 14 Hindernisumfahrung | [[Datei:IR_Left.jpg|left|mini|500px|Abb. 14 Infrarot Hindernisumfahrung Terminalausgabe]] | ||
<br clear=all> | <br clear=all> |
Version vom 19. März 2022, 14:40 Uhr
Motortest Ergebnis
In Abb. 13 sind zwei Ubuntu Terminals zusehen, wie diese miteinander kommunizieren. In dem linken Terminal wird der Befehl ros2 topic pub /cmd_vel std_msgs/msg/String '{data: forward}'
ausgeführt und die Nachricht "forward" gepublished. Diese Nachricht wird in einer loop in gleichmäßigen Zeitabständen an die slave gepublished.
Die Slave (rechtes Terminal) erhält die Nachricht und für diesen Fall steuert sie dann die GPIO Pins an, sodass der AlphaBot vorwärts fährt.
Infrarot Hindernisumfahrung Ergebnis
In Abb. 14 ist zu der Infrarot Hindernisumfahrung ein Beispiel, wie das in einem Terminal während der Programmausführung aussieht.
So fährt der AlphaBot vorwärts (I heard: "forward"), da für beide IR-Sensoren eine 1 ausgelesen wurde.
Oder er fährt links (I heard: "left"), da für den rechten IR-Sensor eine 0 und für den linken eine 1 ausgelesen wurde.
In ROS2 können die Programmierten Nodes und Topics in einem RQT-Graph grafisch Dargestellt werden wie schon in den ROS2 Tutorials gezeigt. Für die Infrarot Hindernisumfahrung könnte der Graph dann wie in Abb. 15 gezeigt aussehen.
Dort ist zusehen das der master zu den beiden Topics "IR_right und IR_left" subscript und über die Topic "cmd_vel" published. Auf der anderen Seite, die Slave, published über die Topics "IR_right und IR_left" und subscript zur Topic "cmd_vel".
Zudem gibt es unter RQT die Möglichkeit die Sensordaten in einem sogenannten Plot darzustellen.
Dazu muss in RQT unter dem Reiter Plugin, Visualisierung Plot ausgewählt werden, wie in Abb. 16 gezeigt.
In dem Plot kann das Koordinatensystem mit dem in Abb. 17 markierten Bereich in der Größe eingestellt werden.
An der X-Axis muss nichts geändert werden, da diese sich während der Ausführung automatisch erweitert. Unter Y-Axis lässt sich für Bottom der niedrigste Wert und für Top der höchste Wert, welches das Koordinaten System haben soll einstellen.
Um die Sensordaten dem Plot hinzuzufügen wird der Topic-Monitor benötigt. Der Topic Monitor wird über den Reiter Plugin und dann Topics, Topic Monitor geöffnet.
In Abb. 18 sind links über den Topic Monitor die verschiedenen Topics zu sehen. Über den Pfeil links neben den Topics wird ein weiterer Reiter Namens "data" ausgeklappt. Unter den Topics DR_left und DR_right kann "data" per drag and drop in den Plot gezogen werden. So erscheint in dem Plot oben links eine Legende mit dem Topic Namen und der Farbe des Graphens (Abb. 18). Während der Laufzeit wird dann der Plot für die beiden IR-Sensoren generiert.
Außerdem ist zusehen, das zweimal der blaue Graph auf 0 fällt. So ist hier genauer zu erkennen, dass sich die Sensordaten nur auf 1 und 0 beschränken. Weiter ist zuerkennen, dass der linke Sensor(blauer Plot) anspricht und dort sich zu dem Zeitpunkt ein Hindernis befindet.
Ultraschall Hindernisumfahrung Ergebnis
Die Terminalausgabe während das Programm ausgeführt wird, könnte wie in Abb. 19 aussehen.
Dort ist zu erkenne, dass nur middle_data (Publishing Middle) gepublished wird bis dieser Wert unter 50 fällt.
Dann werden zusätzlich die Sensordaten für links und rechts gepublished, nachdem der Servo nach rechts und links gedreht wurde.
In dem RQT-Graph zur Ultraschall Hindernisumfahrung wurden die Sensordaten Topics zu einer Gruppe zusammengefasst, da nur ein Ultraschallsensor mit 3 ROS2 Topics verwendet wurde(Abb. 20).
Das wurde gemacht, um die Sensordaten für links, Mitte und rechts auseinander zuhalten.
Allgemein ist das Prinzip, wie bei der Infrarot Hindernisumfahrung, nur das die Slave über drei verschiedene Topics die Sensordaten published.
Und über die cmd_vel Topic werden zusätzlich die Servo-Movements gepublished.
→ zurück zum vorherigen Artikel: Kommunikation Raspberry Pi mit ROS2