亚马逊AWS官方博客

无需管理任何基础设施即可在云端构建和模拟 Mini Pupper 机器人

Original URL: https://aws.amazon.com/blogs/robotics/build-and-simulate-a-mini-pupper-robot-in-the-cloud-without-managing-any-infrastructure/

简介

传统上,在物理环境中为机器人构建和测试应用程序具有挑战性、较为复杂,并且需要大量资源。为了缩短开发时间,开发人员通常会在构建自己的机器人应用程序之前进行模拟。遗憾的是,模拟器需要高性能的计算环境和专业技能。机器人爱好者需要投入额外的成本和时间来管理基础设施和开发环境。对于机器人公司来说,基础设施和运营成本往往限制了模拟的使用,这反过来又限制了大规模自动化测试所能带来的优势。借助基于云的模拟,机器人爱好者可以在云端构建和模拟机器人应用程序,而无需管理任何基础设施。机器人公司可以使用云来支持大规模并行模拟和自动扩展,以改进其机器人设计。开发人员可以使用基于云的模拟来扩大测试覆盖范围、降低成本,并加快开发速度。 MangDang 成立于 2020 年,专门从事机器人产品的研究、开发和生产。受 Stanford Pupper 开源项目的启发,他们于 2021 年推出了第一款基于机器人操作系统(ROS)的四足机器人(有四条腿的机器人),名为 Mini Pupper。最初设计和开发 Mini Pupper 的目的是为了让机器人爱好者,尤其是学生和教育机构,能够更轻松地以更低的价格构建自己的四足机器人系统。MangDang 一直在寻找机器人开发和模拟的一站式解决方案,因此他们选择了 AWS RoboMaker 作为关键组件。AWS RoboMaker 为机器人开发提供了全面的云解决方案。它具有基于可扩展基础设施的完全托管式模拟功能。通过 AWS Cloud9,机器人爱好者可以在具有 ROS 环境的基于云的集成开发环境(IDE)上开发应用程序。AWS RoboMaker 与开源 AWS IoT Greengrass 集成,还提供了将应用程序部署到物理机器人的功能。AWS RoboMaker 提供与各种 AWS 管理、监控、安全和存储功能的无缝集成,使客户能够创新并提供一流的机器人解决方案。AWS RoboMaker 可以运行开源 ROS 和多个模拟引擎。机器人爱好者可以在云端运行开源 Gazebo 模拟引擎。您无需为开发或模拟任务配置或管理基础设施。对于机器人公司来说,AWS RoboMaker 可以运行商业模拟器(Unity、Unreal、Nvidia Isaac 等)。通过 AWS RoboMaker 模拟,您可以使用应用程序编程接口(API)运行数百个自动生成的测试场景,从而能够在有问题的代码到达机器人之前扩大测试覆盖范围并解决错误。在这篇博客中,我们使用一个简单的 Mini Pupper 示例应用程序来演示如何使用 AWS RoboMaker 进行机器人应用程序开发、测试和模拟。

解决方案概览

在此解决方案中,您将为 Mini Pupper 构建导航应用程序。该应用程序使用机器人的摄像头,以及光探测和测距传感器(LIDAR)来确定机器人的位置和方向。操作员设置目标点后,机器人计算路线并走到目标点。

Mini Pupper 运行机器人操作系统(ROS)。 ROS 是一个开源的机器人软件框架。ROS 提供了一组软件库和工具,可帮助您构建机器人应用程序。您将在 ROS 开发环境中开发和运行应用程序。

您可以使用 Gazebo 模拟器模拟机器人和应用程序。Gazebo 是一款开源 3D 机器人模拟器。它可以渲染 3D 场景,并模拟机器人的传感器和执行器控制。

您可以使用带有 ROS 环境和 Gazebo 模拟器的在线 IDE 进行应用程序开发和测试。之后,在托管的模拟环境中模拟机器人应用程序。

下图说明了如何通过四个步骤构建、测试和运行机器人应用程序:

  1. 部署开发环境。开发环境是一个带有 ROS 环境和 Gazebo 模拟器的在线 IDE,用于应用程序开发和测试。
  2. 在 AWS RoboMaker 开发环境中开发和测试他们的应用程序。您可以在开发环境中运行和调试机器人应用程序和模拟器。
  3. 为应用程序生成容器映像。该映像存储在 Amazon Elastic Container Registry(Amazon ECR)中。
  4. 在 AWS RoboMaker 的托管模拟环境中运行应用程序。

