Ego-Planner编译踩坑实录:手把手解决librealsense与Fast DDS的版本地狱

张开发
2026/4/17 12:55:51 15 分钟阅读

分享文章

Ego-Planner编译踩坑实录:手把手解决librealsense与Fast DDS的版本地狱
Ego-Planner编译实战深度解决librealsense与Fast DDS的版本冲突陷阱当你在Ubuntu 20.04环境下尝试编译Ego-Planner时突然遭遇CMake报错realsense2_FOUND to FALSE或missing fastcdr这往往意味着你正踏入一个典型的依赖版本地狱。本文将带你深入问题根源并提供两种经过验证的解决方案。1. 问题诊断为什么librealsense与Fast DDS会冲突librealsense SDK从v2.56.4版本开始其CMake配置文件错误地引入了对Fast DDS包含fastcdr和fastrtps组件的依赖。但实际上根本矛盾librealsense的相机驱动功能完全不需要Fast DDS版本陷阱Ubuntu官方仓库不提供Fast DDS的预编译包错误表象CMake报错会同时提示realsense2 not found和fastcdr missing容易误导开发者关键诊断命令# 检查已安装的librealsense版本 dpkg -l | grep librealsense2 # 验证CMake是否能找到realsense2包 cmake -DCMAKE_PREFIX_PATH/usr/lib/x86_64-linux-gnu/cmake -P FindRealsense2.cmake2. 解决方案一librealsense降级法推荐这是最稳妥的方案适合大多数开发场景。2.1 完全卸载现有版本首先彻底清理可能存在的残留sudo apt purge librealsense2* sudo rm -rf /usr/lib/x86_64-linux-gnu/cmake/realsense2 sudo rm -rf /usr/local/lib/cmake/realsense22.2 源码编译v2.48.0版本v2.48.0是最后一个不依赖Fast DDS的稳定版本git clone -b v2.48.0 https://github.com/IntelRealSense/librealsense cd librealsense mkdir build cd build cmake .. -DCMAKE_BUILD_TYPERelease -DBUILD_EXAMPLESOFF make -j$(nproc) sudo make install重要验证步骤# 检查版本号 realsense-viewer | grep SDK Version # 确认库文件位置 ls /usr/local/lib | grep realsense2.3 修改realsense-ros的CMakeLists定位到你的Ego-Planner工作空间nano src/realflight_modules/realsense-ros/realsense2_camera/CMakeLists.txt找到类似以下内容并修改版本要求find_package(realsense2 2.50.0 REQUIRED) 改为 find_package(realsense2 2.48.0 REQUIRED)3. 解决方案二完整安装Fast DDS依赖链适合需要最新版librealsense的特殊场景但过程较为复杂。3.1 基础环境准备sudo apt update sudo apt install -y \ git gcc g libssl-dev \ libasio-dev libtinyxml2-dev3.2 解决CMake版本冲突Ubuntu 20.04默认CMake 3.16不满足要求# 安装最新版CMake wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc | sudo apt-key add - sudo apt-add-repository deb https://apt.kitware.com/ubuntu/ focal main sudo apt install cmake3.3 编译安装foonathan_memoryFast DDS的隐藏依赖git clone https://github.com/foonathan/memory.git cd memory mkdir build cd build cmake .. -DCMAKE_BUILD_TYPERelease sudo cmake --build . --target install3.4 完整Fast DDS安装流程git clone --recursive https://github.com/eProsima/Fast-DDS.git cd Fast-DDS mkdir build cd build cmake .. -DTHIRDPARTYON -DBUILD_SHARED_LIBSON make -j$(nproc) sudo make install环境变量配置echo export LD_LIBRARY_PATH/usr/local/lib:$LD_LIBRARY_PATH ~/.bashrc source ~/.bashrc4. 编译验证与常见问题排查无论采用哪种方案最后都需要验证cd ~/catkin_ws catkin_make clean catkin_make可能遇到的后续问题GLIBCXX版本错误sudo apt install libstdc6Python绑定冲突pip uninstall pyrealsense2USB权限问题sudo cp ~/librealsense/config/99-realsense-libusb.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules sudo udevadm trigger性能优化参数# 在catkin_make时添加这些参数可加速编译 catkin_make -DCMAKE_BUILD_TYPERelease -j$(nproc)5. 开发环境配置建议为长期稳定开发建议使用docker隔离环境docker pull intelrealsense/librealsense:2.48.0VS Code配置{ cmake.configureArgs: [ -DCMAKE_PREFIX_PATH/usr/local/lib/cmake ] }ROS工作空间管理技巧# 快速切换工作空间 echo source ~/ego_planner_ws/devel/setup.bash ~/.rosrc echo source ~/.rosrc ~/.bashrc在真实机器人部署时记得检查内核模块兼容性modinfo uvcvideo | grep version: dmesg | grep -i realsense

更多文章