Este contenedor Docker contiene ROS 2 Humble, Gazebo Fortress y la simulación TurtleBot 4. El contenedor Docker se ha configurado para funcionar bien en hardware básico sin tarjeta gráfica. El hardware más razonablemente configurado debería poder ejecutar la simulación con un factor de tiempo real de al menos 0,2.
Este contenedor Docker está diseñado para usarse con este código de ejemplo para un nodo TB4 de juguete y la charla PyCon 2024 o el taller ROSCon 2024 asociado.
Este Docker también incluye una instalación completa de ROS 2 Humble. Si desea repasar sus habilidades con ROS, puede seguir los tutoriales de ROS 2. Le sugerimos que comience con los tutoriales de CLI.
Este taller te permitirá elegir tu propia aventura. Tienes dos grandes decisiones que tomar:
¡Pero espera, hay más! ¿Quieres probar algunos de los fantásticos tutoriales de docs.ros.org? ¡También tenemos instrucciones sobre cómo hacerlo!
sudo apt install docker.io
sudo usermod -aG docker $(whoami)
source ./<venv>/bin/activate
antes de iniciar su contenedor.Si desea crear el contenedor Docker desde cero:
git clone [email protected]:kscottz/turtlebot4_docker.git
docker build . -t tb4
Si desea utilizar la imagen de Docker prediseñada, ejecute:
docker pull osrf/icra2023_ros2_gz_tutorial:roscon2024_tutorial_humble_turtlebot4
Comencemos hablando sobre cómo iniciar su contenedor. Hemos proporcionado un par de opciones para ejecutar el taller. ¡Eche un vistazo a continuación pero no inicie el contenedor todavía! ¡Tienes algunas opciones más para decidirte!
rocker --x11 --devices=/dev/dri osrf/icra2023_ros2_gz_tutorial:roscon2024_tutorial_humble_turtlebot4 bash
rocker --x11 --devices=/dev/dri tb4 bash
Tenga en cuenta que todo lo que cambió aquí es el nombre del contenedor, que es el penúltimo parámetro.
Ahora debes decidir dónde quieres guardar tu trabajo. Tienes dos opciones: empezar desde cero y construir todo tú mismo, o seguir adelante desde un proyecto terminado. También hay una tercera opción, donde simplemente inicias el contenedor pero usas las herramientas internas de Docker para guardar tu trabajo. Si bien esto es ciertamente posible, no lo recomendamos.
Si desea trabajar desde cero, nuestro flujo de trabajo preferido, todo lo que debe hacer es crear un directorio:
mkdir tb4_toy
rocker --x11 --devices=/dev/dri --volume=<full path to your directory>:/opt/ros/overlay_ws/src/tb4_toy <container name> bash
donde el directorio ha sido reemplazado por su nuevo directorio y contenedor es el contenedor que desea utilizar.rocker --x11 --devices=/dev/dri --volume=/home/kscottz/Code/tb4_toy/:/opt/ros/overlay_ws/src/tb4_toy tb4 bash
Si desea trabajar a partir de un ejemplo de código terminado, haga lo siguiente
git clone [email protected]:kscottz/tb4_toy.git
: aquí está el código si solo quieres echar un vistazo.rocker --x11 --devices=/dev/dri --volume=<full path to your directory>:/opt/ros/overlay_ws/src/tb4_toy <container name> bash
donde el directorio ha sido reemplazado por su nuevo directorio y contenedor es el contenedor que desea utilizar.rocker --x11 --devices=/dev/dri --volume=/home/kscottz/Code/tb4_toy/:/opt/ros/overlay_ws/src/tb4_toy tb4 bash
Tenga en cuenta que este tutorial requerirá que trabaje dentro del contenedor en todo momento y no debe tocar su sistema host. *Si cambia la configuración interna del contenedor Docker y desea guardarlo, deberá usar [docker commit](https://docs.docker.com/reference/cli/docker/container/commit/)
para guardar tu trabajo.
Si su computadora portátil tiene una tarjeta gráfica elegante, puede habilitarla omitiendo la línea: --devices=/dev/dri
cuando inicie su contenedor. Si tienes una tarjeta gráfica discreta, ¡te recomendamos que la uses! Si no tienes una tarjeta gráfica, ¡no te preocupes! Hemos configurado específicamente este taller para que funcione en computadoras portátiles más antiguas.
El contenedor de este taller contiene la mayoría de los editores de terminal comunes que se encuentran en los sistemas Linux. Eres más que bienvenido a utilizarlos. Si montó su sistema de archivos en Docker, también puede usar cualquier editor en sus sistemas host para editar archivos. Si nunca antes ha utilizado un editor de terminal, este puede ser el enfoque más sencillo.
Tenemos una guía completa para usar este contenedor sin Rocker disponible aquí. ¡Esta guía incluye una serie de scripts Bash que facilitan el inicio de un contenedor Docker apropiado! Esta guía también proporciona algunos enfoques alternativos para realizar el desarrollo de ROS dentro de un contenedor.
Una vez que haya iniciado su contenedor, puede iniciar ROS y Gazebo ejecutando los siguientes comandos:
ros2 launch turtlebot4_ignition_bringup turtlebot4_ignition.launch.py world:=maze
source ./install/setup.bash
colcon build
ros2 launch turtlebot4_ignition_bringup turtlebot4_ignition.launch.py world:=maze
ros2 topic pub /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 30.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}"
ros2 run teleop_twist_keyboard teleop_twist_keyboard
ros2 run tb4_toy toy_node
ros2 service call /do_loopy std_srvs/Trigger '{}'