本演练的架构图

图 1 本演练的架构图

此解决方案包括以下组成部分:

  • AWS RoboMaker:在可扩展的基础设施之上提供完全托管式模拟功能。在本演练中,您可以使用 AWS RoboMaker 提供的托管模拟环境。
  • AWS Cloud9:在线 IDE。允许用户使用 ROS 环境和 Gazebo 模拟器在云端进行开发。
  • Amazon Elastic Container Registry(Amazon ECR):存储机器人应用程序和模拟应用程序的容器映像。

先决条件

要进行此演练,您需要满足以下条件:

  • 对 Linux 操作系统和容器有基本的了解。
  • 对 ROS 和 Gazebo 有基本的了解。
  • 一个 AWS 账户。
  • 具有部署所需资源的管理员权限或同等权限。

本文所需的源代码可从 https://github.com/mangdangroboticsclub/aws-robomaker-mini-pupper-application 获取。

解决方案演练

步骤 1:部署开发环境

开发环境是基于 AWS Cloud9 和云的 IDE,使用 Amazon Elastic Compute Cloud(Amazon EC2)作为底层基础设施。此环境提供预安装的 Ubuntu 操作系统。用户可以安装 ROS 开发环境和 Gazebo 模拟器来快速开始开发机器人应用程序。

您可以通过关注以下博客文章来构建开发环境:在 AWS Cloud9 中构建和模拟机器人应用程序。确保已完成配置 NICE DCV 步骤,这样您就可以访问 NICE DCV 环境了。

步骤 2:构建和测试机器人应用程序

1.从 GitHub 获取源代码。

运行以下命令,从 Github 克隆代码。

git clone --recursive https://github.com/mangdangroboticsclub/aws-robomaker-mini-pupper-application.git

您可以浏览文件夹结构。机器人应用程序位于 robot_ws 文件夹中,模拟应用程序源代码位于 simulation_ws 文件夹(也称为工作区)中。

机器人应用程序是包含机器人行为的软件,例如 ROS 导航。组件将通过 ROS 主题服务相互通信。

模拟应用程序包含模型。当机器人在模拟中移动时,模拟器将加载世界模型和机器人模型,以提供机器人环境和传感器数据。模拟器还使用 ROS 主题服务与机器人应用程序通信。

2.安装机器人应用程序的依赖项。

在 AWS Cloud9 开发环境中,您已经安装了带有基本软件包的 ROS 开发环境。机器人应用程序需要可以使用 rosdep 安装的额外软件包。rosdep 是 ROS 的软件包管理器。它可以从源代码中检测软件包依赖项,并调用系统的包管理器(在本例中为 apt)来安装它们。

a.导航到 robot_ws 目录。

cd aws-robomaker-mini-pupper-application/robot_ws

b.运行以下命令来安装依赖项。

rosdep install --from-paths src --ignore-src -r -y

安装过程将持续三到五分钟。看到 #所有必须的 rosdeps 均已成功安装后,机器人应用程序的所有依赖项都已安装。

3.安装模拟应用程序的依赖项。

a.导航到 simulation_ws 目录。

cd ../simulation_ws/

b.运行以下命令来安装依赖项。

rosdep install –from-paths src –ignore-src -r -y

4.构建机器人应用程序。

您可以使用 colcon 工具来构建和打包机器人应用程序。colcon 是一个通用的 ROS 构建工具,同时支持 ROS 和 ROS2。colcon 可以调用 cmake 或其他构建工具从源代码构建可执行文件。应分别构建机器人应用程序和模拟应用程序。

a.导航到 robot_ws 目录。

cd ../robot_ws

b.运行以下命令开始构建。

colcon build –cmake-args ‘-Wno-dev’

您将看到 2 个包已完成。

5.构建模拟应用程序。

a.导航到 simulation_ws 目录。

cd ../simulation_ws

b.运行以下命令开始构建。

colcon build –cmake-args ‘-Wno-dev’

您将看到 11 个包已完成。

6.启动 GUI 会话。

构建完成后,您可以使用开源 Gazebo 模拟器在我们的开发环境中对其进行测试。您的开发环境提供了一个 NICE DCV 虚拟桌面,以获得高质量的 GUI 体验。运行以下命令,以获取 NICE DCV 的访问 URL:

./dcvsession

