天天看点

LeGO-LOAM:Ubuntu20.04下的编译与运行一、源码及数据集下载二、安装gtsam三、建立ROS工作空间四、LeGO-LOAM的编译五、LeGO-LOAM的运行六、可能会遇到的问题

LeGO-LOAM在Ubuntu20.04下的编译与运行

  • 一、源码及数据集下载
  • 二、安装gtsam
  • 三、建立ROS工作空间
  • 四、LeGO-LOAM的编译
  • 五、LeGO-LOAM的运行
  • 六、可能会遇到的问题
    • 1. OpenCV 版本问题
    • 2.pcl问题
      • (1) C++14环境
      • (2) 报错:‘Index’ is not a member of ‘Eigen’
    • 3. `/usr/bin/ld`问题
    • 4. 运行报错
    • 3. rviz问题

参考链接:

Loam:Ubuntu20.04下的编译与运行.

Floam:Ubuntu20.04下的编译与运行.

一、源码及数据集下载

源码链接: https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.

将下载好的源码放入建立好的ros工作空间下即可。

关于数据集,在作者的github上也提供了两份不同的数据集,但是我使用的是测试loam的数据集和作者提供的第一份数据集,这里我把原址和百度云地址都贴在下面:

NSH indoor outdoor 数据集:

https://drive.google.com/file/d/1s05tBQOLNEDDurlg48KiUWxCp-YqYyGH/view.

数据集的百度云地址:https://pan.baidu.com/s/1TnLl_8OF5tvv8i-yzrHc7g. 密码: 0qno

作者提供的2份数据集:

https://drive.google.com/drive/folders/1_t5fX5yIqY-y6sAifY8pVWX4O9LCK5R2.

数据集的百度云地址:https://pan.baidu.com/s/1SkrqfN82il1m6jhkLZT-WA. 密码: oqo8

https://drive.google.com/drive/folders/16p5UPUCZ1uK0U4XE-hJKjazTsRghEMJa.

二、安装gtsam

wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.0-alpha2.zip
cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/
cd ~/Downloads/gtsam-4.0.0-alpha2/
mkdir build && cd build
cmake ..
sudo make install
           

三、建立ROS工作空间

Ubuntu20.04对应的ROS版本为Noetic,可以按照官网手册安装。建议安装时采用Desktop-Full Install。

安装ROS Noetic: lhttp://wiki.ros.org/noetic/Installation/Ubuntu.

安装好以后即可创建工作空间:

$ mkdir -p ~/catkin_ws/src
$  cd ~/catkin_ws/src
$  catkin_init_workspace
$  cd ~/catkin_ws/
$  catkin_make
$  echo "source ~/catkin_ws/devel/setup.sh" >> ~/.bashrc
           

然后将git下来的文件中src下的LeGO-LOAM复制到工作空间src下即可catkin_make。

四、LeGO-LOAM的编译

cd ~/catkin_ws/src
git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git
cd ..
catkin_make -j1  
           

单独编译ROS包:

第一次编译代码时,需要在“catkin_make”后面加上“-j1”来生成一些消息类型。以后的编译不需要“-j1”。

五、LeGO-LOAM的运行

运行:

roslaunch lego_loam run.launch
           

播放数据集:

虽然/imu/data 是可选的,但如果提供它可以大大提高估计精度。

rosbag play *.bag --clock --topic /velodyne_points /imu/data
           

播放完全的rviz效果:

LeGO-LOAM:Ubuntu20.04下的编译与运行一、源码及数据集下载二、安装gtsam三、建立ROS工作空间四、LeGO-LOAM的编译五、LeGO-LOAM的运行六、可能会遇到的问题

六、可能会遇到的问题

1. OpenCV 版本问题

如果你在安装Ubuntu的时候是选择联网更新安装的话,那么应该Eigen3、pcl-1.10和OpenCV都是有的,但是由于20.04自带的是OpenCV4,所以要对Loam代码做一点改动:

找到

utility.h

中的:

#include<opencv/cv.h>

,修改为

#include <opencv2/imgproc.hpp>

。即可成功编译。

2.pcl问题

(1) C++14环境

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

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

对于这个问题,我在LeGO-LOAM的issues中找到了答案:

https://github.com/RobustFieldAutonomyLab/LeGO-LOAM/issues/215.

方法是将

voxel_grid.h

中报错的

Eigen::Index

x修改成

int

3.

/usr/bin/ld

问题

报错如下:

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

在CMakeLists中加入:

4. 运行报错

/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
           

解决办法:

/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
           

对于这个问题,我同样也在LeGO-LOAM的issues中找到了答案:

https://github.com/RobustFieldAutonomyLab/LeGO-LOAM/issues/160.

原因是未安装 libmetis 库。通过安装libparmetis-dev修复它重新运行即可:

sudo apt-get install libparmetis-dev
           

3. rviz问题

在loam中这两个问题也遇到过。

类似于

Failed to transform from frame [/camera] to frame [map]的报错问题,

其实就是把代码中与rviz相关的frame_id的反斜杠给去掉重新编译即可。以订阅的地图点云为例,其相关的Topic为

/registered_cloud

,所以在代码中找到

/registered_cloud

对应的发布者

pubRegisteredCloud

,将其对应的

frame_id

中的

\

去掉即可。

而对应rviz显示大圈圈的问题,只要将每种点云的style修改成

Flat Squares

即可。

cloudMsgTemp.header.frame_id = "camera_init";
pubRegisteredCloud.publish(cloudMsgTemp);
           
LeGO-LOAM:Ubuntu20.04下的编译与运行一、源码及数据集下载二、安装gtsam三、建立ROS工作空间四、LeGO-LOAM的编译五、LeGO-LOAM的运行六、可能会遇到的问题
LeGO-LOAM:Ubuntu20.04下的编译与运行一、源码及数据集下载二、安装gtsam三、建立ROS工作空间四、LeGO-LOAM的编译五、LeGO-LOAM的运行六、可能会遇到的问题
LeGO-LOAM:Ubuntu20.04下的编译与运行一、源码及数据集下载二、安装gtsam三、建立ROS工作空间四、LeGO-LOAM的编译五、LeGO-LOAM的运行六、可能会遇到的问题