在模拟中使用导出的世界 - AWS RoboMaker

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在模拟中使用导出的世界

Simulation WorldForge 可用于创建与 AWSRoboMaker 配合使用的世界。创建世界后,必须将其导出以用于模拟。您也可以上传世界以在模拟中使用。

导出世界提供了使用以下内容的机会:

以下各部分提供有关在模拟中使用生成的世界的相关信息。

重要

要详细了解 AWS RoboMaker 如何收费,请参阅 AWS RoboMaker 定价

使用导出的世界作为数据来源

使用 Simulation WorldForge,您可以将生成的世界导出到您自己的环境中使用。将您选择导出的世界复制到 Amazon S3 存储桶中的单个 .zip 文件。本节通过说明如何调整启动文件然后通过 AWS Management Console 或使用命令行界面创建模拟作业介绍如何在模拟作业中使用 Amazon S3 存储桶中的导出世界。

在使用 AWS Management Console 或 AWS CLI 添加数据来源之前,必须先更新模拟应用程序的启动文件。

要更新您的模拟启动文件,请执行以下操作:
  1. 运行以下启动命令:

    <launch> <!-- Always set GUI to false for AWS RoboMaker Simulation Use gui:=true on roslaunch command-line to run with gzclient. --> <arg name="gui" default="false"/> <include file="$(find aws_robomaker_worldforge_worlds)/launch/launch_world.launch"> <arg name="gui" value="$(arg gui)"/> </include> <!-- Your other launch commands go here. --> </launch>

    您可以在 (0, 0, 0) 处生成您的机器人。Simulation WorldForge 生成的世界在 (0, 0, 0) 处一定会有一个 1 米长的清晰圆柱体。

  2. 重建您的映像并照常推送。有关更多信息,请参阅使用映像开发 AWS RoboMaker 应用程序

要添加数据来源,请执行以下操作:

请按照以下选项卡之一中的步骤进行操作:

Using the console
  1. 按照 创建一个世界导出作业 中的步骤导出世界。

  2. 在创建模拟作业时,添加新的数据来源。为数据来源指定一个有意义的名称,例如在示例中使用的 WorldForge

  3. 或者,标识一个放置世界的目标目录。

    注意

    请勿使用您的工作空间目录作为目标,因为 AWS RoboMaker 会用 DataSource 文件覆盖目标。相反,您可以在工作空间下指定一个单独的目录,例如,指定 your_workspace/src/aws_exported_world 为目标目录。

  4. 选择 Archive 作为类型。AWSRoboMaker 会将世界解压缩到目标目录中。

  5. 选择 Browse S3 并找到正确的世界生成的导出文件。

  6. 继续照常创建模拟作业。

Using the AWS CLI

按照 创建一个世界导出作业 中的步骤导出世界。

假设工作区位于 /home/simulation_ws 中的容器,则以下命令会将世界提取到默认的目标目录中:

aws robomaker create-simulation-job \ --max-job-duration-in-seconds <time> \ --iam-role <IAM role ARN> \ --data-sources '[{ "name": "WorldForge", "type": "Archive", "destination": "/home/simulation_ws/src/aws_exported_world", "s3Bucket": "worldforge-test", "s3Keys": ["aws-robomaker-worldforge-export-q376mqk4z7gm.zip"] }]' \ --robot-applications <config> \ --simulation-applications <config>

在 ROS 和 Gazebo 中使用导出的世界

如上一节所述,Simulation WorldForge 将您选择的世界导出到一个 .zip 文件中。.zip 文件包含使用 ROS 和 Gazebo 修改和可视化世界所需的所有资产。它包括以下重要文件夹:

  • 根文件夹 workspace_src 是 ROS 工作空间。它包含共享模型、世界数据和其他世界信息。它与 ROS 1 和 ROS 2 兼容。

  • 共享模型已复制到 workspace_src/src/aws_robomaker_worldforge_shared_models/models。例如,如果在多个世界中使用同一把椅子,则将其放置在共享模型文件夹中。

  • 世界数据已复制到 workspace_src/src/aws_robomaker_worldforge_worlds/worlds/

要更新您的模拟启动文件,请执行以下操作:
  1. 按照 创建一个世界导出作业 中的步骤导出世界。

  2. Unzip 将世界变成 ROS 工作空间。

    cd MyApplication/simulation_ws unzip MyExportedWorld.zip
  3. 构建世界。

    rosdep install --from-paths src --ignore-src -r -y$ colcon build
  4. 启动世界。

    source install/setup.sh roslaunch aws_robomaker_worldforge_worlds launch_world.launch gui:=true
要在模拟作业中构建和启动世界,请执行以下操作:
  1. 按照 创建一个世界导出作业 中的步骤导出世界。

  2. 使用 DataSource 将导出的世界导入到工作空间源包目录 /home/simulation_ws/src/aws_exported_world

  3. 修改模拟应用程序的 LaunchConfig

    "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", "GAZEBO_MODEL_PATH":"@GAZEBO_MODEL_PATH:/home/simulation_ws/src/aws_exported_world/aws_robomaker_worldforge_pkgs/aws_robomaker_worldforge_shared_models/models" }, "streamUI": true, "command": [ "/bin/bash", "-c", "cd /home/simulation_ws && colcon build && source install/setup.sh && roslaunch hello_world_simulation worldforge_world.launch" ] },

使用带有自定义物理、灯光和模型的导出世界

如果您的模拟场景需要自定义,则可以导出和修改世界。例如,您可以应用自定义物理、不同的照明效果、添加自定义模型或进行其他修改。

导出世界后,您需要修改 .world 文件以包含导出的世界模型。.world 文件使用 SDF。有关 SDF 的更多信息,请参阅 SDFormat

要修改 .world 文件以包含导出的世界模型,请执行以下操作:
  1. 按照 创建一个世界导出作业 中的步骤导出世界。

  2. 将以下代码添加到您的 .world 文件:确保世界名称与导出的模型名称相匹配。

    <sdf version="1.6"> <world name="generation_82856b0yq33y_world_16"> <model name="WorldForge World"> <include> <uri>model://generation_82856b0yq33y_world_16</uri> </include> </model> <!-- Your other <world> elements go here --> </world> </sdf>
  3. 确认您的启动文件包含修改后的 .world 文件。使用更新的启动文件启动模拟。