您会看到一个类似 https://1234567890abcdef0.vfs.cloud9.us-east-1.amazonaws.com 的 URL。在浏览器中打开此 URL,您会看到 Ubuntu 桌面。

要从终端运行 GUI 应用程序,请在 IDE 中设置 DISPLAY 环境变量。

a.在所有打开的终端上运行以下命令。

export DISPLAY=:0

b.运行 xclock 命令以测试启动一个简单的时钟应用程序 GUI。

虚拟桌面上显示的时钟

图 2 虚拟桌面上应显示时钟

如果时钟 GUI 未呈现,您可能会收到以下消息,例如无法连接到显示器:0。在这种情况下,请运行以下命令并尝试再次启动 xclock

export DISPLAY=:1

7.运行机器人应用程序。

现在,您可以启动 Gazebo 来模拟机器人应用程序。运行以下命令。

source install/local_setup.bash
roslaunch mini_pupper_gazebo gazebo.launch

您可以在 Gazebo 模拟器上看到四足机器人站在场景中。

带有预建世界模型的 Gazebo 模拟器中的机器人

图 3 带有预建世界模型的 Gazebo 模拟器中的机器人

要使机器人移动,请启动机器人应用程序。

a.选择右上角的加号打开新终端,然后选择 New Terminal(新终端)。

Open new terminal(打开新终端)窗口

图 4 Open new terminal(打开新终端)窗口

b.在新终端中,运行以下命令来初始化显示。

export DISPLAY=:0

c.导航到机器人应用程序所在的目录。

cd aws-robomaker-mini-pupper-application/robot_ws

d.运行机器人应用程序。

source install/local_setup.bash
roslaunch mini_pupper_navigation navigate.launch

经过短暂的初始化后,Mini Pupper 的导航应用程序将出现在 RViz 中。 RViz 是一款 ROS 主题可视化工具,可用于可视化机器人的传感器输入。

运行机器人应用程序和模拟器

图 5 运行机器人应用程序和模拟器

您可以通过 RViz 控制机器人。选择 2D Nav Goal(2D 导航目标)进入控制模式。单击并拖动以设置机器人的目标和方向。

机器人移动到目标

图 6 机器人移动到目标

设置目标后,您可以看到机器人向目标移动,并在到达目标时原地转向。

完成测试后,在两个终端窗口中按 Ctrl+C 停止正在运行的应用程序。保持这些终端窗口和虚拟桌面处于打开状态,因为您稍后将使用它们。

步骤 3:为模拟作业构建容器映像

现在,您已在虚拟桌面上有一个工作的模拟,可以将应用程序构建到容器映像中,以便它们可以在 AWS RoboMaker 模拟作业上运行。模拟作业是一个托管环境,用于运行一对机器人和模拟应用程序。模拟作业提供更大的计算资源和一个世界生成器,并且适合长时间运行。在本演练中,您将构建三个映像:

  • mini-pupper-base:基本映像包含 ROS 运行时环境和 Gazebo 9 模拟器。源代码和共享依赖项也将内置到映像中。此映像用作基础层,不可执行。
  • mini-pupper-robot:机器人映像包含可执行的机器人应用程序及其启动脚本。
  • mini-pupper-simulation:模拟器映像包含可执行的模拟器应用程序、世界及其启动脚本。

映像构建需要名为 Dockerfile 的构建脚本。Dockerfile 是一种文本文档,它包含用户可以在命令行上调用以组装映像的所有命令。您可以在代码存储库的根目录中找到所有三个 Dockerfile。

1.生成基本映像。

基本映像包含 ROS 运行时环境、Gazebo 9 模拟器、源代码和共享依赖项。运行以下命令开始构建。

sudo docker build . -t mini-pupper-base:1.0 -f Dockerfile-Base

使用 docker build,Docker 可以通过读取 Dockerfile 中的指令来自动构建映像,并连续运行多个命令行指令。通常,在构建过程中,Docker 会安装依赖项,将应用程序的源代码构建为可执行文件,并设置启动配置以启动应用程序。

此映像名为 mini-pupper-base:1.0。映像名称中包含存储库和标记,两者由冒号分隔。存储库是一组相似的映像,不同的版本使用标记来标识。如果您有多个版本的映像,可以保留相同的存储库,但使用不同的标记进行版本控制。当映像被推送到远程注册表时,存储库也可以表示注册表主机名。您将对其进行更改,并在稍后推送到 Amazon ECR。

2.构建机器人应用程序映像。

