3D-SLAM自搭平台 主动阿克曼 + RS16 + LPMS_IMU LEGO_LOAM 建图

效果展示:

详细建图(室内+室外)视频链接

3D-SLAM自搭平台 主动阿克曼 + RS16 + LPMS_IMU LEGO_LOAM 室内建图

3D-SLAM自搭平台 主动阿克曼 + RS16 + LPMS_IMU LEGO_LOAM 室外建图

实验的完整代码下载链接:https://github.com/kahowang/3D-SLAM-Multiple-robot-platforms/tree/main/Active-Ackerman-Slam/%E4%B8%BB%E5%8A%A8%E9%98%BF%E5%85%8B%E6%9B%BC%2BRS16%2BLPMS_IMU%20%20LEGO_LOAM%20%E5%BB%BA%E5%9B%BE

录制的数据集下载链接:https://pan.baidu.com/s/1IIGquusHYk_UmGeClXG9tA 密码: fwo3

自搭 3D SLAM 数据采集轮式移动平台

LEGO-LOAM 室内建图

LEGO-LOAM 室外建图 base:深圳云之园

前言:

本次实验为,使用自己搭建的移动底盘以及传感器,进行lego_loam 3D-SLAM建图,主要分为三大部分

a. LEGO_LOAM 论文概述摘要。(致敬作者Tixiao Shan  and Brendan Englot,及网上一系列的开源解释博主)
b.自搭平台,进行数据集采集,幷构建地图流程。(供参考)   现有设备:Robosense16 激光雷达,LPMS IMU,  自搭主动差速阿克曼底盘
c.数据集下载使用,搭建的平台,采集了室内、室外两个数据集,供大家尝试使用。(包含 雷达点云话题、IMU话题、相机话题)

1.LEGO_LOAM 概述

1.1 论文摘要

我们提出了LeGO-LOAM,它是一种轻量级和地面优化的激光雷达里程计和建图方法,用于实时估计地面车辆的六自由度姿态。LeGO-LOAM是轻量级的,因为它可以在低功耗嵌入式系统上实现实时姿态估计。LeGO-LOAM经过地面优化,因为它在分割和优化步骤中利用了地面的约束。我们首先应用点云分割来滤除噪声,并进行特征提取,以获得独特的平面和边缘特征。然后,采用两步Levenberg-Marquardt优化方法,使用平面和边缘特征来解决连续扫描中六个自由度变换的不同分量。我们使用地面车辆从可变地形环境中收集的数据集,比较LeGO-LOAM与最先进的LOAM方法的性能,结果表明LeGO-LOAM在减少计算开销的情况下实现了相似或更好的精度。为了消除由漂移引起的姿态估计误差,我们还将LeGO-LOAM集成到SLAM框架中,并用KITTI数据集进行了测试。

论文里面主要是和LOAM对比,其相比LOAM具有以下五个特点

1.2 系统性能

论文里面主要是和LOAM对比,其相比LOAM具有以下五个特点

a.轻量级,能在嵌入式设备上实时运行

b.地面优化,在点云处理部分加入了分割模块,这样做能够去除地面点的干扰,只在聚类的目标中提取特征。其中主要包括一个地面的提取(并没有假设地面是平面),和一个点云的分割,使用筛选过后的点云再来提取特征点,这样会大大提高效率。(如下图所示: 为在特征提取之前执行地面分割操作)

c. 在提取特征点时,将点云分成小块,分别提取特征点,以保证特征点的均匀分布。在特征点匹配的时候,使用预处理得到的segmenation标签筛选(点云分割为边缘点类和平面点类两类),再次提高效率。

d.两步L-M优化法估计6个维度的里程计位姿。先使用平面点优化高度,同时利用地面的方向优化两个角度信息。地面提取的平面特征用于在第一步中获得t_z,theta_roll,theta_pitch;再使用边角点优化剩下的三个变量,通过匹配从分段点云提取的边缘特征来获得其余部分变换t_x,t_y,theta_yaw。匹配方式还是scan2scan,以这种方式分别优化,效率提升40%,但是并没有造成精度的损失。

e.集成了回环检测以校正运动估计漂移的能力(即使用gtsam作回环检测并作图优化,但是本质上仍然是基于欧式距离的回环检测,不存在全局描述子)。

2.自搭平台复现LEGO_LOAM建图

2.1 环境配置

2.1.1 硬件配置

2.1.1.1 速腾16线激光雷达

激光雷达通过网口进行配置,需要配置主从机网络。本机(机器人上的电脑或嵌入式设备)需要和雷达在同一个网段下。

