サポート終了通知: 2025 年 9 月 10 日、 AWS は のサポートを中止します AWS RoboMaker。2025 年 9 月 10 日以降、 AWS RoboMaker コンソールまたは AWS RoboMaker リソースにアクセスできなくなります。コンテナ化されたシミュレーションの実行に役立つ AWS Batch への移行の詳細については、このブログ記事
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ROS コンテナに関するよくある質問
このページでは、ROS ベースのロボットおよびシミュレーションアプリケーションを AWS RoboMaker の実行に適した Docker コンテナに移行することに関してよく寄せられる質問と回答をまとめています。
このワークフローでは、colcon
をバンドルしたロボットとシミュレーションアプリケーションを使用してシミュレーションジョブを送信します。移行する必要がありますか?
はい、移行は必要です。移行の手順は「ROS アプリケーションのコンテナへの移行」に記載されています。
ロボットとシミュレーションアプリケーションを移行する必要があるかどうかがわかりません。どうすればわかりますか?
AWS コンソールまたは AWS CLI を使用して確認できます。手順については、次の該当するタブを選択してください。
ロボットとシミュレーションアプリケーションのコンテナはどのようにして相互に通信しますか?
これは、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 } ]
ROS_IP
、ROS_MASTER_URI
、GAZEBO_MASTER_URI
の設定に提供された ROBOMAKER_*
文字列とポート番号を使用すれば、コンテナは想定通りに相互通信を行います。
詳細については、「シミュレーションの実行」を参照してください。
リアルタイム係数 (RTF) メトリクスはどこに行きましたか? 復元するにはどうすればいいですか?
AWS RoboMaker では、このメトリクスが自動で公開されなくなりました。このメトリクスを CloudWatch に公開する場合は、AWS RoboMaker CloudWatch PublisherREADME.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 が宣言された run_id と一致しない」という理由で失敗しました。どうすればよいですか?
ロボットアプリケーションとシミュレーションアプリケーションの両方で ROS のシミュレーションジョブを起動する場合は、roslaunch コマンドに --wait
を追加する必要があります.