写点什么

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:006864
用户头像

发布了 723 篇内容, 共 460.0 次阅读, 收获喜欢 1537 次。

关注

评论

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

什么是网络营销?做网络营销怎么用代理IP?

巨量HTTP

IP

腾讯云 CODING 入选“数智影响力”数字化转型创新典型案例

CODING DevOps

INFINI Easysearch 与兆芯完成产品兼容互认证

极限实验室

easysearch 兆芯 国产适配

Mac电脑十六进制编辑器 010 Editor 激活永久版

胖墩儿不胖y

代码编辑器 Mac软件

用户级协议和框架:DPDK、SPDK和VPP的业务场景和发展趋势

统信软件

关于Taro你需要了解这些

Onegun

小程序 taro 小程序架构

Footprint Analytics 为 Layer2 公链提供数据支持,助力新兴项目发展

Footprint Analytics

区块链 公链 layer2

XMind for mac (XMind思维导图)v23.08中文激活版

mac

XMind 思维导图软件 苹果mac Windows软件

十种数据库缓存相关的技术和机制

树上有只程序猿

数据库

Vue 和 React 前端框架的比较

高端章鱼哥

Vue React

大模型的东风中,看雄安的数字飞翔

脑极体

数字化

Footprint Analytics 团队参与 Token 2049,为多场活动以及演讲提供数据支持

Footprint Analytics

区块链 公链

为什么越来越多的学校使用云桌面?

青椒云云电脑

桌面云 云桌面

软件开发文档大全(项目管理、开发、实施、交付、评审、投标支撑)

金陵老街

Vue java;

HiAI Foundation助力端侧音视频AI能力,高性能低功耗释放云侧成本

HarmonyOS SDK

huawei HarmonyOS

lrc下载安装 图像处理软件Lightroom Classic 2023 mac中文激活版

mac

图像处理软件 苹果mac Windows软件 lrc2023 Lightroom Classic

软件测试/测试开发丨学会与 AI 对话,高效提升学习效率

测试人

人工智能 AI 软件测试 ChatGPT

中国智能卡车“遥遥领先”:卡车NOA落地5000万公里0事故,全球首个

Openlab_cosmoplat

人工智能 自动驾驶

在对接自有账户体系时,FinClip 是怎么做的?

Onegun

用户 账户管理 账户体系

英特尔产品组合针对多规模AI模型性价比优势明显

E科讯

不知道该选公有云还是私有云?这些客户请选私有云

青椒云云电脑

桌面云 云桌面

软件测试/测试开发丨使用ChatGPT自动进行需求分析

测试人

人工智能 程序员 软件测试 需求分析 ChatGPT

云桌面怎么选,好产品的标准是什么

青椒云云电脑

桌面云 云桌面

基于Vue3前后端分离的低代码开发框架

互联网工科生

Vue 软件开发 低代码 JNPF

对齐管理后台中账户体系的四种方法

FN0

单点登录 账户体系

企业高管IT战略指南——为何要落地平台工程

York

容器 DevOps 云原生 敏捷 平台工程

使用融云 CallPlus SDK,一小时实现一款 1V1 视频应用

融云 RongCloud

android 音视频 通信 API CallPlus SDK

产教融合 | 力软联合重庆科技学院开展低代码应用开发培训

力软低代码开发平台

多场景PAI-Diffusion中文模型家族大升级,12个模型、2个工具全部开源

阿里云大数据AI技术

人工智能 阿里云

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