Semana 6: Solución de error en Docker, imagen de docker para turtlebot físico y prueba de WebCam
Esta semana lo primero que he hecho es solucionar el error que tenía con la imagen docker que contenía ROS2 Humble, Gazebo y RViz2, dándome error estos dos últimos ya que se cerraban en cuanto los abría.
Al final he conseguido solucionarlo después de probar varias cosas y ahora lo lanzo de la siguiente manera para que me funcione:
sudo docker run -it --privileged --net=host --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X1 --device /dev/video2 turtlebot2
Con esto ya puedo lanzar el RViz2 y Gazebo 11 desde el contenedor docker sin problema.
Lo segundo que he hecho es hacer funcionar, desde esta misma imagen docker, una Webcam dentro de un programa simple para ver que funciona el conectar los drivers de local al contenedor. Para hacer que funcione es necesario, en mi caso, decirle al comando de docker run que queremos usar el device de video 2, ya que mi portátil tiene cámara incorporada y al añadir otra, se va ahí siempre, use el puerto USB que use.
Y lo tercero que he hecho es adaptar la imagen docker que ya tenía para un Turtlebot2 simulado, añadirle lo necesario para hacer que funcione con el robot real. Cosas como:
- Drivers de los motores, cámara y sensor láser
- Distintas dependencias para hacer que esto funcione
- Y algunos archivos de configuración más
Al final se ha conseguido que esta imagen funcione, que su workspace compile pero falta probarlo con el robot real. Aunque no debería ser demasiado complicado, si usamos a la hora de lanzarlo, que lo enlace con el driver que se espera donde vayan motores, láser y cámara debería estar.
docker run -it --privileged --net=host -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X1 --rm --device /dev/ttyUSB0 --device /dev/ttyUSB1 --device /dev/video0 turtlebot2