Menjalankan aplikasi sampel dengan ROS 2 Foxy dan Gazebo 11 - AWS RoboMaker

AWS RoboMaker tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada dari AWS RoboMaker dapat terus menggunakan layanan seperti biasa. AWS Batch sekarang menjadi layanan yang disukai untuk menjalankan simulasi kontainer. Pelajari selengkapnya.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menjalankan aplikasi sampel dengan ROS 2 Foxy dan Gazebo 11

Tutorial berikut menunjukkan cara menggunakan gambar kontainer untuk dikembangkan dengan ROS 2 Foxy dan Gazebo 11, dengan membuat dan menjalankan aplikasi robot Hello World dan aplikasi simulasi. Anda bisa mendapatkan contoh aplikasi untuk bekerja dengan menjalankan perintah yang dijelaskan dalam dokumen ini.

Untuk tutorial ini, kita membuat dan menggunakan tiga gambar kontainer. Berikut ini menunjukkan struktur direktori yang kita gunakan untuk aplikasi contoh ini.

├── HelloWorldSampleAppROS2FoxyGazebo11 // Base Image │ └── Dockerfile ├── HelloWorldSampleAppROS2FoxyGazebo11RobotApp // Image for Robot App │ ├── Dockerfile │ └── robot-entrypoint.sh ├── HelloWorldSampleAppROS2FoxyGazebo11SimApp // Image for Simulation App │ ├── Dockerfile │ └── simulation-entrypoint.sh

Setiap Dockerfile memiliki instruksi yang diperlukan untuk membangun setiap gambar;

  • Dockerfile untuk gambar dasar memiliki perintah untuk mengatur ROS dan Gazebo.

  • Dockerfile untuk aplikasi robot memiliki perintah untuk mengatur aplikasi robot Hello World.

  • Dockerfile untuk aplikasi simulasi memiliki perintah untuk mengatur aplikasi simulasi Hello World.

Baik aplikasi robot maupun aplikasi simulasi memiliki skrip entrypoint. Skrip ini sumber lingkungan untuk aplikasi masing-masing. Mereka mengatur jalan bagi Anda untuk menjalankan perintah untuk memulai robot dan aplikasi simulasi Anda.

Membuat gambar dasar

Untuk membuat gambar dasar, Anda menyimpan perintah untuk membuat lingkungan Anda di Dockerfile. Anda kemudian membangun Dockerfile.

  • Simpan perintah berikut dalam Dockerfile.

    # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: MIT-0 FROM ros:foxy ENV DEBIAN_FRONTEND noninteractive RUN apt-get clean RUN apt-get update && apt-get install -y \ lsb \ unzip \ wget \ curl \ sudo \ python3-vcstool \ python3-rosinstall \ python3-colcon-common-extensions \ ros-foxy-rviz2 \ ros-foxy-rqt \ ros-foxy-rqt-common-plugins \ devilspie \ xfce4-terminal RUN wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -; \ sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list' RUN apt-get update && apt-get install -y gazebo11 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/3527834.zip && unzip 3527834.zip && mv aws-robomaker-sample-application-helloworld-3527834771373beff0ed3630c13479567db4149e aws-robomaker-sample-application-helloworld-ros2' RUN sh -c 'cd /home/robomaker/workspace/aws-robomaker-sample-application-helloworld-ros2' RUN sudo rosdep fix-permissions RUN rosdep update

Setelah Anda membuat Dockerfile, buat menggunakan perintah berikut di terminal Anda.

cd ../HelloWorldSampleAppROS2FoxyGazebo11 docker build -t helloworldsampleappros2foxygazebo11:latest .

Membangun gambar dasar menginstal ROS 2 Foxy dan Gazebo 11. Anda perlu kedua pustaka diinstal untuk berhasil menjalankan aplikasi Anda.

Membuat Gambar untuk Aplikasi Robot

Setelah Anda membuat gambar dasar, Anda dapat membuat gambar untuk aplikasi robot Anda. Anda menyimpan script berikut dalam Dockerfile dan membangunnya. Skrip ini mengunduh aplikasi robot Hello World dan mengaturnya.

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: MIT-0 FROM helloworldsampleappros2foxygazebo11:latest # Build the Robot application RUN cd /home/robomaker/workspace/aws-robomaker-sample-application-helloworld-ros2/robot_ws && \ /bin/bash -c "source /opt/ros/foxy/setup.bash && vcs import < .rosinstall && rosdep install --rosdistro foxy --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 ros2 launch hello_world_robot rotate.launch.py ENTRYPOINT [ "/home/robomaker/robot-entrypoint.sh" ]

Perintah berikut membuat gambar untuk aplikasi robot dari Dockerfile.

