Pemberitahuan akhir dukungan: Pada 10 September 2025, AWS
akan menghentikan dukungan untuk. AWS RoboMaker Setelah 10 September 2025, Anda tidak akan lagi dapat mengakses AWS RoboMaker konsol atau AWS RoboMaker sumber daya. Untuk informasi lebih lanjut tentang transisi ke AWS Batch untuk membantu menjalankan simulasi kontainer, kunjungi posting blog ini.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
membangun kontainer aplikasi
Ada tiga langkah untuk mengirimkan pekerjaan simulasiAWS RoboMaker: membangun wadah aplikasi, menghubungkan wadah untukAWS RoboMaker aplikasi, dan menggunakan kontainer untuk mengirimkan pekerjaan simulasi. Bagian ini mencakup cara membuat kontainer aplikasi menggunakan Docker untukAWS RoboMaker. Kami menggunakan aplikasi sampel hello-world
Jika Anda tidak menggunakan ROS, lihat posting blog yang menjelaskan cara menjalankan simulasi kesetiaan tinggiAWS RoboMaker dengan GPU dan dukungan kontainer
Prasyarat
Sebelum memulai, pastikan lingkungan pengembangan Anda memiliki dependensi yang diperlukan. Anda harus memiliki Docker, theAWS CLI, dan VCS Impor Tool diinstal pada mesin Anda.
-
InstalAWS CLI: https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install .html
-
Instal docker: https://docs.docker.com/get-docker/
-
Instal Alat Impor VCS
(jika diperlukan untuk alur kerja Anda):
sudo pip3 install vcstool
Anda juga harus memilikiAWS akun dengan peran IAM yang berisi izin berikut:
-
Membuat IAM role
-
MembuatAWS RoboMaker sumber daya (pekerjaan simulasi, robot, dan aplikasi simulasi)
-
Membuat dan mengunggah repositori Amazon ECR
Terakhir, Anda harus mengetahui nomor akun Anda dan Anda harus memilih wilayah tempat menjalankan simulasi. AWS RoboMakerdidukung di Wilayah berikut yang tercantumAWS RoboMaker titik akhir dan kuota
Membangun kontainer aplikasi dari ruang kerja ROS
AWS RoboMakersimulasi terdiri dari aplikasi simulasi dan aplikasi robot opsional. Masing-masing aplikasi ini didefinisikan oleh nama dan gambar kontainer. Bagian ini menunjukkan bagaimana membangun gambar kontainer untuk aplikasi simulasi dan aplikasi robot. Pada contoh berikut, kedua aplikasi dibangun dalam satu ruang kerja. Pendekatan berikut ini mudah digeneralisasikan untuk setiap proyek ROS.
Untuk memulai, kloninghello world
repositori dan impor sumber.
git clone https://github.com/aws-robotics/aws-robomaker-sample-application-helloworld.git helloworld cd helloworld vcs import robot_ws < robot_ws/.rosinstall vcs import simulation_ws < simulation_ws/.rosinstall
Selanjutnya, buat file teks baru dihelloworld
direktori dan beri namaDockerfile
. Salin dan tempel konten berikut ini:
# ======== ROS/Colcon Dockerfile ======== # This sample Dockerfile will build a Docker image for AWS RoboMaker # in any ROS workspace where all of the dependencies are managed by rosdep. # # Adapt the file below to include your additional dependencies/configuration # outside of rosdep. # ======================================= # ==== Arguments ==== # Override the below arguments to match your application configuration. # =================== # ROS Distribution (ex: melodic, foxy, etc.) ARG ROS_DISTRO=melodic # Application Name (ex: helloworld) ARG APP_NAME=robomaker_app # Path to workspace directory on the host (ex: ./robot_ws) ARG LOCAL_WS_DIR=workspace # User to create and use (default: robomaker) ARG USERNAME=robomaker # The gazebo version to use if applicable (ex: gazebo-9, gazebo-11) ARG GAZEBO_VERSION=gazebo-9 # Where to store the built application in the runtime image. ARG IMAGE_WS_DIR=/home/$USERNAME/workspace # ======== ROS Build Stages ======== # ${ROS_DISTRO}-ros-base # -> ros-robomaker-base # -> ros-robomaker-application-base # -> ros-robomaker-build-stage # -> ros-robomaker-app-runtime-image # ================================== # ==== ROS Base Image ============ # If running in production, you may choose to build the ROS base image # from the source instruction-set to prevent impact from upstream changes. # ARG UBUNTU_DISTRO=focal # FROM public.ecr.aws/lts/ubuntu:${UBUNTU_DISTRO} as ros-base # Instruction for each ROS release maintained by OSRF can be found here: # https://github.com/osrf/docker_images # ================================== # ==== Build Stage with AWS RoboMaker Dependencies ==== # This stage creates the robomaker user and installs dependencies required # to run applications in RoboMaker. # ================================== FROM public.ecr.aws/docker/library/ros:${ROS_DISTRO}-ros-base AS ros-robomaker-base ARG USERNAME ARG IMAGE_WS_DIR RUN apt-get clean RUN apt-get update && apt-get install -y \ lsb \ unzip \ wget \ curl \ xterm \ python3-colcon-common-extensions \ devilspie \ xfce4-terminal RUN groupadd $USERNAME && \ useradd -ms /bin/bash -g $USERNAME $USERNAME && \ sh -c 'echo "$USERNAME ALL=(root) NOPASSWD:ALL" >> /etc/sudoers' USER $USERNAME WORKDIR /home/$USERNAME RUN mkdir -p $IMAGE_WS_DIR # ==== ROS Application Base ==== # This section installs exec dependencies for your ROS application. # Note: Make sure you have defined 'exec' and 'build' dependencies correctly # in your package.xml files. # ======================================== FROM ros-robomaker-base as ros-robomaker-application-base ARG LOCAL_WS_DIR ARG IMAGE_WS_DIR ARG ROS_DISTRO ARG USERNAME WORKDIR $IMAGE_WS_DIR COPY --chown=$USERNAME:$USERNAME $LOCAL_WS_DIR/src $IMAGE_WS_DIR/src RUN sudo apt update && \ rosdep update && \ rosdep fix-permissions # Note: This will install all dependencies. # You could further optimize this by only defining the exec dependencies. # Then, install the build dependencies in the build image. RUN rosdep install --from-paths src --ignore-src -r -y # ==== ROS Workspace Build Stage ==== # In this stage, we will install copy source files, install build dependencies # and run a build. # =================================== FROM ros-robomaker-application-base AS ros-robomaker-build-stage LABEL build_step="${APP_NAME}Workspace_Build" ARG APP_NAME ARG LOCAL_WS_DIR ARG IMAGE_WS_DIR RUN . /opt/ros/$ROS_DISTRO/setup.sh && \ colcon build \ --install-base $IMAGE_WS_DIR/$APP_NAME # ==== ROS Robot Runtime Image ==== # In the final stage, we will copy the staged install directory to the runtime # image. # ================================= FROM ros-robomaker-application-base AS ros-robomaker-app-runtime-image ARG APP_NAME ARG USERNAME ARG GAZEBO_VERSION ENV USERNAME=$USERNAME ENV APP_NAME=$APP_NAME ENV GAZEBO_VERSION=$GAZEBO_VERSION RUN rm -rf $IMAGE_WS_DIR/src COPY --from=ros-robomaker-build-stage $IMAGE_WS_DIR/$APP_NAME $IMAGE_WS_DIR/$APP_NAME # Add the application source file to the entrypoint. WORKDIR / COPY entrypoint.sh /entrypoint.sh RUN sudo chmod +x /entrypoint.sh && \ sudo chown -R $USERNAME /entrypoint.sh && \ sudo chown -R $USERNAME $IMAGE_WS_DIR/$APP_NAME ENTRYPOINT ["/entrypoint.sh"]
Dockerfile yang baru Anda buat adalah kumpulan instruksi yang digunakan untuk membangun citra Docker. Baca melalui komentar diDockerfile
untuk mendapatkan rasa untuk apa yang sedang dibangun dan beradaptasi seperlunya untuk kebutuhan Anda. Untuk kemudahan pengembangan,Dockerfile
didasarkan pada citra resmi ROS Docker yang dikelola oleh Open Source Robotics Foundation (OSRF)
Berikutnya, buat file baru bernamaentrypoint.sh
.
#!/bin/bash set -e source "/home/$USERNAME/workspace/$APP_NAME/setup.bash" if [[ -f "/usr/share/$GAZEBO_VERSION/setup.sh" ]] then source /usr/share/$GAZEBO_VERSION/setup.sh fi printenv exec "${@:1}"
ENTRYPOINT
File adalah file yang dapat dieksekusi yang berjalan saat kontainer Docker muncul. Kita menggunakan entrypoint untuk sumber ruang kerja ROS, sehingga kita dapat dengan mudah menjalankanroslaunch
perintah diAWS RoboMaker. Anda mungkin ingin menambahkan langkah-langkah konfigurasi lingkungan Anda sendiri keENTRYPOINT
file ini.
KamiDockerfile
menggunakan build multi-stage dan caching terintegrasi dengan Docker BuildKit. Build multi-tahap memungkinkan alur kerja dengan langkah build terpisah, sehingga dependensi build dan kode sumber tidak disalin ke dalam image runtime. Ini mengurangi ukuran gambar Docker dan meningkatkan kinerja. Operasi caching mempercepat build future dengan menyimpan file yang dibuat sebelumnya.
Bangun aplikasi robot dengan perintah berikut:
DOCKER_BUILDKIT=1 docker build . \ --build-arg ROS_DISTRO=melodic \ --build-arg LOCAL_WS_DIR=./robot_ws \ --build-arg APP_NAME=helloworld-robot-app \ -t robomaker-helloworld-robot-app
Setelah aplikasi robot dibangun, Anda dapat membangun aplikasi simulasi sebagai berikut:
DOCKER_BUILDKIT=1 docker build . \ --build-arg GAZEBO_VERSION=gazebo-9 \ --build-arg ROS_DISTRO=melodic \ --build-arg LOCAL_WS_DIR=./simulation_ws \ --build-arg APP_NAME=helloworld-sim-app \ -t robomaker-helloworld-sim-app
Jalankan perintahdocker images
untuk mengonfirmasi image Docker telah berhasil dibangun. Output akan menyerupai hal-hal berikut:
Administrator:~/environment/helloworld (ros1) $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE robomaker-helloworld-sim-app latest 5cb08816b6b3 6 minutes ago 2.8GB robomaker-helloworld-robot-app latest b5f6f755feec 10 minutes ago 2.79GB
Pada titik ini, Anda telah berhasil membangun gambar Docker Anda. Sebaiknya uji ini secara lokal sebelum mengunggahnya untuk digunakanAWS RoboMaker. Bagian selanjutnya menjelaskan cara melakukannya.
Pengujian kontainer Anda
Perintah berikut memberi Anda kemampuan untuk menjalankan aplikasi di lingkungan pengembangan lokal Anda.
Luncurkan aplikasi robot:
docker run -it -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 \ robomaker-helloworld-robot-app:latest roslaunch hello_world_robot rotate.launch
Luncurkan aplikasi simulasi:
docker run -it -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 \ robomaker-helloworld-sim-app:latest roslaunch hello_world_simulation empty_world.launch
Setelah Anda mengonfirmasi bahwa kontainer Anda berfungsi dengan baik, Anda dapat Publikasikan kontainer aplikasi ke Amazon ECR dan kemudian Kirim pekerjaan simulasi.