~欢迎关注~

微信公众号:古月居

新浪微博:古月春旭

知乎专栏:古月居

原文链接:亚马逊云机器人平台RoboMaker,借助ROS重定义机器人开发方式

 

云机器人并不是一个新概念,本身拥有强大云计算能力的大公司也一直对机器人这块“肥肉”虎视眈眈。

2018年底,微软官宣Win10支持ROS,还会不断将云计算、开发工具等引入ROS机器人开发,紧接着亚马逊就推出了基于ROS的云机器人服务平台——AWS RoboMaker。

Image

亚马逊并不是第一家推出ROS云机器人开发平台的公司,但谁让人家稳坐云服务的第一把交椅呢。RoboMaker从立项、开发、整合、上线,也就用了不到一年的时间,加持亚马逊在机器学习、语音图像处理方面的云服务优势,肯定会得到不少公司的拥护。

目前,NASA喷气推进实验室(JPL)、Stanley Black&Decker、Robot Care System公司和Apex.AI已经使用AWS RoboMaker构建了太空火星车、工业检测无人机和老人护理机器人。

说到这,AWS RoboMaker到底是个啥?又能干点啥?古月君这就带你一探究竟。

一、AWS RoboMaker是什么?

 

AWS RoboMaker是一项服务,可以帮助您轻松实现大规模开发、测试和部署智能机器人应用程序。

RoboMaker扩展了最广泛使用的开源机器人软件框架,即机器人操作系统 (ROS),可连接到云服务。这包括AWS机器学习服务、监控服务和分析服务,使机器人能够流式传输数据、导航、交流、理解和学习。

RoboMaker提供用于应用程序开发的机器人开发环境,可加速应用程序测试的机器人模拟服务以及用于远程应用程序部署、更新和管理的机器人队列管理服务。

官方主页:https://amazonaws-china.com/cn/robomaker/

简而言之,我们不再需要本地搭建开发环境和应用功能,直接使用AWS RoboMaker提供的云平台,一站解决开发、测试、仿真、部署、更新等机器人全周期的服务。

二、AWS RoboMaker工作原理

AWS RoboMaker提供四种核心功能,用于开发、测试和部署智能机器人应用程序。

1. 适用于ROS的云扩展工具

AWS RoboMaker提供适用于ROS的云扩展工具,可以将智能机器人应用程序通常需要的资源密集型计算流程转移到云端,从而释放本地计算资源。

robomaker-1440x807

这些扩展程序可以轻松集成AWS服务,如Amazon Kinesis Video Streams视频流处理、Amazon Rekognition图像和视频分析、Amazon Lex语音识别、Amazon Polly语音生成,以及Amazon CloudWatch日志记录和监控。

RoboMaker以开源ROS软件包的形式提供各种云服务扩展程序,可以在自己熟悉的软件框架中通过云API来构建机器人的功能。

2. 开发环境

AWS RoboMaker提供用于构建和编辑机器人应用程序的开发环境,包括自动下载、编译和配置的操作系统、开发软件和ROS。

AWS-launches-RoboMaker-to-help-developers-build-software-brains-for-robots

开发环境基于AWS Cloud9,已预先集成云扩展程序和示例机器人应用程序,帮助开发者迅速入门。

3. 模拟

AWS RoboMaker提供完全托管的机器人模拟服务,支持大规模和并行模拟,并根据模拟的复杂性自动扩展底层基础架构。

aws-robomaker

RoboMaker还提供预先构建的虚拟3D世界,如室内房间、零售商店和赛道,可以下载、修改并在模拟中使用这些世界。

4. 队列管理

一旦开发或修改应用程序,就构建了一个无线 (OTA) 系统。通过该系统,可以将应用程序安全地部署到机器人中,然后在机器人投入使用时更新应用程序。

timg

AWS RoboMaker 提供队列管理服务,其中内置机器人注册表、安全性和容错功能,可以在机器人的整个生命周期内部署、执行 OTA 更新以及管理机器人技术应用程序。

三、AWS RoboMaker上手

看了这么多介绍,心动不如行动,赶紧上手试试这把牛刀像不像官方说的那么犀利吧,大家也可以参考官方教程:

https://docs.aws.amazon.com/zh_cn/robomaker/latest/dg/what-is-robomaker.html

1. 注册AWS帐号

首先,你需要有一个AWS的账户,按照官方的提示注册就好啦!

Image

2. Hello World

注册之后,点击RoboMaker主页上的“开始使用”进入控制台。

Image

成功进入控制台后,就可以看到下边这样的界面啦,还是很清爽的。

Image

RoboMaker提供了不少例程,我们就先和这个云平台say下Hello。

在控制台左侧的菜单中,点击“示例应用程序”,选择第一项“Hello World”示例应用,页面下侧点击创建,然后就可以静静的等待RoboMaker自动创建资源了,这个创建的时间以分钟为单位,大家莫急。

Image

示例应用创建成功后,会跳到如下界面,还需要等待“状态”显示为“正在运行”,才能开始操作。很快我们可以看到模拟工具都准备就绪了,有大家熟悉的Gazebo、rviz、rqt、Terminal,不禁就想都点点看。

Image

点击Gazebo后,我们可以看到这个示例应用创建了一个turtlebot3,正在原地旋转。这个Gazebo和我们在PC上运行的完全一样,不信我们可以随便插入一个模型试试。

