天天看點

運作LIO-SAM踩坑問題

問題描述 一

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 …後的一段日志資訊:

運作LIO-SAM踩坑問題

從這個日志資訊可以看出,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即可。

運作LIO-SAM踩坑問題

問題描述 三

儲存地圖,需要對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

繼續閱讀