Update (04 / 12 / 2024): We hebben voldoende voorraad van al onze producten, vind ons ook in en    Shop nu

SBC-interface met uROS-bibliotheek

In deze tutorial leren we hoe we de uROS-bibliotheek voor micropython kunnen gebruiken: https://github.com/mgtm98/uRos

ROS is een besturingssysteem voor robots waarin de verschillende “nodes” communiceren met een centrale server via TCP-berichten in JSON-formaat.

Met deze bibliotheek kunnen we een ROS-knooppunt implementeren in onze SBC. Het maakt verbinding met een server en kan berichten verzenden (publiceren) of ontvangen (abonneren op).

De code om een ​​bericht te plaatsen is als volgt:

 1 2 3 4 5 6 7 8 9 10 11 12 13 14
importeren netwerk
van uro's importeren *
van uros.std_msgs importeren std_Bool lan = netwerk.LAN() lan.actief(Waar) lan.alsconfig( ( "10.0.0.1", "255.255.255.0", "10.0.0.2", "8.8.8.8" ))
en(lan.toestand() != 3 ):
    print( "", einde="" ) tijd.slaap(1)
print( "Verbonden!" ) uRoos = Roos( "10.0.0.2", 9090 )    #creëren van nieuw uRos-object
msg = std_Bool( gegevens = Waar )     #creëren van een Ros string-berichtobject
uRos.publiceren( "uRosTopic", bericht )  #het bericht-object publiceren
print("gedaan")

In deze code maken we eerst verbinding met het LAN-netwerk en vervolgens met de ROS-server; we definiëren het formaat van ons bericht en tot slot publiceren we.

Op de pc voeren we een code uit in python die fungeert als ROS-server. Voor de eenvoud is deze code slechts een socketserver die de gegevens naar de console afdrukt.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
importeren stopcontact
importeren sys
def socket_server(host, poort): s = stopcontact.stopcontact (stopcontact).AF_INET, stopcontact.SOCK_STREAM) zo.bind((host, poort)) s.luister(1)
    en Waar: conn, adres = s.aanvaarden()
        print('Verbonden door', adres)
        en Waar: gegevens = conn.recv(1024)
            if niet data:
                breken
            print(gegevens) verbinding.dichtbij()
        print("conn gesloten") s.dichtbij()
    print("is gesloten") socket_server( '10.0.0.2', 9090 )
print("gedaan")

Als resultaat worden de op de server ontvangen gegevens weergegeven:

Als we de gegevens onderzoeken, zien we twee delen:

1. De definitie van ons uRosTopic-bericht. Dit wordt slechts één keer verzonden voor elk nieuw type bericht.

2. En de gepubliceerde gegevens. Dit wordt elke keer verzonden als we een nieuwe waarde publiceren.

 

Nu ben je klaar om je SBC via ethernet met elk ROS-apparaat te verbinden, een aangepast bericht te definiëren en het te verzenden met slechts een paar regels python-code.

Als je deze inhoud leuk vond, kun je ons volgen Twitter, YouTube, Facebook or LinkedIn om op de hoogte te blijven van dit soort inhoud.

Heeft u vragen of verzoeken?
Neem contact met ons op! Wij antwoorden <24 uur!

icon
Contact ArduSimple
Sluiten

Meer weten over GPS/RTK?

1. Ons technische team zal contact met u opnemen om eventuele vragen op te lossen!
2. We houden u op de hoogte van promoties en nieuwe productreleases
3. U hoort alleen van ons als we belangrijk nieuws hebben, we zullen uw e-mail niet spammen