当前位置:首页 » 《资源分享》 » 正文

Ubuntu20.04安装LeGO-LOAM和LIO-SAM

3 人参与  2024年05月12日 18:25  分类 : 《资源分享》  评论

点击全文阅读


Ubuntu20.04安装LIO-SAM真是挺折磨人的,填了一路的坑,在此记录分享一下,为大家安装编译算法提供一个全面的参考。

目录

1. GTSAM安装

1.1 GTSAM安装准备

1.1.1 目录/usr/local/lib下清理gatsam

1.1.2 目录/opt/ros/noetic/lib/下清理gtsam

1.2 GTSAM安装过程

2. LIO-SAM算法依赖项安装

3. LeGO-LOAM算法编译问题解决

3.1 问题1----“index”

3.2 问题2---找不到-lBoost::

3.3 问题3---opencv/cv.h

3.4 问题4---PCL报错

4. LIO-SAM算法编译及运行问题解决

4.1 问题1---opencv/cv.h

4.2 问题2---PCL报错

4.3 问题3---error: ‘class std::unordered_map >’ has no member named ‘serialize’  

4.4 问题4---找不到-lBoost::

4.5 问题5---报错[lio_sam_imuPreintegration-2]

5. 运行LeGO-LOAM和LIO-SAM


1. GTSAM安装

1.1 GTSAM安装准备

由于笔者之前在安装LeGO-LOAM算法时安装了4.2版本的GTSAM,后续又辗转安装了4.1版本的GTSAM、4.02和4.03版本的GTSAM,导致在安装LIO-SAM时需要填很多坑。

