ROS虽然将各个部分的各个组件给有机的连接起来,但是需要通过一个叫做Ros Master
的东西,所有节点(可以理解为某一个组件,比如:激光雷达)的通信建立必须经过这个主节点,一旦Ros Master
主节点挂掉后,就会造成整个系统通信的异常。
除了不稳定这个问题,ROS还有很多其他地方存在着问题:
•通信基于TCP实现,实时性差、系统开销大
•对Python3支持不友好,需要重新编译
•消息机制不兼容
•没有加密机制、安全性不高
OS层
从原来的只支持linux平台变成了支持windows、mac甚至是嵌入式RTOS平台,这一点要点个赞。之前认识公众号一老哥,做扫地机器人,为了降低成本,平台性能真的是非常的受限。
MiddleWare中间件层
1.去中心化master,ROS和ROS2中间件不同之处在于,ROS2不要了master节点。去中心化后,各个节点直接可以通过DDS的进行节点之间的相互发现,各个节点都是平等的,且可以1对1、1对n、n对n进行互相通信。
1.不造通信的轮子,通信直接更换为DDS进行实现(这个小智也要点赞,让专业的人做专业的事情)采用DDS通信,使得ROS2的是实行、可靠性和连续性上都有了增强。
ROS2进行改进有:
1.python2到pyhton3的支持
2.编译系统的改进(catkin到ament)
3.软件包更新到c++11
4.可以使用相同 API 的进程间和进程内通信
5.持续更新........
ROS1中的话题机制还存在吗?
答案:还是存在的,只不过命令行参数变了很多。ROS2向下兼容ROS1。