ROS 컨테이너 FAQ - AWS RoboMaker

지원 종료 알림: 는 2025 AWS 년 9월 10일에 에 대한 지원을 중단합니다 AWS RoboMaker. 2025년 9월 10일 이후에는 AWS RoboMaker 콘솔 또는 AWS RoboMaker 리소스에 더 이상 액세스할 수 없습니다. 컨테이너화된 시뮬레이션 실행을 돕기 AWS Batch 위해 로 전환하는 방법에 대한 자세한 내용은 이 블로그 게시물을 참조하세요.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

ROS 컨테이너 FAQ

이 페이지에는 ROS 기반 로봇 및 시뮬레이션 애플리케이션을 AWS RoboMaker에서 실행하기에 적합한 Docker 컨테이너로 마이그레이션하는 것과 관련된 일반적인 질문과 답변이 나열되어 있습니다.

워크플로는 colcon 번들 로봇 및 시뮬레이션 애플리케이션을 사용하여 시뮬레이션 작업을 제출합니다. 마이그레이션이 필요합니까?

네, 마이그레이션해야 합니다. 마이그레이션 단계는 ROS 애플리케이션을 컨테이너로 마이그레이션에 있습니다.

로봇 및 시뮬레이션 애플리케이션을 마이그레이션해야 하는지 잘 모르겠습니다. 어떻게 알 수 있습니까?

AWS 콘솔이나 AWS CLI를 통해 확인할 수 있습니다. 지침을 보려면 다음 해당 탭을 선택하세요.

Using the console
  1. AWS RoboMaker 콘솔에 로그인합니다.

  2. 왼쪽 탐색 창에서 개발을 선택한 다음 시뮬레이션 애플리케이션을 선택합니다.

  3. 세부 사항을 보려는 시뮬레이션 애플리케이션의 이름을 선택합니다.

    일반시뮬레이션 런타임이 표시되면 마이그레이션이 필요하지 않습니다. ROS 또는 Gazebo 전용 값이 표시되면 마이그레이션이 필요합니다.

Using the AWS CLI

다음은 콘솔 기반 단계에 해당하는 작업을 수행하는 AWS CLI 명령의 예입니다.

aws robomaker describe-simulation-application --application YOUR-SIM-APP-ARN

이 명령은 simulationSoftwareSuite, robotSoftwareSuite 해당하는 경우) 및 environment URI를 나타내는 출력을 반환합니다 시뮬레이션 런타임simulationSoftwareSuite로 표시되고 일반robotSoftwareSuite로 표시되고, environment URI가 설정된 경우 시뮬레이션 애플리케이션을 마이그레이션할 필요가 없습니다.

로봇과 시뮬레이션 애플리케이션 컨테이너는 서로 어떻게 통신합니까?

이는 일반적으로 ROS 기반 애플리케이션이 ROS 미들웨어를 사용하여 서로 통신하는 방식과 다르지 않습니다. 하지만 시뮬레이션 작업 요청의 시작 구성 객체 내에 일부 ROS별 환경 변수를 설정해야 합니다.

다음은 로봇 애플리케이션 launchConfig에 사용해야 하는 설정의 일부 예시입니다.

