Ubuntu16.04编译测试LVI_SAM过程

1、前期准备

ROS、Eigen(由于之前相关使用,安装Eigen3.4)等。

2、重点依赖安装

(1)gtsam安装

gtsam是一个优化的库,有的教程描述安装gtsam-4.0.2版本,但是与现有系统冲突,因此改为了gtsam-4.0.0-alpha2版本安装,可通过。具体安装方式

mkdir build && cd build                                                           # 创建build文件夹
cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..    #注意参数
sudo make install

(2)ceres安装

ceres是一个用于雷达后端优化的库,教程上建议使用ceres-solver-1.14.0,但是出现如下错误:`

/home/seivl/Download/ceres-solver-1.14.0/internal/ceres/gtest/gtest.h:10445:35: error: variable or field ‘it’ declared void
   for (typename C::const_iterator it = container.begin();
                                   ^
internal/ceres/CMakeFiles/residual_block_test.dir/build.make:81: recipe for target 'internal/ceres/CMakeFiles/residual_block_test.dir/residual_block_test.cc.o' failed

这是因为与Eigen3.4冲突(ceres-solver-1.14.0适配于Eigen3.2.5),下载ceres-solver-2.0.0进行安装即可。安装过程为:

mkdir build && cd build      
cmake..
make
sudo make install

3、LVI_SAM 编译

(1)错误一

c++: internal compiler error: Killed (program cc1plus)

编译过程出现上述错误,有的博客说是内存不够,采用的增加虚拟内存的方式,具体见
https://blog.csdn.net/Und_waasj/article/details/128384564
采用后,仍有些卡顿,故我在开发环境中编译(qtcreator)通过后,再采用catkin_make编译。

(2)错误二

Specified unknown feature "cxx_std_14" for target "lvi_sam_visual_loop".
Specified unknown feature "cxx_std_14" for target "lvi_sam_visual_odometry".

解决办法:
将Cmakelist.txt中 set(CMAKE_CXX_FLAGS "-std=c++11")修改为set(CMAKE_CXX_FLAGS "-std=c++14"),再进行编译即可,因为原本C++11版本过低。虽然修改后仍会提示错误,但是能够编译通过。

4、LVI_SAM数据集测试

(1)数据集下载

官方地址:
https://drive.google.com/drive/folders/1q2NZnsgNmezFemoxhHnrDnp1JV_bqrgV?usp=sharingy也有网友分享的网盘下载链接
https://pan.baidu.com/s/1-xDTEZED02twMXnUg1Bosg;提取码:088v
https://pan.baidu.com/s/1wcq3C7MPmda7Pg0-j1tkvA;提取码:g2q7

(2)set(CMAKE_BUILD_TYPE “Release”)不可更改问题

Cmakelist.txt中的Release如果更改为Debug模式,会导致数据集跑起来出现夸张飘逸问题,无法建图,不能更改,暂时没有找到原因。

参考资料

https://mp.weixin.qq.com/s?__biz=MzU1NjEwMTY0Mw==&mid=2247532503&idx=1&sn=f0bb96e8e5970dc8c07734ccad047243&chksm=fbc806b3ccbf8fa5a85713f94ee29d86d814496c69bcf246bd1dc5957d91851a891bfc41c8db&scene=27

10-13 14:52