雷达默认的出厂IP为 master_address :  192.168.1.200
本机设置IP为 slaver_address  : 192.168.1.102

如下图所示为速腾16线激光雷达的硬件驱动,将网线一头插在雷达硬件驱动,另一头插在电脑网口处。

随后点击ubuntu右上角的有线连接,点击有线设置

点击有线连接右上角上的"+"

修改名称为自己的任意名称(这里修改为"Robosense16")

点击IPv4 ,填入地址 192.168.1.102 , 子网掩码为 : 255.255.255.0

点击右上角的添加后,即可看到和雷达的有线连接成功

#打开一个新的 terminal, 尝试是否能ping同雷达数据,如果接受到如下所示的数据,即配置雷达网口成功

ping 192.168.1.200

2.1.1.2 IMU

使用的IMU为LPMS_URS2 9-axis

2.1.1.3 主动差速阿克曼底盘

2.1.2 软件配置

2.1.2.1 速腾16线激光雷达软件ROS驱动下载
cd ~/catkin_ws/src
git clone https://github.com/RoboSense-LiDAR/rslidar_sdk.git
cd rslidar_sdk
git submodule init
git submodule update

修改 rslidar_sdk CMakeLists.txt中的 配置文件

cd rslidar_sdk
sudo  gedit CMakeLists.txt
#将 set(POINT_TYPE XYZIRT)  修改为
set(COMPILE_METHOD CATKIN)
#将 set(POINT_TYPE XYZI)   修改为
set(POINT_TYPE XYZIRT)

修改 rslidar_sdk package_ros1.xml 改名为 package.xml

修改 rslidar_sdk/config/comfig.yaml 第16行的 lidar_type为 : RS16

      lidar_type: RS16            #LiDAR type - RS16, RS32, RSBP, RS128, RS80, RSM1, RSHELIOS

编译

cd ~/catkin_ws
catkin_make
2.1.2.2 LPMS IMU 配置
catkin_make -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7      #升级cmake版本
apt install ros-melodic-openzen-sensor     #下载 openzen-sensor
cd   lego_loam_ws/src
git clone  --recurse-submodules https://bitbucket.org/lpresearch/openzenros.git
cd ..
catkin_make
2.1.2.3 lego_loam 配置

依赖:

a. ROS (tested with indigo, kinetic, and melodic)

b.gtsam (Georgia Tech Smoothing and Mapping library, 4.0.0-alpha2)

安装 VTK

sudo apt install python-vtk

安装 gtsam:

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

编译:

cd ~/catkin_ws/src                   # 进入所在的工作空间
git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git       # git clone lego-loam 源码
cd ..
catkin_make -j1                        #  当第一次编译代码时,需要在“catkin_make”后面添加“-j1”以生成一些消息类型。将来的编译不需要“-j1”
2.1.2.4 RS16 转 VLP16

由于lego_loam中默认接受的雷达话题为 /velodyne_points ,接收的雷达点云信息为XYZIR ,而速腾的激光雷达驱动中只支持 XYZI 、XYZIRT 数据类型,所以需要对数据进行转换,可使用rs_to_velodyne 这个节点进行雷达点云消息格式的转换。

cd  ~/catkin_ws/src
git clone https://github.com/HViktorTsoi/rs_to_velodyne.git
catkin_make

2.2 运行

2.2.1 离线建图

2.2.1.1 离线采集数据集
#运行小车底盘
ssh coo@10.42.0.1
password: cooneo_coo
cd catkin_ws
roslaunch turn_on_wheeltec_robot base_camera.launch
#采集数据
cd catkin_ws
source devel/setup.bash
roslaunch rslidar_sdk start.launch    # 启动RS16 雷达
rosrun rs_to_velodyne rs_to_velodyne XYZIRT XYZIR   # 启动雷达数据类型转换节点
rosrun openzen_sensor openzen_sensor_node      #  运行 LPMS  IMU
mkdir catkin_ws/rosbag
cd catkin_ws/rosbag
rosbag record  -a  -O lego_loam.bag                                     #  记录所有话题
2.2.1.2 离线建图
roslaunch lego_loam run.launch                                       #   运行lego_loam
rosbag play *.bag --clock --topic /velodyne_points  /imu/data    # 选择使用 雷达点云话题和 IMU话题(若IMU配置一般,可只使用点云话题)

2.2.2 在线建图

修改 run.launch 文件中 /use_sim_time

