很长时间以来,PX4的用户手册中对于ROS的说明和指引一直是ROS1/ROS2两种版本混杂排布的状态。这对一些机器人开发者来说造成了一些困扰。众所周知的是,ROS1与ROS2虽然师出同门,但在节点发布处理方式上的不同使得它们几乎是两个东西。最近,阿木实验室得知PX4官方将对这部分用户手册进行大范围修订,使其为ROS/PX4共同开发者提供更为便捷的指引。
这次用户手册的更新可以概括为:
新的ROS导航栏:
ROS2和ROS1现在将在用户手册中拥有两个单独的条目。在这之前,这里仅有ROS一个条目,其中每一节甚至每一段落中都混杂着两个版本的内容,非常令人混淆。
新的ROS2资源:
增加了许多有关PX4-ROS 2的有用信息和链接。
新的ROS 2用户指南:
我们重读了这部分指南,修订了一些容易产生混淆的概念,并多次检查了指南中提供的脚本是否正常工作。同时,我们将有关ROS 1 逻辑的部分完全分离了出去,使内容看上去更加直观。
整理了RTPS / DDS接口:
microRTPS桥接器这部分的说明:修订了这一章节的很多内容并更新了一些专有词汇,保持了其与ROS指南的一致性。同时验证了安装和使用的说明仍然是正确有效的。
新的ROS(1)-MAVROS章节:
MAVROS的指南现在重新编写为一个独立的章节,使其更加易于浏览,也更方便参考ROS (1) MAVROS和ROS 2 efforts之间的不同之处。
注意:
关于“ROS 2 Offboard 模式控制示例”的部分:由于最近PX4对Offboard模式的结构(PX4/PX4-Autopilot#16739)做了全面改革,在PX4最新的测试版本(包括原始版本)下,Offboard 模式的一些示例已经没什么参考价值了。PX4会尽快利用空闲时间去更新一些相关的案列(当然我们非常欢迎贡献者的帮助!)。
从这次更新中可以看出,PX4逐渐开始重视ROS-PX4开发生态的维护。作为开源领域的两大明星,PX4与ROS同屏出现的概念越来越高。已经不止局限于无人机,许多无人车甚至无人船都开始采用PX4-ROS的系统架构。虽然相较于ROS1,ROS2的使用仍然有一些限制。但这次开始对它们分别说明,可视为未来发展方向的一次征兆。
详情有关ROS文档更新内容可以参展PX4官方网站:
http://docs.px4.io/master/en/ros/
ROS1和ROS2的区别
许多人都了解甚至实际使用过ROS系统了,ROS1已经成为了机器人领域中的明星圈子,但同源的ROS2则似乎一直保持着一个神秘又遥远的气质。虽然ROS在研发初期的到了极大地推广和应用,但它还是存在一定的局限性。因此在2015年8月,ROS2.0也应运而生。新一代ROS颠覆了整体架构,也增强了ROS2.0的整体性能。
ROS2.0的整体架构为:
通过上图,可以看到ROS 1和ROS 2的对比如下:
对比内容 | ROS1 | ROS2 |
系统要求 | 主要构建于Linux系统之上 | 可支持构建的系统包括Linux、windows、Mac、RTOS,甚至没有操作系统的裸机 |
通讯系统 | 基于TCPROS/UDPROS,强依赖于master节点的处理 | 基于DDS |
节点 | ROS中最重要的一个概念就是“节点”,基于发布/订阅模型的节点使用。得益于DDS的加入,ROS2的发布/订阅模型也会发生改变 | |
其余独立模块 | Nodelet是为同一个进程中的多个节点提供一种更优化的数据传输方式 | ROS2中也保留了这种数据传输方式,只不过换了一个名字,叫“Intra-process”,同样也是独立于DDS |
除了对ROS1和ROS2的排版内容更新,对于RTPS/DDS 接口相关介绍也进行了部分更新,使其内容和ROS中的内容相对应。
DDS(Data Distribution Service,数据分发服务):用于分布式应用程序通信和集成的以数据为中心的发布-订阅(DCPS)中间件模型。RTPS(Real-time Publish-Subscribe,实时发布订阅):主要用于DDS互操作性的实时发布-订阅(RTPS)有线协议。
ROS1和ROS2的相关内容参照古月居老师的文章详情可参照:
https://www.guyuehome.com/805
阿木实验室官网:https://www.amovlab.com/