要构建与 AWS RoboMaker 兼容的容器映像,该映像应包含启动脚本。启动脚本可以包含环境变量设置和预处理命令。在此演练中,您将使用仅包含环境变量的最低启动脚本。您可以在 script 目录中找到它,并将其命名为 robot-entrypoint.sh

a.运行以下命令,开始使用 Dockerfile-Robot 构建机器人应用程序映像。

sudo docker build . -t mini-pupper-robot:1.0 -f Dockerfile-Robot

b.运行以下命令,开始使用 Dockerfile-Simulation 构建模拟器映像。

sudo docker build . -t mini-pupper-simulation:1.0 -f Dockerfile-Simulation

c.运行 docker images 命令,列出到目前为止您构建的映像。您应看到至少 4 个映像。

映像列表。应至少存在 4 个映像

图 7 映像列表。应至少存在 4 个映像。

3.在本地验证映像。

a.运行以下命令,启动机器人应用程序。

docker run -it --net=host --privileged \
-e DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix/ \
-u robomaker -e GAZEBO_MASTER_URI=http://localhost:5555 \
-e ROS_MASTER_URI=http://localhost:11311 \
mini-pupper-robot:1.0

您可以在终端和虚拟桌面的 RViz 窗口中看到输出。

b.切换到另一个终端窗口,并运行以下命令以启动模拟应用程序。

docker run -it --net=host --privileged \
-e DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix/ \
-u robomaker -e GAZEBO_MASTER_URI=http://localhost:5555 \
-e ROS_MASTER_URI=http://localhost:11311 \
mini-pupper-simulation:1.0

现在,您可以在虚拟桌面中看到 Gazebo 模拟器。您可以使用与上一部分中提到的相同方法控制机器人。

4.创建映像存储库。

模拟作业会从容器映像注册表中提取并运行相应的映像。Amazon ECR 是一个完全托管式 Docker 容器注册表。您可以使用 Amazon ECR 存储以前构建的映像。

存储库是您在 Amazon ECR 中存储映像的地方。一个存储库可以有多个版本的映像。在推送任何映像之前,您都需要创建存储库。

a.导航到 Amazon ECR 控制台

b.在导航窗格中,选择

c.选择 Create Repository(创建存储库)。

d.对于 Repository Name(存储库名称),指定存储库的名称。在本演练中,输入 mini-pupper-robot

e.选择 Create Repository(创建存储库)。

重复上述过程,创建另一个名为 mini-pupper-simulation 的存储库。您不需要创建第三个存储库,因为基本映像不可执行。

Amazon ECR 中的存储库

图 8 Amazon ECR 中的存储库

5.登录 Amazon ECR

要在 Amazon ECR 中使用 docker 命令,请在终端中手动登录 Amazon ECR。

a.选择您创建的任何存储库。

b.选择 View push commands(查看推送命令),以查看登录命令。

c.复制第 1 部分中的命令。

复制第 1 部分中的登录命令

图 9 复制第 1 部分中的登录命令

d.在 AWS Cloud9 终端中运行复制的命令。

看到 Login succeed(登录成功)后,说明已成功登录。每个令牌的有效期为 24 小时。如果令牌过期,请重新登录。

6.标记您的映像。

Docker 要求使用注册表主机名标记映像。Amazon ECR 将提供一个唯一的主机名,您需要将其添加为映像名称的前缀才能正确上传。我们使用 docker tag 命令来重命名映像。

a.将 111122223333 替换为您的 12 位 AWS 账号,将 your-region 替换为您所在的区域。运行以下命令。

docker tag mini-pupper-robot:1.0 111122223333.dkr.ecr.your-region.amazonaws.com/mini-pupper-robot:1.0

docker tag mini-pupper-simulation:1.0 111122223333.dkr.ecr.your-region.amazonaws.com/mini-pupper-simulation:1.0

b.运行 docker images 列出可用映像。别名映像位于不同的存储库中,但具有相同的映像 ID。

具有相同映像 ID 的别名映像

图 10 具有相同映像 ID 的别名映像

7.将映像推送到 Amazon ECR。

111122223333 替换为您的 12 位 AWS 账号,将 your-region 替换为您所在的区域。运行以下命令。

docker push 111122223333.dkr.ecr.your-region.amazonaws.com/mini-pupper-robot:1.0

docker push 111122223333.dkr.ecr.your-region.amazonaws.com/mini-pupper-simulation:1.0

