当前位置:首页 > 工业用地 >ros's(ros2入门)

ros's(ros2入门)

ROS是机器人操作系统的英文缩写。 ROS 是一种高度灵活的软件架构,用于编写机器人软件程序。 ROS的原型起源于斯坦福大学的STanford人工智能机器人(STAIR)和个人机器人(PR)项目。

机器人行业和学术界在软件工具的使用上存在明显差异。由于机器人行业不像消费电子那样拥有巨大的出货量,绝对高的技术壁垒和封闭的生态是很常见的。为了提高自己的技术壁垒,这些公司往往自己设计一整套封闭的软硬件,让其他人(竞争对手或开发者)无法用自己的工具替代。在学术界,为了减少重新发明轮子的工作,学生和老师往往拥抱开源社区,选择现有的工具进行开发和研究。最著名的是ROS(机器人操作系统)。

ros's(ros2入门)

什么是活性氧

ROS/ROS 2 不是一个软件,而是一个软件集合。通常我们称之为软件解决方案堆栈。包括硬件驱动程序、网络模块、通信架构、机器人算法实现等。ROS 将所有这些功能包集中到一起,因此开发人员无需重新发明轮子。

ROS不是操作系统,而是一般称为元操作系统,是基于操作系统的一类操作系统。

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

ROS

2010年发布ROS 1.0版本,基于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 Ninjemys2020年5月23日Ubuntu 20.04 (Focal) ROS Melodic Morenia2018年5月23日Ubuntu 18.04 (Bionic) ROS Lunar Loggerhead2017年5月23日Ubuntu 17.04 (Zest y) ROS Kinetic Kame5月2 2016年3月Ubuntu 16.04 (Xenial) ROS Jade Turtle2015年5月23日Ubuntu 15.04 (Vivid)ROS Indigo Igloo2014年7月22日Ubuntu 14.04 (Trusty)ROS Hydro Medusa2013年9月4日Ubuntu 12.04 (Precise)ROS Groovy Galapagos2012年12月31日Ub untu 12.04 (Precise) ) ROS Fuerte Turtle2012 年4 月23 日Ubuntu 10.04 (Lucid ) ROS Electric Emys2011年8月30日Ubuntu 10.04 (Lucid) ROS Diamondback2011年3月2日Ubuntu 10.04 (Lucid) ROS C Turtle2010年8月2日Ubuntu 9.04 (Lucid) ROS Box Turtle2010年3月2日Ubuntu 8.04 (Hardy) :01 0-1010 ROS 给我们带来了很多我们的机器人开发方便,但是确实存在一些问题:

优缺点松耦合机制提供框架通信,实时性能有限,机器人功能库丰富,系统稳定性达不到工业级要求,用户群体大,安全无防护措施,免费开源,仅支持Linux( Ubuntu),方便数据记录和分析,模拟工具核心机制性能未优化且占用资源

ROS的优缺点对比

ROS已经存在十年了。随着机器人技术的巨大发展,ROS也得到了极大的推广和应用。虽然ROS仍然存在很多局限性,但并不能掩盖ROS的优势。社区中的功能包还在逐年呈指数级增长,这给机器人开发带来了极大的便利。许多开发者和研究机构也针对ROS的局限性进行了改进,但这些局部功能的改进往往难以提升整体性能。业界积累了大量成熟应用:

KEBA,机械臂控制器的领导者,他们的控制器已经支持ROS:

NASA基于ROS开发的Robonaut 2:

百度Apollo无人车底层是基于ROS开发的:

总体来说,ROS更适合科学研究和开源用户。如果用于工业场景(例如无人驾驶),则需要优化和定制。目前,ROS已经停止更新,机器人开发者对新一代ROS的呼声越来越高。之后,ROS2.0的消息也是层出不穷。

ROS的成熟案例

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

ROS 2

ROS版本发布时间Ubuntu版本Humble Hawksbill2022年5月23日TBDGactic Geochelone2021年5月23日Ubuntu 20.04 (Focal) Foxy Fitzroy2020年6月5日Ubuntu 20.04 (Focal) Eloquent Elusor2019年11月22日Ubuntu 18 .04 (Bionic)Dashing Diademata2019年5月31日Ubuntu 18.04 (Bionic) Crystal Clemmys2018年12月14日Ubuntu 16.04 (Xenial)Bouncy Bolson2018年7月2日Ubuntu 16.04 (Xenial)Ardent Apalone2017年12月8日Ubuntu 16.04 (Xenial)

ROS 2的历史版本

为了解决消息之间通信的去中心化和实时性问题,ROS 2介绍数据分布式服务(DDS)已广泛应用于国防、民航、工业控制等领域,已成为分布式实时系统中数据发布/订阅的标准解决方案。如下图所示,左侧为ROS 1,右侧为ROS 2。