Image

看来ROS仿真系统是跑起来了,不如再来看看当前系统中的话题列表吧,点击仿真工具中的“Terminal”,输入的命令你应该懂的,该有的话题一个都不少。

Image

还可以打开“rviz”,显示模型和激光雷达数据看看,操作完全无缝过渡。

Image

到这里为止,我们看到的好像就是一个运行在AWS服务器上的ROS环境,操作和ROS完全是一样的。

这个时候问题又来了,我们在PC的ROS里可以编程写节点,这个RoboMaker如何撸代码呢?莫慌,控制台菜单中找到第一项“开发环境”,然后右侧点击“创建环境”。

Image

接下来配置开发环境的具体信息。

Image

点击“打开环境”,马上就可以愉快的撸代码了!

Image

没错,打开了,这是一个运行于云端的开发环境,默认是一个空的工程,并没有实质功能。点击右上角的“Resources”,选择“Hello World”示例程序,就会自动下载一个简单的例程代码了。

Image

这个例程代码是Pyhon写的,大家应该很快就可以发现,程序里创建了一个ROS节点,并且会周期发布机器人的速度控制指令,我们简单修改下代码,看看这个云端IDE如何进行编译和执行。这里将角速度由“0.1”改成了“-0.1”。

Image

(讲真,编译和部署的过程还是有点复杂的,不来个两三次,真搞不清楚是在干嘛)

先是编译代码,点击菜单栏上的Run->Build,然后分别选择HelloWorld Robot、和HelloWorld Simulation进行编译,两次编译过程会先下载一堆依赖包,静静等待...

Image

编译完成后还不能直接运行,需要做一个“Bundle”,将程序和机器人资源绑定,类似的操作,点击Run->Bundle,然后分别绑定HelloWorld Robot、和HelloWorld Simulation,依然是静静的等待...

Image

以上一波配置至少10分钟过去了,终于可以进入运行阶段啦,点击“Simulation”中的“Connect”。

Image

选择之前启动的仿真环境,点击“OK”。

Image

这才刚把仿真环境连接上,还得启动我们刚刚编译、绑定好的程序嘞,点击“Simulation”中的“Restart With New Bundles”。

Image

然后分别填入以下绑定后的输出包。这里有个坑,测试过程中生成的包名都是output.tar,但目前的RoboMaker识别的包名是output.tar.gz,默认是会报错的,古月君的解决方法是在IDE左侧将原本的output.tar重命名为output.tar.gz,就好啦。

Image

点击“OK”后,可以在日志窗口中看到加载成功的信息。

Image

终于到了点击运行按钮的那一刻,点击Run->Launch Simulation->HelloWorld,程序就在仿真环境中运行了,日志窗口中可以看到话题消息的输出。

Image

回到控制台的仿真环境中,再次打开Gazebo,turtlebot3的运动方向已经变了,用Terminal也可以看到我们具体发布的话题数据,和IDE修改的内容是一致的。

Image

至此,我们花了30分钟,HelloWorld例程终于运行起来了。

RoboMaker中还有不少示例仿真可以玩,我们再来玩两个。

3. 人员识别与导航

依然是在示例应用程序中,选择“导航和人员识别”,静等创建资源。

Image

创建成功后,在模拟任务中打开Gazebo,可以看到一个完整的室内环境,屋里挂满了不同人员的照片,turtlebot3在环境中不断运动并识别人脸。

Image

打开Terminal工具,输入如下命令,就可以看到识别人脸的结果啦。

$ rostopic echo /rekognized_people

Image

用rqt工具可以从机器人的视角看的更清楚。

Image

4.使用强化学习自动驾驶

另外一个示例是使用强化学习自动驾驶,操作流程还是一样的。

Image

创建后可以在gazebo中看到一个自动驾驶小车的仿真训练环境,小车沿着赛道不断运动,一旦跑出赛道就重新开始,经过大量训练后,小车越跑越远。

Image

RoboMaker还提供了训练效果的监控平台,在以下网站可以看到, 该图表绘制了机器人每次训练的总奖励,随时间推移,奖励的增加表明赛车不断改进在赛道上的表现。

https://console.aws.amazon.com/cloudwatch/

Image

5. 清除测试数据

O啦,我们的上手测试就到这里,退出之前,大家需要清除以上测试环境数据,不然小心触发AWS付款条件,是要扣钱的。清除步骤按照以下说明进行:

https://docs.aws.amazon.com/zh_cn/robomaker/latest/dg/gs-cleanup.html

Image

四、总而言之

小试牛刀后,古月君简单谈谈感受吧:

1. 慢!各种配置需要等待的时间都挺长的,没感受到亚马逊云服务的流畅,难道是因为免费试用版?

2. ROS操作体验还不错,免除了繁杂的环境配置,操作方法和PC端完全一致。

3. 机器人常用功能都有,加持亚马逊自身的云服务,还是比较强大的。

4. 试用版可以尝尝鲜,真的要用的话肯定要付费,付费标准可以参考:

https://amazonaws-china.com/cn/robomaker/pricing/

5. 操作流程对新手不太友好,好在有详细的文档说明,但中文版好像是机器翻译的吧...

6. 还有一些小bug,毕竟刚推出,路还长。

 

更多内容欢迎关注:

微信公众号:古月居 (guyue_home)

新浪微博:古月春旭

知乎专栏:古月居