ROS是由Standford的PR2项目起源,它有一套非常完备的工程系统,可以适用于大部分的机器人场景。
ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体。(来自roswiki)
http://wiki.ros.org/ROS
ROS的不足
一般来说,ROS需要有一个roscore作为主节点来运行其他所有的进程,如果这个主节点出现错误,整个系统都会冗机。同时由于ROS在消息转发当中要经过很多个软件栈,时间没有办法做到REAL-TIME,因此只能在开发过程当中作为一个工具使用,或者适用于实时性要求不太高的单机机器人场景。
那么如果不用ROS的通讯,就需要一些更加工业场景适用的中间件进行消息通讯。
ROS2
ROS2加入了一个ROS图的概念,不同的ROS节点之间可以进行通讯,然后通过它制作的ros1-bridge这个包来实现这个ROS与ROS2之间的交互。
在这个基础之上,我又进一步的了解了fast-rtps通信协议。
FAST-RTPS
FAST-RTPS是一个多机之间通信的中间件,它实现了在局域网之内建立域,然后在域内通过Publisher和Subscriber进行交互。不同的消息话题可以通过不同的topicname来进行确认。
FAST-RTPS在局域网内默认的发布形式是UDP的,也就是说一旦以这个话题发送消息,整个局域网内所有开了这个话题的机器都能收到这条信息,那么如果要加以确认,就需要在消息当中加入每个机器的标志位,这样才知道这条信息究竟发给了谁。
现在暂时只是对多机通讯的简单形式进行了使用,后面会对它的TCP(点对点)转发形式再做一个探究,还有包括消息的确认(多次握手),以及话题的matching,容错处理进行进一步探究。