Neste tutorial aprenderemos como usar a biblioteca uROS para micropython: https://github.com/mgtm98/uRos
ROS é um Sistema Operativo para Robôs no qual os diferentes “nós” comunicam com um servidor central através de mensagens TCP em formato JSON.
Esta biblioteca nos permite implementar um nó ROS em nosso SBC. Ele se conectará a um servidor e poderá enviar (publicar) ou receber (assinar) mensagens.
O código para postar uma mensagem é o seguinte:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | importar rede da auroque importar * da uros.std_msgs importar std_Bool lan = rede.LAN() LAN.ativo(a Verdadeira) lan.ifconfig(( "10.0.0.1", "255.255.255.0", "10.0.0.2", "8.8.8.8" )) enquanto(lan.status() != 3 ): impressão( ".", fim="" ) Tempo.dorme(1) impressão( "Conectado!" ) uRos = Ros( "10.0.0.2", 9090 ) #criando novo objeto uRos msg = std_Bool( dados = a Verdadeira ) #criando um objeto Ros string msg uRos.publicar( "uRosTopic", mensagem) #publicando o objeto msg impressão("feito") |
Neste código, primeiro nos conectamos à rede LAN e depois ao servidor ROS; definimos o formato da nossa mensagem e por fim publicamos.
No PC executamos um código em python que funciona como um servidor ROS. Para simplificar, esse código é apenas um servidor de soquete que imprime os dados no console.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | importar soquete importar sys def servidor_de_soquete( host, porta ): s = soquete.soquete(soquete.AF_INET, soquete.SOCK_STREAM)s.bind((host, porta)) s.ouço(1) enquanto a Verdadeira: conn, addr = s.aceitar () impressão('Conectado por', endereço) enquanto a Verdadeira: dados = Conn.recv(1024) if não Dados: quebrar impressão(dados) conn.fechar() impressão("conn fechado") s.fechar() impressão("está fechado") socket_server( '10.0.0.2', 9090 ) impressão("feito") |
Como resultado, os dados recebidos no servidor são exibidos:

Se examinarmos os dados, veremos duas partes:
1. A definição da nossa mensagem uRosTopic. Isso é enviado apenas uma vez para cada novo tipo de mensagem.

2. E os dados publicados. Isso é enviado toda vez que publicamos um novo valor.

Agora você está pronto para conectar seu SBC a qualquer dispositivo ROS via ethernet, definir uma mensagem personalizada e enviá-la com apenas algumas linhas de código python.