借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第1张图片

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第2张图片

点击上方【凌云驭势 重塑未来】

一起共赴年度科技盛宴!

本博客引用了 Amazon RoboMaker 集成式开发环境(IDE),这是一项已弃用的功能。要继续阅读这篇博客,请使用 Amazon Cloud9 IDE。请参阅我们更新的博客,了解如何在 Amazon Cloud9 中构建和模拟机器人应用程序。

在 Amazon Cloud9 中构建和模拟机器人应用程序:

https://aws.amazon.com/cn/blogs/robotics/robotics-development-in-aws-cloud9/

简介

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第3张图片

高保真模拟可以为每个对象渲染更多的多边形,这为对象提供了更多细节、更多纹理和更好的照明和阴影,从而使模拟更加逼真。相比不太真实的模拟,在接近现实世界的模拟中,机器人开发人员可以更准确地测试和训练感知模型。通过高保真模拟,还可以生成用于训练机器学习模型的逼真合成图像,从而减少了从现实世界中捕获图像的需求,并加快了模型开发速度。为了支持高保真模拟,Amazon RoboMaker 现在支持专为计算密集型工作流设计的基于 GPU 的模拟作业,例如高保真模拟。基于 GPU 的模拟还支持更高的每秒帧数、更灵敏的模拟交互,以及更高的相机和激光扫描仪感应性能。这些功能进一步缩小了模拟与现实世界之间的差距。以前,Amazon RoboMaker 模拟作业只能在中央处理器单元(CPU)上运行,现在您可以选择为模拟作业添加 GPU。

此外,Amazon RoboMaker 现在使您能够灵活地使用所选的机器人软件和模拟器,从而可以使用 CARLA、Ignition、Drake 或 Nvidia Isaac Sim 等模拟器,以及 Unity 或 Unreal Engine 等高保真渲染引擎,在 Amazon RoboMaker 中运行模拟。开发人员可以使用 Docker 或类似的构建工具以及所选的模拟器和渲染引擎来构建符合 Open Container Initiative (OCI) 要求的容器,将其上传到 Amazon Elastic Container Repository (ECR),然后将其用作模拟应用程序。现在,开发人员可以使用适合其使用案例的机器人软件和模拟器。开发人员仍然可以在机器人应用程序中使用 ROS,包括较旧版本(如 ROS Kinetic),这样就无需升级系统;或者较新版本(如 ROS2 Galactic)。他们也可以运行自定义机器人应用程序,而不使用 ROS。

总而言之,Amazon RoboMaker 发布了一些功能,能够提供:

  1. 基于 GPU 的计算 – 使开发人员能够使用 GPU 运行模拟,从而进行高保真模拟、视觉处理和机器学习。

  2. 模拟器选择权 – 使开发人员能够使用任何模拟器在存储于 Amazon Elastic Container Repository (ECR) 的容器中运行模拟。

  3. 机器人软件的灵活性 – 使开发人员也能够在存储于 ECR 的容器中运行自定义机器人应用程序,或运行自定义 ROS 版本(如较旧的 ROS 发行版)。

接下来,我们将演练在 Amazon RoboMaker 中使用高保真模拟构建、上传和运行容器的过程。

CARLA:

http://carla.org/

Ignition:

https://gazebosim.org/home

Drake:

https://drake.mit.edu/

Nvidia Isaac Sim:

https://developer.nvidia.com/isaac-sim

Unity:

https://unity.com/

Unreal Engine:

https://www.unrealengine.com/zh-CN

Docker:

https://www.docker.com/

Open Container Initiative:

https://opencontainers.org

Kinetic:

http://wiki.ros.org/kinetic

Galactic:

https://docs.ros.org/en/rolling/Releases/Release-Galactic-Geochelone.html

教程

本教程对三个部分进行了详细说明:

  • 第1部分 – 构建示例容器

  • 第2部分 – 将容器上传到 Amazon Elastic Container Registry (ECR)

  • 第3部分 – 使用容器和 GPU 开始 Amazon RoboMaker 模拟

先决条件

一个拥有 Amazon RoboMaker 和 Amazon ECR 访问权限的 Amazon 账户。

第1部分

构建示例容器

我们要构建和运行的容器基于 CARLA 开源自动驾驶模拟器,该模拟器使用 Unreal Engine4 制作高保真度图形。

CARLA:

https://carla.readthedocs.io/en/latest/

1.1 – 创建开发环境

开始学习本教程时,我们将创建一个 Amazon RoboMaker 集成式开发环境(IDE)。在 Amazon RoboMaker 菜单中,选择 Development Environments (开发环境),然后选择 Create environment (创建环境)。