cd HelloWorldSampleAppROS2FoxyGazebo11RobotApp/HelloWorldSampleAppROS2FoxyGazebo11RobotApp docker build -t helloworldsampleappros2foxygazebo11robotapp:latest .

Berikut ini adalah isi dari script yang dapat Anda simpan sebagairobot-entrypoint.sh. Script ini sumber lingkungan untuk aplikasi 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-ros2/robot_ws source /opt/ros/foxy/setup.bash source /usr/share/gazebo-11/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}"

Membuat gambar untuk aplikasi simulasi

Setelah Anda membuat gambar dasar dan gambar untuk aplikasi robot, Anda dapat membuat gambar untuk aplikasi simulasi Anda. Anda menyimpan script berikut dalam Dockerfile dan membangunnya. Skrip ini mengunduh aplikasi robot Hello World dan mengaturnya.

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: MIT-0 FROM helloworldsampleappros2foxygazebo11:latest # Build the Simulation application RUN cd /home/robomaker/workspace/aws-robomaker-sample-application-helloworld-ros2/simulation_ws && \ /bin/bash -c "source /opt/ros/foxy/setup.bash && vcs import < .rosinstall && rosdep install --rosdistro foxy --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 ros2 launch hello_world_simulation empty_world.launch.py ENTRYPOINT [ "/home/robomaker/simulation-entrypoint.sh" ]

Perintah berikut menciptakan gambar.

cd HelloWorldSampleAppROS2FoxyGazebo11SimApp/HelloWorldSampleAppROS2FoxyGazebo11SimApp docker build -t helloworldsampleappros2foxygazebo11simapp:latest .

Berikut ini adalah isi dari script yang dapat Anda simpan sebagaisimulation-entrypoint.sh. Script ini sumber lingkungan untuk aplikasi simulasi.

#!/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-ros2/simulation_ws source /opt/ros/foxy/setup.bash source /usr/share/gazebo-11/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}"

Menjalankan aplikasi dan mendorongnya ke Amazon ECR

Setelah Anda membuat gambar Anda, pastikan bahwa mereka berjalan dengan benar di lingkungan Linux lokal Anda. Setelah Anda memeriksa apakah gambar Anda berjalan, Anda dapat mendorong image Docker Anda ke Amazon ECR dan membuat pekerjaan simulasi.

Perintah berikut memberi Anda kemampuan untuk menjalankan aplikasi Hello World di lingkungan Linux lokal Anda.

docker run -it -e DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix/ --name robot_app \ -u robomaker -e ROBOMAKER_GAZEBO_MASTER_URI=http://localhost:5555 \ -e ROBOMAKER_ROS_MASTER_URI=http://localhost:11311 \ helloworldsampleappros2foxygazebo11robotapp:latest
docker run -it -e DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix/ --name sim_app \ -u robomaker -e ROBOMAKER_GAZEBO_MASTER_URI=http://localhost:5555 \ -e ROBOMAKER_ROS_MASTER_URI=http://localhost:11311 \ helloworldsampleappros2foxygazebo11simapp:latest

Ketika Anda menjalankan aplikasi robot dan wadah aplikasi simulasi, Anda dapat memvisualisasikan simulasi menggunakan alat Gazebo GUI. Gunakan perintah berikut untuk:

  1. Hubungkan ke wadah Anda yang menjalankan aplikasi simulasi.

  2. Visualisasikan aplikasi Anda dengan menjalankan Gazebo Graphical User Interface (GUI).

# 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 $ /home/robomaker/simulation-entrypoint.sh ros2 launch gazebo_ros gzclient.launch.py

Anda dapat menambahkan tag ke gambar Anda. Perintah berikut memberi Anda kemampuan untuk menandai gambar Anda.

docker tag helloworldsampleappros2foxygazebo11robotapp:latest accountID.dkr.ecr.us-west-2.amazonaws.com/helloworldsampleappros2foxygazebo11robotapp:latest
docker tag helloworldsampleappros2foxygazebo11simapp:latest accountID.dkr.ecr.us-west-2.amazonaws.com/helloworldsampleappros2foxygazebo11simapp:latest

Setelah Anda memverifikasi bahwa aplikasi berfungsi dengan benar, Anda dapat mendorong ke Amazon ECR menggunakan perintah berikut.

aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin accountID.dkr.ecr.us-west-2.amazonaws.com docker push accountID.dkr.ecr.us-west-2.amazonaws.com/helloworldsampleappros2foxygazebo11robotapp:latest docker push accountID.dkr.ecr.us-west-2.amazonaws.com/helloworldsampleappros2foxygazebo11simapp:latest

Anda kemudian dapat menjalankan pekerjaan simulasi pada gambar. Untuk informasi lebih lanjut tentang pekerjaan simulasi, lihatSimulasi denganAWS RoboMaker.