官方参考教程:
bash
https://github.com/ZJU-FAST-Lab/Fast-Drone-25
解决ceres包没有安装的问题,安装ceres与glog与ddyanmic-reconfigure
bash
Could not find a package configuration file provided by "Ceres" with any of
the following names:
CeresConfig.cmake
ceres-config.cmake
解压3rd_party.zip压缩包
进入glog文件夹打开终端
bash
sudo chmod +x autogen.sh
sudo chmod +x configure
./autogen.sh && ./configure && make && sudo make install
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev
如果遇到liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev这些安装不了,那么就执行:
bash
# 1. 创建并进入下载目录
mkdir -p ~/drone_deps && cd ~/drone_deps
# 2. 下载所有包(走 IPv6 清华源)
# --- 基础数学库 ---
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/main/l/lapack/liblapack-dev_3.9.0-1build1_arm64.deb
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/main/a/atlas/libatlas3-base_3.10.3-8ubuntu7_arm64.deb
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/main/m/metis/libmetis5_5.1.0.dfsg-5_arm64.deb
# --- SuiteSparse 及其全套依赖 ---
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/main/s/suitesparse/libsuitesparse-dev_5.7.1+dfsg-2_arm64.deb
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/main/s/suitesparse/libcxsparse3_5.7.1+dfsg-2_arm64.deb
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/main/s/suitesparse/libamd2_5.7.1+dfsg-2_arm64.deb
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/main/s/suitesparse/libcamd2_5.7.1+dfsg-2_arm64.deb
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/main/s/suitesparse/libbtf1_5.7.1+dfsg-2_arm64.deb
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/main/s/suitesparse/libccolamd2_5.7.1+dfsg-2_arm64.deb
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/main/s/suitesparse/libcholmod3_5.7.1+dfsg-2_arm64.deb
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/main/s/suitesparse/libgraphblas3_5.7.1+dfsg-2_arm64.deb
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/main/s/suitesparse/libklu1_5.7.1+dfsg-2_arm64.deb
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/main/s/suitesparse/libldl2_5.7.1+dfsg-2_arm64.deb
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/main/s/suitesparse/libmongoose2_5.7.1+dfsg-2_arm64.deb
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/main/s/suitesparse/libumfpack5_5.7.1+dfsg-2_arm64.deb
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/main/s/suitesparse/librbio2_5.7.1+dfsg-2_arm64.deb
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/main/s/suitesparse/libspqr2_5.7.1+dfsg-2_arm64.deb
# --- Ceres Solver ---
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/universe/c/ceres-solver/libceres1_1.14.0-4ubuntu1.1_arm64.deb
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/universe/c/ceres-solver/libceres-dev_1.14.0-4ubuntu1.1_arm64.deb
# --- 辅助库 (Gflags, Glog, Gtest) ---
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/universe/g/gflags/libgflags2.2_2.2.2-1build1_arm64.deb
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/universe/g/gflags/libgflags-dev_2.2.2-1build1_arm64.deb
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/universe/g/google-glog/libgoogle-glog0v5_0.4.0-1build1_arm64.deb
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/universe/g/google-glog/libgoogle-glog-dev_0.4.0-1build1_arm64.deb
wget https://mirrors6.tuna.tsinghua.edu.cn/ubuntu-ports/pool/universe/g/googletest/libgtest-dev_1.10.0-2_arm64.deb
sudo dpkg -i --force-all *.deb
进入ceres文件夹打开终端
bash
mkdir build
cd build
cmake ..
sudo make -j4
sudo make install
sudo apt-get install ros-noetic-ddynamic-reconfigure
如果执行这个报错:sudo apt-get install ros-noetic-ddynamic-reconfigure,那么执行:
bash
sudo apt --fix-broken install -y
解决 realsense2 CMake 配置错误:fastcdr/fastrtps 缺失问题
在编译集成 Intel RealSense 相机的 ROS 项目时,遇到了一个极具迷惑性的 CMake 错误,本文记录问题排查过程、根因分析及最终解决方案,避免大家走弯路。
一、问题现象
编译项目时出现如下 CMake 警告和错误:
CMake Warning at realflight_modules/realsense-ros/realsense2_camera/CMakeLists.txt:44 (find_package):
Found package configuration file:
/usr/lib/x86_64-linux-gnu/cmake/realsense2/realsense2Config.cmake
but it set realsense2_FOUND to FALSE so package "realsense2" is considered
to be NOT FOUND. Reason given by package:
The following imported targets are referenced, but are missing: fastcdr
fastrtps
CMake Error at realflight_modules/realsense-ros/realsense2_camera/CMakeLists.txt:48 (message):
Intel RealSense SDK 2.0 is missing, please install it from https://github.com/IntelRealSense/librealsense/releases