d36ccd1ec0cc4019e5f140644b4140e2.jpeg

将您的环境命名为 carla-env,选择 Foxy (Latest)[Foxy (最新)] 作为 ROS 发行版,选择 m4.xlarge 作为实例类型,然后单击 Create (创建)。

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第4张图片

几秒钟后,您应该会看到开发环境出现。

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第5张图片

1.2 – 构建容器映像

在开发环境的下部窗口窗格中,使用 bash 终端创建一个名为“carla-examples”的新文件夹。

mkdir carla-examples && cd carla-examples

左滑查看更多

在开发环境的上部窗口窗格中,创建一个新文件,并将以下内容复制到该文件中:

FROM carlasim/carla:0.9.11
USER root


# 安装依赖项
RUN apt update && \
      apt install -y python3-pip \
      libjpeg-dev \
      libtiff5-dev \
      libomp-dev \
      fontconfig


# 修复 ALSA 错误
RUN echo pcm.!default { type plug slave.pcm "null" } >> /etc/asound.conf


# 安装 NICE DCV(对于 RoboMaker)
RUN apt update -y && apt upgrade -y && apt install -y wget pgp
RUN wget https://d1uj6qtbmh3dt5.cloudfront.net/NICE-GPG-KEY
RUN gpg --import NICE-GPG-KEY
RUN wget https://d1uj6qtbmh3dt5.cloudfront.net/2021.1/Servers/nice-dcv-2021.1-10598-ubuntu1804-x86_64.tgz
RUN tar -xvzf nice-dcv-2021.1-10598-ubuntu1804-x86_64.tgz
RUN apt update && apt install -y ./nice-dcv-2021.1-10598-ubuntu1804-x86_64/nice-dcv-gl_2021.1.937-1_amd64.ubuntu1804.deb \
                                 ./nice-dcv-2021.1-10598-ubuntu1804-x86_64/nice-dcv-gltest_2021.1.275-1_amd64.ubuntu1804.deb


# 安装 opengl 
RUN apt update && apt install -y libglfw3 libglfw3-dev


# 安装 xterm
RUN apt update && apt install -y xterm


# 以用户 carla 身份运行
USER carla


# 安装示例依赖项
RUN python3 -m pip install -U pip
RUN cd ~/PythonAPI/examples && python3 -m pip install -r requirements.txt


# 设置 carla python API 路径
ENV PYTHONPATH=/home/carla/PythonAPI/carla/dist/carla-0.9.11-py3.7-linux-x86_64.egg


ENTRYPOINT ["/bin/bash", "-c"]

左滑查看更多

将该文件作为 Dockerfile 保存到 carla-examples 文件夹,然后构建容器映像。

sudo docker build -t carla-examples:latest ./

左滑查看更多

第2部分

将容器上传到 

Amazon Elastic Container Registry(ECR)

2.1 – 在 ECR 中创建存储库来存储容器映像

在 bash 终端中,使用 Amazon 命令行界面(CLI)在 ECR 中为我们的容器映像创建存储库。

Amazon 命令行界面:

https://aws.amazon.com/cn/cli/

aws ecr create-repository --repository-name carla-examples

左滑查看更多

该命令将返回一个包含“repositoryUri”值的 JSON 结构。使用该值登录 ECR。

aws ecr get-login-password | sudo docker login --username AWS --password-stdin 

左滑查看更多

您应该会收到 Login Succeeded (登录成功) 的响应。

2.2 – 将容器映像上传到 ECR

使用与之前相同的标记映像。

sudo docker tag carla-examples:latest 

左滑查看更多

将映像上传(推送)到 ECR。

sudo docker push 

左滑查看更多

第3部分 

使用容器和 GPU 

开始 Amazon RoboMaker 模拟

对于本教程的最后一部分,打开 Amazon RoboMaker 控制台的一个选项卡。

在左侧菜单中,选择 Simulation jobs (模拟作业),然后单击 Create simulation job (创建模拟作业)。

在 Configure simulation (配置模拟) 页面上,选择 General (常规) 作为机器人软件套件。这是一项支持自定义容器的新功能。

选择 Create new role (创建新角色) 和“robomaker-simulation” 作为您的 IAM 角色名称。

对于 Compute type (计算类型),选择 CPU and GPU (CPU 和 GPU) 以将 GPU 添加到 RoboMaker 模拟。选择 Next (下一步) 继续。

Amazon RoboMaker 控制台:

https://aws.amazon.com/cn/robomaker/

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第6张图片

在 Specify robot application (指定机器人应用程序) 屏幕上,为机器人应用程序选择 None (无),然后选择 Next (下一步) 继续。

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第7张图片

