如何运行loam和其衍生算法

目录

一、如何运行loam和其衍生算法

1. ros的一些例如bag play和run、rviz一些操作。

2. ros的一些衍生算法的内容a-loam、lego-loam等一些介绍和优劣。

3. 点云地图的保存方法介绍,使用效果如何。

 3.1 第一种点云地图保存

 3.2 第二种点云地图保存

 3.3 Autoware文件的使用

二、点云地图查看:

三、pcd点云地图转ply格式


一、如何运行loam和其衍生算法

1. ros的一些例如bag play和run、rviz一些操作。

#运行loam算法的基本流程

参考github:GitHub - HKUST-Aerial-Robotics/A-LOAM: Advanced implementation of LOAM

 1.首先在Ubuntu系统上面安装对应的ros 16.04或者18.04,ROS Kinetic or Melodic版本(在系统中可以采用ctri+alt+t启动终端,输入对应的命令进行查看)。

 2.然后安装ceres非线性库。

 3然后安装PCL点云处理库。

 4.然后就是正式运行a-loam的流程。可以参考loam的编译安装运行

    cd ~/catkin_ws/src
    git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git
    cd ../
    catkin_make
    source ~/catkin_ws/devel/setup.bash

这里的Git clone kitti的数据集可能因为网络速度而中断,可以使用别人知乎或者其他的地方的bag文件保存到工作空间内,然后进行播放运行,详情这里提供了一个bag文件的链接可见:

链接:https://pan.baidu.com/s/1ESYafH6oY9zDxZ8cHPQz8Q 
提取码:hk9o

同时如何运行播放bag文件可见下文:

【ROS下使用Rviz加载可视化点云bag数据包】

更多关于rosbag包操作的学习链接:http://wiki.ros.org/rosbag.

2. ros的一些衍生算法的内容a-loam、lego-loam等一些介绍和优劣。

开源3D(视觉)SLAM算法汇总

序号算法
1

Cartographer

Cartographer支持2D和3D激光雷达的输入,实现机器人定位,并构建栅格地图。2D-SLAM:基于2D栅格地图,可以直接用于导航。3D-SLAM:基于hybridGrid,译为混合概率地图,我理解为3D栅格地图。 
2

hdl_graph_slam

能同时融合gps、imu和lidar三种传感器,不过相比Cartographer来说,它在资源消耗、代码复杂度和建图流程方面要精简不少。
3

Gmapping

Gmapping是ROS中最经典的基于粒子滤波的算法,缺点是无法构建大规模的地图。
4

LOAM

1. Cartographer主要解决室内问题,LOAM室内外都可以,但是没有回环检测

2. Cartographer的3D部分,更像是2D的扩展:即用2D的思路去做3D的事情。而LOAM则主要解决3D问题,其核心思路难以解决2D问题。

3. 提出了新颖的特征提取方式,角点和面点。

4. 根据时间戳,对旋转的雷达采集时间不一致进行运动补偿。

5. 融合了scan to scan(里程计部分) map to map(建图部分)的思想。

6. 没有回环检测。(发表时间较早,比谷歌Cartographer要早两年)

7. 不能处理大规模的旋转变换。

5

LeGO-LOAM

Lego-LOAM是TiXiao Shan发表在IROS2018的文章,其是以LOAM为框架衍生出的新算法,主要在于两点提升:轻量级 和 地面优化。

Segmentation:对点云进行分割,分割为地面和非地面区域;

Feature Extraction:基于分割后的点,和LOAM类似的算法提取出边缘点和平面点;

Lidar Odometry:基于提取的特征点,scan-to-scan推算两帧激光之间的相对位姿变换(使用两次LM优化),频率较高(10Hz);

Lidar Mapping: scan-to-map,构建全局地图,获得世界坐标系下的位姿,频率较低(2Hz)

Transform Intergration:与LOAM相同,实时利用世界坐标系下的位姿和两个时刻之间的相对位姿,更新各个时刻世界坐标系下的位姿。
 

6

LIO-SAM

LIO-SAM是TixiaoShan在2020年IROS发表的Lego-LOAM续作。实际上也是Lego-LOAM 的扩展版本,添加了IMU预积分因子和GPS因子。

使用关键帧Keyframe,使用关键帧进行匹配,丢掉了关键帧之间的帧。(阈值设置为1m和10度)