二、错误排查的坑:被表象误导
看到错误提示中明确提到 fastcdr 和 fastrtps 缺失,第一反应是需要安装这两个依赖库,于是尝试下载源码编译安装,但过程中发现:
- 这两个库主要用于 ROS 消息的转发,和 RealSense 相机功能本身无直接关联;
- 新版本的
fastcdr/fastrtps源码编译后不生成.pc文件,即使安装完成,项目依然无法索引到,问题根本无法解决; - 这两个库没有官方的
apt安装方式,源码编译路径越走越偏。
三、问题根因
实际问题并非真的缺失 fastcdr/fastrtps,而是 librealsense2 v2.56.4+ 版本的已知 Bug :其 CMake 配置文件中错误地引入了 fastcdr 和 fastrtps 作为依赖,但这两个依赖并未被正确处理,导致即使安装了完整的 RealSense SDK,CMake 仍判定 realsense2 未找到。
四、解决方案(推荐方案一)
方案一:降级 librealsense2 至稳定版本
v2.50.0 及以上版本存在该 Bug,降级到 v2.48.0 可彻底解决问题,步骤如下:
1. 重新安装 RealSense SDK v2.48.0
bash
# 克隆指定版本的源码
cd ~
git clone -b v2.48.0 https://github.com/IntelRealSense/librealsense

没有科学上网环境的话,下载可能会很慢。
后面我尝试用有线网络从之前虚拟机中复制到香橙派中,这个速度很快:

下载完成之后,进入刚刚克隆的目录:
bash
cd librealsense

bash
# 安装编译依赖
sudo apt-get install -y libudev-dev pkg-config libgtk-3-dev
sudo apt-get install -y libusb-1.0-0-dev pkg-config
sudo apt-get install -y libglfw3-dev
sudo apt-get install -y libssl-dev

bash
# 配置 USB 规则(解决相机权限问题)
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && udevadm trigger

bash
# 编译安装
mkdir build
cd build

bash
cmake ../ -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLES=true
sudo make uninstall # 卸载旧版本
make clean && make -j8 # 若编译卡住,改用 -j4 或增大内存至 8G
sudo make install
编译会花费大量时间,因为是移动端上编译:


