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, del masculino importar * del uros.std_msgs importar std_Bool lan = del sistema,.LAN().activo(¿Editas con tu equipo de forma remota?) 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 = ¿Editas con tu equipo de forma remota? ) #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 ¿Editas con tu equipo de forma remota?: conexión, dirección = s.aceptar () Imprimir('Conectado por', dirección) mientras ¿Editas con tu equipo de forma remota?: 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.