四种因子:

   1.IMU预积分因子;

   2.雷达里程计因子,激光“关键帧” 和 “之前的     N个关键帧构成的体素地图” 进行匹配;

   3.GPS因子: 当估计位姿的方差大于GPS位      置方差时加入;

   4.回环检测因子,由关键帧和候选关键帧相       邻的2m+1个关键帧帧图匹配得到。

   该方法使用多传感器融合的方法,利用因子       图优化,计算位姿;

     回环检测部分基本和Lego-LOAM的特点一致,即不具备重定位能力(该方法前提是需要知道自己的大致位置,和历史中附近的位置进行匹配。
 

7

S-LOAM

8

M-LOAM

9

livox-loam

10

Livox-Mapping

11
12
13
14
15
16

1. LOAM缺点:

没有回环检测 ;计算时间复杂度较高,基于三维空间中的位姿进行优化;

户外可能受到各种噪声影响,例如树上摇晃的树叶,地上的杂草。而这些点未必会重复出现在前后两帧激光中。而错误的特征点将会影响位姿精度。

LOAM需要提取平面点和边缘点,由于车体上下颠簸,竖直维度提取的平面点很容易造成误差。

2. 因此Lego-LOAM的贡献:1.着重于解决一些非城市化道路或非平整道路上LOAM存在的问题。2.轻量化,改进算法,使其在TX2上也可以实时运行。

3. Lego-LOAM有一个显著的缺陷——依赖地面。如果用无人机,那么就难以确定地面了。 当然论文作者提到,对于无人机,则不提取地面点,直接就像LOAM中那样正常提取边缘点和平面点。但是我认为这样算法的核心优势就丢掉了。
 

3. 点云地图的保存方法介绍,使用效果如何。

 图1 当时跑lego-loam算法开的终端效果

1.首先是在打开一个终端:输入roscore

2.然后是使用rostopic查找点云播放主题,方便使用rviz的时候进行订阅。

3.然后是输入roslaunch roslaunch kitti_2011_09_26_drive_0001_synced.bag(这里使用的是一个包的文件,打开可以使用其他录制的包文件。)

4.是使用rosbag play 包的名称(后面加上 -l 就是循环播放的意思 )

5.最后是使用rosrun rviz rviz()(然后是打开rviz之后订阅你的主题文件,完成一个发送和接受的过程,有些人用的是rviz rviz)

  一些常用的rosbag操作命令

  1.Rosbag play --pause bagFile01.bag

  暂停播放,等待按空格开启播放:

   2.Rosbag play --clock bagFile01.bag

  播放录制文件时顺带显示录制文件的时间戳:

  3.Rosbag play -i bagFile01.bag

  立即播放录制文件,不再等待0.2s了:

  4.Rosbag play bagFile01.bag bagFile02.bag …

  播放多个录制文件:

   5.Rosbag play --pause bagFile01.bag

   暂停播放,等待按空格开启播放:

 1.3.1 第一种点云地图保存

 #运行A-LOAM(首先使用终端需要使用 roscore 命令启动 ros
         

1. roslaunch aloam_velodyne aloam_velodyne_VLP_16.launch(该行表示在另起一个终端,定位到loam算法的位置,最好是在你的工作空间执行)
 

#另起终端运行rosbag
 2.rosbag play xxx.bag
 
#另起终端用bag_to_pcd方法保存点云图
   3.rosrun pcl_ros bag_to_pcd xxx.bag /laser_cloud_surround pcd

运行结束,可以看到生成了一个pcd文件夹,将里面的文件按照修改时间排序,最新的就是最后的点云地图pcd文件。

 3.2 第二种点云地图保存

 #运行A-LOAM
1. roslaunch aloam_velodyne aloam_velodyne_VLP_16.launch
 
 #另起终端运行rosbag
2. rosbag play xxx.bag
 
 #另起终端,用pointcloud_to_pcd方法保存点云图
 3.mkdir pcd
    cd pcd
    rosrun pcl_ros pointcloud_to_pcd input:=/laser_cloud_surround

 运行结束,可以看到生成了一个pcd文件夹,将里面的文件按照修改时间排序,最新的就是最后的点云地图pcd文件。

3.3 Autoware软件的使用

      注:rosbag文件就是可以用来播放包文件实时显示,但是无法保存实时建立的地图,gmapping对于小车绕避障碍物比较有效果,但是建立的是二维的地图,我们这里应该是在三维的空间中进行处理的。这里我们采用的是autoware中进行构建完整的地图。

  1.安装Autoware Autoware安装教程(里面包含map的建图过程,跟师兄上次给我看的一样,然后里面包含着详细的操作流程)

安装成功后见下图使用:(Autoware操作手册这个是一开始我一直搞不懂的问题,如何保存建图官网操作视频

在这里插入图片描述

 图2~4

图片太多没有逐一截取,大家可以在csdn和b站上面找到对应的教程和实用方法。

       2.lego-loam和autoware一起使用方法和配置(该方法可以用来借鉴如何一起使用)

二、点云地图查看:

pcl_viewer xxx.pcd

三、pcd点云地图转ply格式

pcl_pcd2ply xxx.pcd xxxxxxx.ply

当我们需要用第三方软件(MatLab/MeshLab)对点云地图进行处理时就需要将pcd转为ply,其中MeshLab必须使用由pointcloud_to_pcd方法创建pcd转成的ply格式点云!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值