1、DDS Router 的作用
ROS 2 的 DDS(一种发布-订阅中间件,底层是RTPS(Real-Time Publish Subscribe)协议,通过 multicast + discovery 建立通信) 在不同网络设备间存在通信限制,DDS Router 主要解决不同子网无法通信的问题,DDS Router 是一个轻量、灵活、可配置的中继器,让 DDS 节点可以跨网段、跨系统通信。具体介绍可以看官方文档,从官网文档可以看出,比较适合集群通信业务:eProsima DDS Router Documentation - 3.2.0https://eprosima-dds-router.readthedocs.io/en/latest/rst/formalia/titlepage.html
2、DDS Router 的基本架构以及原理
这张图来自官方文档,DDS Router powered by Fast DDS,也就是在基于基本的dds通信上的一个应用层,如图所示,蓝色部分表示dds router所做的事情,通过配置多个 Participants,分别连接到不同网络,再将 topic 在 participant 之间进行转发;
如官网下图,如果想要实现下面这种云服务的架构来对多个机器人进行通信,可以配置多对dds router, 使用 eProsima Discovery Server 发现机制(通过非多播网络进行动态发现,也就是配置之后实现单播)进行通信,domain的配对,相当于一种去中心化分布式 DDS 网络。
3、DDS安装流程&验证:
本人平台是arm架构,源码安装,参考CMake installation章节;亲测,安装顺利
1. Linux installation from sources - 3.2.0
pip3 install vcstool
sudo apt install libasio-dev
安装完成后:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/install/lib,可以看到
编写client_test.ymal 和 server 的yaml,可以按照真实情况修改ip:
运行ddsrouter成功
4、DDS使用方法和一些配置:
参考example of usage章节