ROS/ROS2介绍

原创 汽车电子与软件 2022-04-19 19:26

作者:极氪软件及电子中心王阳明



前言

ROS是机器人操作系统(Robot Operating System)的英文缩写。ROS是用于编写机器人软件程序的一种具有高度灵活性的软件架构。ROS的原型源自斯坦福大学的STanford Artificial Intelligence Robot (STAIR) 和 Personal Robotics (PR)项目。

机器人的工业界和学术界在软件工具的使用上是有明显的分歧的。由于机器人的工业界并不像消费类电子这样出货量巨大,所以绝对高的技术壁垒和封闭的生态是十分常见的。为了提高自己的技术壁垒,这些公司往往会自己设计一整套封闭的软硬件,以达到让其他人(竞争对手或开发者)无法用自己的工具替换之的目的。而学术界,学生和老师们为了减少重复造轮子的工作,往往会拥抱开源社区,选择现有的工具进行开发和研究,最广为人知的便是ROS(Robot Operating System)。

ROS是什么

ROS/ROS 2并不是一个软件,而是一系列软件的集合。一般我们称之为软件解决方案堆栈。包含如硬件驱动程序、网络模块、通信架构和机器人算法实现等等。ROS将所有这些功能包放在一个保护伞下,因此开发人员无需重新造轮子。

ROS并不是一个操作系统,而一般称之为元操作系统,即基于操作系统以上的类操作系统。

ROS并不是一个中间件,因为它实现了包括感知、导航、控制、运动规划和仿真等多种功能。

 


ROS

ROS1.0版本发布于2010年,基于PR2机器人开发了一系列机器人相关的基础软件包。随后ROS版本迭代频繁,ROS的版本一般会随着Ubuntu系统长期支持(LTS)版本而更新,其中ROS目前最新的版本都已经适配到Ubuntu 20.04 LTS。ROS仅在Ubuntu上进行CI测试,但是社区成员积极支持其他Linux版本、Mac OS X、Android、Windows,使得ROS可以兼容,但仅提供有限制性的功能支持。 

ROS的历史版本

ROS版本

发布时间

Ubuntu版本

ROS Noetic Ninjemys

May 23rd, 2020

Ubuntu 20.04(Focal)

ROS Melodic Morenia

May 23rd, 2018

Ubuntu 18.04(Bionic)

ROS Lunar Loggerhead

May 23rd, 2017

Ubuntu 17.04(Zesty)

ROS Kinetic Kame

May 23rd, 2016

Ubuntu 16.04(Xenial)

ROS Jade Turtle

May 23rd, 2015

Ubuntu 15.04 (Vivid)

ROS Indigo Igloo

July 22nd, 2014

Ubuntu 14.04 (Trusty)

ROS Hydro Medusa

September 4th, 2013

Ubuntu 12.04 (Precise)

ROS Groovy Galapagos

December 31, 2012

Ubuntu 12.04(Precise)

ROS Fuerte Turtle

April 23, 2012

Ubuntu 10.04(Lucid)

ROS Electric Emys

August 30, 2011

Ubuntu 10.04(Lucid)

ROS Diamondback

March 2, 2011

Ubuntu 10.04(Lucid)

ROS C Turtle

August 2, 2010

Ubuntu 9.04(Lucid)

ROS Box Turtle

March 2, 2010

Ubuntu 8.04(Hardy)


ROS的优缺点对比

ROS为我们开发机器人带来了许多方便,然而它也确实存在一些问题: 

优点

缺点

松散耦合的机制提供框架

通信实时性能有限

丰富的机器人功能库

系统稳定性尚不满足工业级要求

庞大的用户群体

安全性上没有防护措施

免费开源

仅支持Linux(Ubuntu)

便利的数据记录、分析、仿真工具

核心机制的性能没有优化占用资源


ROS的成熟案例

