less than 1 minute read

Adaptive-LIO:一种自适应的slam算法

1. 项目基本信息

2. 复现过程

2.1 ceres错误

  • 先确定所需要的依赖是否已经安装,我这里由于之前安装过好几个版本的,就直接编译看报错了

  • catkin_make 时报错

catkin_make结果

  • 系统找不到 找不到 Ceres Solver 版本 2,我之前将其安装到自定义路径下了,然后进入 src/Adaptive-LIO/cmake/packages.cmake 文件中进行修改,在第62行,修改为:
find_package(Ceres 2 REQUIRED PATHS /home/sd101t/third_party/ceres_solver_2.1.0)

PATHS:指定一个或多个搜索目录。

继续报错

catkin_make结果

  • 原因:

我现在的 Ceres 2.1.0 是 当时用 Eigen 3.3.7 编译的;

但是机器上运行 Adaptive-LIO 的时候,CMake 找到了 Eigen 3.4.0;

两个版本不一致 → CeresConfig.cmake 直接报错并 set(Ceres_FOUND=FALSE)。

安装eigen 3.3.7到自定义路径中,下载地址: https://eigen.tuxfamily.org/index.php?title=Special%3AAllPages&from=&to=&namespace=100,但是发现3.3.7下载不了,不清楚为什么

于是我打算重新编译ceres,下载地址: https://github.com/ceres-solver/ceres-solver/releases/tag/2.1.0 安装教程: http://ceres-solver.org/installation.html#linux

tar zxf ceres-solver-2.1.0.tar.gz
cd ceres-bin_2.1.0/
mkdir build
cd build/
cmake .. -DCMAKE_INSTALL_PREFIX=/home/sd101t/third_party/ceres_2.1.0_install -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF  # 这是我自己之前创建的ceres目录
make -j16
make install

然后cmakelists修改为: 使用 HINTS 与 PATHS 都可以

find_package(Ceres 2 REQUIRED
             HINTS /home/sd101t/third_party/ceres_2.1.0_install)

2.2 C++ 语言特性与你当前编译器标准的冲突

  • 报错:

  • 升级编译器 & 标准,修改cmakelists的内容 set(CMAKE_CXX_STANDARD 17)