lio-sam学习笔记(一)

前言:

对于lio-sam框架的安装配置。

每一回不同框架的配置真是要了老命了。。。

一、安装依赖

官方github:

GitHub - TixiaoShan/LIO-SAM: LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping

lio-sam主要有两个依赖:ROS和gtsam,两个都踩了大坑。。。

首先我安装成功catkin_make了,但不能roslaunch lio-sam run.launch,运行就报错。

1.ros

因为系统是18.04,安装的melodic,而且之前跑lego-loam的时候,ros没有出现问题。所以我当时直接忽视了readme上面对于ros部分的配置。

然后安装到后面运行时就出现了这个错误:

lio-sam学习笔记(一)_第1张图片

第一次翻看log的时候没有看全,没有看到前面的ROS pathxxx的内容,然后就一直解决下面的两个process die。结果这个错误一直都不能解决,然后才发现是官方ros中还有三个配置没有安装。

ROS (tested with Kinetic and Melodic. Refer to #206 for Noetic)

sudo apt-get install -y ros-melodic-navigation
sudo apt-get install -y ros-melodic-robot-localization
sudo apt-get install -y ros-melodic-robot-state-publisher

安装完成后关于ROS部分的报错就没有了,下面开始真正的折磨。

2.gtsam

这个的配置真的是要了命了。。。

我之前安装的是lego-loam的时候的适配版本,是gtsam-4.0.0-alpha2吧。然后运行时报错:

lio-sam学习笔记(一)_第2张图片

 然后在网上找解决方式,当时是说有如下几个解决方式:

第一个,在编译安装gtsam的时候,将SSE关闭:

mkdir build && cd build
cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..
sudo make install -j8

然后还是报错。

第二个,是把 libmetis.so放到/opt/ros/melodic/lib里面或者放到usr/lib里面。

还是报错。

第三个,是说没有安装依赖:

https://github.com/TixiaoShan/LIO-SAM/issues/271

sudo add-apt-repository ppa:borglab/gtsam-release-4.0
sudo apt install libgtsam-dev libgtsam-unstable-dev

安装了还是报错。

最后看别人说有可能是版本问题。4.0.0、4.0.2我全部都安装了一遍,还是报错。佛了。。。

现在准备安装4.0.3试试。

wget -O ~/下载/gtsam4.0.3.zip https://github.com/borglab/gtsam/archive/4.0.3.zip
cd /下载

然后解压缩,之后在CMakeLists.txt中设置GTSAM_USE_SYSTEM_EIGEN为ON

 这样使用本地的eigen版本,避免到时候冲突。

之后安装:

mkdir build && cd build
cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..
sudo make install -j8

还是报错,无解了。。。

发现了一个问题

catkin_make in ROS Noetic [Error] · Issue #206 · TixiaoShan/LIO-SAM · GitHub

在gtsam官网:

Get Started | GTSAM

lio-sam学习笔记(一)_第3张图片

 发现有两种安装方式,一种是源码安装,一种是命令行安装,如果有使用了命令行安装又使用了源码安装,会不会报错?因为命令行安装了这个是4.0.3版本,而源码不一定是这个版本,会不会冲突了?不知道为什么,准备重装系统了。

本来准备使用docker的,突然发现,折腾半天发现docker里面的不能打开rviz,打开就报这个错误:

[ INFO] [1675246715.998600346]: rviz version 1.13.17
[ INFO] [1675246715.998690442]: compiled against Qt version 5.9.5
[ INFO] [1675246715.998718169]: compiled against OGRE version 1.9.0 (Ghadamon)
[ INFO] [1675246716.007887674]: Forcing OpenGl version 0.
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast

找了一圈资料,别人说是没有在docker容器内安装n卡驱动,然后又根据几篇文章安装n卡驱动:
Docker实践:使用Docker搭建个人开发环境_MAVER1CK的博客-CSDN博客_docker搭建开发环境

还是报这个错误,最后在这里发现是因为一键安装ros里面没有对于docker有显卡适配。

docker安装ros后,gazebo和rviz打不开 | 鱼香ROS

是n卡驱动的问题,我佛了。准备重装系统了,适配真的要花费好多时间。

又找到了一个可能的原因,有可能是多版本的gtsam冲突的问题,然后apt-install安装的版本没有卸载干净,在跑gtsam中example里面的SFMExample.cpp报错:

undefined symbol: _ZN5gtsam3SO36ExpmapERKN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEENS_16OptionalJacobianILi3ELi3EEE

 给了我提示。

Failing examples on 20.04 · Issue #772 · borglab/gtsam · GitHub

Got it - that definitely makes sense since I might have installed GTSAM before with apt-get.

  • How would I check for and remove a global install of GTSAM?

By this I mean should I write a short C++ program to see what version of GTSAM is being used?

  • Why would having multiple versions cause an error - is it the dynamic linking to the GTSAM .so file?
  1. If you installed with apt-get, uninstall
  2. Search for libgtsam.xxxxx in /usr/lib and /usr/local/lib, make sure there is none
  3. make sure there is no /usr/include/gtsam and /usr/local/include/gtsam
  4. Yes, it's a dynamic library, for details see ldconfig documentation.

 Also check out apt purge

经过上面的提示,我把系统里面关于gtsam的.so、lib什么全部rm了。

再次重新安装gtsam4.02版本。

然后还是报同样的错误。。。但前面跑SFMExample.cpp就没有报错了,应该就是gtsam版本的问题。

你可能感兴趣的:(slam,学习)