使用FastDDS编译IDL文件

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.hqwc.cn/news/625037.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

weblogic JSP action的配置

action(如xxx.do&#xff09;可以在Java文件中通过注解的方式配置&#xff0c;也可以在web.xml中进行配置 在java文件中配置的场合 WebServlet(xxxx.do) 并实现支持的方法&#xff1a;doGet或doPost等 或者 WebServlet(xxxx.do) 并实现service方法 所有method的处理方法都会…

基于afx透明视频的视觉增强前端方案

作者 | 青玉 导读 本文介绍了增长前端团队自研的Webview框架下透明视频视觉增强方案&#xff0c;该方案在保证对视觉进行高度还原的同时可投入更少的开发成本&#xff0c;还能获得更优的前端性能表现。文章首先分析了市面上动画方案的优缺点&#xff0c;然后详细介绍了透明视频…

025——从GUI->Client->Server->driver实现对LED的控制

目录 1、添加服务器中对客户端数据的具体分设备处理 2、实现将数组中的某些位数据转化为整型 3、修改client和server&#xff0c;互相可处理LED 4、结合驱动程序实现对物理设备的控制 4.1 增加驱动处理句柄 4.2 连接驱动处理句柄和tcp通讯接口 4.3 在client端做对应处理…

OpenStack镜像管理与制作

一、OpenStack镜像服务 1、什么是镜像 镜像通常是指一系列文件或一个磁盘驱动器的精确副本。虚拟机所使用的虚拟磁盘&#xff0c;实际上是一种特殊格式的镜像文件。云环境下尤其需要镜像。镜像就是一个模板&#xff0c;类似于VMware的虚拟机模板&#xff0c;其预先安装基本的…

Pytorch(GPU版本)简介、安装与测试运行

目录 Pytorch简介Pytorch安装查看CUDA版本Pytorch命令安装Pytorch测试运行Pytorch简介 PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序。PyTorch既可以看作加入了GPU支持的numpy,同时也可以看成一个拥有自动求导功能的强大的深度神经网络。 2…

Ctex+texmaker

最近要准备幻灯片&#xff0c;发现我喜欢的模板是用的Ctex&#xff0c;在Texlive下没有办法运行。 于是进行了很多尝试。最后找到一个快捷的办法&#xff0c;删掉自己笔记本中的texlive&#xff0c;在Ctex官网中下载Ctex套件(下载中心 – CTEX)&#xff0c;下载的版本是过时版…

初识数据库与数据库管理系统

实体的概念与数据库 实体(对象): 客观存在的事物都是实体实体数据的存储要求: 必须按照一定的分类和规律存储数据库: 专门用于存储这些实体的信息的数据集合数据库的特点: 海量存储数据&#xff0f;数据检索非常方便保持数据信息的一致&#xff0f;完整&#xff0f;并实现数据…

ubuntu22安装宝塔面板

方法一&#xff1a;运行安装宝塔命令 wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec 安装成功后&#xff0c;需到服务器管理后台的安全组中配置新规则&#xff0c;放行宝塔面板的端口&#xff08;以阿…

Spark-机器学习(2)特征工程之特征提取

在之前的文章中&#xff0c;我们了解我们的机器学习&#xff0c;了解我们spark机器学习中的MLIib算法库&#xff0c;知道它大概的模型&#xff0c;熟悉并认识它。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&a…

大学生前端学习第一天:了解前端

引言&#xff1a; 哈喽&#xff0c;各位大学生们&#xff0c;大家好呀&#xff0c;在本篇博客&#xff0c;我们将引入一个新的板块学习&#xff0c;那就是前端&#xff0c;关于前端&#xff0c;GPT是这样描述的&#xff1a;前端通常指的是Web开发中用户界面的部分&#xff0c;…

C++ 使用共享内存的进程通信方式模拟生产者消费者模型

编码环境如下 系统环境&#xff1a;linux 信号量&#xff1a;使用Linux操作系统的SystemV信号量 生产者代码如下 #include <iostream> #include <sys/sem.h> #include <sys/shm.h> #include <string.h>#define SEM_KEY 0x5678 #define SHM_KEY 0xAB…

适用于 Windows 的 10 个顶级 PDF 编辑器 [免费和付费]

曾经打开PDF文件&#xff0c;感觉自己被困在数字迷宫中吗&#xff1f;无法编辑的文本、无法调整大小的图像以及签署感觉像是一件苦差事的文档&#xff1f;好吧&#xff0c;不用再担心了&#xff01;本指南解开了在 Windows 上掌握 PDF 的秘密&#xff0c;其中包含 10 款适用于 …