配置模拟 - AWS RoboMaker

终止支持通知:2025 年 9 月 10 日, AWS 将停止对的支持。 AWS RoboMaker2025 年 9 月 10 日之后,您将无法再访问 AWS RoboMaker 控制台或 AWS RoboMaker 资源。有关过渡 AWS Batch 到以帮助运行容器化仿真的更多信息,请访问此博客文章。

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

配置模拟

下面各部分介绍配置模拟作业。有关更多信息,请参阅描述 应用程序配置 的概念。

为VPC访问 Amazon 配置模拟作业

当您在亚马逊虚拟私有云(AmazonVPC)中创建资源时,无法通过公共互联网读取这些资源。示例资源可以是 Amazon Redshift 数据仓库或亚马逊 ElastiCache 集群。它们也可以是您在 Amazon Elastic Compute Cloud 实例上的服务。默认情况下,无法访问 Amazon VPC 中的资源 AWS RoboMaker 模拟作业。

注意

AWS RoboMaker 在没有外部连接的隔离网络上运行仿真作业。要允许您的任务访问您的 Amazon 中的资源VPC,您必须提供包括亚马逊VPC子网IDs和安全组IDs在内的VPC特定数据。 AWS RoboMaker使用此数据来设置弹性网络接口 (ENIs)。ENIs帮助您的工作安全地连接到您的私有 Amazon 中的其他资源VPC。

AWS RoboMaker 不连接到专用租赁VPCs内的资源。有关更多信息,请参阅专用VPCs

您可以将 Amazon VPC 数据添加到您的 AWS RoboMaker 通过在创建作业时使用VpcConfig参数来模拟作业(请参阅CreateSimulationJob)。以下是一个 AWS CLI 分配公有 IP 的示例。

aws robomaker create-simulation-job \ --output-location s3Bucket=amzn-s3-demo-bucket,s3Prefix=my-output-folder \ --max-job-duration-in-seconds 3600 \ --iam-role my-role-arn \ --failure-behavior Continue \ --robot-applications application='my-robot-application-arn,launchConfig={command=["roslaunch", "hello_world_robot", "rotate.launch"]}' \ --simulation-applications application='my-simulation-application-arn,launchConfig={command=["roslaunch", "hello_world_simulation", "empty_world.launch"]}' \ --vpc-config assignPublicIp=true,subnets=comma-separated-vpc-subnet-ids,securityGroups=comma-separated-security-group-ids
注意

将模拟作业配置为在 a 中运行时VPC,会受到ENI惩罚。当您尝试连接到网络资源时,地址解析可能会延迟。

模拟作业的互联网访问

AWS RoboMaker 使用您提供的VPC数据进行设置ENIs。ENIs允许您的工作访问VPC资源。根据您指定的子网范围ENI为每个人分配一个私有 IP 地址。默认情况下ENI,未为其分配任何公有 IP 地址。

如果你的工作需要上网(也许是为了找到 AWS 没有VPC终端节点的服务),并且您使用的是有子网,则可以在NAT内部设置VPC。您可以使用 Amazon VPC NAT 网关并请求 AWS RoboMaker 分配公有 IP。有关更多信息,请参阅 Amazon VPC 用户指南中的NAT网关

注意

您不能使用直接连接到您的互联网网关VPC,因为互联网连接ENI需要拥有公有 IP 地址。默认情况下,您的ENI有一个私有 IP 地址。

要在使用有子网时配置互联网接入,assignPublicIp=true请设置为为您ENI分配公有 IP。

如果你的模拟工作只需要公开访问权限 AWS APIs而且你想要更多的隐私,请参阅AWS RoboMaker 和接口 VPC 端点 (AWS PrivateLink)。有了这些信息,您就可以创建您的接口VPC终端节点并VPC使用添加CreateSimulationJobAPI了。

配置 SimulationJob 计算

