Interfaz SBC con biblioteca uROS

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 at network
de uros importar *
de uros.std_msgs importar std_Bool lan = at network.LAN().activo(Verdadero) 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 = Ros( "10.0.0.2", 9090 )    #creando nuevo objeto uRos
MSG = std_Bool (datos = Verdadero )     #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 Verdadero: conexión, dirección = s.aceptar ()
        Imprimir('Conectado por', dirección)
        mientras Verdadero: datos = conn.recibo(1024)
            if no datos:
                romper
            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.

¿Quieres saber más sobre GPS/RTK?

1. Nuestro equipo de ingeniería se pondrá en contacto contigo para resolver cualquier duda
2. Lo mantendremos informado sobre promociones y lanzamientos de nuevos productos.
3. Solo sabrá de nosotros cuando tengamos noticias importantes, no enviaremos spam a su correo electrónico.