参考

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.shxx:~/fastrtps$ cd src
xx:~/fastrtps/src$ ls
fastcdr  fastrtps  fastrtpsgen  foonathan_memorysudo 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

Fast-RTPS初体验相关推荐

  1. 无人驾驶笔记系列(四):Fast-RTPS初体验

    无人驾驶笔记系列(四):Fast-RTPS初体验 背景介绍 ROS1在节点启动前,必须通过roscore启动一个master节点,通过master管理节点之间的通信.这样master节点如果出现问题, ...

  2. node.js 初体验

    node.js 初体验 2011-10-31 22:56 by 聂微东, 174545 阅读, 118 评论, 收藏, 编辑 PS: ~ 此篇文章的进阶内容在为<Nodejs初阶之express ...

  3. 苹果电脑安装python3密码_mac系统安装Python3初体验

    前沿 对于iOS开发不要随便拆卸系统自带的Python,因为有很多 library 还是使用 Python2.7. 1 安装Xcode 1.1 App Store 搜索Xcode 并安装 1.2 安装 ...

  4. MapReduce编程初体验

    需求:在给定的文本文件中统计输出每一个单词出现的总次数 第一步: 准备一个aaa.txt文本文档 第二步: 在文本文档中随便写入一些测试数据,这里我写入的是 hello,world,hadoop he ...

  5. 小程序 缩放_缩放流星应用程序的初体验

    小程序 缩放 by Elie Steinbock 埃莉·斯坦博克(Elie Steinbock) 缩放流星应用程序的初体验 (First Experiences Scaling a Meteor Ap ...

  6. wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验

    wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言 2 下载.安装wxWidgets 3 wxWidgets应用程序初体验 4 wxWidgets学习资料及利用方法指导 5 ...

  7. 用鸿蒙跑了个 “hello world”!鸿蒙开发初体验

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源 | https://my.oschina.net/u ...

  8. Windows Embedded Standard开发初体验(二)

    支持Silverlight的Windows Embedded Standard 好了,完成安装之后,我们就可以来做Windows Embedded Standard的第一个操作系统镜像了.在开始菜单中 ...

  9. 深度探索Hyperledger技术与应用之超级账本初体验(附部署代码)

    2019独角兽企业重金招聘Python工程师标准>>> 本章零基础地介绍了如何快速体验超级账本搭建的区块链网络,我们先绕过了比较复杂的初始化配置,用官方提供的fabric-sampl ...

  10. Spring环境搭建,IoC容器初体验~

    由于最近的任务是关于IoC配置文件格式的转换,所以需要从Spring的IoC容器开始学起,今天根据网上的介绍搭建了Spring环境,并对其IoC容器进行了初体验.文章中涉及到的软件以及推荐的一本关于S ...

最新文章

  1. shell 脚本 自动发送邮件
  2. 实现俄罗斯方块遇到的问题及游戏下载
  3. 年入百万还是低龄低收入?9.04亿网民的真实面目,都藏在这些数据里
  4. js对HTML字符转义与反转义
  5. Day 3 in India
  6. C语言结构体用法很多,坑也很多
  7. Symfony 4.2.4 和 3.4.23 发布,经典 PHP Web 开发框架
  8. zero-shot learning
  9. 时代变了,199 美元的 iPhone 都可以想了?
  10. java applepay_ApplePay对接java后台详细代码
  11. jenkins使用报错记录exception message 137
  12. 网站被黑被劫持跳转到其他网站该如何解决
  13. Android跳转到应用商店详情页面
  14. 供应脂质体形成材料DSPE-PEG-Thiol,DSPE-PEG-SH
  15. oracle根据关键字搜索存储过程
  16. 解决百度地图(new BMap.Autocomplete)影响input赋值的问题
  17. Win10+Ubuntu16.04双系统安装过程中遇到的一些问题及解决办法
  18. 天干地支计算公式_如何快速的计算出每一天的天干地支
  19. ROS 重名问题解决
  20. 如何用微信小程序实现优惠券功能

热门文章

  1. 【ArcGIS|空间分析|网络分析】8 查找能够为需求点对提供服务的最佳路径
  2. C++命名空间和缺省参数的概念
  3. Flutter之BuilderContext和Widget关系浅析
  4. cocos 发布android 返回值2,用cocos creator打包发布的时候,编译失败是怎么回事?执行命令出错,返回值:1。...
  5. 揭秘!开源软件背后的神秘组织
  6. android AChartEnginee讲解之自定义图表类
  7. python基础知识——异常
  8. 微型计算机的输出有,微型计算机必不可少的输入/输出设备是()。 - 百科题库网...
  9. java麻麻_知了堂教你不怂密密麻麻的Java代码
  10. 信道容量受哪三个要素_好的餐饮店门头招牌应该怎么设计呢?需要具备哪些要素?...