目录

运行环境:

一、源码及数据集下载

二、编译问题

1.C++14环境问题

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

3.OpenCV版本

4./usr/bin/ld:找不到

三、运行lego-loam


运行环境:

Linux:Ubuntu20.04

ROS:noetic

Ceres Solver:1.13

OpenCV:4.6.0

Gtsam:4.0.0

Eigen:3.3.7

一、源码及数据集下载

源码链接:GitHub - RobustFieldAutonomyLab/LeGO-LOAM: LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable TerrainLeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain - GitHub - RobustFieldAutonomyLab/LeGO-LOAM: LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrainhttps://github.com/RobustFieldAutonomyLab/LeGO-LOAM数据集链接:https://drive.google.com/drive/folders/16p5UPUCZ1uK0U4XE-hJKjazTsRghEMJahttps://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

 源码下载并编译:

mkdir -p lego-loam_ws/src
cd lego-loam_ws/src
git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git
cd ..
catkin_make -j1

第一次编译需要在catkin_make后面加上-j1用来生成一些消息类型,以后编译可以不加。

二、编译问题

不出意外的话肯定是编译不通过的,遇到如下问题的概率较大:

1.C++14环境问题

这是由于pcl需要的C++版本不一致,打开~/lego-loam_ws/src/LeGO-LOAM/LeGO-LOAM/CMakeLists.txt文件,将c++11改为c++14:

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

 打开usr/include/pcl-1.10/pcl/filters/voxel_grid.h文件,在340行和669行for (Eigen::Index ni = 0; ni < relative_coordinates.cols (); ni++)中的Eigen::Index改成int。

3.OpenCV版本

 这是由于Ubuntu20.04自带的OpenCV版本为OpenCV4,当前OpenCV版本高于lego-loam需要的OpenCV版本,我们将~/lego-loam_ws/src/LeGO-LOAM/LeGO-LOAM/include/utility.h打开,把#include <opencv/cv.h>改成#include <opencv2/opencv.hpp>。

4./usr/bin/ld:找不到

 在~/lego-loam_ws/src/LeGO-LOAM/LeGO-LOAM/CMakeLists.txt文件中加入:

find_package(Boost REQUIRED COMPONENTS timer thread serialization chrono)

再编译应该就没什么问题了。

三、运行lego-loam

cd ~/lego-loam_ws
source devel/setup.bash
roslaunch lego_loam run.launch

下载本文置顶数据集后(只需要下载一个包用来验证lego-loam是否可用),在数据集所在目录播放数据集( 为lego-loam播放bag包时,要在最后加上--clock)

rosbag play 数据集名称.bag --clock --topic /velodyne_points /imu/data

此时,不出意外的话应该放不出来点云图像或者只显示当前帧点云而不显示全局点云图像

1.终端显示:[mapOptmization-7] process has died

解决办法:

sudo apt-get update
sudo apt-get install libparmetis-dev

2.Map Cloud的状态提示:Failed to transform from frame [/camera_init] to frame [map]

解决办法:这可能是TF1和TF2不兼容的问题,打开lego-loam的~/lego-loam_ws/src/LeGO-LOAM/LeGO-LOAM/src下的4个源码文件,搜索/camera_init,将所有/camera_init改成camera_init,也就是去掉斜杠,这样再回到工作空间重新编译lego-loam。

再运行应该就能看到建图效果了。

 参考资料:

Build error on ubuntu 20.04. · Issue #215 · RobustFieldAutonomyLab/LeGO-LOAM · GitHubAn error occured when I buid the LeGO-LOAM on ubuntu 20.04. The error info is shown below. /usr/include/pcl-1.10/pcl/filters/voxel_grid.h: In member function ‘std::vector pcl::VoxelGrid::getNeighborCentroidIndices(const Poin...https://github.com/RobustFieldAutonomyLab/LeGO-LOAM/issues/215

LeGO-LOAM:Ubuntu20.04下的编译与运行_lego loam ubuntu20_MIKingZCC的博客-CSDN博客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. 运行报错3. rviz问题参考链接:Loam:Ubuntu20.04下的编译与运行.Floam:Ubuntu20.04下的编译与运行.一、源码及数据集下载源码https://blog.csdn.net/weixin_44156680/article/details/118070387
3、速腾16线激光雷达RS-16 ----- 3D建图算法LeGO-LOAM的使用(Ubuntu18.04 + ROS Melodic)_速腾16线 lego loam_杰尼君的博客-CSDN博客速腾16线激光雷达RS-16 ----- 3D建图算法LeGO-LOAM的使用(Ubuntu18.04 + ROS Melodic)https://blog.csdn.net/weixin_44444810/article/details/121659270?ops_request_misc=&request_id=&biz_id=102&utm_term=Lego_loam%E8%BF%90%E8%A1%8C%20rs-lidar&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-121659270.nonecase&spm=1018.2226.3001.4187

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