产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

Robotics 开源:降低机器人领域进入门槛

作者:Louise Poubel

  • 2019-05-20
  • 本文字数:4043 字

    阅读完需:约 13 分钟

Robotics开源:降低机器人领域进入门槛

本文要点

  • 多莉是一只虚拟的机器羊,是 Gazebo 和 ROS 2 的实用介绍。

  • 机器人操作系统的最新版本 ROS 2 提供了熟悉的工具和功能,同时扩展到了新的用例。

  • Gazebo 是一个功能强大的机器人仿真器,用于工业和学术界的物理计算、生成传感器数据并提供了方便的接口。

  • 开源软件正在降低人们进入机器人领域的门槛,加速机器人技术的进步。

  • 世界各地的机器人专家都在把 Gazebo 和 ROS 用在机器人、无人机、仓库机器人和自动驾驶汽车等领域的应用程序中。


多莉是一只机器羊。它背着你的重东西跟着你。它有两个电动轮子,可以让机器人控制方向,还有一个激光扫描仪可以探测前方的物体。它还有一段代码,可以在激光扫描中找到最近的物体(大概是你),并控制车轮跟随它。



不过,多莉并不是一个真正的机器人。这是一个简单的机器人仿真,介绍了一些机器人专家正在世界各地使用的强大的开源工具。尽管多莉本身非常简单,但它与许多更复杂的机器人共享大部分代码,比如自动驾驶汽车、仓库机器人、工业手臂、四轴飞行器、类人机器人,甚至国际空间站的三个机器人。它们共同的软件栈是 ROS 和机器人操作系统。然而,准确地说,多莉的运行机制并不是今天大多数人听到“ROS”这个词时所想的那样。多莉实际上正在运行最新一代的 ROS,称为 ROS 2!


与之前的 ROS 1 一样,ROS 2 是一个用于机器人应用程序的开源软件开发工具包。ROS 2 的开发由Open Robotics公司牵头,该公司还维护着多莉生活的机器人仿真器Gazebo,以及其他开源机器人软件和硬件。这些项目是在开源许可下发布的,比如BSDApache 2.0,这使得它们对学术界和业界都很有吸引力。

机器人软件

“机器人”这个词的定义往往会因你问谁而有所不同,但运行 ROS 并在 Gazebo 中被模拟的机器人的关键特征是“行动(actuation)”。所以,不是聊天机器人或垃圾邮件机器人;我们所谈论的机器人在身体上能够与环境互动,移动自己,甚至是其他物体。它们也不是盲目移动的发条玩具;他们配备了传感器,可以观察周围世界的变化。把所有这些联系在一起,它们就能从逻辑上理解这些观察结果,从而做出明智的决定,决定下一步要做什么来完成一项特定的任务。这就是所谓的“感觉-思考-行动”循环,多莉的软件就是用来反映这三个部分的。


ROS 2 的开发目标是为业界和学术界提供一个标准的软件平台,支持他们从事研究和原型开发以及部署和生产。ROS 2 是在 ROS 1 取得成功的基础上开发的,ROS 1 目前已经在世界各地的各种机器人应用程序中得到了应用。这次演变的一个重要部分是维护核心的 ROS 概念和工具,它们是 ROS 迄今为止在机器人社区取得成功的关键。其中一个众所周知的概念是“节点”,它是一个计算单元,负责非常具体的任务。多莉的每一个“感觉-思考-行动”周期都被映射到一个节点上。“激光”节点感知世界,“跟随”节点处理数据以找到前方最近的点,并生成一个带有移动方向的命令,而“差异驱动(diff-drive)”节点则按照命令移动车轮(之所以这么叫,是因为多莉是一个差分轮式机器人)。当多莉移动时,它的激光读数发生变化,循环就又开始了。为了简单起见,多莉的软件只有三个节点,但是大型机器人应用程序可能有数百个节点一起工作,每个节点负责一个独立的定义良好的任务。


ROS 中最基本的通信方法是通过名为“主题”的通道使用多对多发布者-订阅者机制。激光节点在“scans”主题发布扫描结果,供后续节点订阅;接下来,跟随节点发布关于“cmds”主题的移动命令,差异驱动节点订阅该主题。多莉只使用主题,但除了这种单向通信类型之外,ROS 还提供了一种称为“服务”的请求-响应机制,以及用于触发更长时间行为的“操作”。



当使用这些通信模式时,ROS 开发人员倾向于尽可能使用标准化的消息,这使得在不同的项目之间共享节点非常方便。在这种分布式体系结构中,节点并不关心它们正在与哪个节点通信,它们只关心正在使用哪个主题、服务或操作。这意味着,如果有一天有人决定取下多莉的轮子,换成螺旋桨,把它变成一只会飞的绵羊,他们也不需要触及激光节点或跟随节点。他们只需要将差异驱动节点替换为其他节点,以与机器人新身体相匹配的方式转换 cmds 主题上的移动命令。


