지원 종료 알림: 는 2025 AWS 년 9월 10일에 에 대한 지원을 중단합니다 AWS RoboMaker. 2025년 9월 10일 이후에는 AWS RoboMaker 콘솔 또는 AWS RoboMaker 리소스에 더 이상 액세스할 수 없습니다. 컨테이너화된 시뮬레이션 실행을 돕기 AWS Batch 위해 로 전환하는 방법에 대한 자세한 내용은 이 블로그 게시물을
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
ROS Melodic과 Gazebo 9를 사용하여 샘플 애플리케이션 실행
다음 튜토리얼에서는 Hello World 로봇 애플리케이션 및 시뮬레이션 애플리케이션을 만들고 실행하여 컨테이너 이미지를 사용해 ROS 및 Gazebo 9로 개발하는 방법을 보여줍니다. 이 문서에 설명된 명령을 실행하여 샘플 애플리케이션이 작동하도록 할 수 있습니다.
이 튜토리얼에서는 세 개의 컨테이너 이미지를 만들고 사용합니다. 다음은 이 예제 애플리케이션에 사용하는 디렉터리 구조를 보여줍니다.
├── HelloWorldSampleAppROSMelodicGazebo9 // Base Image │ └── Dockerfile ├── HelloWorldSampleAppROSMelodicGazebo9RobotApp // Image for Robot App │ ├── Dockerfile │ └── robot-entrypoint.sh ├── HelloWorldSampleAppROSMelodicGazebo9SimApp // Image for Simulation App │ ├── Dockerfile │ └── simulation-entrypoint.sh
각 Dockerfile에는 각 이미지를 빌드하는 데 필요한 지침이 있습니다.
-
기본 이미지의 Dockerfile에는 ROS 및 Gazebo를 설정하는 명령이 있습니다.
-
로봇 애플리케이션용 Dockerfile에는 Hello World 로봇 애플리케이션을 설정하는 명령이 있습니다.
-
시뮬레이션 애플리케이션용 Dockerfile에는 Hello World 시뮬레이션 애플리케이션을 설정하는 명령이 있습니다.
로봇 애플리케이션과 시뮬레이션 애플리케이션 모두 엔트리 포인트 스크립트가 있습니다. 이 스크립트는 해당 애플리케이션의 환경을 소싱합니다. 이는 로봇 및 시뮬레이션 애플리케이션을 실행할 수 있는 명령을 실행할 수 있는 경로를 설정합니다.
기본 이미지 생성
기본 이미지를 생성하려면 예제의 명령을 저장하여 Dockerfile에 환경을 생성합니다. 그런 다음 Dockerfile을 빌드합니다.
-
다음 명령을 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
-
Dockerfile을 생성한 후 터미널에서 다음 명령을 사용하여 빌드합니다.
cd ../HelloWorldSampleAppROSMelodicGazebo9 docker build -t helloworldsampleapprosmelodicgazebo9:latest .
기본 이미지를 빌드하면 ROS Melodic과 Gazebo 9가 설치됩니다. 애플리케이션을 성공적으로 실행하려면 두 라이브러리를 모두 설치해야 합니다.
로봇 애플리케이션용 이미지 생성
기본 이미지를 만든 후 로봇 애플리케이션용 이미지를 만듭니다.
-
다음 스크립트를 Dockerfile에 저장하고 빌드합니다. 이 스크립트는 Hello World 로봇 애플리케이션을 다운로드하고 설정합니다.
# 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" ]
-
다음 명령을 사용하여 Dockerfile에서 로봇 애플리케이션용 이미지를 생성합니다.
cd HelloWorldSampleAppROSMelodicGazebo9RobotApp/HelloWorldSampleAppROSMelodicGazebo9RobotApp docker build -t helloworldsampleapprosmelodicgazebo9robotapp:latest image/.
-
다음은
robot-entrypoint.sh
로 저장할 수 있는 스크립트의 콘텐츠입니다. 이 스크립트는 로봇 애플리케이션에 대한 환경을 소싱합니다.#!/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}"
시뮬레이션 애플리케이션에 대한 이미지 생성
기본 이미지와 로봇 애플리케이션의 이미지를 만든 후 시뮬레이션 애플리케이션용 이미지를 만들 수 있습니다.
-
다음 스크립트를 Dockerfile에 저장하고 빌드합니다. 이 스크립트는 Hello World 로봇 애플리케이션을 다운로드하고 설정합니다.
# 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" ]
-
다음
simulation-entrypoint.sh
스크립트를 저장하십시오. 이 스크립트는 시뮬레이션 애플리케이션의 환경을 소싱합니다.#!/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}"
애플리케이션을 실행하고 ECR로 푸시하기
이미지를 생성한 후에는 로컬 Linux 환경에서 이미지가 제대로 실행되는지 확인하세요. 도커 이미지가 실행되는지 확인한 후 Amazon ECR로 푸시하여 시뮬레이션 작업을 생성할 수 있습니다.
-
다음 명령을 사용하여 로컬 Linux 환경에서 Hello World 애플리케이션을 실행합니다.
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
-
로봇 애플리케이션과 시뮬레이션 애플리케이션 컨테이너를 실행하여 Gazebo GUI 도구를 사용하여 시뮬레이션을 시각화합니다. 다음 명령을 사용하십시오.
-
시뮬레이션 애플리케이션을 실행하는 컨테이너에 연결합니다.
-
Gazebo 그래픽 사용자 인터페이스(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
-
-
이미지에 태그를 추가하여 정리된 상태를 유지할 수 있습니다. 다음 명령을 사용하여 이미지에 태그를 지정합니다.
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 -
애플리케이션이 제대로 작동하는지 확인한 후 다음 명령을 사용하여 Amazon ECR로 푸시할 수 있습니다.
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
그런 다음 이미지에서 시뮬레이션 작업을 실행할 수 있습니다. 시뮬레이션 작업에 대한 자세한 내용은 AWS RoboMaker를 이용한 시뮬레이션 섹션을 참조하십시오.