Tässä opetusohjelmassa opimme käyttämään uROS-kirjastoa micropythonille: https://github.com/mgtm98/uRos
ROS on käyttöjärjestelmä roboteille, jossa eri "solmut" kommunikoivat keskuspalvelimen kanssa TCP-sanomien kautta JSON-muodossa.
Tämän kirjaston avulla voimme toteuttaa ROS-solmun SBC. Se muodostaa yhteyden palvelimeen ja voi lähettää (julkaista) tai vastaanottaa (tilata) viestejä.
Koodi viestin lähettämiseen on seuraava:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | tuoda verkko alkaen aurochs tuoda * alkaen uros.std_msgs tuoda std_Bool lan = verkko.LAN() lan.aktiivinen (Totta) lan.ifconfig(( "10.0.0.1", "255.255.255.0", "10.0.0.2", "8.8.8.8" )) vaikka(lan.Tila() != 3 ): painaa( "", loppu="" ) aika.nukkua(1) painaa( "Yhdistetty!" ) uRos = Ros( "10.0.0.2", 9090 ) #luodaan uutta uRos-objektia msg = std_Bool( data = Totta ) #ros-merkkijonoviestiobjektin luominen uRos.julkaista( "uRosTopic", viesti) #julkaisemassa viestiobjektin painaa("tehty") |
Tässä koodissa yhdistämme ensin LAN-verkkoon ja sitten ROS-palvelimeen; määrittelemme viestimme muodon ja lopuksi julkaisemme.
PC:llä suoritamme python-koodin, joka toimii ROS-palvelimena. Yksinkertaisuuden vuoksi tämä koodi on vain socket-palvelin, joka tulostaa tiedot konsoliin.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | tuoda pistorasia tuoda sys def socket_server(isäntä, portti): s = pistorasia.pistorasia (pistorasia.AF_INET, pistorasia.SOCK_STREAM) s.bind((isäntä, portti)) s.kuunnella(1) vaikka Totta: yhteys, osoite = s.hyväksyä() painaa("Yhdistynyt", osoite) vaikka Totta: data = Conn.recv(1024) if emme tiedot: rikkoa painaa(data) liit.kiinni() painaa("yhteys suljettu") s.kiinni() painaa("on kiinni") socket_server( '10.0.0.2', 9090 ) painaa("tehty") |
Tämän seurauksena palvelimelle vastaanotetut tiedot näytetään:
Jos tarkastelemme tietoja, näemme kaksi osaa:
1. uRosTopic-viestimme määritelmä. Tämä lähetetään vain kerran jokaista uutta viestityyppiä kohden.
2. Ja julkaistut tiedot. Tämä lähetetään aina, kun julkaisemme uuden arvon.
Nyt olet valmis yhdistämään SBC:n mihin tahansa ROS-laitteeseen ethernetin kautta, määrittelemään mukautetun viestin ja lähettämään sen vain muutamalla rivillä python-koodia.