容易重用代码是 ROS 最大的优势之一,因为它允许开发人员尽可能地利用彼此的工作。通过在 ROS 生态系统中现有软件的基础上构建,开发人员可以专注于特定应用程序的独特方面。事实上,实现多莉只需要编写跟随节点,它的代码少于 100 行。激光差异驱动节点由gazebo_ros_pkgs提供,这是一个标准的 ROS 包,用于在特定于仿真的逻辑和非特定逻辑之间建立联系。当多莉准备成为一个物理机器人时,这些节点将被特定于硬件的驱动程序和控制器所替代,但是跟随节点可以保持不变,因为它发布和订阅标准消息。但是,你可以想一下,跟随节点并不是最聪明的机器人逻辑。事实上,多莉分不清树和人。在实际的应用程序中,开发人员将利用社区提供的其他功能,例如导航栈,这将允许多莉在世界上自主移动。


上面提到的所有通信模式都已从 ROS 1 迁移到 ROS 2,并在此过程中得到了改进。ROS 1 使用自定义通信层,而 ROS 2 构建在DDS之上。DDS 是一种工业标准,在航空和核能等关键任务应用中得到了验证。你可以在InfoQ上阅读关于 DDS 集成的更多细节。


除了消息传递系统之外,ROS 2 还提供了强大的开发工具。例如,RViz是 ROS 主题的可视化工具,在应用程序开发和调试期间非常有用。它有一个 3D 场景,可以把来自应用程序任何部分的数据都显示在一起,比如点云和坐标系。RViz 还提供了控制界面,比如可以拖动 3D 标记来移动真实的机器人。RQt是另一个方便的图形工具,它允许开发人员快速地将小部件组合在一起,以便与机器人应用程序的任何方面进行交互,无论是不是仿真机器人。下图显示了多莉在 RViz 中的激光扫描,旁边是 Gazebo 的视图,显示了仿真中的可视化效果。RViz 将以相同的方式显示扫描结果,无论扫描是来自仿真还是来自硬件。


仿真

多莉住在 Gazebo 里,这是一个机器人仿真器,可以进行物理计算,生成仿真传感器数据,并提供方便的接口。这些接口的范围从图形工具到 C++ API,允许用户和开发人员更快地实现他们的目标。Gazebo 的目的是成为物理机器人最好且唯一的软件替代品。Gazebo 的一些应用包括新机器人原型的创建、新算法和行为的开发、持续集成测试和训练。


在仿真过程中,物理引擎处理多莉与环境的交互方式。这包括重力将多莉拉向地面、车轮与人行道之间的接触以及施加在车轮上的扭矩等行为。Gazebo 没有实现自己的物理引擎;相反,它提供了一个抽象层,允许集成多个引擎。这样,开发人员只需描述并编写一次机器人程序,然后在运行时选择最合适的物理引擎。默认情况下,Gazebo 使用Open Dynamics Engine(ODE),但它也支持BulletDARTSimbody


多莉配备了一个传感器,即激光扫描仪,但是 Gazebo 支持十多种传感器,如彩色和深度照相机、IMU 和 GPS。开发人员还可以通过 C++ API 创建新的传感器。照相机和激光扫描仪等传感器使用Ogre3D渲染引擎生成世界图像,而 IMUs 和 sonars 等传感器则利用物理引擎。仿真传感器的一个缺点是,与物理传感器相比,它们往往过于完美。因此,传感器 API 的一个重要方面是能够向生成的数据添加各种类型的噪声,并干扰它们的更新速率。


Gazebo 有一个丰富的图形界面,帮助用户构建、检查及与他们的仿真交互。例如,多莉的城市环境是由eRuby脚本、UI 3D 视图和提供场景中每个模型详细信息的小部件组合而成的。在仿真运行时,3D 视图也是一种可视化激光扫描、检查关节位置、重心、甚至转动惯量的便捷方式。这种仿真具备提供场景地面上 X-Ray 视图的能力,这在算法迭代时非常有用,而且在现实世界中很难实现,如果不是不可能的话。



Gazebo 还让开发者可以像在现实世界中一样与机器人互动。理论上,你可以戴上 VR 眼镜,用控制器来踢多莉,就像一些机器人专家喜欢对他们的真实机器人所做的那样。请注意,这里绝对不鼓励滥用机器人。相反,你可以使用更精细的方法,比如用一个 3D 箭头推下机器人,检查其恢复行为。你也可以移动人类,添加另一个机器人,改变城市的布局……只要对你的特定项目有帮助。


