此文提供了一个教程,教会如何在 AWS RoboMaker 上协调使用 NVIDIA Isaac Sim 和 ROS 2 导航,以进行高保真机器人模拟。这不仅可以帮助开发人员快速搭建和运行模拟环境,还能利用云端资源的优势,提升整体开发效率。
高保真的模拟在机器人和机器应用的开发中变得越来越重要。具备照片级逼真物体的虚拟环境和拥有准确物理模拟的机器人模型对于开发和测试在现实世界中执行复杂任务的机器人至关重要。然而,设置高保真的模拟、培训和测试环境存在一些挑战,包括工具的安装和配置需要耗费时间和专业知识,而准确的真实模拟则需要大量的计算、网路和存储资源。在分布式团队中准确重复和扩展模拟及测试也同样具有挑战性。
这篇博客提供了一个教程来解决这些挑战,展示如何在 AWS RoboMaker 上协调 NVIDIA Isaac Sim 和 ROS 2 导航,这是一个基于云的模拟服务,支持机器人开发者运行、扩展和自动化模拟,使用来自 Amazon Elastic Container Registry (ECR) 公共库 的容器映像。 NVIDIA Isaac Robotics Platform 提供行业领先的模拟照片真实感,并拥有高性能的开源物理引擎 (NVIDIA PhysX),这使其成为理想的机器人模拟工具。
AWS RoboMaker 是一个完全托管的服务,能在云端以大规模运行模拟,而无需自行配置伺服器或网路。AWS RoboMaker 也支持运行基于公共容器注册表中的映像的容器,包括 Amazon ECR 公共库。NVIDIA 已经在 Amazon ECR 公共库 上发布了一个 Isaac Sim 映像,可供 AWS RoboMaker 使用。
NVIDIA Isaac Sim 是一个可扩展的机器人模拟应用和合成数据生成工具,能够支持照片真实、物理准确的虚拟环境,而 ROS 2 导航 则是一个让移动机器人在多种环境中移动并完成复杂任务的堆栈。在 AWS RoboMaker 上运行 NVIDIA 的公共容器映像相比于本地环境具有许多优势。机器人开发者能在几分钟内启动强大的模拟和培训环境,几乎可以利用无限的资源,只需支付所需的费用。同时,团队可以使用一组共同的容器来实现一致性和标准化。
以下的教程将解释如何在 AWS RoboMaker 上运行高保真的机器人模拟,使用 NVIDIA Isaac Sim 和 ROS 2 导航作为容器化模拟和机器人应用。教程步骤包括从 Amazon ECR 公共库启动包含 NVIDIA 工具的 AWS RoboMaker 模拟并通过 AWS RoboMaker 与工具进行交互。教程中的示例使 Carter 机器人在模拟的仓储环境中驾驶,并利用 ROS 包 RViz。下面展示了一个架构图,描绘了模拟的设置方式。AWS RoboMaker 模拟作业使用一个模拟应用来协调模拟环境 (Isaac Sim),使用另一个机器人应用来协调机器人导航软体 (ROS 2 导航),两者均基于不同的容器,实现模组化、可重复性和灵活性。AWS RoboMaker 还会将来自两个应用的日志汇总到 Amazon CloudWatch。
这个教程由以下步骤组成: 步骤 1 为 AWS RoboMaker 机器人应用构建 Docker 映像 步骤 2 创建并启动 AWS RoboMaker 模拟作业 步骤 2a (可选) 将模拟 JSON 文件导出为使用 AWS CLI 启动模拟 步骤 3 在模拟应用中加载模拟环境 步骤 4 在机器人应用中加载并运行 RViz 导航
本步骤提供在 Linux 环境中为 AWS RoboMaker 机器人应用构建 Docker 映像的具体指导,但您也可以在其他环境中使用下面提供的文件构建该映像。该映像包含 ROS2 Foxy 和 NVIDIA carternavigation 套件,以及 NICE DCV、OpenGL 和 vim、nano 编辑器。
在安装了 AWS CLI 的开发环境中,从 Linux 命令行提示符中,输入以下命令来创建一个新的工作目录:
bashmkdir docker ampamp cd docker

