自己配置环境的时候遇到了很多问题,所用系统为ubuntu18.04.
1.g++与gcc版本
这个涉及到安装另一个包gtsam可能会带来的问题。由于之前测试cartography自己安装了gcc-9版本并设置成了默认,导致在编译安装gtsam时出现错误
error: invalid initialization of reference of type ‘const std::vector<bool>&’ from expression of type ‘const std::vector<long unsigned int>’
124 | const std::vector<bool>& mask() const { return mask_; }
将gcc/g++版本切回到默认的7版本解决,
sudo update-alternatives --list gcc 查询系统安装的gcc版本,g++同理
sudo update-alternatives --config gcc 手动选择默认的版本,g++同理
2.gtsam安装
适配于liosam的版本经测试为4.0.2。最开始安装用的github上默认下载的4.3,后续编译liosam遇到大量报错。
后又切到4.0.0版本,但在编译安装gtsam时会显示好几个测试用例不通过的错误,
虽然看有人说不影响,但为了防止未知的问题,多次测试后选择4.0.2,全程飘绿无任何问题。
安装过程需要注意以下问题,
#!bash
$ cd gtsam-1.X.X #替换成自己的目录
$ mkdir build
$ cd build
$ cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..
先执行到最后一步,然后在build文件夹里,找到CmakeCache.txt,找到
-
GTSAM_USE_SYSTEM_EIGEN:BOOL=OFF
把OFF改为ON即可,不然编译安装gtsam中会报错如下:
/usr/local/include/gtsam/base/Vector.h:72:1: error: static assertion failed: Error: GTSAM was built against a different version of Eigen
static_assert(
完成这些后,再去执行
sudo make install -j8
这一章的时候,gtsam的文件夹我放在了主目录,这与下一个问题有关,当时看github上有人这么解决的,但好像没什么用,这里单独说一句记录一下。
3.liosam安装
终于到最激动人心的时候,但是安装后,运行run.launch文件时,出现以下报错:
[lio_sam_imuPreintegration-2] process has died [pid 1671, exit code 127, cmd /home/shuai/subject/catkin_lio_ws/devel/lib/lio_sam/lio_sam_imuPreintegration __name:=lio_sam_imuPreintegration __log:=/home/shuai/.ros/log/635269ee-46bc-11ed-a61b-1c697af31044/lio_sam_imuPreintegration-2.log].
[lio_sam_mapOptmization-5] process has died [pid 1672, exit code 127, cmd /home/shuai/subject/catkin_lio_ws/devel/lib/lio_sam/lio_sam_mapOptmization __name:=lio_sam_mapOptmization __log:=/home/shuai/.ros/log/635269ee-46bc-11ed-a61b-1c697af31044/lio_sam_mapOptmization-5.log].
原因是因为没有找到安装的库文件,所以将 /usr/local/lib 目录中libmetis.so添加到/opt/ros/melodic/lib/。解决方法:
cd /usr/local/lib/
sudo cp libmetis.so /opt/ros/melodic/lib/ //将库文件复制到 ROS下的库文件中
参考文献:
亲自部署LIO-SAM、LVI-SAM的全过程经历01——跑通_[lio_sam_imupreintegration-1] process has died [pi-CSDN博客
ubuntu18.04安装gtsam过程及报错error: invalid initialization of reference of type ‘const std::vector<bool>&’-CSDN博客Ubuntu18.04安装gtsam,以及注意事项-CSDN博客