Fast-RTPS初体验

参考

https://www.codenong.com/cs105265087/
https://blog.csdn.net/a119258/article/details/90695721

正文

1、 背景

ROS1在节点启动前,必须通过roscore启动一个master节点,通过master管理节点之间的通信。这样master节点如果出现问题,其他节点之间的通信也会出现问题。同时,通讯的实时性也不是很好。因此,ROS2和apollo框架都用上了DDS通讯。

关于什么是DDS,英文全称(Data Distribution Service for Real-Time Systems)我也不在此啰嗦了,推荐读下这篇博客。
DDS简要介绍

总结下特点:

DDS采用发布/订阅体系架构,强调以数据为中心。
DDS使应用在需要进行数据访问的时候提供一个虚拟的全局数据池概念,事实上并没有一个存储所有数据的全局设备。每个应用仅在本地存储它需要的数据,当整个网络内的任何应用需要他们时,提供给对应应用。所有的数据分发工作全部都由DDS代劳了。
网络中的数据对象用主题做标识,分布式节点在全局数据空间中发布或订阅感兴趣的主题信息。各个节点在逻辑上无主从关系,点与点之间都是对等关系,通信方式可以是点对点,点对多,多对多,在Qos策略的控制下建立连接,自动发现和配置网络参数。

当然DDS之前一种协议,具体实现有好多版本,如:

RTI公司的DDS方案:美国海上战争中心(NSWC)高性能分布式计算系统(HiPer-D),美军都在用,应该很牛吧。
OpenDDS:OpenDDS是使用C++语言针对OMG数据分发服务(DDS)的一种开源实现。由OCI公司设计和维护,http://www.opendds.org 官网。尽管本身OpenDDS采用C++语言实现,但也提供JAVA和JMS的开发接口,这意味着JAVA程序开发也可以使用OpenDDS。
eProsima Fast RTPS:Fast RTPS是eProsima公司对RTPS标准的一个实现。那RTPS是什么东东?RTPS是DDS标准中的一个子集。英文名字是Real Time Publish Subscribe,是DDS标准中的通讯协议部分。

2、安装eProsima Fast RTPS

eProsima Fast RTPS的github主页

推荐用官网的安装包安装,源码安装比较复杂,需要你安装很多依赖。

安装包解压后,查看下文件结构:

xx:~/fastrtps$ ls
doc  install.sh  java  README.txt  src  uninstall.sh

xx:~/fastrtps$ cd src
xx:~/fastrtps/src$ ls
fastcdr  fastrtps  fastrtpsgen  foonathan_memory


sudo bash install.sh

成功安装后,查看下安装目录
#include文件目录
/usr/local/include/fastrtps
#库文件目录
/usr/local/lib/libfastrtps.so
#cmake文件目录
/usr/local/share/fastrtps/cmake/fastrtps-targets.cmake

3、跑个实例试试看

源码拉取下来。
在源码中,可以看到有个helloworld实例

cd Fast-RTPS/examples/C++/HelloWorldExample
mkdir build && cd build
cmake ..
make

编译后,要在两个窗口运行。

./HelloWorldExample publisher

./HelloWorldExample subscriber

4、源码编译

克隆Fast-RTPS并回滚(我用的这个版本)

https://github.com/eProsima/Fast-RTPS.git
git checkout f661619b04347e9365445af91ca542dddbce3cf9

安装依赖包

sudo apt-get install openjdk-8-jdk
sudo apt-get install gradle

这两个依赖包主要是为了生成fastrtpsgen工具的,这个工具可以把自定义的topic type文件(×××.idl)编译成c++文件

编译Fast-RTPS

mkdir build
cd build
cmake …/ -DBUILD_JAVA=ON -DTHIRDPARTY=ON
make
sudo make install

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值