
Este es un ejemplo simple de cómo usar ROS puede conectar varios dispositivos a través de una red y enviar datos de control.
Debajo del corte al final hay una demostración en video del control del robot desde el joystick.
Necesitamos un joystick en sí, puedes sacarlo de tu ps4 o comprarlo en una tienda. Compré dualshock 4 v2, la primera versión también debería funcionar.
También necesita un bluetooth en su computadora con ROS, en la documentación del controlador se recomiendan los adaptadores usb blutooth versión 2.1+. He trabajado perfectamente con el adaptador integrado en la computadora portátil. También puede conectar un joystick y solo un cable usb.
Luego, en Ubuntu con ROS, debe instalar el
controlador de acuerdo con las instrucciones .
Después de instalar los controladores y conectar el joystick a través de bluetooth, lanzamos la utilidad gráfica jstest-gtk y vemos que tenemos dos joysticks, necesitamos un segundo, ya que tiene todos los botones y sticks.

Dado que ROS funciona con joy0 de forma predeterminada, debemos redefinirlo en joy1:
sudo chmod a+rw /dev/input/js1 rosparam set joy_node/dev "/dev/input/js1"
Ahora necesitamos conectarlo todo en una sola red. Una computadora portátil con ROS será maestra, y EduMip con BeagleBone Blue ROS se conectará por wifi a la computadora portátil. Ambos dispositivos están en la red local del enrutador wifi.
En su PC, configure las variables de entorno ROS para buscar el asistente ros (roscore) en la PC con los comandos .bashrc (agregue estos comandos al final de su archivo .bashrc):
“export ROS_MASTER_URI=http://192.168.10.101:11311” <- ROS IP- , ros (roscore). “export ROS_IP=192.168.10.101” <- ROS IP- ( ).
En su EduMIP, configure las variables de entorno ROS para que encuentre el asistente ros (roscore) en la PC con los comandos .bashrc (agregue estos comandos al final de su archivo .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).
Solo queda escribir un programa que lea la posición del stick desde el joystick y lo envíe al tema, y al robot a leer este tema.
En su PC, puede ver visualmente nodos y temas ejecutando rqt_graph:

Demostración del control del robot utilizando el joystick:
Resumen: con ROS, puede crear un sistema para el trabajo distribuido en varios dispositivos y, por ejemplo, realizar grandes cálculos en la computadora principal, dejando solo lo que se necesita para una respuesta rápida en el robot. BeagleBone Blue tiene un subsistema programable en tiempo real (PRU - ICSS).
PRU-ICSS consta de un microprocesador basado en dos núcleos de 32 bits con una arquitectura RISC y que funciona a una frecuencia de 200 MHz. Cada núcleo tiene su propia área de memoria, así como un área de memoria compatible con Linux, puede usar pines de uso general ubicados en los conectores P8-P9 y generar interrupciones.
Además, el sensor MPU9250 instalado en BeagleBone Blue al cambiar la posición puede formar una interrupción en la que puede colgar su función, que es exactamente lo que se hizo en EduMip.
Si hablamos del siguiente paso evolutivo, este es ROS2, donde una de las diferencias es DDS (Servicio de distribución de datos), que le permite construir una red de diferentes dispositivos y robots interactivos en los que ROS no se está ejecutando.