0,虚拟机安装:

推荐安装ubuntu 20。ubuntu 22与VMware不兼容,存在无法与主机之间复制粘贴文件的问题。

1.虚拟机镜像下载,下载tdesktop版本:

中科大站点:https://mirrors.ustc.edu.cn/ubuntu-releases/

公司内网:http://mirrors.hikvision.com.cn/search.php?searchkey=Ubuntu+20+desktop&mirror=ubuntu-releases

2.虚拟机安装步骤:https://blog.csdn.net/qq_45657288/article/details/116084337

3.解决虚拟机无法全屏或主机与主机之间无法复制粘贴问题

https://blog.csdn.net/qq_47272824/article/details/120353408

4.安装包无法定位问题(部分情况下可解决)

https://blog.csdn.net/qq_38680752/article/details/102471356

一、虚拟机上配置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环境

1 java -version

提示找不到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 publisher
./HelloHikauto subscriber

三、主机之间fastdds通讯

准备工作:修改网络配置

ifconfig查看ip,保证两台主机在同一个网段。

2、另一台主机同样配置dds,其中有一台主机运行publisher,另一台主机运行subscriber

参考文件

https://blog.csdn.net/u012739527/article/details/124687387

https://cloud.tencent.com/developer/article/1626610

https://zhuanlan.zhihu.com/p/543709913

最新文章

  1. struts2中值栈
  2. jquery tmpl 详解
  3. CSS3 Gradient线性渐变
  4. ZooKeeper之ZAB协议
  5. 《深入理解Nginx》阅读与实践(二):配置项的使用
  6. hdu 2047 阿牛的EOF牛肉串
  7. HDU-4507 吉哥系列故事——恨7不成妻 数位DP
  8. 【转】 U3D DrawCall优化手记 - 夜阑卧听风吹雨
  9. HDU 1269 迷宫城堡 【强联通分量(模版题)】
  10. Spring4 SpringMVC Hibernate4 Freemaker 集成示例
  11. Javascript Array API
  12. Codeforces Round #346 (Div. 2) D Bicycle Race
  13. 自动化测试 Appium之Python运行环境搭建 Part1
  14. Mysql 设置远程连接
  15. XSS漏洞解析(一)
  16. BZOJ.4399.魔法少女LJJ(线段树合并)
  17. ReactNative学习笔记(三)打包、调试、运行等相关介绍
  18. CentOS 7.x编译安装Nginx1.10.3+MySQL5.7.16+PHP5.2 5.3 5.4 5.5 5.6 7.0 7.1多版本全能环境
  19. 线特征---LSD and LBD程序运行(一)
  20. 980. Unique Paths III

热门文章

  1. 【红米note7开bl锁】快乐开锁人
  2. forEach、for in 、 for of三者的区别
  3. CentOS 搭建 samba 服务器并通过 Windows 访问
  4. global与nonlocal关键字、函数名的多种用法、函数的嵌套调用、函数的嵌套定义、闭包函数、装饰器简介
  5. 分析总结一下所有有关打印题目的套路和思路:pat乙级:1109 擅长C, 1008元素循环右移,1050 螺旋矩阵,1027 打印沙漏等等
  6. chai 3D 之网格对象
  7. 前端js下载excel
  8. 一个厂区宿舍管理后台密码爆破 - selenium版
  9. WPF标题栏自定义
  10. 05-python的输入与输出