RTPS协议的简单介绍

在RTPS的顶层,Domain域定义了不同的通信层。几个域可以同时独立地共存。域包含任意数量的参与者Participants,即发送和接收数据的元素。参与者使用端Endpoints:

  • 读Reader:接收数据端

  • 写Writer:发送数据端
    一个参与者可以拥有任意数量的读写端。

    通信以主题Topic为中心,其定义了将要交换的数据。主题不属于任何参与者Participants。相反,所有感兴趣的参与者都会跟踪主题数据的变换,确保实时更新数据。通信单元的变化意味着主题的更新。端会在历史纪录中记录这些改变,历史纪录是一种数据结构,用于为最近改变的缓存。当你通过一个写端Writer Endpoint发送一个改变时,将会发生下面步骤:

  • 这个改变被增加到写的历史缓存中

  • 这个写writer会告诉它知道的所有读reader

  • 任何感兴趣的读readers(subscribed)请求这个改变

  • 接收数据之后,读reader用这个新的改变更新其历史缓存
    通过选择服务质量QoS,你可以通过多种方式影响历史缓存的管理方式,但是通信循环仍然保持一样。关于此更多的信息

Ubuntu上编译你的第一个应用

为了编译一个小应用,你必须首先定义这个主题Topic。为了定义这个Topic主题的数据类型,Fast-RTPS提供了两种不同的方式,通过动态主题类型动态定义以及通过IDL接口定义语言静态定义。
在这个例子中,我们将用IDL静态定义数据类型,关于IDL更多信息

写一个包含你所需的IDL文件。简单字符串时有效的。

// HelloWorld.idl
struct HelloWorld
{string msg;
};

转换这个IDL文件为Fast RTPS能理解格式。为此,我们提供了一个代码生成工具,叫fastrtpsgen,其做两种不同的事情:

  • 为你定制的topic产生C++定义
  • 可选的,用你的主题topic数据生成一个可工作的例子

您可能需要查看fastrtpsgen用户手册,该手册随库的分发一起提供。
Linux下:

fastrtpsgen -example CMake HelloWorld.idl

-example选项创建一个例程应用。

mkdir build && cd build
cmake ..
make

应用程序构建可用于生成与您的主题相关联的任意数量的发布者和订阅者。

./HelloWorldPublisherSubscriber publisher
./HelloWorldPublisherSubscriber subscriber

每次在发布服务器上按键,都会生成一个新的数据包,通过网络发送,被当前在线的订阅者接收。如果不止一个订阅者在线,在所有侦听节点上均等地接收消息。

您可以在发送之前修改自定义IDL生成的数据类型的任何值。

HelloWorld sample; //Auto-generated container class for topic data from FastRTPSGen
sample.msg("Hello there!"); // Add contents to the message
publisher->write(&sample); //Publish

通过example/文件夹了解更多,学习更多关于Fast RTPS的高级特性。

【Fast RTPS】入门--------Ubuntu系统下相关推荐

  1. ubuntu系统下c语言入门以及编写简单程序

    目录 一,hello world入门 二,在windows系统中编写简单程序 三,在ubuntu系统下用makefile方式编写程序 一,hello world入门 在linux操作系统中打开终端 1 ...

  2. ubuntu系统下c语言helloworld入门以及编写简单程序

    文章目录 一.c语言helloworld入门 二.分别在ubuntu和windows系统下编写简单程序 (一)ubuntu系统下的简单主/子程序 (二)在windows系统下编写简单主/子程序 (三) ...

  3. ubuntu 系统下安装 xlwt

    今天在ubuntu 系统下使用pip安装xlwt 报错了如下 然后安装一个easy_install工具 在终端中输入: sudo apt-get install python-setuptools 安 ...

  4. Ubuntu 系统 下 AndroidStudio 工具 使用ctrl+z 回退上一步的方法

    Ubuntu 系统 下使用 AndroidStudio 使用ctrl + z 不是回退上一步的方法 ,是把 as 工具返回home 了 如果想使用ctrl + z 实现回退上一步 ,可以把Ubuntu ...

  5. Linux火狐解压完运行不了,在Ubuntu系统下firefox账号无法登录的解决

    在Ubuntu 16.04系统下默认自带有firefox浏览器,但是使用这个firefox浏览器会发现账号无法登录,原来是在windows系统下的数据没有办法同步,书签也同步不了.经过查询资料后得知, ...

  6. ubuntu系统下用kazam软件录制的视频不能在windows系统下播放的解决方案

    ubuntu系统下用kazam软件录制的视频不能在windows系统下播放的解决方案 参考文章: (1)ubuntu系统下用kazam软件录制的视频不能在windows系统下播放的解决方案 (2)ht ...

  7. cmake重新编译matlab,ubuntu系统下cmake 编译matlab中mex文件

    cmake 编译工程具有独特的优势,特别对于复杂的工程更是如此.利用matlab直接编译mex文件时,对于文件数据多的工程时,需要列举所有文件,并且要按照依赖关系排 cmake 编译工程具有独特的优势 ...

  8. ubuntu系统下matplotlib中文乱码问题

    参考 [ubuntu系统下matplotlib中文乱码问题 - CSDN博客](https://blog.csdn.net/jeff_liu_sky_/article/details/54023745 ...

  9. 安卓9.0刷linux,Ubuntu系统下编译Android 9.0系统

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 前言 在Ubuntu系统下编译Android系统.哎呀不知道是不是换了新电脑的缘故,这次编译居然从安装JDK和配置环境下 ...

最新文章

  1. 我心中的核心组件(可插拔的AOP)~第十三回 实现AOP的拦截组件Unity.Interception...
  2. 铁路运货的运费与路程远近java_JAVA铁路运货的运费与路程远近及货物的重 – 手机爱问...
  3. 从命令行列出所有环境变量?
  4. 将数据导入DB2带自增字段的表
  5. [POJ2976] Dropping tests
  6. 君威u0073故障码解决_顽疾修复过程,君威没倒挡的变速箱故障就是这样修好
  7. nib和xib的区别
  8. mysql字段A复制到字段B,并替换指定字符
  9. Vue.js 学习笔记 二,一些输出指令
  10. 若无云,岂有风——词语语义相似度计算简介
  11. 是的你没看错,HTTP3来了
  12. 0x00000116错误代码 nvlddmkm.sys 蓝屏
  13. 【报告分享】轻食餐饮发展指南——从入门到可持续经营-美团(附下载)
  14. idea新建module无法push到GitHub,没有Git选项
  15. SaltStacks三:写法和高级状态
  16. Javaweb 实现简单的用户注册登录(含数据库访问功能)
  17. 一个投资人必须具备的心理素质 心理素质如何培养
  18. 死锁检测的常用3种方法
  19. HTML 学习笔记 标签的应用
  20. 【场景化解决方案】“IM业务一体化”探索百丽时尚集团补货群业务实践

热门文章

  1. 【Vue全家桶】新一代的状态管理--Pinia
  2. 如何通俗的理解最大似然估计法
  3. win10开机黑屏一段时间bug修复
  4. 爬虫实战之爬取古诗文网站 (详细)
  5. sqlserver 2012 sqlServerAgent 无法启动 解决
  6. android 开机启动程序
  7. DDD - 一文读懂DDD领域驱动设计
  8. 火信脚本,火信引流脚本爆粉加人
  9. 《坚持与自由》——读明朝那些事儿有感
  10. vf的device和driver的匹配