在ROS 1中,用户的每个节点,无论是同一设备还是不同设备,都必须知道Master节点的IP,并且都依赖Master节点进行通信。一旦Master节点出现故障或者设备出现故障,整个环境中的所有节点功能都会丧失。无法恢复。也正是因为如此,ROS 1无法应用到官方产品中。

ROS 2引入了一种基于DDS的分散式数据通信方法。不同的节点可以通过未知的IP进行通信,这反过来又有助于解决多机器人系统的问题。并且ROS 2还引入了服务质量机制,通过设置不同的服务质量来保证在一些较差的网络环境下良好的通信效果。

实时化与分布式

至于实时性能,由于DDS在很多行业、行业都有很多应用,并且有着良好的生态,所以其性能是毋庸置疑的。测试结果如下图:

测试设备是两台PowerEdge R330 e34

OS: Ubuntu 18.04.2 LTS 仿生

架构: x86_64

CPU: 8

每个核心的线程: 2

型号名称: Intel(R) Xeon(R) CPU E3-1230 v6 @ 3.50GHz

以Fast-RTPS为例,我们可以看到两个设备之间的通信延迟可以稳定在100s以下,吞吐带宽也达到了750Mbit/s以上。详细跑分数据请参考Fast-RTPS vs Cyclone DDS vs OpenSplice DDS,同一设备内的通信效率将远远超过这个结果。

实时性

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

数据加密

自2007年ROS 1首次发布以来,由于众多开发库的长期支持和支持,导致该语言的许多新功能没有得到很好的应用。比如对于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提供了基于生命周期的管理模型,即每个节点的运行状态完全可控。有关受管节点的说明,请参阅设计文档。所有被管节点都可以在运行时实时配置、管理、关闭和启动,并且在出现错误时可以被管理节点唤醒和重置。这种方法保证了整个系统的稳定性和鲁棒性,也提高了系统出现错误后恢复正常的能力。

ROS 2可以在运行时替换DDS中间件,并且还可以在不同DDS中间件的实现之间进行通信。

现代编程语言的支持

ROS 2。在爱立信的推动下,我们正在讨论针对5G的ROS 2通信解决方案的制定和实施。

5G的支持

继承ROS 1广泛的开源生态资源,ROS 2的发布激起了大家对ROS产品化的热情。许多公司都为ROS 2贡献了解决方案和代码,包括但不限于Intel、NVIDIA、爱立信等。

除了贡献新代码之外,ROS 1的优秀工具也被完全继承到ROS 2中,例如Moveit、Rviz和rosbag。并且一些模块,比如导航,在开发者的改进中已经升级到navigation2,改善了很多问题,提高了使用的便利性。

全新的生态

ROS 2 Topic通信节点和节点之间通信的桥梁。节点可以同时发布和接收主题。节点和主题之间存在多对多的关系。

服务是ROS 图上节点通信的另一种方法。服务基于调用-响应模型,而不是主题的发布者-订阅者模型。服务器和客户端之间存在一对一或一对多的关系。

动作是ROS 2 中用于长时间运行任务的通信类型之一。它们由三部分组成:目标、结果和反馈。

多种通讯方式

由美国军方投资的Ghost Robotics 使用Eloquent 版本的ROS 2 开发其四足机器人。 DDS解决方案使用商业Cyclone DDS。

Mission Robotics 的水下机器人(ROV) 是使用Foxy 版本的ROS 2 开发的。

ROS 2的成熟案例

汽车行业真正的革命已经开始,软件定义汽车的时代已经到来。汽车正在加速从机械装备向高度数字化、信息化的智能终端转变,涉及领域庞大、复杂。自动驾驶汽车,从某种意义上来说,也是自动驾驶机器人。当然可以使用ROS 2进行开发。ROS 2提供了大量的基础组件,极大的方便了导航算法、自动驾驶算法和一些AI算法的部署。当然,ROS 2仍然存在很多缺陷。 ROS 2的调度模型不能被抢占。有时高优先级调度实例可能会被低优先级调度阻塞。尚未有汽车行业公司使用ROS 2 推出产品。

面对这些挑战,极氪软件与电子中心进行了大胆尝试,基于ROS 2的通信框架和平台架构,开发了基于SOA架构的汽车操作系统,并取得了良好的测试结果。 ZEEKR软件与电子中心一直对前沿技术进行深入探索,致力于打造ZEEKR OS车载操作系统。我们也欢迎有志之士加入我们,共同探索下一代汽车操作系统。

最新资讯

推荐资讯