Ubuntu20.04下的编译与运行LeGO-LOAM【问题解决】

LeGO-LOAM在Ubuntu20.04下编译和运行的问题

  • 一、OpenCV 版本问题
  • 二、pcl问题
    • 1. C++14环境
    • 2. 报错:‘Index’ is not a member of ‘Eigen’
  • 三、/usr/bin/ld问题
  • 四、运行报错
  • 五、rviz问题


一、OpenCV 版本问题

由于20.04自带的是OpenCV4,所以要对LeGO-LOAM代码做一点改动:
找到utility.h中的:#include,修改为#include 。即可成功编译。

二、pcl问题

1. C++14环境

主要是让LeGO-LOAM支持C++14,所以只需要修改下载下来的源码中CMakeList.txt:
修改如下:

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

2. 报错:‘Index’ is not a member of ‘Eigen’

错误如下(示例):

/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++)

该问题,可以参考 Build error on ubuntu 20.04. #215 ,即:将voxel_grid.h中报错的Eigen::Index x修改成int。

三、/usr/bin/ld问题

错误如下(示例):

/usr/bin/ld: 找不到 -lBoost::serialization
/usr/bin/ld: 找不到 -lBoost::thread
/usr/bin/ld: 找不到 -lBoost::timer
/usr/bin/ld: 找不到 -lBoost::chrono

在CMakeLists中加入:

find_package(Boost REQUIRED COMPONENTS timer thread serialization chrono)

四、运行报错

错误如下(实例):

/home/miking/catkin_ws/devel/lib/lego_loam/mapOptmization: error while loading shared libraries: libmetis.so: cannot open shared object file: No such file or directory

该问题,可以参考 roslaunch error #160 ,原因是未安装 libmetis 库。通过安装libparmetis-dev修复它重新运行即可:

sudo apt-get install libparmetis-dev

五、rviz问题

查看出问题的话题名,将代码中与之对应的/camera_init改成camera_init即可。
例如:以订阅的轨迹为例,其相关的Topic为/key_pose_origin,所以在代码中找到/key_pose_origin对应的发布者pubKeyPoses,将其对应的frame_id中的 / 去掉即可。
Ubuntu20.04下的编译与运行LeGO-LOAM【问题解决】_第1张图片
对应代码在mapOptmization.cpp中:
未修改:
Ubuntu20.04下的编译与运行LeGO-LOAM【问题解决】_第2张图片修改后:
Ubuntu20.04下的编译与运行LeGO-LOAM【问题解决】_第3张图片【注】:对应rviz显示大圈圈的问题,只要将每种点云的style修改成Flat Squares即可。

你可能感兴趣的:(ROS,LeGO-LOAM,学习)