Semana 7: Uso de los drivers de Turtlebot2 en físico dentro de un Docker, Unibotics en local e intento de cambiar el robot en uno de los ejercicios
Esta semana he conseguido que los 3 drivers del robot funcionen.
El primero de ellos es la cámara, como la anterior semana estuve indagando por mi cuenta con mi WebCam personal sin necesidad de ir al laboratorio, ya tenía más o menos una idea de como hacerla funcionar dentro del docker. Es simplemente añadiendo un –device /dev/video0 a nuestro comando que corre el docker.
El segundo de ellos es el motor, en este caso cambia el puerto de /dev y pasa a ser uno de los dos puertos USB que tiene mi portátil, dependiendo de donde lo conecte será /dev/ttyUSB0 o /dev/ttyUSB1. Y ya puede usarse dentro del contenedor sin problema.
Aunque había tenido algunos problemas o cosas que depurar, ya que, antes de usar el flag de –device estaba usando -v /dev/:/dev/, cosa que es peligrosa y que se debe tratar de evitar la que coge todo lo que existe en ese directorio. Por lo tanto tuve que instalar un par de cosas en local para hacerlo funcionar de la manera correcta, con los flags de –device.
Y el tercer driver del Turtblebot2 físico es el láser, que finalmente he conseguido lanzarlo dentro y fuera del docker de manera correcta. Para que funcione hay que lanzar el motor y el launcher del láser. Vídeo:
TODO
El comando a utilizar para poder lanzar los 3 drivers es este:
docker run -it --privileged --net=host -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X1 --rm --device /dev/video0 --device /dev/ttyUSB0 --device /dev/ttyUSB1 turtlebot2
Luego tuve que comprobar una cosa fuera del guión de esta semana, y es que anteriormente arreglé el problema con Gazebo en contenedor únicamente poniendo el flag –net=host y puede que me funcionase ya que coge recursos de la red y si quitaba la conexión WiFi dejaba de funcionar. Pero parece que sigue yendo sin conexión red. Faltan hacer más pruebas.
Lo segundo que he hecho es clonarme el repositorio de Robotics-Academy, una vez clonado he puesto a construir las imágenes docker que lo componen. Me encontré con un error de una librería de Gazebo, la misma con la que tuve problemas en local pero lo he solucionado (no en local). Y una vez dentro y con Unibotics funcionando me he puesto a estudiar más a fondo como funcionaban los scripts y la carpeta exercises, ya que eso nos lleva al tercer punto.
El tercer punto ha sido intentar sustituir uno de los robots por el Turtlebot2, con la única diferencia de que Unibotics actualmente usa ROS Noetic, por lo tanto este mismo Turtlebot2 debería ser su versión de Noetic y no la que he estado desarrollando, el problema es que al estar en Ubuntu 22.04 no puedo probar el Turtlebot2 en local ya que ROS Noetic no está soportado para mi versión de Ubuntu, por lo tanto sigo indagando en este cambio de modelo del robot, que finalmente lo sustituiré por el Fórmula 1 que hay en el ejercicio Follow Line.