所以,在此提醒大家,如果已经安装了较高版本的GTSAM,后续LIO-SAM在编译时不报错,在跑数据集时,终端一直提示error:[lio_sam_mapOptmization-5] ........[pid 29650, exit code -6,这是由于gtsam版本混乱造成的,请先清理一下gtsam,具体操作如下:

1.1.1 目录/usr/local/lib下清理gatsam

usr/local/lib目录下打开终端,删除下图中选中的文件,高版本的gtsam可能还会有libmetis-gtsam.so等文件需要删除,将名字带有gtsam的文件删除即可:

删除指令:

sudo rm -f 文件名

1.1.2 目录/opt/ros/noetic/lib/下清理gtsam

opt/ros/noetic/lib目录下打开终端,删除下图中选中的libmetis.so文件,安装了高版本的gtsam,如果看到libmetis-gtsam.so文件,同样需要删除。

删除指令同上:

sudo rm -f 文件名

至此,GTSAM安装准备工作完成。

1.2 GTSAM安装过程

查阅了大多数论坛博客,有说ubuntu20.04需要安装4.03版本以上的GTSAM,有说4.2版本GTSAM满足编译要求的。实际上确实是满足编译要求,但是运行时容易产生[lio_sam_mapOptmization-5]各种报错不好解决。

笔者在清理GTSAM后,选择安装了低版本的GTSAM,4.0.0-alpha2版本。

下载GTSAM4.0.0-alpha2指令:

wget https://github.com/borglab/gtsam/archive/4.0.0-alpha2.zip

为方便,直接分享一下笔者的GTSAM4.0.0-alpha2文件。

链接: https://pan.baidu.com/s/12WQHZN-B5fukpmYVe1pjdQ?pwd=auty 提取码: auty

将gtsam-4.0.0-alpha2提取出来,放到主目录下即可,根据自己喜好放到指定位置:

提取

放到指定位置

然后,在gtsam-4.0.0-alpha2目录下打开终端,输入下列指令:

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

第2步,有推荐替换使用下面指令的,但是笔者没有使用也没有什么影响,所以建议不用

cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF -DGTSAM_USE_SYSTEM_EIGEN=ON ..

至此,GTSAM4.0.0-alpha2安装完成,我们接下来需要安装算法的依赖项。

2. LIO-SAM算法依赖项安装

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

sudo apt-get install ros-noetic-fake-localization

sudo apt-get install ros-noetic-robot-localization

3. LeGO-LOAM算法编译问题解决

安装GTSAM4.0.0-alpha2后,LeGO-LOAM算法编译会存在以下几个问题:

3.1 问题1----“index”

/usr/include/pcl-1.10/pcl/filters/voxel_grid.h:340:21: error: ‘Index’ is not a member of ‘Eigen’ 340 | for (Eigen::Index ni = 0; ni < relative_coordinates.cols (); ni++)
我们需要在指定目录中,修改voxel_grid.h文件:

在该目录下,打开终端输入指令:

sudo gedit voxel_grid.h

把340和699行的

for (Eigen::Index ni = 0; ni < relative_coordinates.cols (); ni++)

改为:

for (int ni = 0; ni < relative_coordinates.cols (); ni++)

修改后,记得点击保存。此类问题可以参照下面链接:

LEGO-LOAM的编译与数据集调试_牙刷与鞋垫的博客-CSDN博客文章浏览阅读561次,点赞2次,收藏4次。在已开启终端中输入以下内容。https://blog.csdn.net/qq_42087574/article/details/129555213

3.2 问题2---找不到-lBoost::

在LeGO-LOAM的CmakeList.txt中添加依赖项,即添加下列代码:

find_package(Boost REQUIRED COMPONENTS timer thread serialization chrono)
find_package(Boost REQUIRED COMPONENTS system filesystem date_time)

具体如下:

3.3 问题3---opencv/cv.h

修改utility.h文件,注释#include <opencv/cv.h>,并添加#include<opencv2/imgproc.hpp>:

3.4 问题4---PCL报错

pcl报错问题有两种情况,一种是需要将CmakeList.txt中c++11改为14,具体如下:

情况一

解决方法:

set(CMAKE_CXX_FLAGS "-std=c++14")

另一种情况是因为pcl链接冲突,需要将CmakeList.txt中pcl依赖项注释:

情况二

解决方法:

注释find_package(PCL REQUIRED QUIET)

如果还有其他问题,可以参照笔者之前的LeGO-LOAM安装笔记。

4. LIO-SAM算法编译及运行问题解决

4.1 问题1---opencv/cv.h

解决方法:

将utility.h中#include <opencv/cv.h>注释,添加#include <opencv2/opencv.hpp>

4.2 问题2---PCL报错

解决方法:

同上述3.4节的情况一,在CmakeList.txt中,把c++11改为14。

前面两种问题为常规问题,接下来重点介绍特殊问题。

4.3 问题3---error: ‘class std::unordered_map<unsigned int, std::vector<unsigned int> >’ has no member named ‘serialize’  

解决方法:

在utility.h文件中,将#include <opencv2/opencv.hpp>放到最后,如下图所示

4.4 问题4---找不到-lBoost::

解决方法:

参照3.2节。找不到什么,就添加什么,附上笔者当时参考的链接:

关于LIO-SAM编译时出现错误 /usr/bin/ld: 找不到 -lBoost::timer-CSDN博客文章浏览阅读2.1k次,点赞16次,收藏35次。关于LIO-SAM编译时出现错误:下载LIO-SAM代码进入LIO-SAM文件夹,通过以下代码编译:mkdir buildcd buildcmake ..make报错:/usr/bin/ld: 找不到 -lBoost::timercollect2: error: ld returned 1 exit statusCMakeFiles/lio_sam_imuPreintegration.dir/build.make:759: recipe for target 'devel/lib/lihttps://blog.csdn.net/weixin_47552638/article/details/122237126

笔者的解决方法(CmakeList.txt修改结果)

4.5 问题5---报错[lio_sam_imuPreintegration-2]

解决方法:

cd /usr/local/lib/

sudo cp libmetis.so /opt/ros/noetic/lib/

补充:如果安装了其他版本的gtsam,查看/usr/local/lib/目录下是否有libmetis-gtsam.so,如果有,同样拷贝到/opt/ros/noetic/lib/目录下。

笔者当时参考的链接:

LIO-SAM运行报错[lio_sam_imuPreintegration-2]和[lio_sam_mapOptmization-5]解决_启动lio_sam功能包出现"package 'lio_sam' not found, search_花雨仙晨的博客-CSDN博客文章浏览阅读1.9k次,点赞2次,收藏15次。激光SALM框架LIO-SAM算法编译运行。_启动lio_sam功能包出现"package 'lio_sam' not found, searching: ['/opt/ros/foxhttps://blog.csdn.net/qq_36812406/article/details/126247621补充:其他问题可以直接从网上找答案,如果遇到没有人问及的问题,可以考虑gtsam问题,建议安装笔者推荐的gtsam,并在安装前进行清理,防止后续多版本的gtsam编译运行交叉产生问题。

5. 运行LeGO-LOAM和LIO-SAM

最后放上算法运行结果。

LeGO-LOAM(KITTI07)

LIO-SAM(Park)


点击全文阅读


本文链接:http://zhangshiyu.com/post/107567.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1