ROS已经走过十个年头,伴随着机器人技术的大发展,ROS也得到了极大的推广和应用。尽管ROS还存在不少局限性,但无法掩盖ROS的锋芒,社区内的功能包还是呈指数级逐年上涨,为机器人开发带来了巨大的便利。不少开发者和研究机构还针对ROS的局限性进行了改良,但这些局部功能的改善往往很难带来整体性能的提升,在行业内也积累了大量成熟的应用:
机械臂控制器中领军企业KEBA,他们的控制器已经支持ROS :
美国NASA基于ROS开发的Robonaut 2:

 百度apollo无人车的底层是基于ROS开发的:
总体来说,ROS更适合科研和开源用户使用,如果在工业场景应用(例如无人驾驶)还需要做优化和定制,目前ROS已经停止更新,机器人开发者对新一代ROS的呼声越来越大,ROS2.0的消息也不绝于耳。 

ROS 2

ROS无法真正进入产业界,也自然无法产品化。为了解决这一问题,社区提出了ROS 2。使得ROS具备产品化的特性,包括实时性、适应于全平台、适用于性能低的硬件(MCU+RTOS)、分布式、数据加密和现代编程语言的支持。

ROS 2的历史版本

ROS 版本

发布时间

Ubuntu版本

Humble Hawksbill

May 23rd, 2022

TBD

Galactic Geochelone

May 23rd, 2021

Ubuntu 20.04(Focal)

Foxy Fitzroy

June 5th, 2020

Ubuntu 20.04(Focal)

Eloquent Elusor

November 22nd, 2019

Ubuntu 18.04  (Bionic)

Dashing Diademata

May 31st, 2019

Ubuntu 18.04  (Bionic)

Crystal Clemmys

December 14th, 2018

Ubuntu 16.04  (Xenial)

Bouncy Bolson

July 2nd, 2018

Ubuntu 16.04  (Xenial)

Ardent Apalone

December 8th, 2017

Ubuntu 16.04 ( Xenial)


实时化与分布式

为了解决消息间通讯的去中心化和实时性问题,ROS 2引入了Data Distribution ServiceDDS),一种已经广泛应用于国防、民航、工业控制等领域,成为分布式实时系统中数据发布/订阅的标准解决方案。如下图所示,左边是ROS 1,右边是ROS 2。 

ROS 1中,用户的每个节点,无论是同一设备还是不同设备,必须已知Master节点的IP,并且全部依赖于Master节点进行通讯,一旦Master节点发生故障或该设备发生故障,则整个环境的所有节点功能尽失。无法恢复。也正因为这一点,ROS 1无法应用于正式的产品。

ROS 2引入了基于DDS的去中心化的数据通讯方式,不同节点可以通过未知IP的方式进行通讯,也进而有助于解决多机器人系统的问题。并且ROS 2也引入了 Quality of Service的机制,通过设定不同的服务质量来保障某些较差网络环境下也可以具备良好的通讯效果。 

实时性

而对于实时性,由于DDS在诸多工业和产业有诸多应用,具有良好的生态,其性能毋庸置疑。如下图的测试结果:
测试设备为两台PowerEdge R330 e34s
OS: Ubuntu 18.04.2 LTS bionic
Architecture: x86_64
CPU(s): 8
Thread(s) per core: 2
Model name: Intel(R) Xeon(R) CPU E3-1230 v6 @ 3.50GHz 

Fast-RTPS为例,可以看到从延时上,在该双设备间通讯中可以稳定在100μs以下,而吞吐量的带宽也达到了750Mbit/s以上。详细的跑分数据可以参考Fast-RTPS vs Cyclone DDS vs OpenSplice DDS进行了解,且同设备内的通讯效率会远超该结果。

数据加密

ROS 2在DDS的基础之上引入了SROS的概念,设计文档参考ROS 2 DDS-Security integration,即所有的ROS 2消息均可通过SROS进行加解密、鉴权、授权控制、Log和数据标记的权限控制等。基于ROS 2的原本设计逻辑,我们甚至可以将数据的密钥生成和存储放到ARM TEE OS中,以实现较高安全的数据保证

