Aktualisierung (05 / 05 / 2024): Wir haben alle unsere Produkte auf Lager, finden Sie uns auch auf und    Jetzt shoppen

SBC-Schnittstelle mit uROS-Bibliothek

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.

Wenn Ihnen dieser Inhalt gefallen hat, können Sie uns weiter folgen Twitter, YouTube, Facebook or LinkedIn um über solche Inhalte auf dem Laufenden zu bleiben.

Hast du Fragen oder Wünsche?
Kontaktiere uns! Wir antworten <24 Stunden!

Symbol
Kontakt ArduSimple
Menu

Möchten Sie mehr über GPS erfahren/RTK?

1. Unser Engineering-Team wird sich mit Ihnen in Verbindung setzen, um alle Fragen zu klären
2. Wir halten Sie über Werbeaktionen und neue Produktveröffentlichungen auf dem Laufenden
3. Sie hören nur von uns, wenn wir wichtige Neuigkeiten haben, wir spammen Ihre E-Mail nicht zu