1. 环境介绍
本文记录本人在 NVIDIA Jetson Orin NX 平台部署 FAST-LIVO2 过程中遇到的 Sophus 编译失败问题以及解决办法。
2. 问题现象
在编译 FAST-LIVO2 时,出现:
Target "Sophus::Sophus" not found导致无法继续编译。
3. 问题原因分析
FAST-LIVO2依赖Sophus库进行李群计算,包括:
- SO(3)旋转表示
- SE(3)位姿变换
- IMU积分
- 状态估计
FAST-LIVO2中的CMake文件通过:
find_package(Sophus REQUIRED)寻找Sophus。
但是之前安装的Sophus版本虽然能够编译,但是安装后没有生成正确的CMake配置文件:
SophusConfig.cmake导致FAST-LIVO2无法识别。
4. 解决方法
(1)删除旧版本Sophus
进入工作空间:
cd ~/FASTLIVO2_WS/src删除:
rm -rf Sophus(2)重新安装Sophus 1.22.10
下载:
git clone https://github.com/strasdat/Sophus.git进入:
cd Sophus切换版本:
git checkout 1.22.10(3)编译安装
创建build目录:
mkdir build cd build编译:
cmake .. make -j4安装:
sudo make install4. 设置Sophus路径
安装完成后发现:Sophus并不在:
/usr/local/lib/cmake/Sophus而是在:
/usr/local/share/sophus/cmake/里面包含:
SophusConfig.cmake SophusConfigVersion.cmake SophusTargets.cmake因此设置:
export Sophus_DIR=/usr/local/share/sophus/cmake5. FAST-LIVO2重新编译
最终编译通过
Finished <<< sophus Finished <<< fast_livo说明Sophus问题解决。