支援終止通知:2025 年 9 月 10 日, AWS 將停止對 的支援 AWS RoboMaker。2025 年 9 月 10 日後,您將無法再存取 AWS RoboMaker 主控台或 AWS RoboMaker 資源。如需有關轉換至 AWS Batch 以協助執行容器化模擬的詳細資訊,請造訪此部落格文章
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
ROS 容器常見問
本頁列出了與遷移基於 OS 的機器人和模擬應用程序到適合在中運行的 Docker 容器相關的常見問題和答案AWS RoboMaker。
我們的工作流程提交模擬作業colcon
-捆綁的機器人和仿真應用程序。我需要移轉嗎?
是的,您必須移轉。遷移步驟位於移轉 ROS 應用程式至容器。
我不確定我的機器人和模擬應用程式是否需要遷移。我怎麼知道?
您可以通過AWS主控台或AWS CLI。如需指示,請選擇下列適用的索引標籤。
機器人與模擬應用程式容器如何相互通訊?
這與基於 OS 的應用程序通常使用 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出版商README.md
如何取消和標記我的模擬工作?
您可以使用 VPC 組態來自我標記或自行取消AWS RoboMaker模擬工作:使用一般AWSAPI。若要使用下列方法,容器必須在具有公用路由的 VPC 中執行NAT或者IGW到AWSAPI。最簡單的方法是在您的預設 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 RoboMakerAPI。您必須擁有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 )
如何匯入模擬WorldForge世界進入模擬工作?
如果您需要匯入模擬WorldForge將資產納入您的模擬工作中,請使用DataSource
API。這可讓您將全球資產從全球匯出任務的 Amazon S3 輸出目錄匯入模擬任務容器中選擇的目的地。
如需詳細資訊,請參閱在模擬中使用匯出的世界。
我的應用程序的日誌文件沒有被創建。發生了什麼事?
確保您已在 Dockerfile 中創建了用於調試相關工件的所有輸出目錄。例如,您可以將以下行添加到 Docker 文件中。
RUN mkdir -p $YOUR_LOG_DIR
如需詳細資訊,請參閱新增自訂上傳組態。
我的模擬應用程序失敗,「參數服務器上的 run_id 與聲明的 run_id 不匹配」。我該怎麼辦?
如果您要同時使用機器人應用程式和模擬應用程式啟動 ROS 模擬任務,則應新增--wait
到羅斯啟動命令。