注:本文不讨论这三种DDS的具体使用方法,仅提供结论性描述。
Connext DDS 与 FastDDS
问题鸟问:这两个能正常通信吗?
闻啼鸟答:这我可不太清楚……难道你不会用百度查查吗?
问题鸟问:百度?你是在骂人吗?
闻啼鸟答:哈哈!那我们来看看,使用FastDDS发布数据,Connext DDS订阅数据是否能够顺利收发吧?
问题鸟问:OK,我就说能通信,不会有啥问题,你还在犟。
闻啼鸟答:咳嗽~
问题鸟问:我的意思是,确实没有问题,那反过来呢?
闻啼鸟答:损色。其实验证没什么必要,但还是看看吧!
问题鸟问:哦吼,果然没问题。那我知道了,Connext DDS节点与Fast-DDS进行交互是行得通的。
闻啼鸟答:没错!接下来看看Fast-DDS和OpenDDS之间的情况。我们先让Fast-DDS进行发布,再用OpenDDS进行订阅吧。
FastDDS 与 OpenDDS
问题鸟问:我知道没问题,你不用再说了,直接反过来收发吧。
闻啼鸟答:额,贼,嫌我多余了。不过我要告诉你,你看到的不一定是真的哦!这里其实还有一些问题。换一下收发启动的顺序,看看结果如何。
问题鸟问:噗哧笑,你啥破配置,这就没内存了???
闻啼鸟答:32G内存好吧,不知道瞎嘚啵。(翻车现场)看现象应该是序列化使用的buffer出错了,内存溢出。简单来说:他是个bug。
问题鸟问:姑且算Fast DDS节点与OpenDDS进行交互是行得通的吧。不过遇到问题,不要得过且过哦。那接下来呢?
闻啼鸟答:是是是,你说得对。接下来我们要看Connext DDS和OpenDDS之间的互通信,Connext DDS订阅,OpenDDS发布
ConnextDDS与 OpenDDS
问题鸟问:好像也没啥问题。
闻啼鸟答:嗯,其实有一个问题。接下来看看,当我先开启OpenDDS的发布节点时会提示错误,但这并不影响通信。这个现象值得注意
问题鸟问:确实哎,RTPS header for SPDP,那这是啥呀?
闻啼鸟答:SPDP全称是Simple Participant Discovery Protocol,这是DDS节点发现过程的第一阶段。完成后会进入Simple Endpoint Discovery Protocol (SEDP)。只有这两个阶段都完成,才能进行数据交互。这个问题可能是OpenDDS的版本 bug,嘿嘿嘿,接下来继续吧!
问题鸟问:我也算Connext DDS节点与OpenDDS进行交互是行得通的吧。
闻啼鸟:你总结吧。
问题鸟:过年了,在吃好吃的呢,一会着昂。
闻啼鸟:你到跑得快。
闻啼鸟总结:
只要不同厂家实现的DDS符合OMG的标准,那么相互通信就没有问题。至于这三家产品的好坏,听下回辩解吧!