Gazebo 中的世界使用仿真描述格式(Simulation Description Format)进行描述。SDF 是一种 XML 格式,它允许指定仿真的各个方面,从多莉摇摆尾巴上的弹簧到太阳光的颜色。用户可以将在线数据库中的 3D 模型与他们自己的自定义模型结合起来,为他们的机器人创建各种环境。事实上,多莉周围的整个城市环境都是由Ignition Fuel数据库中找到的免费模型组成的。多莉本身是一个定制模型,它的所有细节都可以通过 UI 或直接在其 SDF 文件中进行调整和改进。


多莉的例子是用 Gazebo 所能做的最简单的仿真之一,但在网上也有各种复杂的例子。基于仿真的竞赛,如虚拟机器人挑战赛太空机器人挑战赛和即将到来的地下机器人挑战赛,就是很好的例子。多家机器人制造商也在免费分发 Gazebo 机器人仿真,比如Fetch Robotics的仓库机器人和Parrot的无人机。


为了处理新的用例,Open Robotics 的团队正在积极地开发 Gazebo 的下一代产品,这一代产品被称为Ignition。这种重构将 Gazebo 分解为更小、更可重用的库,为物理和渲染引擎提供了抽象层,支持跨云中机器运行大型仿真,并使用现代 GUI (QtQuick)和传输(ZeroMQ)库。

克隆多莉!

Gazebo 和 ROS 2 现在离你只有几个按键之遥。你可以克隆多莉并按照说明创建一个简单的示例并运行它。在ROS IndexGazebo Tutorials上有各种教程,涵盖了各种特性和用例。你可以在ROS DiscourseGazebo Community上的社区中找到更多深入的讨论,在ROS AnswersGazebo Answers上找到技术问题的答案。最后,但同样重要的是,看看 ROSCon 大会的视频吧。ROSCon 是 ROS 开发者年度会议,ROSCon 2019将在澳门举行,务必提前预定。

关于作者

Louise PoubelOpen Robotics的一名软件工程师,致力于开发机器人免费和开源工具,比如机器人仿真器 Gazebo 和机器人操作系统(ROS)。


查看英文原文:[Open Source Robotics: Getting Started With Gazebo and ROS 2](


2019-05-20 08:006911
用户头像

发布了 734 篇内容, 共 470.4 次阅读, 收获喜欢 1545 次。

关注

评论

发布
暂无评论
发现更多内容

mac文件管理 File Cabinet Pro免激活最新版

mac大玩家j

文件管理 Mac软件 文件管理工具 管理文件

WiFi7-IPQ9574 and QCN9274/QCN6274 multi-AP joint transmission amazing performance improvement

wifi6-yiyi

WiFi7 multi

一文解读智能远程监考方案的技术架构与应用实景

阿里云视频云

云计算 视频云

阿里云PAI-灵骏大模型训练工具Pai-Megatron-Patch正式开源!

小偏执o

提高效率的神器!企业级SQL审核与开发工具

NineData

数据库 团队协作 企业 SQL开发 NineData

数据研发“新人”如何快速落地?

阿里技术

数据研发

软件测试|Pycharm运行与调试

霍格沃兹测试开发学社

软件测试|Pycharm搜索替换功能

霍格沃兹测试开发学社

慢SQL的致胜法宝 | 京东物流技术团队

京东科技开发者

京东云 企业号9月PK榜

618京东到家APP-门详页反爬实战 | 京东云技术团队

京东科技开发者

App 京东云 618

简单好用的图像编辑软件 Pixelmator Pro 直装激活中文版

胖墩儿不胖y

图像处理 图像编辑 Mac软件 编辑图像

万字全面评测(下篇):文心一言 vs ChatGPT

豆哥

ChatGPT 文心一言 对标评测

【案例教学】华为云API图引擎服务 GES的便捷性—AI帮助快速处理图片小助手

华为云PaaS服务小智

人工智能 云计算 华为云

高匿名代理与普通匿名代理以及透明代理有什么特点?高匿名代理的优势在什么地方?

巨量HTTP

代理IP

数字先锋|天翼云赋能巨龙电机打造“智慧工厂”,让企业发展“新”中有“数”!

天翼云开发者社区

云计算 私有云

可视化的报表系统

风清扬

beaTunes5 for Mac(多功能音乐播放器) 5.2.33永久激活版

mac

windows 苹果mac beaTunes5 音乐管理和分析软件

软件测试|Pycharm版本控制与分支管理

霍格沃兹测试开发学社

天翼云存储资源盘活系统HBlock,全面释放企业数据价值

天翼云开发者社区

数据 云存储

Robotics开源:降低机器人领域进入门槛_AI&大模型_InfoQ精选文章