NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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](


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

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

发布了 690 篇内容, 共 399.9 次阅读, 收获喜欢 1498 次。

关注

评论

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

信创产业多点开花,AntDB数据库积极参与行业标准研制,协同价值链伙伴共促新发展

亚信AntDB数据库

AntDB aisware antdb AntDB数据库

记录一次TiDB v5.2.3迁移到v6.1.0的过程

TiDB 社区干货传送门

迁移 实践案例

聊聊Mybatis的类型转换的别名管理

急需上岸的小谢

11月月更

商业智能BI工具如何选择?公司方面需学习具体方法

流量猫猫头

大数据

python常用内置函数用法精要(二)

乔乔

11月月更

Python太难懂?火山引擎数智平台这款产品可以了解一下

字节跳动数据平台

Python 大数据 数据分析

【11.18-11.25】写作社区优秀技术博文回顾

InfoQ写作社区官方

热门活动

云原生系列 【轻松入门容器基础操作】

叶秋学长

云原生 沙箱实验 11月月更

袋鼠云数据湖平台「DataLake」,存储全量数据,打造数字底座

袋鼠云数栈

数据中台 数据仓库 数据湖 数据中台场景实践 数据湖分析

记一次TiDB数据库Insert语句执行报错的处理过程

TiDB 社区干货传送门

BSN-DDC基础网络DDC SDK详细设计(六):交易查询、区块查询、签名事件

BSN研习社

BSN

流程编排、如此简单-通用流程编排组件JDEasyFlow介绍

京东科技开发者

数据库 架构 服务端 流程引擎 流程编排

基于 RocketMQ 的 Dubbo-go 通信新范式

Apache RocketMQ

RocketMQ RPC dubbo-go dubbogo

云享·人物丨造梦、探梦、筑梦,三位开发者在华为云上的寻梦之旅

华为云开发者联盟

云计算 后端 华为云

高性能数据访问中间件 OBProxy(六):一文讲透数据路由

OceanBase 数据库

oceanbase

多点DMALL × Apache Kyuubi:构建统一SQL Proxy探索实践

网易数帆

hadoop spark 开源 Apache Kyuubi

为什么 NGINX 的 reload 不是热加载?

API7.ai 技术团队

Apache nginx 开源 api 网关 APISIX

数据卡顿怎么办,瓴羊Quick BI强劲数据引擎来帮忙

小偏执o

自制操作系统日记(8):变量显示

操作系统

InterruptedException异常会对并发编程产生哪些影响?

冰河

并发编程 多线程 高并发 协程 异步编程

瓴羊Quick BI工具,为数据分析人员带来帮助

流量猫猫头

大数据

linux高可用软件有哪些?重点推荐哪款?

行云管家

高可用 双机热备

【从零开始学爬虫】采集猫眼电影热门资讯数据

前嗅大数据

爬虫 数据采集 爬虫软件 爬虫教程 数据采集教程

从元宇宙、地产数字化到呼叫中心,华为云携手伙伴共创新价值

华为云开发者联盟

云计算 华为云 元宇宙

我从外包辞职了,10000小时后,走进字节跳动拿了offer

钟奕礼

Java java面试 java编程 程序员‘

从零开始学Java系列之Java是什么?它到底是个啥?

千锋IT教育

Fiori Elements 框架里 Smart Table 控件的工作原理介绍

Jerry Wang

SAP Fiori SAP UI5 ui5 11月月更

【看球和学Go】错误和异常、CGO、fallthrough

王中阳Go

Go golang 面试题 Go web 11月月更

OceanBase 4.0 解读:分布式查询性能提升,我们是如何思考的?

OceanBase 数据库

数据库 oceanbase

六年三次架构迭代,OceanBase 单机分布式一体化会是大势所趋吗?

OceanBase 数据库

数据库 oceanbase

Python(文件操作)

浅辄

Python 文件 11月月更

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