0,虚拟机安装:
推荐安装ubuntu 20。ubuntu 22与VMware不兼容,存在无法与主机之间复制粘贴文件的问题。
1.虚拟机镜像下载,下载tdesktop版本:
中科大站点:Index of /ubuntu-releases/
公司内网:http://mirrors.hikvision.com.cn/search.php?searchkey=Ubuntu+20+desktop&mirror=ubuntu-releases
2.虚拟机安装步骤:VMware虚拟机下安装Ubuntu20.04(保姆级教程)_ubuntu 20.04 虚拟机-CSDN博客
3.解决虚拟机无法全屏或主机与主机之间无法复制粘贴问题
Ubuntu全屏显示设置-CSDN博客
4.安装包无法定位问题(部分情况下可解决)
解决Ubuntu无法定位软件包问题_ubuntu无法定位软件包怎么办-CSDN博客
一、虚拟机上配置fastdds环境
方法一,直接拷贝已包含fastdds环境的虚拟机(略)
方法二,配置fastdds环境,步骤如下:
1.安装编译工具
在unbuntu上安装首先需要相关的工具(可能会失败,重复多次安装成功):
1 sudo apt install cmake g++ python3-pip wget git
2.安装FastDDS依赖的库
1 sudo apt install libasio-dev libtinyxml2-dev
3.编译安装Foonathan memory
1 mkdir Fast-DDS
2 cd Fast-DDS
3 git clone https://github.com/eProsima/foonathan_memory_vendor.git
4 mkdir foonathan_memory_vendor/build
5 cd foonathan_memory_vendor/build
6 cmake .. -DCMAKE_INSTALL_PREFIX=~/Fast-DDS/install -DBUILD_SHARED_LIBS=ON
7 cmake --build . --target install
4.编译安装Fast CDR
1 cd ~/Fast-DDS
2 git clone https://github.com/eProsima/Fast-CDR.git
3 mkdir Fast-CDR/build
4 cd Fast-CDR/build
5 cmake .. -DCMAKE_INSTALL_PREFIX=~/Fast-DDS/install
6 cmake --build . --target install
5.编译安装Fast-DDS
1 cd ~/Fast-DDS
2 git clone https://github.com/eProsima/Fast-DDS.git 3 mkdir Fast-DDS/build && cd Fast-DDS/build
4 cmake .. -DCMAKE_INSTALL_PREFIX=~/Fast-DDS/install
5 cmake --build . --target install
6.编译安装Fast-DDS-Gen
1)、先安装java环境
监测是否有java环境
提示找不到Java命令则安装
1 sudo apt update
2 sudo apt install openjdk-11-jdk
可能会出现如下部分内容安装失败的问题,根据提示执行安装命令即可
1 sudo apt install openjdk-11-jre-headless
2)、编译安装Fast-DDS-Gen
1 cd ~/Fast-DDS
2 git clone https://github.com/eProsima/Fast-DDS-Gen.git
3 cd Fast-DDS-Gen
4 ./gradlew assemble
二、使用测试
1.HelloWord测试
之前步骤,我们编译的库并没有放到系统中,而是放在了一个文件夹中,所以这里我们要先设定以下对应的环境变量
1)配置环境变量永久生效
echo 'export LD_LIBRARY_PATH=/home/peifeixiang/Fast-DDS/install/lib' >> ~/.bashrc
配置环境变量临时生效
1 export LD_LIBRARY_PATH=/home/peifeixiang/Fast-DDS/install/lib
2)创建测试用例文件夹
1 mkdir -p ~/Fast-DDS/examples/C++/ && cd ~/Fast-DDS/examples/C++/
3)创建 HellowHikauto 测试用例
mkdir HelloHikauto && cd HelloHikauto
4)创建HelloHikauto.idl文件,编辑内容
struct HelloHikauto
{
unsigned long index;
string message;
};
5)调用我们之前安装好的fastdds-gen工具生成对应的C++ 文件
~/Fast-DDS/Fast-DDS-Gen/scripts/fastddsgen -example CMake ./HelloHikauto.idl
这里-example貌似是指定对应的编译方式,这里指定CMake,之后会在当前目录下生成C++文件,
除了HelloHikauto.idl外,全部为fastdds-gen生成的
其中HelloHikautoPubSubMain是整个程序的main函数。用来启动其他的pub和sub的。
而对应的publisher和subscriber都依赖PubSubTypes文件,代码通俗易懂可直接查阅
可自行修改其中的domainid,topic等内容
2.编译HelloHikauto
mkdir build && cd build
cmake .. -DCMAKE_PREFIX_PATH=~/Fast-DDS/install/ make
再build文件夹下生成了可执行文件
3.新打开两个终端,分别运行publisher与subscriber
./HelloHikauto subscriber
三、主机之间fastdds通讯
准备工作:修改网络配置
ifconfig查看ip,保证两台主机在同一个网段。
2、另一台主机同样配置dds,其中有一台主机运行publisher,另一台主机运行subscriber
参考文件
【FastDDS学习笔记】Ubuntu22上安装fastDDS环境_ubutun安装fast dds与cdr 版本对应关系-CSDN博客
如何在 Ubuntu 20.04 上安装 Java-腾讯云开发者社区-腾讯云
DDS开源库FastDDS介绍 - 安装 - 知乎
来源:https://www.cnblogs.com/peifx/p/17143657.html |