Menjalankan aplikasi sampel dengan ROS Melodic dan Gazebo 9 - 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 Melodic dan Gazebo 9

Tutorial berikut menunjukkan kepada Anda bagaimana menggunakan gambar kontainer untuk dikembangkan dengan ROS dan Gazebo 9 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.

├── HelloWorldSampleAppROSMelodicGazebo9 // Base Image │ └── Dockerfile ├── HelloWorldSampleAppROSMelodicGazebo9RobotApp // Image for Robot App │ ├── Dockerfile │ └── robot-entrypoint.sh ├── HelloWorldSampleAppROSMelodicGazebo9SimApp // 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 yang memberi Anda kemampuan untuk menjalankan robot dan aplikasi simulasi Anda.

Membuat gambar dasar

Untuk membuat gambar dasar, simpan perintah dalam contoh untuk membuat lingkungan Anda di Dockerfile. Kemudian, membangun Dockerfile.

  1. Simpan perintah berikut dalam 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
  2. Setelah Anda membuat Dockerfile, buat menggunakan perintah berikut di terminal Anda.

    cd ../HelloWorldSampleAppROSMelodicGazebo9 docker build -t helloworldsampleapprosmelodicgazebo9:latest .

Membangun gambar dasar menginstal ROS Melodic dan Gazebo 9. Anda perlu kedua pustaka diinstal untuk berhasil menjalankan aplikasi Anda.

Membuat gambar untuk aplikasi robot

Setelah Anda membuat gambar dasar, buat gambar untuk aplikasi robot Anda.

  1. Simpan 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 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" ]
  2. Gunakan perintah berikut untuk membuat gambar untuk aplikasi robot dari Dockerfile.

    cd HelloWorldSampleAppROSMelodicGazebo9RobotApp/HelloWorldSampleAppROSMelodicGazebo9RobotApp docker build -t helloworldsampleapprosmelodicgazebo9robotapp:latest image/.
  3. 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-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}"

Membuat gambar untuk aplikasi simulasi

Setelah Anda membuat gambar dasar dan gambar untuk aplikasi robot, Anda dapat membuat gambar untuk aplikasi simulasi Anda.

  1. Simpan 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 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" ]
  2. Simpan yang berikutsimulation-entrypoint.shnaskah. 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-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}"

Menjalankan aplikasi dan mendorongnya ke ECR

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

  1. Gunakan perintah berikut untuk menjalankan aplikasi Hello World di lingkungan Linux lokal Anda.

    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
  2. Jalankan aplikasi robot dan wadah aplikasi simulasi untuk 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 $ rosrun gazebo_ros gzclient
  3. Tambahkan tag ke gambar Anda agar tetap teratur. Gunakan perintah berikut untuk menandai gambar Anda.

    docker tag helloworldsampleapprosmelodicgazebo9robotapp:latest accountID.dkr.ecr.us-west-2.amazonaws.com/helloworldsampleapprosmelodicgazebo9robotapp:latest
    docker tag helloworldsampleapprosmelodicgazebo9simapp:latest accountID.dkr.ecr.us-west-2.amazonaws.com/helloworldsampleapprosmelodicgazebo9simapp:latest
  4. 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/helloworldsampleapprosmelodicgazebo9robotapp:latest docker push accountID.dkr.ecr.us-west-2.amazonaws.com/helloworldsampleapprosmelodicgazebo9simapp:latest

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