"robotApplications": [ { "application": "YOUR-ROBOT-APP-ARN", "applicationVersion": "$LATEST", "launchConfig": { "environmentVariables": { "ROS_IP": "ROBOMAKER_ROBOT_APP_IP", "ROS_MASTER_URI": "http://ROBOMAKER_ROBOT_APP_IP:11311", "GAZEBO_MASTER_URI": "http://ROBOMAKER_SIM_APP_IP:11345" }, ... # Removed extra data for clarity } ]

다음은 시뮬레이션 애플리케이션 launchConfig에 사용해야 하는 설정의 일부 예시입니다.

"simulationApplications": [ { "application": "YOUR-SIM-APP-ARN", "applicationVersion": "$LATEST", "launchConfig": { "environmentVariables": { "ROS_IP": "ROBOMAKER_SIM_APP_IP", "ROS_MASTER_URI": "http://ROBOMAKER_ROBOT_APP_IP:11311", "GAZEBO_MASTER_URI": "http://ROBOMAKER_SIM_APP_IP:11345" }, ... # Removed extra data for clarity } ]

제공된 ROBOMAKER_* 문자열과 포트 번호를 사용하여 ROS_IP, ROS_MASTER_URI, GAZEBO_MASTER_URI를 설정하는 경우 컨테이너는 예상대로 서로 통신합니다.

자세한 내용은 시뮬레이션 실행 섹션을 참조하세요.

실시간 요소(RTF) 지표는 어디로 이동했습니까? 어떻게 복원할 수 있습니까?

AWS RoboMaker는 더 이상 이 지표를 자동으로 게시하지 않습니다. 이 지표를 CloudWatch에 게시하려면 AWS RoboMaker CloudWatch Publisher 패키지를 시뮬레이션 애플리케이션으로 가져온 다음 README.md 파일에 제공된 지침에 따라 시뮬레이션 시작 파일을 수정해야 합니다.

시뮬레이션 작업을 취소하고 태그를 지정하려면 어떻게 해야 합니까?

VPC 구성을 사용하면 일반 AWS API를 사용하여 AWS RoboMaker 시뮬레이션 작업을 자체 태그 지정하거나 자체 취소할 수 있습니다. 다음 접근 방식을 사용하려면 NAT 또는 IGW를 통해 AWS API로 연결되는 공개 경로가 있는 VPC에서 컨테이너를 실행해야 합니다. 가장 간단한 방법은 기본 VPC의 퍼블릭 서브넷을 사용하여 AWS API에 연결하는 것입니다. 프라이빗 서브넷에서 시뮬레이션을 실행하려는 경우 NAT를 설정하거나 인터페이스 VPC 엔드포인트를 설정할 수도 있습니다. 자세한 내용은 AWS RoboMaker 및 인터페이스 VPC 엔드포인트(AWS PrivateLink) 섹션을 참조하세요.

참고

IGW를 사용하는 경우 아래 설명서에 설명된 대로 assignPublicIp=True를 설정해야 합니다. 퍼블릭 IP를 사용하는 경우 보안 그룹이 충분히 잠겨 있는지 확인하세요.

요청 파라미터에 다음 블록을 추가해야 합니다.

vpcConfig={ 'subnets': [ 'string', ], 'securityGroups': [ 'string', ], 'assignPublicIp': True|False },

또한 AWS RoboMaker 시뮬레이션 작업에는 시뮬레이션 작업에 태그를 지정하고 취소할 수 있는 권한이 있는 IAM 역할이 있어야 합니다.

시뮬레이션 작업에서 AWS CLI 또는 boto3 Python 라이브러리를 사용하여 퍼블릭 AWS RoboMaker API를 호출할 수 있습니다. AWS CLI 및 boto3 라이브러리가 컨테이너에 사전 설치되어 있어야 AWS RoboMaker 시뮬레이션 작업에 사용할 수 있습니다. 다음 Python 샘플 코드는 시뮬레이션 작업을 취소하는 방법을 보여줍니다.

class RoboMakerUtils: def __init__(self): self.job_arn = os.getenv('AWS_ROBOMAKER_SIMULATION_JOB_ARN') self.client = boto3.client('robomaker', region_name=os.getenv('AWS_ROBOMAKER_REGION', 'us-east-1')) def tag_robomaker_sim_job(self, key, value): self.client.tag_resource( resourceArn=self.job_arn, tags={ key: str(value) } ) def cancel_robomaker_sim_job(self): self.tag_robomaker_sim_job("END_TIME", time.time()) response = self.client.cancel_simulation_job( job=self.job_arn )

Simulation WorldForge 월드를 시뮬레이션 작업으로 가져오려면 어떻게 해야 합니까?

Simulation WorldForge 자산을 시뮬레이션 작업으로 가져와야 하는 경우, DataSource API를 사용합니다. 이렇게 하면 월드 내보내기 작업의 Amazon S3 출력 디렉터리에서 시뮬레이션 작업 컨테이너 내에서 선택한 대상으로 월드 자산을 가져올 수 있습니다.

자세한 내용은 시뮬레이션에서 내보낸 월드 사용 섹션을 참조하세요.

애플리케이션의 로그 파일이 생성되지 않았습니다. 어떻게 된 일입니까?

Dockerfile에서 관련 아티팩트를 디버깅하는 데 사용하는 모든 출력 디렉터리를 생성했는지 확인하세요. 예를 들어 Dockerfile에 다음 줄을 추가할 수 있습니다.

RUN mkdir -p $YOUR_LOG_DIR

자세한 내용은 사용자 지정 업로드 구성 추가 섹션을 참조하세요.

시뮬레이션 애플리케이션이 'run_id on parameter server does not match declared run_id'이라는 메시지와 함께 실패했습니다. 어떻게 해야 합니까?

로봇 애플리케이션과 시뮬레이션 애플리케이션을 모두 사용하여 ROS 시뮬레이션 작업을 시작하는 경우 --wait를 roslaunch 명령에 추가해야 합니다.