接下来,在 Specify simulation application (指定模拟应用程序) 屏幕上,选择 Create new application (创建新应用程序)。

将应用程序命名为“carla-examples-sim”,然后选择 Simulation runtime (模拟运行时) 作为模拟软件套件。

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第8张图片

选择 Provide a container image for an environment (为环境提供容器映像)。然后选择 Browse ECR (浏览 ECR) 找到您之前创建的容器存储库,并选择最新版本。

对于 Launch command (启动命令),请使用“./CarlaUE4.sh -opengl”,然后选中 Run with streaming session (使用流媒体会话运行) 旁边的复选框。

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第9张图片

向模拟会话添加两个终端(xterm),这样我们就可以与该会话交互。要添加 xterm,请选择 Customize tools (自定义工具),然后选择 Add tool (添加工具)。

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第10张图片

在 Add tool (添加工具) 窗口中,将 Tool name (工具名称) 设置为“xterm”,将 Command (命令) 设置为“/usr/bin/xterm”。

在 Exit behavior (退出行为) 列表中选择 Restart (重新启动),并在 Output Settings (输出设置) 中选择 Enable UI streaming (启用 UI 流式传输)。然后选择 Add tool (添加工具) 按钮继续。

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第11张图片

重复上面的 Add tool (添加工具) 步骤,添加一个名为“xterm2”的第二个终端,使用“/usr/bin/xterm”命令,其余选项与第一个终端相同。

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第12张图片

滚动到屏幕底部,选择 Next (下一步)。

最后,在下一个屏幕上检查所有字段是否看起来正确,然后选择 Create (创建)。这将启动您的模拟作业。

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第13张图片

启动这项作业需要几分钟时间。创建作业后,单击 Simulation application (模拟应用程序) 上的 Connect (连接) 按钮查看模拟。

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第14张图片

CARLA UE4 应用程序将显示在新的浏览器窗口中。

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第15张图片

使用键盘在模拟环境中导航相机视图;“w”是向前移动,“s”是向后移动,“a”是向左移动,“d”是向右移动。

城市模拟一开始空无一物,要向其中添加车辆和行人,请单击 Connect (连接) 打开 xterm 应用程序。

在 xterm 窗口中,运行 spawn_npc.py 脚本。选项“-n 50”是要生成的车辆数量,即 50 辆。

python3 PythonAPI/examples/spawn_npc.py -n 50

左滑查看更多

现在应该有50辆车和一些行人在模拟环境中移动。

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第16张图片

既然有车辆在移动,我们将在模拟环境中添加一辆可以操控并在城市街道上行驶的汽车。

单击 Connect (连接) 打开第二个终端“xterm2”。

在终端中,启动 manual_control.py 脚本,在您控制的模拟环境中生成车辆。

python3 PythonAPI/examples/manual_control.py

左滑查看更多

此时将出现一个新窗口,其中有一辆汽车准备行驶。拖动窗口并调整大小,使它们并排放置。使用键盘操控汽车;“w”是加速,“a”是左转,“d”是右转,“s”是刹车。

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第17张图片

在自动驾驶场景中,您可以添加机器人应用程序作为第二个容器来操控汽车,而不是手动驾驶汽车。通过这种方式,您可以测试您的自动驾驶应用程序。

本教程到此结束,我们讲解了如何在 Amazon RoboMaker 中运行 CARLA 自动驾驶模拟器,在城市中添加车辆,以及在模拟环境中驾驶汽车。

结论

在这篇博客中,我们介绍了一些 Amazon RoboMaker 功能,凭借这些功能,可以使用任何机器人模拟器和机器人软件来运行基于高保真 GPU 的模拟作业。然后,我们通过一个教程逐步展示了如何使用这些新功能在 Amazon RoboMaker 中运行 CARLA 自动驾驶模拟器。要了解有关这些功能的更多信息,请联系我们。([email protected]

本篇作者

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第18张图片

Matt Hansen

Matt Hansen 是 Amazon Web Services(Amazon)的首席解决方案架构师,专门研究机器人。在加入 Amazon 之前,Matt 曾在 Intel 开源机器人团队的 ROS 和 ROS 2 工作过 5 年,负责领导 ROS 2 Navigation2 项目,并且是 ROS 2 技术指导委员会的原始成员。他是俄勒冈州人,拥有波特兰州立大学电气工程硕士学位。

2022亚马逊云科技 re:Invent 全球大会

精彩视频现已上线!

点击下方图片立即观看

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第19张图片

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第20张图片

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第21张图片

听说,点完下面4个按钮

就不会碰到bug了!

借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟_第22张图片

你可能感兴趣的:(人工智能)