推送完成后,您可以在 Amazon ECR 控制台中看到新推送的映像。

步骤 4:在模拟作业中运行机器人应用程序

1.定义机器人应用程序。

模拟作业需要一对机器人应用程序和仿真应用程序。这些定义包括映像位置。

a.打开 AWS RoboMaker 控制台

b.在导航窗格中的 Development(开发)下,选择 Robot Applications(机器人应用程序)。

c.选择 Create Robot Application(创建机器人应用程序)。

d.对于 Name(名称),指定机器人应用程序的名称。在本演练中,输入 mini-pupper-demo-robot

e.对于 Container image(容器映像),选择 Browse ECR(浏览 ECR),以找到之前上传的机器人应用程序映像。

f.选择 Create(创建),以创建机器人应用程序。

2.定义模拟应用程序。

a.在导航窗格的 Development(开发)下,选择 Simulation Applications(模拟应用程序)。

b.选择 Create simulation Application(创建模拟应用程序)。

c.对于 Name(名称),指定模拟应用程序的名称。在本演练中,输入 mini-pupper-demo-simulation

d.对于 Container image(容器映像),选择 Browse ECR(浏览 ECR),以找到之前上传的模拟应用程序映像。

e.选择 Create(创建),以创建模拟应用程序。

3.启动 AWS RoboMaker 模拟作业。

模拟作业是一个完全托管式环境,用于运行机器人应用程序和模拟器应用程序。您可以在不同的模拟作业中指定配置,以模拟不同的环境。它还提供了用于交互的图形界面。

a.在导航窗格的 Simulation Run(模拟运行)下,选择 Simulation jobs(模拟作业)。

b.选择 Create Simulation Job(创建模拟作业)。

创建模拟作业分为 4 个步骤。

Configuring simulation(配置模拟)页面中,您可以配置模拟作业的详细信息和可选参数。

a.对于 Simulation job duration(模拟作业持续时间),指定时间。在本演练中,指定 30 分钟。

b.对于 IAM Role(IAM 角色),选择 Create a new role(创建新角色)。然后,在下面的文本框中为新创建的 IAM 角色指定一个名称。在本演练中,输入 mini-pupper-demo-role。此 IAM 角色允许 AWS RoboMaker 从相应的 ECR 存储库中检索映像,并将日志发送到 CloudWatch Logs。

Simulation job details(模拟作业详细信息)页面

图 11 Simulation job details(模拟作业详细信息)页面

在同一页面的 Compute(计算)部分中,您可以选择模拟作业的计算类型和计算限制。

a.对于 Compute type(计算类型),选择 CPU。本演练不需要 GPU。

b.对于 Simulation Unit (SU) limit(模拟单元(SU)限制),保持 15 个 SU 不变。每个 SU 代表 1 个 vCPU 和 2GB 内存。将按您的作业消耗的 SU 数量进行计费,最高不超过配置的限制。

c.选择 Next(下一步)进入下一页。

Specify robot application(指定机器人应用程序)页面中,设置机器人应用程序的启动配置。

a.对于 Robot Application(机器人应用程序),选择先前配置的机器人应用程序。

b.对于 Launch Command(启动命令)字段,将启动命令指定为以逗号分隔的参数列表。在本演练中,输入 roslaunch, mini_pupper_navigation, navigate.launch

c.为基于 RViz 的 GUI 启用 Run with streaming session(使用流媒体会话运行)。

为确保机器人应用程序和模拟器应用程序可以相互通信,请定义一些环境变量,以便这两个应用程序可以连接到同一个 ROS 主机。

d.选择 Add item(添加项目),并将以下内容添加到 Environment variables(环境变量)中。

名称
GAZEBO_MASTER_URI http://ROBOMAKER_SIM_APP_IP:11345
ROS_IP ROBOMAKER_ROBOT_APP_IP
ROS_MASTER_URI http://ROBOMAKER_ROBOT_APP_IP:11311

环境变量

图 12 环境变量

AWS RoboMaker 会自动将该值替换为相应容器的 IP。

e.选择 Next(下一步)进入下一页。

Specify simulation application(指定模拟应用程序)页面中,设置模拟应用程序的启动配置。

a.对于 Simulation Application(模拟应用程序),选择先前配置的模拟器应用程序。

b.对于 Launch Command(启动命令)字段,将启动命令指定为以逗号分隔的参数列表。在本演练中,输入 roslaunch, mini_pupper_gazebo, gazebo.launch

