配置模拟 - AWS RoboMaker

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

配置模拟

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

为 Amazon VPC 访问配置模拟作业

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

注意

AWS RoboMaker 在没有外部连接的隔离网络上运行模拟作业。但是,要允许您的作业访问 Amazon VPC 中的资源,您必须提供包含 VPC 子网 ID 和安全组 ID 的 VPC 特定数据。AWS RoboMaker 使用此数据设置弹性网络接口 (ENI)。ENI 可帮助您的作业安全地连接到私有 Amazon VPC 中的其他资源。

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

通过在创建作业时使用 VpcConfig 参数向 AWS RoboMaker 模拟作业添加 Amazon VPC 数据(请参阅 CreateSimulationJob)。以下是分配公共 IP 的 AWS CLI 示例。

aws robomaker create-simulation-job \ --output-location s3Bucket=my-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
注意

当模拟作业配置为在 VPC 中运行时,它会产生 ENI 性能损失。当您尝试连接到网络资源时,地址解析可能会延迟。

模拟作业的互联网访问

AWS RoboMaker 使用您提供的 VPC 数据来设置 ENI。ENI 允许您的作业访问 VPC 资源。将向每个 ENI 分配一个来自您指定的子网中的范围的私有 IP 地址。默认情况下,不会为 ENI 分配任何公有 IP 地址。

如果您的作业需要访问互联网(可能是为了查找没有 VPC 终端节点的 AWS 服务)并且您正在使用私有子网,您可以在 VPC 内设置 NAT。您可以使用 Amazon VPC NAT 网关请求 AWS RoboMaker 分配公共 IP。有关更多信息,请参阅 Amazon VPC 用户指南中的 NAT 网关

注意

您无法使用附加到 VPC 的 互联网网关,因为互联网连接要求 ENI 具有公共 IP 地址。默认情况下,您的 ENI 具有私有 IP 地址。

要在使用公共子网时配置互联网访问,请设置 assignPublicIp=true 以将公共 IP 分配给 ENI。

如果您的模拟作业只需要访问公共 AWS API,并且您想要更多隐私,请参阅 AWS RoboMaker 和接口 VPC 端点 (AWS PrivateLink)。有了这些信息,您就可以创建您的接口 VPC 端点并使用 CreateSimulationJob API 添加 VPC。

配置 SimulationJob 计算

要在 SimulationJobs 中使用 GPU,您可以将 SimulationJobComputeType 配置为使用 GPU 计算。在 AWS RoboMaker 中使用基于图形处理单元 (GPU) 的模拟作业时,好处如下。

  • 基于 GPU 的模拟作业允许使用 OpenGL、CUDA、OpenCL 和 Vulkan 执行需要支持 GPU 的传感器插件以及高保真渲染和性能的应用程序。

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

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

  • 基于 GPU 的模拟作业改善了强化学习模型的训练。

计算

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

ComputeType

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

GPU 单位限制

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

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

根访问和系统功能

AWS RoboMaker 提供对模拟作业中运行的应用程序的有限根 (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