Ce conteneur Docker contient ROS 2 Humble, Gazebo Fortress et la simulation TurtleBot 4. Le conteneur Docker a été configuré pour fonctionner correctement sur du matériel standard sans carte graphique. Le matériel le plus raisonnablement configuré devrait être capable d'exécuter la simulation avec un facteur temps réel d'au moins 0,2.
Ce conteneur Docker est destiné à être utilisé avec cet exemple de code pour un nœud jouet TB4 et la conférence PyCon 2024 ou l'atelier ROSCon 2024 associé.
Ce Docker comprend également une installation complète de ROS 2 Humble. Si vous souhaitez perfectionner vos compétences ROS, vous pouvez suivre les didacticiels ROS 2. Nous vous suggérons de commencer par les didacticiels CLI.
Cet atelier vous permet de choisir votre propre aventure. Vous avez deux grandes décisions à prendre :
Mais attendez, il y a plus ! Voulez-vous simplement essayer certains des excellents didacticiels sur docs.ros.org, nous avons également des instructions sur la façon de procéder !
sudo apt install docker.io
sudo usermod -aG docker $(whoami)
source ./<venv>/bin/activate
avant de démarrer votre conteneur.Si vous souhaitez créer le conteneur Docker à partir de zéro :
git clone [email protected]:kscottz/turtlebot4_docker.git
docker build . -t tb4
Si vous souhaitez utiliser l'image Docker prédéfinie, exécutez :
docker pull osrf/icra2023_ros2_gz_tutorial:roscon2024_tutorial_humble_turtlebot4
Commençons par expliquer comment démarrer votre conteneur. Nous avons proposé quelques options pour parcourir l'atelier. Jetez un oeil ci-dessous mais ne démarrez pas encore le conteneur ! Vous avez encore quelques options à choisir !
rocker --x11 --devices=/dev/dri osrf/icra2023_ros2_gz_tutorial:roscon2024_tutorial_humble_turtlebot4 bash
rocker --x11 --devices=/dev/dri tb4 bash
Notez que tout ce qui a changé ici, c'est le nom du conteneur, qui est l'avant-dernier paramètre !
Vous devez maintenant décider où vous souhaitez enregistrer votre travail. Vous avez deux options : repartir de zéro et tout construire vous-même, ou suivre un projet terminé. Il existe également une troisième option, dans laquelle vous démarrez simplement le conteneur mais utilisez les outils internes de Docker pour enregistrer votre travail. Bien que cela soit certainement possible, nous ne le recommandons pas.
Si vous souhaitez travailler à partir de zéro, notre workflow préféré, il vous suffit de créer un répertoire :
mkdir tb4_toy
rocker --x11 --devices=/dev/dri --volume=<full path to your directory>:/opt/ros/overlay_ws/src/tb4_toy <container name> bash
où le répertoire a été remplacé par votre nouveau répertoire et conteneur est le conteneur que vous souhaitez utiliser.rocker --x11 --devices=/dev/dri --volume=/home/kscottz/Code/tb4_toy/:/opt/ros/overlay_ws/src/tb4_toy tb4 bash
Si vous souhaitez travailler à partir d'un exemple de code terminé, veuillez procéder comme suit
git clone [email protected]:kscottz/tb4_toy.git
-- voici le code si vous voulez juste y jeter un coup d'œil.rocker --x11 --devices=/dev/dri --volume=<full path to your directory>:/opt/ros/overlay_ws/src/tb4_toy <container name> bash
où le répertoire a été remplacé par votre nouveau répertoire et conteneur est le conteneur que vous souhaitez utiliser.rocker --x11 --devices=/dev/dri --volume=/home/kscottz/Code/tb4_toy/:/opt/ros/overlay_ws/src/tb4_toy tb4 bash
Notez que ce didacticiel vous demandera de travailler à tout moment à l’intérieur du conteneur et ne devra pas toucher à votre système hôte. *Si vous modifiez la configuration interne du conteneur Docker et souhaitez l'enregistrer, vous devrez utiliser [docker commit](https://docs.docker.com/reference/cli/docker/container/commit/)
pour enregistrer votre travail.
Si votre ordinateur portable dispose d'une carte graphique sophistiquée, vous pouvez l'activer en omettant la ligne : --devices=/dev/dri
lorsque vous démarrez votre conteneur. Si vous possédez une carte graphique discrète, nous vous recommandons de l'utiliser ! Si vous n'avez pas de carte graphique, ne vous inquiétez pas ! Nous avons spécifiquement configuré cet atelier pour fonctionner sur des ordinateurs portables plus anciens.
Le conteneur de cet atelier contient la plupart des éditeurs de terminaux courants trouvés sur les systèmes Linux. Vous êtes plus que bienvenu pour les utiliser. Si vous avez monté votre système de fichiers dans Docker, vous pouvez également utiliser n'importe quel éditeur sur vos systèmes hôtes pour modifier des fichiers. Si vous n’avez jamais utilisé d’éditeur de terminal auparavant, cela peut être l’approche la plus simple.
Nous avons un guide complet sur l'utilisation de ce conteneur sans Rocker disponible ici. Ce guide comprend un certain nombre de scripts Bash qui facilitent le démarrage d'un conteneur Docker approprié ! Ce guide propose également des approches alternatives pour effectuer le développement de ROS à l'intérieur d'un conteneur.
Une fois que vous avez démarré votre conteneur, vous pouvez lancer ROS et Gazebo en exécutant les commandes suivantes :
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 '{}'