<param name="/use_sim_time" value="false" />    # 在线建图设为"false",离线建图设为 "true"
#运行小车底盘
ssh coo@10.42.0.1
password: cooneo_coo
cd catkin_ws
roslaunch turn_on_wheeltec_robot base_camera.launch
#打开雷达
cd catkin_ws
source devel/setup.bash
roslaunch rslidar_sdk start.launch    # 启动RS16 雷达
roslaunch lego_loam run.launch                                   #   运行lego_loam

2.3 最终效果

室内,室外数据集均已上传到网盘,供大家下载使用

链接: https://pan.baidu.com/s/1IIGquusHYk_UmGeClXG9tA
密码: fwo3

2.3.1 室内离线建图

cd lego_loam_ws     #进入到,下载lego_loam 的工作空间中
roslaunch lego_loam run.launch        # 运行lego_loam  建图cd rosbag               #进入到存储数据集的目录下
rosbag  play  cooneo_indoor_urs2.bag --clock --topic /velodyne_points /imu/data  /usb_cam/image_raw/compressed    # 运行室内数据集

LEGO-LOAM 3D 室内3D地图

LEGO-LOAM 3D 室内3D地图

2D gmpping 建图

2.3.2 室外离线建图

cd lego_loam_ws     #进入到,下载lego_loam 的工作空间中
roslaunch lego_loam run.launch        # 运行lego_loam  建图cd rosbag               #进入到存储数据集的目录下
rosbag  play  cooneo_outdoor_urs2.bag --clock --topic /velodyne_points /imu/data  /usb_cam/image_raw/compressed  # 运行室外数据集

2.3.3 保存地图

运行 run.launch lego_loam 建图程序后,在rviz中点击勾选 Map Cloud,待程序结束后,CRTL + C 即可结束进程,会自动保存地图。

3. 数据及下载及使用

数据集下载地址 : 链接: https://pan.baidu.com/s/1IIGquusHYk_UmGeClXG9tA 密码: fwo3

场景: 室内 、 室外

设备:二轮雅克曼底盘 、Robosense16线激光雷达、LPMS IMU

3.1 环境配置

上述 “2.1.2.3 lego_loam 配置” 已说明

3.2 修改相关配置及保存地图

3.2.1 修改配置文件

sudo gedit  lego_loam_ws/src_Lego-LOAM-master/LeGo-LOAM/include/utility.h

imuTopic 修改为自己的imu_topic , 本次数据集的imu topic 为 “/imu/data”

fileDirectory 中填写自己要保存的地图的绝对路径

3.2.2 保存地图

运行 run.launch lego_loam 建图程序后,在rviz中点击勾选Map Cloud,待程序结束后,CRTL + C 即可结束进程,建图成功。

3.3 构建地图

roslaunch lego_loam run.launch                                       #   运行lego_loam
#室内数据集
rosbag play cooneo_indoor_urs2.bag --clock --topic /velodyne_points  /imu/data     # 选择使用 雷达点云话题和 IMU话题(若IMU配置一般,可只使用点云话题)
#室外数据集
rosbag play cooneo_outdoor_urs2.bag --clock --topic /velodyne_points  /imu/data     # 选择使用 雷达点云话题和 IMU话题(若IMU配置一般,可只使用点云话题)

参考文献

[1] LeGO-LOAM初探:原理,安装和测试

[2]自动驾驶系列(三)速腾16线激光雷达驱动安装

[3]激光SLAM框架学习之LeGO-LOAM框架—速腾Robosense-16线雷达室外建图和其他框架对比、录包和保存数据

[4]SC-LEGO-LOAM 扩展以及深度解析(一)

[5]LIO-SAM运行自己数据包遇到的问题解决–SLAM不学无数术小问题

[6] SLAM学习笔记(二十)LIO-SAM流程及代码详解(最全)

[7]LeGO-LOAM和LOAM的区别与联系
edited by kaho 2022.1.10

