In questo tutorial impareremo come usare la libreria uROS per micropython: https://github.com/mgtm98/uRos
ROS è un Sistema Operativo per Robot in cui i diversi “nodi” comunicano con un server centrale tramite messaggi TCP in formato JSON.
Questa libreria ci permette di implementare un nodo ROS nel nostro SBC. Si collegherà a un server e sarà in grado di inviare (pubblicare) o ricevere (iscriversi) messaggi.
Il codice per postare un messaggio è il seguente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | importare Rete da uro importare * da uros.std_msgs importare std_Bool lan = Rete.LAN() lan.attivo(I veri) lan.ifconfig( ( "10.0.0.1", "255.255.255.0", "10.0.0.2", "8.8.8.8" )) while(lan.stato() != 3 ): stampare( ""., fine="" ) volta.dormire(1) stampare( "Collegato!" ) uRos = Rosa( "10.0.0.2", 9090 ) #creazione di un nuovo oggetto uRos msg = std_Bool( dati = I veri ) #creazione di un oggetto msg stringa Ros uRos.pubblicare( "uRosTopic", messaggio ) #pubblicazione dell'oggetto msg stampare("fatto") |
In questo codice ci colleghiamo prima alla rete LAN e poi al server ROS; definiamo il formato del nostro messaggio e infine pubblichiamo.
Sul PC eseguiamo un codice in python che funge da server ROS. Per semplicità, questo codice è solo un server socket che stampa i dati sulla console.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | importare presa di corrente importare sys def socket_server( host, porto ): s = presa di corrente.presa (presa.AF_INET, presa.SOCK_STREAM) s.bind((host, porta)) s.ascoltare(1) while I veri: conn, ind = s.accettare () stampare('Connesso da', ind.) while I veri: dati = conn.recv(1024) if non è un dati: rompere stampare(dati) conn.vicino() stampare("conn chiuso") S.vicino() stampare("s chiuso") socket_server( '10.0.0.2', 9090 ) stampare("fatto") |
Di conseguenza, i dati ricevuti sul server vengono visualizzati:

Se esaminiamo i dati vediamo due parti:
1. La definizione del nostro messaggio uRosTopic. Questo viene inviato solo una volta per ogni nuovo tipo di messaggio.

2. E i dati pubblicati. Questo viene inviato ogni volta che pubblichiamo un nuovo valore.

Ora sei pronto per connettere il tuo SBC a qualsiasi dispositivo ROS tramite ethernet, definire un messaggio personalizzato e inviarlo con solo poche righe di codice python.