V tomto tutoriálu se naučíme, jak používat knihovnu uROS pro micropython: https://github.com/mgtm98/uRos
ROS je operační systém pro roboty, ve kterém různé „uzly“ komunikují s centrálním serverem prostřednictvím zpráv TCP ve formátu JSON.
Tato knihovna nám umožňuje implementovat uzel ROS v našem SBC. Připojí se k serveru a bude moci odesílat (publikovat) nebo přijímat (přihlašovat se k odběru) zpráv.
Kód pro odeslání zprávy je následující:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import síť od uros import * od uros.std_msgs import std_Bool lan = síť.LAN() lan.aktivní(Pravdivý) lan.ifconfig(( "10.0.0.1", "255.255.255.0", "10.0.0.2", "8.8.8.8" )) zatímco(lan.postavení() != 3 ): vytisknout( ".", konec="" ) čas.spát(1) vytisknout( "Připojeno!" ) uRos = Ros( "10.0.0.2", 9090 ) #vytvoření nového objektu uRos msg = std_Bool( data = Pravdivý ) #vytvoření objektu msg řetězce Ros uRos.publikovat( "uRosTopic", zpráva ) #publikování objektu msg vytisknout("Hotovo") |
V tomto kódu se nejprve připojíme k síti LAN a poté k serveru ROS; definujeme formát naší zprávy a nakonec ji zveřejníme.
Na PC spustíme kód v pythonu, který funguje jako ROS server. Pro jednoduchost je tento kód pouze soketový server, který tiskne data do konzole.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import zásuvka import sys def socket_server( hostitel, port ): s = zásuvka.zásuvka (zásuvka.AF_INET, zásuvka.SOCK_STREAM) s.bind((hostitel, port)) s.poslouchat(1) zatímco Pravdivý: spoj, adr = s.akceptovat() vytisknout('Připojeno', adresa) zatímco Pravdivý: údaje = spoj.recv(1024) if ne údaje: rozbít vytisknout(data) spoj.zavřít() vytisknout("spojení uzavřeno") s.zavřít() vytisknout("je zavřeno") socket_server( "10.0.0.2", 9090 ) vytisknout("Hotovo") |
V důsledku toho se zobrazí data přijatá na serveru:
Pokud prozkoumáme data, uvidíme dvě části:
1. Definice našeho sdělení uRosTopic. Toto je odesláno pouze jednou pro každý nový typ zprávy.
2. A zveřejněná data. Odesílá se pokaždé, když zveřejníme novou hodnotu.
Nyní jste připraveni připojit svůj SBC k jakémukoli zařízení ROS přes ethernet, definovat vlastní zprávu a odeslat ji pouze s několika řádky kódu python.