出现报错:make2: *** CMakeFiles/libcurl.dir/build.make:92: libcurl/src/libcurl-stamp/libcurl-download Error 1
部分机型,编译到80%时会卡住:
bash
fatal: unable to access 'https://github.com/curl/curl.git/': Failed to connect to github.com port 443: No route to host
Cloning into 'libcurl'...
fatal: unable to access 'https://github.com/curl/curl.git/': Failed to connect to github.com port 443: No route to host
Cloning into 'libcurl'...
fatal: unable to access 'https://github.com/curl/curl.git/': Failed to connect to github.com port 443: No route to host
-- Had to git clone more than once:
3 times.
CMake Error at /home/tibos/code/librealsense/build/libcurl/tmp/libcurl-gitclone.cmake:31 (message):
Failed to clone repository: 'https://github.com/curl/curl.git'
make[2]: *** [CMakeFiles/libcurl.dir/build.make:92: libcurl/src/libcurl-stamp/libcurl-download] Error 1
make[1]: *** [CMakeFiles/Makefile2:1090: CMakeFiles/libcurl.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

为解决这个librealsense 中的 curl 功能依赖,改功能仅用于「固件自动下载」「远程设备管理」等非核心功能,禁用后不影响相机的基础使用(如深度流、彩色流采集),完全适配嵌入式场景的核心需求。
方法一(推荐):
回到build文件夹:
bash
cmake ../ -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF -DBUILD_FW_UPDATER=OFF -DDOWNLOAD_FW_FILES=OFF -DENABLE_CURL=OFF -DUSE_SYSTEM_LIBS=ON -DENABLE_OPENGL=OFF -DCMAKE_CXX_FLAGS="-march=armv8-a"
或者
bash
cmake .. -DCHECK_FOR_UPDATES=false
然后
bash
make -j8
sudo make install

原理是禁用掉curl相关的编译依赖。
方法二:
此时我们需要下载另外一个东西:

直接去 https://github.com/curl/curl 下载curl.zip。
注释掉 ~/librealsense/CMake 文件下的 external_libcurl.cmake 的 GIT_REPOSITORY "git://github.com/curl/curl.git" 。即在 GIT_REPOSITORY "git://github.com/curl/curl.git"前加#。
bash
cd CMake/
vim external_libcurl.cmake

并将提前下载后的 curl.zip 解压后 改名为 libcurl ,放入到 ~/librealsense/build/third-party。

由此可跳过git clone libcurl 失败的问题。
感觉直接下载zip比git clone快。
2. 测试 SDK 是否安装成功
将屏幕查到香橙派上,此时可以运行命令打开realsense-viewer:
bash
realsense-viewer
若能正常打开 RealSense 可视化工具,说明 SDK 安装无误。
或者没有屏幕的话,通过 ldconfig 查看已加载的库版本
bash
ldconfig -p | grep realsense2

3. 修改 ROS 项目中 RealSense 的版本配置
bash
# 清理旧编译文件
cd ~/Fast-Drone-250
catkin_make clean
catkin_make
此时会报错提示 SDK 版本不匹配,并指向对应的 CMakeLists.txt 文件路径:

接下来修改版本:
bash
sudo vim Fast-Drone-250/src/realflight_modules/realsense-ros/realsense2_camera/CMakeLists.txt
将文件中对应的 2.50.0 改为 2.48.0:

保存后重新编译:
bash
cd ~/Fast-Drone-250
catkin_make clean
catkin_make



方案二(不推荐):源码编译 fastcdr/fastrtps
不建议采用此方案,原因:
- 新版本库无
.pc文件,编译后项目无法索引; - 需手动补丁配置,步骤繁琐且易引入新问题;
- 本质是解决表象而非根因,后续升级 SDK 可能复现问题。
方案三:删除realsense-viewer的包
如果不需要用realsense的相机,在src文件里面有两个包,一个是VIN-Fusion,另一个是realsense-ros,这两个都是要用SDK驱动的。不用相机的友友们可以把这两个包给删掉后再编译。
五、参考资料
- 问题解决参考:
- https://blog.csdn.net/Gastby_4/article/details/151248073
- https://blog.csdn.net/u012742444/article/details/120067772
- https://blog.csdn.net/kjb655/article/details/151579873?ops_request_misc=%257B%2522request%255Fid%2522%253A%252256ee626d58a463dd6379252f9a6257ea%2522%252C%2522scm%2522%253A%252220140713.130102334...%2522%257D\&request_id=56ee626d58a463dd6379252f9a6257ea\&biz_id=0\&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend\~default-2-151579873-null-null.142^v102^pc_search_result_base2\&utm_term=ego planner mid360\&spm=1018.2226.3001.4187
总结
fastcdr/fastrtps缺失是 librealsense2 v2.50.0+ 的 Bug 表象,而非真实依赖缺失;- 最优解决方案是降级 librealsense2 至 v2.48.0,并同步修改 ROS 项目中对应的版本配置;
- 避免单独编译 fastcdr/fastrtps,该路径无法解决核心问题且徒增复杂度。