运行S-LOAM激光SLAM程序

目录

1、创建ros工程

2、编译S-LOAM源码

3、准备点云数据

4、运行S-LOAM程序

5、S-LOAM优缺点说明


1、创建ros工程

(1)打开一个文件夹用来存放ros工程 

在Ubuntu16.04系统中打开一个文件夹,用来创建ros工程。比如在Home文件夹中创建了awkp/myros文件夹,即文件夹路径如下

/home/hccmap/awkp/myros

(2)打开终端创建ros工程

在此文件夹中单击鼠标右键,选择打开终端窗口,此时命令行所处路径为当前窗口(这个路径与上面的路径相同),如下所示

hccmap@ubuntu:~/awkp/myros$ 

说明:这个路径是窗口自动显示的提示文字,表示当前命令行环境。我们只需要在提示符"$"后面输入命令即可。

创建ros工程文件夹(工程根目录)及其子文件夹,输入如下命令并按回车键。

mkdir -p test_sloam/src

进入到工程文件夹(工程根目录)中。

cd test_sloam

编译ros工程(完成)。

catkin_make

这三个步骤连续进行,在窗口中显示如下

 创建后的工程目录如下

ros功能包都需要放到ros工程根目录的src文件夹中,然后才能编译运行。

2、编译S-LOAM源码

S-LOAM算法是一个ros功能包,因此需要将此源码放入ros工程根目录的src文件夹中。

S-LOAM源码地址为(https://github.com/haocaichao/S-LOAM)。

下载S-LOAM源码,如下图所示。

 将S-LOAM-main.zip解压后,放入“test_sloam/src”目录中,即此时的路径如下。

/home/hccmap/awkp/myros/test_sloam/src/S-LOAM-main

切换目录,进入工程文件夹test_sloam中(工程根目录),在此处打开新终端,输入ros工程编译命令

catkin_make

如果依赖库安装齐全,则会显示编译成功,如下图所示。

 S-LOAM的依赖库同lego-loam和a-loam。

即S-LOAM依赖gtsam和ceres库,这里需要注意版本问题及其与eigen库的兼容性。

3、准备点云数据

S-LOAM默认的点云数据是64线激光雷达数据。

在S-LOAM的头文件header.h中定义了扫描线数变量(如下),可以修改为16线(以velodyne激光雷达为参考)。

//int N_SCAN_ROW=16;    // 激光雷达线数,16线
int N_SCAN_ROW=64;      // 激光雷达线数,64线

程序之所以默认64线,是因为有一个64线测试数据slam闭环效果较明显(截取自kitti数据集)。

数据集如下。

kitti_loop_eloam.bag(6G,64线)

百度网盘地址(https://pan.baidu.com/s/1EUNOlCNct71_4_OF0STjuA)。

提取码(dydg)。

下载后将其放入Ubuntu16.04系统中的一个文件夹中,比如放到下面data文件夹中

/home/hccmap/awkp/myros/data

4、运行S-LOAM程序

切换目录,进入工程文件夹test_sloam中(工程根目录),在此处打开新终端。

先输入下面命令

source devel/setup.bash

回车后再输入下面命令,然后再回车。

roslaunch sloam run.launch

窗口如下

 运行S-LOAM后会自动打开rviz,等待点云数据的输入。

现在需要运行点云数据kitti_loop_eloam.bag。

先切换目录,进入存放点云数据的文件夹中,在此处打开新终端,输入rosbag播放命令,如下。

rosbag play kitti_loop_eloam.bag

窗口如下图。

 此时可以看到rviz中S-LOAM运行效果,如下。

 

5、S-LOAM优缺点说明

优点是代码量小,只有几百行代码,易于学习,方便修改试验。

缺点是代码量小,只使用了帧帧配准方法,极易在长廊环境中误匹配。

当然,每个slam程序都有适用环境(都不是万能的),我们需要根据使用目的去增加与改善代码,其中,S-LOAM是基础。

改进方法之一是增加帧图配准。

改进方法之二是融合IMU传感器数据进行激光SLAM。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
SLAM地图构建与定位算法,含有卡尔曼滤波和粒子滤波器的程序 SLAM算法的技术文档合集(含37篇文档) slam算法的MATLAB源代码,国外的代码 基于角点检测的单目视觉SLAM程序,开发平台VS2003 本程序包设计了一个利用Visual C++编写的基于EKF的SLAM仿真器 Slam Algorithm with data association Joan Solà编写6自由度扩展卡尔曼滤波slam算法工具包 实时定位与建图(SLAM),用激光传感器采集周围环境信息 概率机器人基于卡尔曼滤波器实现实时定位和地图创建(SLAM)算法 机器人地图创建新算法,DP-SLAM程序 利用Matlab编写的基于EKF的SLAM仿真器源码 机器人定位中的EKF-SLAM算法,实现同时定位和地图构建 基于直线特征的slam机器人定位算法实现和优化 SLAM工具箱,很多有价值的SLAM算法 EKF-SLAM算法对运动机器人和周围环境进行同步定位和环境识别仿真 SLAM using Monocular Vision RT-SLAM机器人摄像头定位,运用多种图像处理的算法 slam(simultaneous localization and mapping)仿真很好的入门 SLAM自定位导航的一个小程序,适合初学者以及入门者使用 slam算法仿真 slam仿真工具箱:含slam的matlab仿真源程序以及slam学习程序 移动机器人栅格地图创建,SLAM方法,可以采用多种地图进行创建 SLAM算法程序,来自悉尼大学的作品,主要功能是实现SLAM算法 对SLAM算法中的EKF-SLAM算法进行改进,并实现仿真程序 SLAM的讲解资料,机器人导航热门方法
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值