源码编译安装 Fast-DDS
我在跟着鱼香ROS教程搭建Fast-DDS和跑HelloFish例程时碰到了不少问题,在跑通并整理后,我把我修改后的配置过程分享给大家,希望可以帮大家节省一些时间。
鱼香ROS Fast-DDS环境搭建 原文
主要做了以下修改:
- 修改了一些工具的版本;
- 调整了配置的顺序;
- 替换了一些链接;
- 跑HelloFish例程时遇到的一些问题与我的解决方法;
安装工具和依赖库
修改了jdk版本
sudo apt-get install -y python3-colcon-common-extensions python3-vcstool zip openjdk-11-jdk
sudo apt-get install -y libasio-dev
创建目录, 下载仓库
创建目录
mkdir -p fastdds_ws/src && cd fastdds_ws
下载并配置gradle
这里修改了gradle的链接
注意:xxx处修改为fastdds_ws所在路径
wget https://services.gradle.org/distributions/gradle-6.4-bin.zip && unzip gradle-6.4-bin.zip
echo 'export PATH=$PATH:xxx/fastdds_ws/gradle-6.4/bin/' >> ~/.bashrc && source ~/.bashrc
创建fastrtps.repos文件
touch fastrtps.repos
将下面内容复制到fastrtps.repos文件中
repositories:
foonathan_memory_vendor:
type: git
url: https://kkgithub.com/eProsima/foonathan_memory_vendor.git
version: master
fastcdr:
type: git
url: https://kkgithub.com/eProsima/Fast-CDR.git
version: master
fastrtps:
type: git
url: https://kkgithub.com/eProsima/Fast-DDS.git
version: master
fastddsgen:
type: git
url: https://kkgithub.com/eProsima/Fast-DDS-Gen.git
version: master
fastddsgen/thirdparty/idl-parser:
type: git
url: https://kkgithub.com/eProsima/IDL-Parser.git
version: master
运行命令
vcs import src < fastrtps.repos
编译
colcon build
cd src/fastddsgen/ && gradle assemble
配置环境变量
注意:xxx处修改为fastdds_ws所在路径
echo 'source xxx/fastdds_ws/install/setup.bash' >> ~/.bashrc
echo 'export PATH=$PATH:xxx/fastdds_ws/src/fastddsgen/scripts' >> ~/.bashrc
source ~/.bashrc
在跑HelloFish例程时遇到的一些问题
git的代理问题
取消git代理设置
git config --global --unset http.proxy
git config --global --unset https.proxy
无法从github拉取代码
使用镜像源
git clone https://kkgithub.com/fishros/dds_tutorial.git
CMake 版本问题
直接根据报错位置修改成你安装的CMake版本,我编译通过后运行没有出现问题
ids与Fast-DDS版本不对应
使用下面命令重新生成代码,把生成的代码复制到idl_generate目录下
fastddsgen -example CMake HelloFishRos.idl
–examle 后的参数根据你的系统修改
使用你的 HelloFishRos.idl 文件路径替换 HelloFishRos.idl。
没有引入 thread 和 chrono
在发布者与订阅者源代码文件中添加
#include <chrono>
#include <thread>