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

栏目: 软件资讯 · 发布时间: 5年前

内容简介:多莉是一只机器羊。它背着你的重东西跟着你。它有两个电动轮子,可以让机器人控制方向,还有一个激光扫描仪可以探测前方的物体。它还有一段代码,可以在激光扫描中找到最近的物体(大概是你),并控制车轮跟随它。不过,多莉并不是一个真正的机器人。这是一个简单的机器人仿真,介绍了一些机器人专家正在世界各地使用的强大的开源工具。尽管多莉本身非常简单,但它与许多更复杂的机器人共享大部分代码,比如自动驾驶汽车、仓库机器人、工业手臂、四轴飞行器、类人机器人,甚至国际空间站的三个机器人。它们共同的软件栈是 ROS 和

本文要点

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

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

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

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

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

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

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

不过,多莉并不是一个真正的机器人。这是一个简单的机器人仿真,介绍了一些机器人专家正在世界各地使用的强大的开源工具。尽管多莉本身非常简单,但它与许多更复杂的机器人共享大部分代码,比如自动驾驶汽车、仓库机器人、工业手臂、四轴飞行器、类人机器人,甚至国际空间站的三个机器人。它们共同的软件栈是 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 还提供了一种称为“服务”的请求 - 响应机制,以及用于触发更长时间行为的“操作”。

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

当使用这些通信模式时,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 将以相同的方式显示扫描结果,无论扫描是来自仿真还是来自硬件。

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

仿真

多莉住在 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 视图的能力,这在算法迭代时非常有用,而且在现实世界中很难实现,如果不是不可能的话。

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

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


以上所述就是小编给大家介绍的《Robotics 开源:降低机器人领域进入门槛》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Java5.0Tiger程序高手秘笈

Java5.0Tiger程序高手秘笈

BrettMclaughlin / 东南大学出版社 / 2005-10 / 28.00元

代号为 “Tiger”的下一个 Java 版本,不只是个小改动版。在语言核心中有超过 100 项以上的变动,同时有大量的对 library 与 API 所做的加强,让开发者取得许多新的功能、工具与技术。但在如此多的变化下,应该从何处开始着手?也许可以从既长又无趣的语言规范说明书开始看起;或等待最少 500 页的概念与理论巨著出版;甚至还可以直接把玩新的 JDK 看看能够有什么发现;或者借由《Jav......一起来看看 《Java5.0Tiger程序高手秘笈》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具