ROS 容器常見問 - AWS RoboMaker

支援終止通知:在 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。如需指示,請選擇下列適用的索引標籤。

Using the console
  1. 登入 AWS RoboMaker 主控台

  2. 在左側導覽窗格中,選擇 Development (開發),然後選擇 Simulation applications (模擬應用程式)

  3. 選擇姓名的模擬應用程式,以查看其詳細資訊。

    如果你看到將軍模擬運行時,移轉是沒有必要的。如果您看到任何 ROS 或涼亭特定值,則必須進行遷移。

Using the AWS CLI

下面是一個例子AWS CLI執行等同於以主控台為基礎的步驟的指令。

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

此命令返回指示的輸出simulationSoftwareSuite,該robotSoftwareSuite(如適用),以及environmentURI。如果你看到模擬運行時作為simulationSoftwareSuite將軍作為robotSoftwareSuite,以及您的environmentURI 已設定,您的模擬應用程式不需要移轉。

機器人與模擬應用程式容器如何相互通訊?

這與基於 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將資產納入您的模擬工作中,請使用DataSourceAPI。這可讓您將全球資產從全球匯出任務的 Amazon S3 輸出目錄匯入模擬任務容器中選擇的目的地。

如需詳細資訊,請參閱在模擬中使用匯出的世界

我的應用程序的日誌文件沒有被創建。發生了什麼事?

確保您已在 Dockerfile 中創建了用於調試相關工件的所有輸出目錄。例如,您可以將以下行添加到 Docker 文件中。

RUN mkdir -p $YOUR_LOG_DIR

如需詳細資訊,請參閱新增自訂上傳組態

我的模擬應用程序失敗,「參數服務器上的 run_id 與聲明的 run_id 不匹配」。我該怎麼辦?

如果您要同時使用機器人應用程式和模擬應用程式啟動 ROS 模擬任務,則應新增--wait到羅斯啟動命令。