在 docker 目录中创建一个名为 Dockerfile 的文件,内容为:
dockerfileFROM osrf/rosfoxydesktop
ENV DEBIANFRONTEND=noninteractive
RUN aptget update ampamp aptget install y xterm python3rosdep python3rosinstall python3rosinstallgenerator python3wstool buildessential python3colconcommonextensions rosfoxynavigation2 rosfoxynav2bringup rosfoxyturtlebot3
RUN aptget update y ampamp aptget upgrade y ampamp aptget install y wget pgp v4l2loopbackdkmsRUN wget https//d1uj6qtbmh3dt5cloudfrontnet/NICEGPGKEYRUN gpg import NICEGPGKEYRUN wget https//d1uj6qtbmh3dt5cloudfrontnet/nicedcvubuntu2004x8664tgzRUN tar xvzf nicedcvubuntu2004x8664tgzRUN aptget update ampamp aptget install y /nicedcv/nicedcvdeb
RUN aptget update ampamp aptget install y libglfw3 libglfw3dev libnss3
RUN aptget update ampamp aptget install y vim nano
RUN git clone https//githubcom/NVIDIAOmniverse/IsaacSimrosworkspaces/RUN mkdir p /isaacsim/ros2workspace/RUN cp r IsaacSimrosworkspaces/foxyws/ /isaacsim/ros2workspace/RUN rm rf IsaacSimrosworkspaces/WORKDIR /isaacsim/ros2workspaceSHELL [/bin/bash c]RUN aptget update y ampamp aptget upgrade y RUN source /opt/ros/foxy/setupbash ampamp rosdep install i frompath src rosdistro foxy y ampamp colcon build
WORKDIR /COPY entrypointsh /entrypointshRUN sudo chmod x /entrypointsh ENTRYPOINT [/entrypointsh]
在 docker 目录中创建名为 entrypointsh 的文件,内容如下:
bash
set esource /opt/ros/foxy/setupbashsource /isaacsim/ros2workspace/install/localsetupbashprintenvexec {@1}
在 docker 目录中从命令提示符构建机器人应用映像,输入以下命令:
bashsudo docker build t isaacroslatest
创建一个新的 Amazon ECR 存储库,输入以下命令:
bashaws ecr createrepository repositoryname isaacros
保存上一步命令的 repositoryUri 输出,在环境变量中设置以供未来使用,输入以下命令:
bashREPOSITORYURI=ltrepositoryUrigt
向新创建的 Amazon ECR 识别身份验证,输入以下命令:
bashaws ecr getloginpassword sudo docker login u AWS passwordstdin REPOSITORYURI
给 Docker 映像打标,输入以下命令:
bashsudo docker tag isaacroslatest REPOSITORYURIlatest
将 Docker 映像推送到 Amazon ECR,输入以下命令:
bashsudo docker push REPOSITORYURIlatest
AWS RoboMaker 模拟作业基于运行模拟应用和可选机器人应用,这些应用基于储存在 Amazon ECR 中的容器映像。
从 AWS RoboMaker 菜单中,选择左侧导航窗格中的 模拟作业 下的 创建模拟作业:
在 步骤 1,配置模拟 中配置以下项目,其余输入保持预设:
从 IAM 角色 下拉菜单中选择 创建新角色,并为角色输入一个名称,例如 isaac。从 计算类型 下拉菜单中选择 CPU 和 GPU。从 网路 部分的 VPC 下拉菜单中选择一个包含两个或更多公共子网的 VPC,例如您的默认 VPC。NVIDIA 容器需要访问互联网以加载示例资源。从 网路 部分的 安全组 下拉菜单中选择一个允许出站 TCP 流量的安全组,这样能够在 80 和 443 端口上允许容器加载 NVIDIA 示例资源。从 网路 部分的 子网 下拉菜单中选择至少两个子网。在页面底部选择 下一步。有关创建和编辑 VPC、公共子网和安全组的文档,请参考 Amazon VPC 用户指南。
配置 步骤 2,指定机器人应用 的以下项目,其余输入保持预设:
从 选择方法 部分中选择 创建新应用。在 机器人应用 部分,提供一个名称,例如 ros2navigation在 容器映像 子部分中,确定选择了私人选项并输入以下 URI,替换上面 步骤 1 为 AWS RoboMaker 机器人应用构建 Docker 映像 中的 ltrepositoryUrigtlatest在 机器人应用 配置 部分,在 启动命令 字段中输入ros2 launch carternavigation carternavigationlaunchpy
加速器下载苹果确保选中 使用串流会话运行 复选框
展开机器人应用工具部分并选择 自定义工具。选择 添加工具,并输入以下指定信息:在 工具名称 中输入 robotappterminal在 命令 中输入 /usr/bin/xterm geometry 120x40从 退出行为 下拉菜单中选择 重新启动选择 启用 UI 串流 作为 输出设置确保选中 将输出发送至 Amazon CloudWatch 的复选框 选择 添加工具在页面底部选择 下一步。配置 步骤 3,指定模拟应用 的以下项目,其余输入保持预设:
从 选择方法 部分中选择 创建新应用。在 模拟应用 部分,提供名称为 isaacsim在 容器映像 子部分中,选择公共选项并输入 NVIDIA Isaac Sim 公共映像的以下 URI publicecraws/nvidia/isaacsimrobomakerlatest在 模拟应用 配置部分,在 启动命令 字段中输入/isaacsim/isaacsimsh allowroot
确保选中 使用串流会话运行 复选框
在 环境变量 部分,选择添加项目 在 名称 中输入 ACCEPTEULA在 值 中输入 Y展开 模拟应用工具 部分并选择 自定义工具。选择 添加工具,并输入以下指定信息:在 工具名称 中输入 simulationappterminal在 命令 中输入 /usr/bin/xterm geometry 120x40从 退出行为 下拉菜单中选择 重新启动选择 启用 UI 串流 作为 输出设置确保选中 将输出发送至 Amazon CloudWatch 的复选框 选择 添加工具在页面底部选择 下一步。在 审阅和创建模拟作业 页面中,向下滚动至页面底部,并选择 创建。作业状态转变为运行可能需要 510 分钟。当模拟作业进入运行状态
如何从企业数据中创造价值:Text2SQL 与生成式 AI 的最佳实践作者:Nitin Eusebius、Arghya Banerjee 和 Randy DeFauw,发布日期:2024年1月4日,来源于 Amazon Bedrock重点摘要生成式 AI 在各个领域都展现了很大的潜力,包括文本生成、...
Amazon DocumentDB 50:降本增效的最佳选择关键要点本地文档数据库:Amazon DocumentDB 是一个完全托管的原生 JSON 文档数据库,简化了架构,并提供内置安全最佳实践。向后兼容 MongoDB 50:支持最新的 MongoDB API,使用户能够利用新功能。向量搜索和...