现代编程语言的支持

由于ROS 1的最初发行版在2007年,长期以来的支持和众多开发库的支持导致很多语言的新特性并不能良好地应用。比如对于Python,直至2020年发布的Noetic版本中才首次支持了Python 3,而Python 2在2020年1月便已经停止进行支持了。再如C++,ROS 1是基于C++ 03实现的,对于C++ 11的支持并不好,更不用谈C++ 14和C++ 17的支持。

ROS 2则完全支持Python 3,并基于现代C++编写。并基于其松耦合的方式,还支持Java和Rust等编程语言。如下图User Application下面那一行所示,只要开发者愿意,可以支持任何编程语言

灵活的机制
ROS 2提供了一种基于生命周期的管理模式, 即每个节点的运行状态是完全可控的。参考设计文档Managed nodes的阐述。所有Managed节点都可以在运行时进行实时配置、管理、关闭和启动,并在出错时可以由管理节点进行唤醒和重置。这种方式保证了整个系统的稳定性和鲁棒性,也提高了系统出错后恢复到正常的能力。
ROS 2在运行时可以更换DDS中间件,也可以在不同DDS中间件的实现间进行通讯。

5G的支持

ROS 2在Ericsson的推动下,正在商讨5G的ROS 2通讯方案的制定和实现。 

全新的生态

继承ROS 1广博的开源生态资源,ROS 2的发布激起了大家对于ROS产品化的热情,许多公司都向ROS 2贡献方案和代码,包括但不限于Intel、NVIDIA、Ericsson等。
除了贡献新的代码,ROS 1的优秀工具也都被完全继承到ROS 2里,如Moveit、Rviz和rosbag等。并且有些模块,如navigation(导航),在开发者的改进中升级为navigation2,改善了诸多问题,提高了使用的便利性。

多种通讯方式

ROS 2 Topic通讯节点和节点之间进行通讯的桥梁,节点可以同时发布和接收话题,节点和话题之间是多对多关系。
Service(服务)是ROS图上节点通信的另一种方法,服务基于呼叫响应模型,而不是主题的发布者-订阅者模型。服务端和客户端之间,是一对一或一对多关系。
Action是ROS 2中用于长时间运行任务的通信类型之一,它们由三部分组成:目标,结果和反馈。
 

ROS 2的成熟案例

美军投资的Ghost Robotics,其四足机器人使用了Eloquent版本的ROS 2进行开发,DDS方案选用的是商用的Cyclone DDS。
Mission Robotics的水下机器人(ROV),使用了Foxy版本的ROS 2进行开发。

总结

汽车产业真正的革命已经开始,软件定义汽车的时代已经到来。汽车正加速从从机械设备向高度数字化、信息化的智能终端转变,涉及领域庞大并且复杂。一辆自动驾驶的汽车,从某种意义上来说,也是一个自动驾驶的机器人,理所当然的可以是使用ROS 2进行开发,ROS 2提供了大量基础组件,大大便利了包括导航算法、自动驾驶算法和一些AI算法的部署。当然ROS 2仍然有很多缺陷,ROS 2的调度模型无法抢占,有时候优先级高的调度实例可能被低优先级的调度阻塞,还没有一家汽车行业公司利用ROS 2将产品落地。
面对这些挑战,极氪的软件及电子中心大胆尝试,基于ROS 2的通讯框架和平台架构,进行基于SOA架构的汽车操作系统的开发,并且取得不错的测试效果。极氪的软件及电子中心的在一直在前沿技术方面做深入探索,致力于打造ZEEKR OS整车操作系统,也欢迎各位有志之士加入我们,共同探索下一代汽车操作系统。

