Avis de fin de support : le 10 septembre 2025, AWS
le support de AWS RoboMaker. Après le 10 septembre 2025, vous ne pourrez plus accéder à la AWS RoboMaker console ni aux AWS RoboMaker ressources. Pour plus d'informations sur la transition AWS Batch afin de faciliter l'exécution de simulations conteneurisées, consultez ce billet de blog.
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Exécution d'un exemple d'application avec ROS Melodic et Gazebo 9
Le didacticiel suivant explique comment utiliser des images de conteneurs pour développer avec ROS et Gazebo 9 en créant et en exécutant l'application robot et l'application de simulation Hello World. Vous pouvez faire fonctionner l'exemple d'application en exécutant les commandes décrites dans ce document.
Pour ce didacticiel, nous créons et utilisons trois images de conteneur. Ce qui suit montre la structure de répertoires que nous utilisons pour cet exemple d'application.
├── HelloWorldSampleAppROSMelodicGazebo9 // Base Image │ └── Dockerfile ├── HelloWorldSampleAppROSMelodicGazebo9RobotApp // Image for Robot App │ ├── Dockerfile │ └── robot-entrypoint.sh ├── HelloWorldSampleAppROSMelodicGazebo9SimApp // Image for Simulation App │ ├── Dockerfile │ └── simulation-entrypoint.sh
Chaque Dockerfile contient les instructions nécessaires pour créer chaque image.
-
Le Dockerfile pour l'image de base contient les commandes permettant de configurer ROS et Gazebo.
-
Le Dockerfile de l'application robot contient les commandes permettant de configurer l'application robot Hello World.
-
Le Dockerfile de l'application de simulation contient les commandes permettant de configurer l'application de simulation Hello World.
L'application robot et l'application de simulation disposent toutes deux de scripts de point d'entrée. Ces scripts fournissent les environnements de leurs applications respectives. Ils définissent le chemin à suivre pour exécuter des commandes qui vous permettent d'exécuter votre robot et vos applications de simulation.
Création d'une image de base
Pour créer une image de base, enregistrez les commandes de l'exemple afin de créer votre environnement dans un Dockerfile. Ensuite, créez le Dockerfile.
-
Enregistrez les commandes suivantes dans un Dockerfile.
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: MIT-0 FROM ros:melodic ENV DEBIAN_FRONTEND noninteractive RUN apt-get clean RUN apt-get update && apt-get install -y \ lsb \ unzip \ wget \ curl \ sudo \ python-vcstool \ python-rosinstall \ python3-colcon-common-extensions \ ros-melodic-rviz \ ros-melodic-rqt \ ros-melodic-rqt-common-plugins \ devilspie \ xfce4-terminal \ ros-melodic-gazebo-ros-pkgs \ ros-melodic-gazebo-ros-control \ ros-melodic-turtlebot3 ENV QT_X11_NO_MITSHM=1 ARG USERNAME=robomaker RUN groupadd $USERNAME RUN useradd -ms /bin/bash -g $USERNAME $USERNAME RUN sh -c 'echo "$USERNAME ALL=(root) NOPASSWD:ALL" >> /etc/sudoers' USER $USERNAME RUN sh -c 'cd /home/$USERNAME' # Download and build our Robot and Simulation application RUN sh -c 'mkdir -p /home/robomaker/workspace' RUN sh -c 'cd /home/robomaker/workspace && wget https://github.com/aws-robotics/aws-robomaker-sample-application-helloworld/archive/ros1.zip && unzip ros1.zip' RUN sh -c 'cd /home/robomaker/workspace/aws-robomaker-sample-application-helloworld-ros1' RUN sudo rosdep fix-permissions RUN rosdep update
-
Après avoir créé le Dockerfile, créez-le à l'aide des commandes suivantes sur votre terminal.
cd ../HelloWorldSampleAppROSMelodicGazebo9 docker build -t helloworldsampleapprosmelodicgazebo9:latest .
La création de l'image de base installe ROS Melodic et Gazebo 9. Les deux bibliothèques doivent être installées pour exécuter correctement vos applications.
Création d'une image pour l'application du robot
Après avoir créé l'image de base, créez l'image pour l'application de votre robot.
-
Enregistrez le script suivant dans un Dockerfile et créez-le. Ce script télécharge l'application robot Hello World et la configure.
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: MIT-0 FROM helloworldsampleapprosmelodicgazebo9:latest # Build the Robot application RUN cd /home/robomaker/workspace/aws-robomaker-sample-application-helloworld-ros1/robot_ws && \ /bin/bash -c "source /opt/ros/melodic/setup.bash && vcs import < .rosinstall && rosdep install --rosdistro melodic --from-paths src --ignore-src -r -y && colcon build" COPY robot-entrypoint.sh /home/robomaker/robot-entrypoint.sh RUN sh -c 'sudo chmod +x /home/robomaker/robot-entrypoint.sh' RUN sh -c 'sudo chown robomaker:robomaker /home/robomaker/robot-entrypoint.sh' CMD roslaunch hello_world_robot rotate.launch ENTRYPOINT [ "/home/robomaker/robot-entrypoint.sh" ]
-
Utilisez la commande suivante pour créer l'image de l'application robot à partir du Dockerfile.
cd HelloWorldSampleAppROSMelodicGazebo9RobotApp/HelloWorldSampleAppROSMelodicGazebo9RobotApp docker build -t helloworldsampleapprosmelodicgazebo9robotapp:latest image/.
-
Voici le contenu du script que vous pouvez enregistrer sous
robot-entrypoint.sh
. Ce script fournit l'environnement de l'application robot.#!/bin/bash if [ ! -z $GAZEBO_MASTER_URI ]; then tmp_GAZEBO_MASTER_URI=$GAZEBO_MASTER_URI fi cd /home/robomaker/workspace/aws-robomaker-sample-application-helloworld-ros1/robot_ws source /opt/ros/melodic/setup.bash source /usr/share/gazebo-9/setup.sh source ./install/setup.sh if [ ! -z $tmp_GAZEBO_MASTER_URI ]; then export GAZEBO_MASTER_URI=$tmp_GAZEBO_MASTER_URI unset tmp_GAZEBO_MASTER_URI fi printenv exec "${@:1}"
Création d'une image pour l'application de simulation
Après avoir créé l'image de base et l'image pour l'application robot, vous pouvez créer l'image pour votre application de simulation.
-
Enregistrez le script suivant dans un Dockerfile et créez-le. Ce script télécharge l'application robot Hello World et la configure.
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: MIT-0 FROM helloworldsampleapprosmelodicgazebo9:latest # Build the Simulation application RUN cd /home/robomaker/workspace/aws-robomaker-sample-application-helloworld-ros1/simulation_ws && \ /bin/bash -c "source /opt/ros/melodic/setup.bash && vcs import < .rosinstall && rosdep install --rosdistro melodic --from-paths src --ignore-src -r -y && colcon build" COPY simulation-entrypoint.sh /home/robomaker/simulation-entrypoint.sh RUN sh -c 'sudo chmod +x /home/robomaker/simulation-entrypoint.sh' RUN sh -c 'sudo chown robomaker:robomaker /home/robomaker/simulation-entrypoint.sh' CMD roslaunch hello_world_simulation empty_world.launch ENTRYPOINT [ "/home/robomaker/simulation-entrypoint.sh" ]
-
Enregistrez ce qui suit
simulation-entrypoint.sh
script. Ce script fournit l'environnement de l'application de simulation.#!/bin/bash if [ ! -z $GAZEBO_MASTER_URI ]; then tmp_GAZEBO_MASTER_URI=$GAZEBO_MASTER_URI fi cd /home/robomaker/workspace/aws-robomaker-sample-application-helloworld-ros1/simulation_ws source /opt/ros/melodic/setup.bash source /usr/share/gazebo-9/setup.sh source ./install/setup.sh if [ ! -z $tmp_GAZEBO_MASTER_URI ]; then export GAZEBO_MASTER_URI=$tmp_GAZEBO_MASTER_URI unset tmp_GAZEBO_MASTER_URI fi printenv exec "${@:1}"
Exécution de l'application et transfert de celle-ci vers ECR
Après avoir créé vos images, assurez-vous qu'elles s'exécutent correctement dans votre environnement Linux local. Après avoir vérifié que l'image Docker s'exécute, vous pouvez la transférer vers Amazon ECR et créer une tâche de simulation.
-
Utilisez les commandes suivantes pour exécuter l'application Hello World dans votre environnement Linux local.
docker run -it -e DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix/ \ -u robomaker -e ROBOMAKER_GAZEBO_MASTER_URI=http://localhost:5555 \ -e ROBOMAKER_ROS_MASTER_URI=http://localhost:11311 \ helloworldsampleapprosmelodicgazebo9robotapp:latest
docker run -it -e DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix/ \ -u robomaker -e ROBOMAKER_GAZEBO_MASTER_URI=http://localhost:5555 \ -e ROBOMAKER_ROS_MASTER_URI=http://localhost:11311 \ helloworldsampleapprosmelodicgazebo9simapp:latest
-
Exécutez l'application robot et les conteneurs de l'application de simulation pour visualiser la simulation à l'aide de l'outil graphique Gazebo. Utilisez les commandes suivantes pour :
-
Connectez-vous à votre conteneur exécutant l'application de simulation.
-
Visualisez votre application en exécutant l'interface utilisateur graphique (GUI) de Gazebo.
# Enable access to X server to launch Gazebo from docker container $ xhost + # Check that the robot_app and sim_app containers are running. The command should list both containers $ docker container ls # Connect to the sim app container $ docker exec -it sim_app bash # Launch Gazebo from within the container $ rosrun gazebo_ros gzclient
-
-
Ajoutez des balises à vos images pour les organiser. Utilisez les commandes suivantes pour baliser vos images.
docker tag helloworldsampleapprosmelodicgazebo9robotapp:latest
accountID
.dkr.ecr.us-west-2.amazonaws.com/helloworldsampleapprosmelodicgazebo9robotapp:latestdocker tag helloworldsampleapprosmelodicgazebo9simapp:latest
accountID
.dkr.ecr.us-west-2.amazonaws.com/helloworldsampleapprosmelodicgazebo9simapp:latest -
Après avoir vérifié que l'application fonctionne correctement, vous pouvez l'envoyer à Amazon ECR à l'aide des commandes suivantes.
aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin
accountID
.dkr.ecr.us-west-2.amazonaws.com docker pushaccountID
.dkr.ecr.us-west-2.amazonaws.com/helloworldsampleapprosmelodicgazebo9robotapp:latest docker pushaccountID
.dkr.ecr.us-west-2.amazonaws.com/helloworldsampleapprosmelodicgazebo9simapp:latest
Vous pouvez ensuite exécuter une tâche de simulation sur l'image. Pour plus d'informations sur les tâches de simulation, voirSimulation avecAWS RoboMaker.