激光slam:LeGO-LOAM---代码编译安装与gazebo测试

举报
月照银海似蛟龙 发表于 2022/07/30 00:16:39 2022/07/30
【摘要】 激光slam:LeGO-LOAM---代码编译安装与gazebo测试 LeGO-LOAM 简介相比LOAM改进部分 LeGO-LOAM 代码编译安装LeGO-LOAM Gazebo测试 ...

激光slam:LeGO-LOAM---代码编译安装与gazebo测试

LeGO-LOAM 简介

LeGO-LOAM 的英文全称是 lightweight and ground optimized lidar odometry and mapping。轻量化具有地面优化的激光雷达里程计和建图
在这里插入图片描述

其框架如下,大体和LOAM是一致的
在这里插入图片描述
LeGO-LOAM是基于LOAM的改进版本,其主要目的是为了实现小车在多变地形下的定位和建图,针对前端和后端都做了一系列的改进。

在原本的LOAM中比如应用场景是:AGV在草地中行驶,草地中的点会很有可能提取为角点,但是这种点是不稳定的,相比于楼房、树干等稳定的角点,希望要把地面上的角点去除掉。

LeGO-LOAM更轻量化,不影响精度的情况下减轻计算负荷,保障了嵌入式平台的实时性

相比LOAM改进部分

前端:

  • 1 对地面点进行分类和提取,避免一些边缘点的提取
  • 2 应用了一个简单的点云聚类算法,剔除了一些可能的outlier
  • 3 两步迭代求解前端里程计,不影响精度的情况下减轻计算负荷,保障了嵌入式平台的实时性

后端:

  • 1 使用slam中关键帧的概念对后端部分进行了重构
  • 2 引入回环检测和位姿图优化概念,使得地图的全局一致性更好

LeGO-LOAM 代码编译安装

github的地址是:https://github.com/RobustFieldAutonomyLab/LeGO-LOAM

已被测试ROS版本有:

  • indigo
  • kinetic
  • melodic

它的依赖库有gtsam。所以需要先安装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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

cmake 可以改成如下指令

cmake -DGTSAM_BUILD_EITH_MARCH_NATIVE=OFF -DGTSAM_USE_SYSTEM_EIGEN=ON ..

  
 
  • 1

目的是设置一些宏
DGTSAM_BUILD_EITH_MARCH_NATIVE 是开启css加速的宏,要关闭。避免其它库(比如PCL或者自己代码)没有开启的话,会造成运行时出现异常的情况
DGTSAM_USE_SYSTEM_EIGEN 这个是用系统装的eigen编译的宏,要开启。OFF的话会用gtsam自带的eigen,代码运行存在两个版本eigen会容易出问题

之后下载LeGO-LOAM的ROS功能包

git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git

  
 
  • 1

然后放在ROS的工作空间

然后编译,注意第一次编译要用

catkin_make -j1

  
 
  • 1

之后再编译就不用 -j1 了

这么做的原因就是LeGO-LOAM有一些自定义的msg。
-j1 则会通过单线程编译。把自定义的msg编译到。

如果直接用catkin_make 则会根据计算机有几个核,进行几线程的编译。

编译成功的话会生成 LeGO-LOAM的 可执行文件
在这里插入图片描述

LeGO-LOAM Gazebo测试

下面通过直接搭的gazebo测试场景 对 LeGO-LOAM进行一个初步测试

在运行之前需要根据 使用的激光雷达型号,在utility.h文件中对些变量进行设置
该文件的位置在 include文件夹下:
在这里插入图片描述

激光雷达的点云 Topic 名称

extern const string pointCloudTopic = "/velodyne_points";

  
 
  • 1

激光雷达的参数包括

  • 线束
  • 水平点数
  • 水平角点分辨率
  • 垂直角度分辨率
  • 与水平方向的夹角
  • 扫描到地面的激光线数

在gazebo中搭建的仿真场景是用的 Velodyne-16的激光雷达,其配置如下:

// VLP-16
extern const int N_SCAN = 16;
extern const int Horizon_SCAN = 1800;
extern const float ang_res_x = 0.2;
extern const float ang_res_y = 2.0;
extern const float ang_bottom = 15.0+0.1;
extern const int groundScanInd = 7;

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

然后运行在launch文件夹下的run.launch文件
再启动仿真场景,进行初步的测试

其结果如下:
在这里插入图片描述
在这里插入图片描述
在rviz中绿色的是角点,粉色的是面点
特征提取没有异常情况
在这里插入图片描述
建图情况

文章来源: blog.csdn.net,作者:月照银海似蛟龙,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_32761549/article/details/125988200

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。