3D-SLAM自搭平台 主动阿克曼 + RS16 + LPMS_IMU LEGO_LOAM 建图相关推荐

  1. 3D激光SLAM:LeGO-LOAM论文解读---激光雷达里程计与建图

    3D激光SLAM:LeGO-LOAM论文解读---激光雷达里程计与建图 激光雷达里程计 针对LOAM的改进 激光雷达建图 原文 激光雷达里程计 激光雷达里程计模块的功能就是:估计相邻帧之间的位姿变换. ...

  2. SLAM | 视觉SLAM中的后端:后端优化算法与建图模板

    点击上方"AI算法修炼营",选择加星标或"置顶" 标题以下,全是干货 前面的话 前面系列一中我们介绍了,VSLAM 是利用多视图几何理论,根据相机拍摄的图像信息 ...

  3. 面向智能移动平台的语义定位与建图

    分享嘉宾 | 陈谢沅澧 文稿整理 | 张琳 文稿来源 |  深蓝AI 一.背景 1.智能移动平台的定义 平台包含两大特征,第一个是能够自主地对它周围的环境进行感知,基于感知信息自主运行,实现特定的任务 ...

  4. 【SLAM建图和导航仿真实例】(三)- 使用RTAB-MAP进行SLAM建图和导航

    引言 在这个-SLAM建图和导航仿真实例-项目中,主要分为三个部分,分别是 (一)模型构建 (二)根据已知地图进行定位和导航 (三)使用RTAB-MAP进行建图和导航 该项目的slam_bot已经上传 ...

  5. 速腾聚创Robosense16线激光雷达SLAM建图(一)————Hector建图

    因为最近拿到一个Robosense16线的激光雷达,这是一个三维的激光雷达,所以就拿着这个雷达把一些开源的经典的SLAM算法都跑了一遍,中间也遇到了一些问题,所以就打算在博客上记录下来,供大家交流参考 ...

  6. 搭建实验室3d slam 移动小车 3.1jackal移动小车平台调试

    搭建实验室3d slam 移动小车 3.1jackal移动小车平台调试 前言:实验室拥有的机器人平台是 cleanpath的jackal移动机器人,因为对jackal不熟悉,所幸有赖于闫工的热心帮忙和 ...

  7. 搭建实验室3d slam 移动小车 3.3jackal移动平台 组合导航POMS-GI201C、镭神32线激光雷达 卫星授时

    搭建实验室3d slam 移动小车 3.3jackal移动平台 组合导航POMS-GI201C.镭神32线激光雷达 卫星授时 首先,为什么要授时: 参考博客: 激光雷达中是如何做到和GPS时间同步的? ...

  8. 搭建实验室3d slam 移动小车 3.2jackal移动平台axis-ptz魚眼摄像头调试

    搭建实验室3d slam 移动小车 3.2jackal移动平台axis-ptz魚眼摄像头调试 因为套件包含的axis-ptz魚眼摄像头是由智科特机器人提供的,这次调试主要依赖于闫工的帮助,在此感谢闫工 ...

  9. 搭建实验室3d slam 移动小车 3.3jackal移动平台 ER-600R工业路由器、组合导航POMS-GI201C调试

    搭建实验室3d slam 移动小车 3.3jackal移动平台 ER-600R工业路由器.组合导航POMS-GI201C调试 前言:也有好一段时间没更新了,前阵子主要复现一篇IMU的论文,所以并没有做 ...

最新文章

  1. [恢]hdu 2014
  2. 大规模神经网络的训练优化入门
  3. 是什么造成了网管员的低工资?
  4. android密码解锁/指纹解锁返回的authToken深度解剖
  5. Scala模式匹配:类型匹配
  6. 未发先侃?对比华为,高通第二代5G调制解调器如何?
  7. 当模板方法遇到了委托函数,你的代码又可以精简了
  8. cmake生成Win64位工程
  9. php5.2 json,php5.2以上版本json_encode兼容性
  10. Python-三元运算符和lambda表达式
  11. 计算机中那些事儿(七):近期拆计算机小感
  12. 安全认证框架之Shiro详解
  13. 苹果电脑安装鸿蒙系统,苹果笔记本可以安装别的操作系统吗?
  14. Lena图像原图及由来
  15. HTML5正确嵌入flash,网页上嵌入Flash播放器(1)
  16. Win10 最下面的任务栏不显示正在打开的窗口了,打开任何东西任务栏都不显示
  17. Linux命令行删除文件恢复
  18. 《Python基础知识-4判断和循环语句》
  19. 无限级树状图html5,无限树状列表的实现
  20. 新零售线上+线下的完美营销

热门文章

  1. 计算机图形学中需要掌握的数学基础知识有哪些?
  2. 数字证书包含哪些内容
  3. 如何有效预防ddos攻击
  4. spring boot+vue前后端分离项目问题总结
  5. pyecharts画饼形图,圆形图,环形图(含百分比显示)【python干货】
  6. 启益电商:商品详情页排版布局怎么做
  7. ubuntu系统无wifi适配器 找不到wifi问题解决
  8. pycharm环境下导入包
  9. Zotero+onedrive同步问题
  10. linux v4l2架构分析之v4l2_ctrl_handler初始化及添加v4l2_ctrl的过程分析