【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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


公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2019-05-20 08:006647
用户头像

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

关注

评论

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

解决 App 自动化测试的常见痛点

霍格沃兹测试开发学社

Kafka入门

霍格沃兹测试开发学社

学会这些 Docker 命令,面试再也不怕啦~

霍格沃兹测试开发学社

Linux系统安装和使用Kafka教程。

百度搜索:蓝易云

云计算 kafka Linux 运维 云服务器

使用Fastmonkey进行iosMonkey测试初探

霍格沃兹测试开发学社

技术分享 | 抓包分析 TCP 协议

霍格沃兹测试开发学社

为什么要urlencode?

霍格沃兹测试开发学社

uiautomator2 自动化测试工具使用

霍格沃兹测试开发学社

Linux 中的 su 和 sudo 命令有什么区别?

百度搜索:蓝易云

云计算 Linux 运维 sudo su

技术分享 | 如何模拟真实使用场景?mock 技术来帮你

霍格沃兹测试开发学社

Docker容器安装Nginx教程。

百度搜索:蓝易云

nginx 云计算 Linux 容器 运维

你们的优雅停机真的优雅吗? | 京东云技术团队

京东科技开发者

Java Spring Boot JVM 优雅停机 企业号 8 月 PK 榜

Log4j疯狂写日志问题排查 | 京东云技术团队

京东科技开发者

Java log4j Log4j 2 企业号 8 月 PK 榜

技术分享 | 使用 cURL 发送请求

霍格沃兹测试开发学社

技术分享 | 测试平台开发-前端开发之Vue.js 框架的使用

霍格沃兹测试开发学社

用了Go匿名结构体,搬砖效率更高,产量更足了

高端章鱼哥

Go 接口 map 结构体

精准化测试原理简介

霍格沃兹测试开发学社

接口管理工具YApi怎么用?颜值高、易管理、超好用

霍格沃兹测试开发学社

干货 | 利用 pytest 玩转数据驱动测试框架

霍格沃兹测试开发学社

Docker搭建测试用例平台 TestLink

霍格沃兹测试开发学社

Chrome 浏览器+Postman做接口测试 ?

霍格沃兹测试开发学社

万字干货分享 | 阿里云CIPU技术解析

阿里云弹性计算

教你如何搭建K8S集群。

百度搜索:蓝易云

云计算 Kubernetes 运维 k8s 集群

JaCoCo助您毁灭线上僵尸代码 | 京东物流技术团队

京东科技开发者

Java JACOCO 企业号 8 月 PK 榜 僵尸代码

干货 | 初窥 Pytest 测试框架,基础薄弱也能轻松 hold 住

霍格沃兹测试开发学社

Syncovery for mac(文件备份和同步工具) 10.6.12激活版

mac

苹果mac Windows软件 Syncovery 文件同步和备份软件

微博评论高性能高可用计算架构

艾瑾行

架构训练营

技术分享 | 接口测试之HTTP、HTTPS 抓包分析

霍格沃兹测试开发学社

JDK 17 营销初体验 —— 亚毫秒停顿 ZGC 落地实践 | 京东云技术团队

京东科技开发者

ZGC jvm调优 jdk17 企业号 8 月 PK 榜

10个微服务设计模式

越长大越悲伤

微服务 微服务设计

持续交付-Pipeline入门

霍格沃兹测试开发学社

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