支援終止通知:2025 年 9 月 10 日, AWS 將停止對 AWS RoboMaker 的支援。2025 年 9 月 10 日之後,您將無法再存取 AWS RoboMaker 主控台或 AWS RoboMaker 資源。如需有關轉換至 AWS Batch 以協助執行容器化模擬的詳細資訊,請參閱此部落格文章
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
ROS 容器FAQs
此頁面列出與將 ROS 型機器人和模擬應用程式遷移至適合在其中執行的 Docker 容器相關的常見問題和答案 AWS RoboMaker。
我們的工作流程使用 colcon
綁定機器人和模擬應用程式提交模擬任務。我需要遷移嗎?
是,您必須遷移。要遷移的步驟位於 將 ROS 應用程式遷移至容器。
我不確定我的機器人和模擬應用程式是否需要遷移。如何告知 ?
您可以透過 AWS 主控台或 進行檢查 AWS CLI。如需說明,請選擇下列適用的索引標籤。
-
在左側導覽窗格中,選擇 Development (開發),然後選擇 Simulation applications (模擬應用程式)。
-
選取模擬應用程式的名稱以查看其詳細資訊。
如果您看到一般和模擬執行期,則不需要遷移。如果您看到任何 ROS 或 Gazebo 特定值,則必須遷移。
機器人和模擬應用程式容器如何互相通訊?
這與以 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 PublisherREADME.md
如何取消和標記模擬任務?
您可以使用 VPC 組態,使用 AWS APIs 來自我標記或自我取消 AWS RoboMaker 模擬任務。若要使用下列方法,容器必須在 VPC 中執行,並透過 NAT 或 IGW 將公有路由傳送至 AWS APIs。最簡單的方法是使用預設 VPC 中的公有子網路來連線至 AWS APIs。如果您想要在私有子網路中執行模擬,您可以改為設定 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 APIs。您必須先在容器中預先安裝 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 中偵錯相關成品時所倚賴的所有輸出目錄。例如,您可以將以下行新增至 Dockerfile。
RUN mkdir -p $YOUR_LOG_DIR
如需詳細資訊,請參閱新增自訂上傳組態。
我的模擬應用程式在參數伺服器上使用 'run_id 失敗,不符合宣告的 run_id'。我該怎麼辦?
如果您要使用機器人應用程式和模擬應用程式啟動 ROS 模擬任務,您應該將 --wait
新增至 roslaunch 命令。