问题描述 一
Same issue when upgrading ROS Melodic code from 4.0.2 to 4.0.3 on Ubuntu 18.04. ROS code compiled correctly however at runtime gave error:
error while loading shared libraries: libmetis-gtsam.so: cannot open shared object file: No such file or directory
解决方案
Adding export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH
to ~/.bashrc
resolved the issue as mentioned above.
source ~/.bashrc
问题描述二
编译LIO-SAM功能包时遇到错误提示:
static assertion failed: Error: GTSAM was built against a different version of Eigen
原因
这是由于gtsam自带eigen版本与系统ros中自带eigen版本之间冲突问题,需要修改gtsam包的CMakeLists.txt文件,使其编译时使用系统eigen,然后重新编译安装gtsam。
解决方法
解决办法就是让GTSAM编译的时候使用系统的eigen。
首先看一下gtsam编译在执行了cmake …后的一段日志信息:
从这个日志信息可以看出,GTSAM默认编译并没有使用系统eigen。
在gtsam的CMakeLists.txt文件中找到:
if(GTSAM_USE_SYSTEM_EIGEN)
find_package(Eigen3 REQUIRED)
…
在 if(GTSAM_USE_SYSTEM_EIGEN)
上方添加一句:
set(GTSAM_USE_SYSTEM_EIGEN ON)
然后重新编译安装GTSAM即可。
问题描述 三
保存地图,需要对config/params.yaml文件进行如下修改:
# 保存地图设置为true
savePCD: true # https://github.com/TixiaoShan/LIO-SAM/issues/3
# 设置地图保存路径
savePCDDirectory: "自己设置的路径" # in your home folder, starts and ends with "/". Warning: the code deletes "LOAM" folder then recreates it. See "mapOptimization" for implementation
更改了配置文件后,还需更改一下_TIMEOUT_SIGINT
参数,否则可能造成地图保存失败(这是由于ros会在_TIMEOUT_SIGINT
秒后关闭ros节点,但是地图过大时,保存地图会花费一些时间,如果_TIMEOUT_SIGINT
太小,很可能造成地图还未保存,节点就已经关闭了,所以需要适当调高_TIMEOUT_SIGINT
值),具体方法如下:
sudo gedit /opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/nodeprocess.py
找到_TIMEOUT_SIGINT并调整数值(默认15s,我的参考值60s)
参考:github:https://github.com/TixiaoShan/LIO-SAM/issues/3