c.为基于 Gazebo GUI 启用 Run with streaming session(使用流媒体会话运行)。

d.对于 Environment variables(环境变量),指定以下环境变量。

名称
GAZEBO_MASTER_URI http://ROBOMAKER_SIM_APP_IP:11345
ROS_IP ROBOMAKER_SIM_APP_IP
ROS_MASTER_URI http://ROBOMAKER_ROBOT_APP_IP:11311

e.选择 Next(下一步)进入下一页。

Review and create(查看并创建)页面中,查看配置,然后选择页面底部的 Create(创建)。您可以选择新创建的模拟作业来查看详细信息。

任务初始化需要三到五分钟。在任务运行时,您可以选择 Robot application tools(机器人应用程序工具)和 Simulation application tools(模拟应用程序工具)下的 Connect(连接),以与正在运行的模拟作业进行交互。

创建的模拟作业

图 13 创建的模拟作业

您可以通过 RViz 控制机器人。选择 2D Nav Goal(2D 导航目标)进入控制模式。单击并拖动以设置机器人的目标和方向。然后,您可以看到机器人走向选定的目标。

正在运行的模拟作业

图 14 正在运行的模拟作业

清理

为避免在您的 AWS 账户中持续收费,您可以删除在本演练中创建的 AWS 资源。

a.导航到 AWS Cloud9 控制台。选择已创建的开发环境,然后选择 Delete(删除)。

b.模拟作业将在所需持续时间(本演练中为 30 分钟)后自动停止。您可以通过导航到 RoboMaker 控制台来提前停止它。选择 simulation job(模拟作业),在 Actions(操作)菜单中,选择 Cancel(取消)。

c.导航到 Amazon ECR 控制台。选择已创建的存储库,然后选择 Delete(删除)。

结论

在这篇博客中,我们向您介绍了如何使用 AWS RoboMaker 开发、测试和运行机器人应用程序和模拟应用程序。通过 AWS RoboMaker,您可以专注于机器人软件开发。专业人士、学生和机器人爱好者可以学习如何使用 AWS RoboMaker 开发机器人应用程序并对其进行模拟。

您可以在 Amazon 购买 Mini Pupper,在 AWS 管理控制台中开始使用 AWS RoboMaker。您可以在 AWS RoboMaker 文档和博客为 AWS RoboMaker 准备 ROS 应用程序和模拟容器中了解更多信息。您也可以向 AWS 发送电子邮件以获取更多信息。

本篇作者

Bingjiao Yu

Bingjiao Yu

Bingjiao 是 AWS 中国的一位专家级容器解决方案架构师。他致力于将云计算、容器技术和现代应用程序架构带到任何地方,从最大的数据中心到最小的边缘设备。在加入 AWS 之前,他曾在 IBM 担任容器技术专家。他喜欢小猫和小狗。

Afreez Gan

Afreez Gan

Afreez 是 MangDang 的创始人兼 Mini Pupper 产品经理。他是机器人爱好者,尤其是四足机器人。他专注于机械设计、人机界面和软件架构。他帮助团队推出 Mini Pupper,这是一款很有价值且很实用的四足机器人平台。业余时间,他喜欢和家人一起旅行。您可以通过 @LeggedRobot 在推特上与他联系。

Matt Hansen

Matt Hansen

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

Xiaoyang Zhu

Xiaoyang Zhu

Xiaoyang 是 AWS 中国的解决方案架构经理。自 2018 年以来,他一直在 Amazon 工作。在加入 AWS 之前,他在 IBM 工作了九年多,担任 IBM Cloud 的开发主管和高级软件架构师。他热衷于扩大 AWS RoboMaker 在中国的采用,并在机器人领域拥有丰富的客户参与经验。他还是无服务器和容器方面的专家。在业余时间,Xiaoyang 喜欢学习创新技术、游泳和踢足球。

Zhengxiao Han

Zhengxiao Han

Zhengxiao 是 MangDang 的一名软件工程师。他本科毕业于北京化工大学,热衷于研究机器人。他从小就是一名机器人爱好者。Mini Pupper 锻练了他的技能,让他积累了丰富的知识。在大学之前,他曾参加过 FIRST LEGO League(第一乐高联盟)和 VEX 机器人竞赛。业余时间,他喜欢在乐队里弹吉他,也喜欢制造更多有趣的机器人作为娱乐。