En este tutorial aprenderemos a usar la librería uROS para micropython: https://github.com/mgtm98/uRos
ROS es un Sistema Operativo para Robots en el que los diferentes “nodos” se comunican con un servidor central a través de mensajes TCP en formato JSON.
Esta biblioteca nos permite implementar un nodo ROS en nuestro SBC. Se conectará a un servidor y podrá enviar (publicar) o recibir (suscribirse a) mensajes.
El código para publicar un mensaje es el siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | importar del sistema, desde masculino importar * desde uros.std_msgs importar std_Bool lan = del sistema,.LAN().activo(Cierto) red.si configuración (( "10.0.0.1", "255.255.255.0", "10.0.0.2", "8.8.8.8" )) mientras(lan.estado() != 3 ): Imprimir( ".", final="" ) tiempo.dormir(1) Imprimir( "¡Conectado!" ) uRos = rosa( "10.0.0.2", 9090 ) #creando nuevo objeto uRos MSG = std_Bool (datos = Cierto ) #creando un objeto de mensaje de cadena Ros uRos.publicar( "uRosTopic", mensaje) #publicando el objeto msg Imprimir("hecho") |
En este código primero nos conectamos a la red LAN y luego al servidor ROS; definimos el formato de nuestro mensaje y finalmente lo publicamos.
En la PC ejecutamos un código en python que actúa como un servidor ROS. Para simplificar, este código es solo un servidor de socket que imprime los datos en la consola.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | importar enchufe importar sis def servidor_socket(host, puerto): s = enchufe.enchufe (enchufe.AF_INET, enchufe.SOCK_STREAM).enlazar((host, puerto)) s.escuchar(1) mientras Cierto: conexión, dirección = s.aceptar () Imprimir('Conectado por', dirección) mientras Cierto: datos = conn.recibo(1024) if no datos: break Imprimir(datos) conexión.close() Imprimir("conexión cerrada") s.close() Imprimir("está cerrado") servidor_socket( '10.0.0.2', 9090 ) Imprimir("hecho") |
Como resultado, se muestran los datos recibidos en el servidor:

Si examinamos los datos vemos dos partes:
1. La definición de nuestro mensaje uRosTopic. Este solo se envía una vez por cada nuevo tipo de mensaje.

2. Y los datos publicados. Esto se envía cada vez que publicamos un nuevo valor.

Ahora está listo para conectar su SBC a cualquier dispositivo ROS a través de Ethernet, definir un mensaje personalizado y enviarlo con solo unas pocas líneas de código Python.