使用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
下载对应的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文件。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。
还没有评论,来说两句吧...