要GPU在中使用SimulationJobs,您可以将ComputeType中的配置SimulationJob为使用GPU计算。在中使用基于图形处理单元 (GPU) 的仿真作业时,您将获得以下好处 AWS RoboMaker.

  • GPU基于仿真作业允许使用 O CUDA penGL、、Open GPU CL 和 Vulkan 执行需要启用传感器插件以及高保真渲染和性能的应用程序。

  • GPU基于模拟的作业可确保 AWS RoboMaker GUI工具具有高质量的高清分辨率,因此您可以更详细地查看物体。该GUI工具的体验非常理想,因为GPU可以确保更高的每秒帧速率。

  • GPU基于仿真可加快仿真作业的完成时间。使用GPU,您可以运行复杂的模拟场景,而不会影响实时系数和每秒帧数的性能。

  • GPU基于仿真作业改进了强化学习模型的训练。

计算

CreateSimulationJob 请求中的 Compute 参数可用于配置 SimulationJob 需要哪种计算。

ComputeType

ComputeType 指定作业所需的计算类型。有效值为 CPUGPU_AND_CPU。默认值为 CPU。如果GPU_AND_CPU指定,则创建的作业可以与GPU一起使用CPU。

GpuUnitLimit

使用GpuUnitLimit参数,您可以指定需要分配给任务的GPU单位数量。因为 GPU_AND_CPU ComputeType,它必须是 1。因为 CPU ComputeType,它必须为 0。

有关构建容器以供使用的信息GPU,请参阅创建用于运行 GPU 应用程序的映像

配置自定义模拟工具

随着 AWS RoboMaker,您可以为仿真作业中的应用程序配置自定义工具。使用自定义工具与模拟进行交互,用作诊断实用程序或其他目的。您也可以配置默认工具,例如rqt或由rviz提供的工具 AWS RoboMaker。如果您的模拟作业是自动化管道的一部分,则可以禁用默认工具并使用更少的资源。

您最多可以配置 10 个自定义工具。自定义工具在主ROS进程启动后启动。

自定义工具配置包含以下元素:

  • 工具名称 - 工具的名称。

  • 命令 - 在bash Shell 中调用该工具的命令。必须包括工具可执行文件名称。您可以在参数中使用环境变量,包括自定义变量。例如,要使用当前的模拟作业 ID,您可以引用 AWS_ROBOMAKER_SIMULATION_JOB_ID

  • 退出行为 - 确定如果自定义工具退出,将采取什么操作。如果您指定 fail,则模拟作业将失败。如果您指定 restart,则该工具将重新启动。默认为 restart

  • UI 流式传输 - 指定是否为该工具配置了流式传输会话。如果属实, AWS RoboMaker 配置连接,这样您就可以在工具在模拟中运行时与其进行交互。它必须具有图形用户界面。默认为 false

  • 日志行为-指定是否将工具stdoutstderr流式传输到 CloudWatch 日志。默认为 false

根访问和系统功能

AWS RoboMaker 为在模拟作业中运行的应用程序提供有限的 root (sudo) 访问权限。以下列表包含被阻止的大量(而非全部)系统调用。

  • acct

  • add_key

  • bpf

  • clock_adjtime

  • clock_settime

  • clone

  • create_module

  • delete_module

  • finit_module

  • get_kernel_syms

  • get_mempolicy

  • init_module

  • ioperm

  • iopl

  • kcmp

  • kexec_file_load

  • kexec_load

  • keyctl

  • lookup_dcookie

  • mbind

  • mount

  • move_pages

  • name_to_handle_at

  • nfsservctl

  • open_by_handle_at

  • perf_event_open

  • personality

  • pivot_root

  • process_vm_readv

  • process_vm_writev

  • ptrace

  • query_module

  • quotactl

  • 重启

  • request_key

  • set_mempolicy

  • setns

  • settimeofday

  • stime

  • swapon

  • swapoff

  • sysfs

  • _sysctl

  • umount

  • umount2

  • unshare

  • uselib

  • userfaultfd

  • ustat

  • vm86

  • vm86old