对于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,运行就报错。
因为系统是18.04,安装的melodic,而且之前跑lego-loam的时候,ros没有出现问题。所以我当时直接忽视了readme上面对于ros部分的配置。
然后安装到后面运行时就出现了这个错误:
第一次翻看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部分的报错就没有了,下面开始真正的折磨。
这个的配置真的是要了命了。。。
我之前安装的是lego-loam的时候的适配版本,是gtsam-4.0.0-alpha2吧。然后运行时报错:
然后在网上找解决方式,当时是说有如下几个解决方式:
第一个,在编译安装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
发现有两种安装方式,一种是源码安装,一种是命令行安装,如果有使用了命令行安装又使用了源码安装,会不会报错?因为命令行安装了这个是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?
- If you installed with apt-get, uninstall
- Search for libgtsam.xxxxx in /usr/lib and /usr/local/lib, make sure there is none
- make sure there is no /usr/include/gtsam and /usr/local/include/gtsam
- 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版本的问题。