eprosima Fast DDS (之前为Fast RTPS) 是一个OMG(Object Management Group)组织下的DDS (Data Distribution Service)标准的C++实现。eProsima Fast DDS 实现了RTPS (Real Time Publish Subscribe) 协议,该协议提供了基于不可靠传输(例如UDP)通信方式下的发布-订阅功能。由于是由OMG组织定义和维护的,因此,RTPS也是为数据分发服务(DDS)定义的线性互操作协议 。eProsePima Fast DDS公布了一个API接口用于直接访问TPS协议以及充分连接协议内部。
这个库的主要特征如下:
eProsima Fast DDS 已经被许多机构采用在很多的领域中,主要包括如下重要的使用场景:
这个项目本身也是 FIWARE项目的一部分,如果想要了解这部分信息,可以从Robotics的FIWARE目录进入。
你可以选择获取eprosima Fast DDS的二进制发布release,也可以选自己从源码进行编译。
最新的二进制eprosima Fast DDS release可以从company website处获取到。
安装依赖
Asio 和 TinyXML2 库
在Linux系统中,你可以使用包管理工具安装这些库,在ubuntu上你妹可以输入如下的命令使用pkm安装依赖库:.
sudo apt install libasio-dev libtinyxml2-dev
在windows系统中,你可以使用 Chocolatey安装这些依赖库。首先,你需要从ROS2 Github 仓库下载如下 Chocolatey依赖库
一旦这些依赖库被下载,打开一个有管理员权限的shell并且执行下面的命令:
choco install -y -sasio tinyxml2
请使用你下载这些依赖库的路径个替换命令中的
Colcon 安装
colcon是一个命令行工具,用于构建软件包。这一章节解释了如何使用该工具简单地编译Fast-RTPS和他的依赖库。首先安装ROS2开发工具(colon和vcstool):
pip install -U colcon-common-extensions vcstool
下载的这些文件被用于下载FastRTPS以及其依赖文件:
$ mkdir fastdds_ws $ cd fastdds_ws $ wget https://raw.githubusercontent.com/eProsima/Fast-DDS/master/fastrtps.repos $ mkdir src $ vcs import src < fastrtps.repos
最后,使用colon编译这些软件:
$ colcon build
手工安装
在手工编译Fast DDS之前你需要克隆下列依赖库的仓库并且使用CMake进行编译:.
Fast CDR
$ git clone https://github.com/eProsima/Fast-CDR.git $ mkdir Fast-CDR/build && cd Fast-CDR/build $ cmake .. $ cmake --build . --target install
Foonathan memory
$ git clone https://github.com/eProsima/foonathan_memory_vendor.git $ cd foonathan_memory_vendor $ mkdir build && cd build $ cmake .. $ cmake --build . --target install
一旦所有的依赖库都编译安装完成,就可以编译和安装Fast DDS了。
$ git clone https://github.com/eProsima/Fast-DDS.git $ mkdir Fast-DDS/build && cd Fast-DDS/build $ cmake .. $ cmake --build . --target install
你可以从 Read the Docs.获取下列在线文档。
基于ROS 2提供的准则说明,eprosima Fast DDS 据称可以达到Level 1质量分类。可以从See Quality Declaration 获取更多细节。
对于想要尽快看到在Ubuntu系统上对Fast DDS库的演示的情况,有一个可以启动的实例应用程序可以展示。
首先,下载并且安装docker应用,打开终端并且输入下面的命令:
$ sudo apt-get install docker.io
然后,从 eProsima downloads website站点下载docker镜像文件
接着,加载镜像
$ docker load -i ubuntu-fast-dds:.tar $ docker load -i ubuntu-fast-dds-helloworld: .tar $ docker load -i ubuntu-fast-dds-shapesdemo: .tar
运行Docker容器中的eProsima Shapes Demo 应用,可以参考 Shapes Demo documentation 获取该应用的更多详细用法。
$ xhost local:root $ docker run -it --privileged -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix \ ubuntu-fast-dds-shapesdemo:
也可以运行在命令行中输入下面的命令运行 Fast DDS HelloWorld 范例程序:
$ docker run -it ubuntu-fast-dds-helloworld: