使用FastDDS编译IDL文件

news/2024/5/21 18:12:26

1.安装FastDDS环境

Ubuntu22.04

1.1安装依赖的软件

sudo apt-get update
//基础工具安装
sudo apt install cmake g++ python3-pip wget git
//Asio 是一个用于网络和低级 I/O 编程的跨平台C++库,它提供了一致的 异步模型。 TinyXML2是一个简单,小巧,高效的C++XML解析器。 
sudo apt install libasio-dev libtinyxml2-dev
//OpenSSL 是用于 TLS 和 SSL 协议的强大工具包,也是一个通用加密库。
sudo apt install libssl-dev
//Libp11 为 OpenSSL 提供 PKCS#11 支持。这是一个可选的依赖项, 仅当 eprosima 快速 DDS 与安全性和 PKCS#11 URI 一起使用时,才需要这样做。
sudo apt install libp11-dev libengine-pkcs11-openssl
//SoftHSM是HSM(硬件安全模块)的软件实现。 如果激活了eProsima快速DDS测试并安装了libp11 在系统上,还需要 SoftHSM 来运行 PKCS#11 功能的测试。
sudo apt install softhsm2
//softhsm2 软件包会创建一个名为 softhsm 的新组。其次要授予对 HSM 模块的访问权限,用户必须属于此组。
sudo usermod -a -G softhsm <user>

下载对应的gtest库

//GTest 是一个用于C++的单元测试库。 默认情况下,eProsima Fast DDS不编译测试。 在调用 colcon 或 CMake 时,可以使用合适的 CMake 配置选项激活它们。
git clone https://github.com/google/googletest src/googletest-distribution

编译gtest

mkdir src/googletest-distribution/build
cd src/googletest-distribution/build
cmake ..
sudo cmake --build . --target install

1.2安装foonathan_memory_vendor

mkdir ~/Fast-DDS
cd ~/Fast-DDS
git clone https://github.com/eProsima/foonathan_memory_vendor.git
mkdir foonathan_memory_vendor/build
cd foonathan_memory_vendor/build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/ -DBUILD_SHARED_LIBS=ON
cmake --build . --target install

1.3安装fast-cdr

cd ~/Fast-DDS
git clone https://github.com/eProsima/Fast-CDR.git
mkdir Fast-CDR/build
cd Fast-CDR/build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/
cmake --build . --target install

1.4安装fast-dds

cd ~/Fast-DDS
git clone https://github.com/eProsima/Fast-DDS.git
mkdir Fast-DDS/build
cd Fast-DDS/build
cmake ..  -DCMAKE_INSTALL_PREFIX=~/Fast-DDS/install
cmake --build . --target install

修改库加载路径

export LD_LIBRARY_PATH=/usr/local/lib/

即可执行对应的测试程序

fast-discovery-server --help

1.5安装fastdds-gen

fastdds-gen主要是一个用来自动生成代码的工具。他是一个java工具,可以将对应的idl文件生成对应的C++文件。免去我们自己手写对接fastdds的代码(虽然肯定后续要手写)。

下载代码

cd ~
git clone --recursive https://github.com/eProsima/Fast-DDS-Gen.git
cd Fast-DDS-Gen

首先安装对应的jdk

sudo apt install openjdk-11-jdk

编译

./gradlew assemble

编译完成之后,会在目录下面的script目录下生成对应的脚本。

2.编译idl文件

2.1编写idl文件

首先需要编写对应的idl文件,这个文件定义了要传输的数据。(我采用的是国汽智联自研的DDS2X转换工具把DDS通信矩阵自动转换为idl文件,如果有需要可以私聊我)

struct HelloSecurity
{string securityData;
};

2.2生成C++代码

调用fastdds-gen工具生成对应的C++ 文件

~/Fast-DDS-Gen/scripts/fastddsgen -example CMake test.idl
export PATH=~/Fast-DDS-Gen/scripts:$PATH

其中testPubSubMain是整个程序的main函数。用来启动其他的pub和sub的。

而对应的publisher和subscriber都依赖PubSubTypes文件。


http://www.mrgr.cn/p/25467817

相关文章

audition 音频 声音 变慢 减速 增加响度 增大音量

audition 音频 声音 变慢 减速 增加响度 增大音量 我这里audition版本是cs6 减速减速的 那个算法 选右边的选项,要不效果不好 减速的 那个算法 选右边的选项,要不效果不好 减速的 那个算法 选右边的选项,要不效果不好增大响度 显示窗口完工~-------------------------------…

4-02. 实现跟随游戏时间触发切换场景光效

修改 Settings修改 TimeManager修改 EventHandler修改 TimeManager修改 LightManager修改 LightControl修改 LightManager修改 LightControl修改 TimeManager给门灯添加 LightControl添加 LightPattern并把它拖动给 Light2D下面那个灯也要拷贝相同的 Light Control 组件 项目相…

Day91:API攻防-接口安全SOAPOpenAPIRESTful分类特征导入项目联动检测

目录 API分类特征-SOAP&OpenAPI&RESTful API分类特征 API常见漏洞 API检测流程 API检测项目-Postman&APIKit&XRAY 工具自动化-SOAP - WSDL Postman 联动burpxray APIKit插件(可联动xray) 工具自动化-OpenApi - Swagger Postman 联动burpxray APIKit…

RabbitMQ交换机的类型

交换机类型 可以看到&#xff0c;在订阅模型中&#xff0c;多了一个exchange角色&#xff0c;而且过程略有变化&#xff1a; Publisher&#xff1a;生产者&#xff0c;不再发送消息到队列中&#xff0c;而是发给交换机 Exchange&#xff1a;交换机&#xff0c;一方面&#xff…

vs2019 - detected memory leak

文章目录 vs2019 - detected memory leak概述笔记vs2019 consolevs2019 MFC Dlg但是&#xff0c;工程大了之后&#xff0c;VS2019提示的就变了样整好的内存泄漏侦测头文件和实现my_debug_new_define.hmy_debug_new_define.cpp在所有.cpp文件入口处包含my_debug_new_define.h包含…

[蓝桥杯 2018 国 C] 迷宫与陷阱

题目链接&#xff1a;迷宫与陷阱 这道题目跟我们平时做的bfs不同的是 多了一个“无敌状态” 那么也就需要我们去比较有无敌状态经过陷阱和不走陷阱的最少的步数。 先说说我之前的思路吧&#xff1a; 开一个vis[N][N]表示走到&#xff08;x,y) 这个点所需最小的步数&#xff…

wps使用Latex编辑公式没有Latex formula

wps使用Latex编辑公式没有Latex formula 1. 下载CTEX2. 下载LaTeXEE3. 配置Miktex4. 配置latexee5. 用管理员权限运行latexeqedit.exe6. wps插入latex公式 1. 下载CTEX 下载CTEX网址&#xff0c;我下载的下图这个&#xff0c;下载完了之后运行exe文件安装ctex。 2. 下载LaTe…

FebHost:什么是.VC域名,有什么含义和优势?

什么是.VC 域名&#xff1f; 这是一个国家代码顶级域&#xff08;ccTLD&#xff09;&#xff0c;代表加勒比国家圣文森特和格林纳丁斯。 该域名对全球任何人开放注册&#xff0c;无论其所在位置或与圣文森特和格林纳丁斯的隶属关系如何。 .VC域名的常见用途 风险投资公司&am…

Unity超简单2步制作列表组件方法

1、创建画布(Canvas),并创建UI→滚动视图(Scroll View);2、展开Viewport,选中Content,添加组件Grid Layout Group和Content Size Fitter;单元格大小Y修改每一个列表项的高度,到这里列表组件就制作好了。下面是制作列表项。 3、右键Content,创建空物体GameObject,改…

计算机网络的七层模型

序 OSl(Open System Interconnect)&#xff0c;即开放式系统互联。一般都叫OSI参考模型。在网络编程中最重要的模型就是OSI七层网络模型和TCP/IP四层网络模型 一、OSI七层参考模型以及功能概述 二、各层的具体职能以及实际应用 1.应用层&#xff1a; OSI参考模型中最接近用…

leetcode:42.接雨水

单调栈解题思路&#xff1a; 需要知道当前遍历到的元素左边和右边第一个比该元素大的元素。 如果当前遍历到的元素大于栈顶元素&#xff0c;则该元素为栈顶元素右边第一个比它大的元素&#xff0c;此时&#xff0c;栈顶元素的栈内相邻元素是该元素左边第一个比它大的元素。【…

37、Tomato(VulnHub)

Tomato 一、nmap2211是ssh的端口,21的ftp也不是弱密码二、web渗透 随便看看目录爆破/seclists/Discovery/Web-Content/common.txt/antibot_image/antibots/readme.txt 发现该站点存在反爬机制/antibot_image/antibots/info.php 提示我们该网页存在个参数 GET:image参数image参…

记【k8s】:访问 Prometheus UI界面:kubernetes-etcd (0/1 up) Error : out of bounds

记【k8s】&#xff1a;访问 Prometheus UI界面&#xff1a;kubernetes-etcd &#xff08;0/1 up&#xff09; Error &#xff1a; out of bounds 1、报错详情2、解决方法 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 出现 “out of bound…

接口测试——postman

一.下载与安装 https://www.getPostman.com/ 界面导航说明 二.get请求 第一个get请求 批量执行接口请求&#xff1a; 1. 右击run collection 2. 会出现runner标签页 携带参数的GET请求 所谓的查询参数&#xff0c;其实就是URL地址中问号&#xff08;?&#xff09;后面的部分…

日志收集(log4j2-slf4j-阿里云日志服务SLS)

1、log4j2的使用Java 中常用的日志框架:• logback:Spring Boot 默认使用的日志框架,具有自动压缩日志、支持多样化配置、不需要重启就可以恢复 I/O 异常等特点。• log4j2:在性能方面比 logback 更加优秀,使用上与之前版本 log4j 没什么区别(log4j基本被淘汰了,springb…

一个.NET内置依赖注入的小型强化版

前言 .NET生态中有许多依赖注入容器。在大多数情况下,微软提供的内置容器在易用性和性能方面都非常优秀。外加ASP.NET Core默认使用内置容器,使用很方便。 但是笔者在使用中一直有一个头疼的问题:服务工厂无法提供请求的服务类型相关的信息。这在一般情况下并没有影响,但是…

基于小程序实现的餐饮外卖系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;spring…

Python-物联网项目(二)

Python 物联网项目(二)原文:zh.annas-archive.org/md5/34135f16ce1c2c69e5f81139e996b460 译者:飞龙 协议:CC BY-NC-SA 4.0第六章:使用伺服控制代码控制模拟设备 继续我们的旅程,将模拟仪表的优雅与数字数据的准确性相结合,我们将看看我们在前两章中学到的内容,并构建…

Python-企业自动化实用指南(四)

Python 企业自动化实用指南(四)原文:zh.annas-archive.org/md5/0bfb2f4dbc80a06d99550674abb53d0d 译者:飞龙 协议:CC BY-NC-SA 4.0第十八章:使用 Python 构建网络扫描器 在本章中,我们将构建一个网络扫描器,它可以识别网络上的活动主机,并且我们还将扩展它以包括猜测…

原始部落版本潮玩宇宙小程序定制大逃杀游戏APP开发H5游戏

原始部落版本潮玩宇宙小程序定制大逃杀游戏APP开发H5游戏 潮玩宇宙小程序定制大逃杀游戏APP开发H5游戏 潮玩宇宙大逃杀小游戏模块成品源码&#xff0c;可嵌入任何平台系统&#xff0c;增加用户粘性&#xff0c;消除泡沫&#xff0c;短视频直播引流。 玩家选择一间房间躲避杀手…