最后发一个招聘广告:
汽车电子与软件 主要介绍汽车电子软件设计相关内容,每天分享一篇技术文章!
评论
  • 在强调可移植性(portable)的年代,人称「二合一笔电」的平板笔电便成为许多消费者趋之若鹜的3C产品。说到平板笔电,不论是其双向连接设计,面板与键盘底座可分离的独特功能,再加上兼具笔电模式、平板模式、翻转模式及帐篷模式等多种使用方式,让使用者在不同的使用情境下都能随意调整,轻巧灵活的便利性也为多数消费者提供了绝佳的使用体验。然而也正是这样的独特设计,潜藏着传统笔电供货商在产品设计上容易忽视的潜在风险。平板笔电Surface Pro 7+ 的各种使用模式。图片出处:Microsoft Comm
    百佳泰测试实验室 2024-12-19 17:40 128浏览
  • //```c #include "..\..\comm\AI8051U.h"  // 包含头文件,定义了硬件寄存器和常量 #include "stdio.h"              // 标准输入输出库 #include "intrins.h"         &n
    丙丁先生 2024-12-20 10:18 31浏览
  • ​本文介绍PC电脑端运行VMware环境下,同时烧录固件检测不到设备的解决方法。触觉智能Purple Pi OH鸿蒙开发板演示,搭载了瑞芯微RK3566芯片,类树莓派设计,Laval官方社区主荐,已适配全新OpenHarmony5.0 Release系统!PC端烧录固件时提示没有发现设备按照各型号烧录手册中进入loader模式的操作方法,让开发板连接到PC端。正常来说开发板烧录时会显示“发现一个LOADER设备”,异常情况下,会提示“没有发现设备”,如下图所示: 解决步骤当在烧录系统固
    Industio_触觉智能 2024-12-18 18:07 74浏览
  • 汽车驾驶员监控系统又称DMS,是一种集中在车辆中的技术,用于实时跟踪和评估驾驶员状态及驾驶行为。随着汽车产业智能化转型,整合AI技术的DMS逐渐成为主流,AI模型通过大量数据进行持续训练,使得驾驶监控更加高效和精准。 驾驶员监测系统主要通过传感器、摄像头收集驾驶员的面部图像,定位头部姿势、人脸特征及行为特征,并通过各种异常驾驶行为检测模型运算来识别驾驶员的当前状态。如果出现任何异常驾驶行为(如疲劳,分心,抽烟,接打电话,无安全带等),将发出声音及视觉警报。此外,驾驶员的行为数据会被记录
    启扬ARM嵌入式 2024-12-20 09:14 20浏览
  • 百佳泰特为您整理2024年12月各大Logo的最新规格信息。——————————USB▶ 百佳泰获授权进行 USB Active Cable 认证。▶ 所有符合 USB PD 3.2 标准的产品都有资格获得USB-IF 认证——————————Bluetooth®▶ Remote UPF Testing针对所有低功耗音频(LE Audio)和网格(Mesh)规范的远程互操作性测试已开放,蓝牙会员可使用该测试,这是随时测试产品的又一绝佳途径。——————————PCI Express▶ 2025年
    百佳泰测试实验室 2024-12-20 10:33 24浏览
  • 耳机虽看似一个简单的设备,但不仅只是听音乐功能,它已经成为日常生活和专业领域中不可或缺的一部分。从个人娱乐到专业录音,再到公共和私人通讯,耳机的使用无处不在。使用高质量的耳机不仅可以提供优良的声音体验,还能在长时间使用中保护使用者听力健康。耳机产品的质量,除了验证产品是否符合法规标准,也能透过全面性的测试和认证过程,确保耳机在各方面:从音质到耐用性,再到用户舒适度,都能达到或超越行业标准。这不仅保护了消费者的投资,也提升了该公司在整个行业的产品质量和信誉!客户面临到的各种困难一家耳机制造商想要透
    百佳泰测试实验室 2024-12-20 10:37 67浏览
  • By Toradex秦海1). 简介为了保证基于 IEEE 802.3 协议设计的以太网设备接口可以互相兼容互联互通,需要进行 Ethernet Compliance 一致性测试,相关的技术原理说明请参考如下文章,本文就不赘述,主要展示基于 NXP i.MX8M Mini ARM 处理器平台进行 1000M/100M/10M 以太网端口进行一致性测试的测试流程。https://www.toradex.com
    hai.qin_651820742 2024-12-19 15:20 85浏览
  • 沉寂已久的无人出租车赛道,在2024年突然升温了。前脚百度旗下萝卜快跑,宣布无人驾驶单量突破800万单;后脚特斯拉就于北京时间10月11日上午,召开了以“We,Robot”为主题的发布会,公布了无人驾驶车型Cybercab和Robovan,就连低调了好几个月的滴滴也在悄悄扩编,大手笔加码Robotaxi。不止是滴滴、百度、特斯拉,作为Robotaxi的重磅选手,文远知行与小马智行,也分别在10月份先后启动美股IPO,极氪也在近日宣布,其与Waymo合作开发的无人驾驶出行汽车将大规模量产交付,无人
    刘旷 2024-12-19 11:39 121浏览
  •         在上文中,我们介绍了IEEE 802.3cz[1]协议提出背景,旨在定义一套光纤以太网在车载领域的应用标准,并介绍了XMII以及PCS子层的相关机制,在本篇中,将围绕IEEE 802.3cz-MultiGBASE-AU物理层的两个可选功能进行介绍。EEE功能        节能以太网(Energy-Efficient Ethernet)是用于在网络空闲时降低设备功耗的功能,在802.3cz的定义中,链
    经纬恒润 2024-12-19 18:47 26浏览
  •         不卖关子先说感受,真本书真是相见恨晚啊。字面意思,见到太晚了,我刚毕业或者刚做电子行业就应该接触到这本书的。我自己跌跌撞撞那么多年走了多少弯路,掉过多少坑,都是血泪史啊,要是提前能看到这本书很多弯路很多坑都是可以避免的,可惜这本书是今年出的,羡慕现在的年轻人能有这么丰富完善的资料可以学习,想当年我纯靠百度和论坛搜索、求助啊,连个正经师傅都没有,从软件安装到一步一布操作纯靠自己瞎摸索,然后就是搜索各种教程视频,说出来都是泪啊。  &
    DrouSherry 2024-12-19 20:00 40浏览
  • 随着工业自动化和智能化的发展,电机控制系统正向更高精度、更快响应和更高稳定性的方向发展。高速光耦作为一种电气隔离与信号传输的核心器件,在现代电机控制中扮演着至关重要的角色。本文将详细介绍高速光耦在电机控制中的应用优势及其在实际工控系统中的重要性。高速光耦的基本原理及优势高速光耦是一种光电耦合器件,通过光信号传递电信号,实现输入输出端的电气隔离。这种隔离可以有效保护电路免受高压、电流浪涌等干扰。相比传统的光耦,高速光耦具备更快的响应速度,通常可以达到几百纳秒到几微秒级别的传输延迟。电气隔离:高速光
    晶台光耦 2024-12-20 10:18 36浏览
  • 由于该文反应热烈,受到了众多工程师的关注,衷心感谢广大优秀工程师同仁的建言献策。特针对该技术点更新一版相关内容! 再次感谢大家的宝贵建议!填充铜(Solid Copper)和网格铜(Hatched Copper)是PCB设计中两种不同的铺铜方式,它们在电气性能、热管理、加工工艺和成本方面存在一些区别:1. 电气性能:填充铜:提供连续的导电层,具有极低的电阻和最小的电压降。适合大电流应用,并能提供优秀的电磁屏蔽效果,显著提高电磁兼容性。网格铜:由于铜线之间存在间隔,电阻相对较高,电压降也
    为昕科技 2024-12-18 17:11 102浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