
Este é um exemplo simples de como usar o ROS você pode conectar vários dispositivos em uma rede e enviar dados de controle.
Sob o corte no final, há uma demonstração em vídeo do controle do robô a partir do joystick.
Precisamos de um joystick, você pode pegá-lo no seu ps4 ou comprá-lo em uma loja. Eu comprei dualshock 4 v2, a primeira versão também deve funcionar.
Você também precisa de um bluetooth no seu computador com o ROS. Na documentação do driver, recomendamos os adaptadores USB blutooth versão 2.1 ou superior. Eu trabalhei perfeitamente com o adaptador embutido no laptop. Você também pode conectar um joystick e apenas um cabo USB.
Em seguida, no Ubuntu com ROS, você precisará instalar o
driver de acordo com as instruções .
Após instalar os drivers e conectar o joystick via bluetooth, lançamos o utilitário gráfico jstest-gtk e vemos que temos dois joysticks, precisamos de um segundo, pois ele possui todos os botões e manípulos.

Como o ROS trabalha com joy0 por padrão, precisamos redefini-lo em joy1:
sudo chmod a+rw /dev/input/js1 rosparam set joy_node/dev "/dev/input/js1"
Agora precisamos conectar tudo em uma única rede. Um laptop com ROS será o principal e o EduMip com o BeagleBone Blue ROS se conectará via Wi-Fi ao laptop. Ambos os dispositivos estão na rede local do roteador wifi.
No seu PC, defina as variáveis de ambiente do ROS para procurar o assistente ros (roscore) no PC com os comandos .bashrc (adicione estes comandos ao final do seu arquivo .bashrc):
“export ROS_MASTER_URI=http://192.168.10.101:11311” <- ROS IP- , ros (roscore). “export ROS_IP=192.168.10.101” <- ROS IP- ( ).
No EduMIP, defina as variáveis de ambiente do ROS para encontrar o assistente ros (roscore) no PC com os comandos .bashrc (adicione esses comandos ao final do seu arquivo .bashrc):
“export ROS_MASTER_URI=http://192.168.10.101:11311” <- ROS IP- , ros (roscore). “export ROS_IP=192.168.10.102” <- ROS IP- ( EduMIP).
Resta apenas escrever um programa que leia a posição do stick no joystick e envie para o tópico, e o robô para ler este tópico.
No seu PC, você pode observar visualmente os nós e tópicos executando rqt_graph:

Demonstração do controle do robô usando o joystick:
Resumo: Usando o ROS, você pode criar um sistema para o trabalho distribuído em vários dispositivos e, por exemplo, executar grandes cálculos no computador principal, deixando apenas o necessário para uma resposta rápida no próprio robô. O BeagleBone Blue possui um subsistema programável em tempo real (PRU - ICSS).
O PRU-ICSS consiste em um microprocessador baseado em dois núcleos de 32 bits com arquitetura RISC e operando a uma frequência de 200 MHz. Cada núcleo tem sua própria área de memória, bem como uma área de memória compatível com Linux, pode usar pinos de uso geral localizados nos conectores P8-P9 e gerar interrupções.
Além disso, o sensor MPU9250 instalado no BeagleBone Blue ao alterar a posição pode formar uma interrupção na qual você pode pendurar sua função, exatamente o que foi feito no EduMip.
Se falarmos sobre o próximo passo evolutivo, este é o ROS2, onde uma das diferenças é o DDS (Data Distribution Service), que permite construir uma rede de diferentes robôs e dispositivos em interação nos quais o ROS não está sendo executado.