In diesem Tutorial lernen wir, wie man die uROS-Bibliothek für Micropython verwendet: https://github.com/mgtm98/uRos
ROS ist ein Betriebssystem für Roboter, bei dem die verschiedenen „Knoten“ über TCP-Nachrichten im JSON-Format mit einem zentralen Server kommunizieren.
Diese Bibliothek ermöglicht es uns, einen ROS-Knoten in unserem zu implementieren SBC. Es stellt eine Verbindung zu einem Server her und kann Nachrichten senden (veröffentlichen) oder empfangen (abonnieren).
Der Code zum Posten einer Nachricht lautet wie folgt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | importieren Netzwerk für Uros importieren * für uros.std_msgs importieren std_Bool lan = Netzwerk.LAN() LAN.aktiv(Wahre) Lan.ifconfig( ( "10.0.0.1", "255.255.255.0", "10.0.0.2", "8.8.8.8" )) während(lan.Status() != 3 ): drucken( ".", Ende="" ) Zeit.schlafen(1) drucken( "In Verbindung gebracht!" ) uRos = Rosa ( "10.0.0.2", 9090 ) #neues uRos-Objekt erstellen msg = std_Bool( Daten = Wahre ) #Erstellen eines Ros-String-msg-Objekts uRos.veröffentlichen( "uRosThema", Nachricht ) #Veröffentlichen des msg-Objekts drucken("fertig") |
In diesem Code verbinden wir uns zuerst mit dem LAN-Netzwerk und dann mit dem ROS-Server; Wir definieren das Format unserer Nachricht und schließlich veröffentlichen wir.
Auf dem PC führen wir einen Code in Python aus, der als ROS-Server fungiert. Der Einfachheit halber ist dieser Code nur ein Socket-Server, der die Daten an die Konsole ausgibt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | importieren Buchse importieren sys def socket_server( Host, Port ): s = Buchse.Steckdose (Steckdose.AF_INET, Steckdose.SOCK_STREAM) s.bind((Host, Port)) s.Hören(1) während Wahre: Anschluss, Adr = s.accept () drucken('Verbunden über', Adresse) während Wahre: Daten = conn.recv(1024) if nicht Daten: brechen drucken(Daten) Verbind.schließen() drucken("Verbindung geschlossen") s.schließen() drucken("ist geschlossen") socket_server( '10.0.0.2', 9090 ) drucken("fertig") |
Als Ergebnis werden die auf dem Server empfangenen Daten angezeigt:

Wenn wir die Daten untersuchen, sehen wir zwei Teile:
1. Die Definition unserer uRosTopic-Botschaft. Diese wird nur einmal für jeden neuen Nachrichtentyp gesendet.

2. Und die veröffentlichten Daten. Dies wird jedes Mal gesendet, wenn wir einen neuen Wert veröffentlichen.

Jetzt können Sie Ihren SBC über Ethernet mit jedem ROS-Gerät verbinden, eine benutzerdefinierte Nachricht definieren und sie mit nur wenigen Zeilen Python-Code senden.