实验环境:ubuntu16.04+ROSkinetic+robosense16线+xsense_mti_700惯导+pcl1.9.0+gtsam4.0.2

一、LIO_SAM简介

论文:https://github.com/TixiaoShan/LIO-SAM/blob/master/config/doc/paper.pdf

源码:https://github.com/TixiaoShan/LIO-SAM

LIO_SAM由作者Tixiao Shan发表于IROS2020,是一种激光-惯性里程计紧耦合slam方法,前端执行scan-to-map匹配得到位姿变换;后端采用因子图优化方法,包含四种因子,通过优化lidar里程计因子、IMU预积分因子、GPS因子和回环因子来得到机器人的全局一致位姿。该作者在2018年就发表过LeGO-LOAM,LIO-SAM是LeGO-LOAM的扩展版本,添加了IMU预积分因子和GPS因子 下图是LIO-SAM的因子图结构,变量节点是关键帧,相邻的关键帧之间通过IMU数据计算预积分获得位姿变换,构建IMU预积分因子;每个关键帧还有对应的GPS数据参与校正。如果有闭环出现,闭环帧之间可以构建约束;关键帧之间有若干普通帧,这些帧不参与优化,但是会执行scan-to-map的配准,优化每帧位姿。


二、必要的准备工作

2.1 将robosense点云格式转为velodyne点云格式 ,lio-sam仅支持velodyne和ouster雷达,如果你是速腾聚创雷达可以参考我的另一篇博客详细记录了robosense点云转velodyne点云

2.2 lio_sam仅支持9轴imu,你需要拿到你imu的内参,可以参考我的另一篇博客详细记录了使用港科大的imu_utils标定工具,使用Allan方差来标定高斯白噪声和随机游走噪声。imu_utils标定imu

2.3 联合标定lidar和imu的外参,可以参考我的另一篇博客详细记录了使用瑞士苏黎世联邦理工大学自动驾驶实验室开发的lidar_align工具标定雷达和imu外参过程。lidar-align联合标定lidar与imu

三、配置运行lio_sam的环境

3.1 pcl1.9.0安装

安装pcl所需要的依赖

sudo apt-get update
sudo apt-get install git build-essential linux-libc-dev
sudo apt-get install cmake cmake-gui
sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev
sudo apt-get install mpi-default-dev openmpi-bin openmpi-common
sudo apt-get install libflann1.8 libflann-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libvtk5.10-qt4 libvtk5.10 libvtk5-dev
sudo apt-get install libqhull* libgtest-dev
sudo apt-get install freeglut3-dev pkg-config
sudo apt-get install libxmu-dev libxi-dev
sudo apt-get install mono-complete
sudo apt-get install qt-sdk openjdk-8-jdk openjdk-8-jre

下载pcl压缩包:pcl-1.9.0

将下载的压缩包放在home/下解压缩并编译安装

tar -zxvf pcl-pcl-1.9.0.tar.gz    //解压缩cd pcl-pcl-1.9.0
mkdir build
cd buildcmake -DCMAKE_BUILD_TYPE=Release ..
make -j1                          //编译
sudo make install

3.2 安装gtsam4.0.2

wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.2.zip
cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/
cd ~/Downloads/gtsam-4.0.2/
mkdir build && cd build

编译前在CMakeList.txt中299行后if(GTSAM_USE_SYSTEM_EIGEN)前加上set(GTSAM_USE_SYSTEM_EIGEN on)

//在上一步新建的biuld文件夹内打开终端进行编译
cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..
make -j1
sudo make install

3.3 安装ROS依赖

sudo apt-get install -y ros-kinetic-navigation
sudo apt-get install -y ros-kinetic-robot-localization
sudo apt-get install -y ros-kinetic-robot-state-publisher

3.4 下载lio_sam源码并编译

cd ~/catkin_ws/src
git clone https://github.com/TixiaoShan/LIO-SAM.git
cd ..
catkin_make

3.5 这里你可以下载作者提供的数据集感受一下lio_sam,境外资源下载很慢可以从我的网盘下载

lio_sam_park数据集:
hi,这是我用百度网盘分享的内容~复制这段内容打开「百度网盘」APP即可获取 
链接:https://pan.baidu.com/s/1xaeqbJID3KBuOHjSlfN3Og 
提取码:tzrs

cd ~/catkin_ws
source devel/setup.bash
roslaunch lio_sam run.launchrosbag park.bag            //在你放数据集的文件夹内右键新开终端

3.6 在完成第二步必要的工作后,配置LIO-SAM/config/下的params.yaml参数,更改之前建议备份在旁边复制粘贴一份params(copy).yaml

​ 注意 velodyne_points和imu/data前无斜杠(rostopic list里话题是/velodyne_points和/imu/data )

打开前面imu_utils标定的结果按照数字编号对应粘贴覆盖掉params.yaml数值

打开前面lidar_align标定的结果按照数字编号对应粘贴覆盖掉params.yaml数值

params.yaml编号06编号07数值一样都用lidar_align的标定结果编号06三阶矩阵

3.7 保存地图设置

更改LIO-SAM/config/下的params.yaml ==== false改为ture,路径以斜杠开头结尾

更改_TIMEOUT_SIGINT参数否则可能造成地图保存失败,这是由于地图过大时,保存地图会花费一些时间,如果_TIMEOUT_SIGINT太小,很可能造成地图还未保存,ros节点就已经提前关闭了

sudo gedit /opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/nodeprocess.py//默认是15s改到30s或者60s

3.8 到这里准备工作就完成啦,给lidar和imu上电!

启动imu 节点

cd ~/imu_ws
source devel/setup.bash
sudo chmod 666 /dev/ttyUSB0
roslaunch xsens_driver xsens_driver.launch

启动lidar节点

cd ~/RS_SDK
source devel/setup.bash
roslaunch rslidar_sdk start.launch

启动lio_sam节点

cd ~/catkin_ws
source devel/setup.bash
roslaunch lio_sam run.launch

贴两张效果图

 

感谢并参考了这位博主的帖子:https://blog.csdn.net/weixin_42141088/article/details/118000544

复现lio_sam激光slam算法创建点云地图相关推荐

  1. 激光SLAM保存pcd点云地图

    课程大作业需要实现激光SLAM建图,legoloam的地图是逐帧的,不完整.这里有个改进版的sc-lego-loam, github在https://github.com/irapkaist/SC-L ...

  2. 激光SLAM算法学习(三)——3D激光SLAM

    3D激光SLAM 1.3D激光SLAM的介绍 3D激光SLAM的输入: IMU数据 3D激光雷达数据 里程计数据 3D激光SLAM的输出: 3D点云地图 机器人的轨迹 or PoseGraph 2.3 ...

  3. MULLS:一种基于多尺度线性最小二乘的激光SLAM算法

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨paopaoslam 来源丨 泡泡机器人SLAM 标题:MULLS: Versatile LiD ...

  4. 2D激光SLAM算法汇总

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:小小酥 | 来源:知乎 https://zhuanlan.zhihu.com/p/7833413 ...

  5. 激光SLAM算法 -1:激光SLAM简介

    1:SLAM是什么 SLAM是同步定位与地图构建(Simultaneous Localization And Mapping)的缩写,最早由Hugh Durrant-Whyte 和 John J.Le ...

  6. 从零开始搭二维激光SLAM --- 基于GMapping的栅格地图的构建

    上篇文章讲解了如何在ROS中发布栅格地图,以及如何向栅格地图赋值. 这篇文章来讲讲如何将激光雷达的数据构建成栅格地图. 雷达的数据点所在位置表示为占用,从雷达开始到这点之间的区域表示为空闲. 1 GM ...

  7. SLAM | 激光SLAM中开源算法对比

    点击上方"AI算法修炼营",选择加星标或"置顶" 标题以下,全是干货 前面的话 好久没有更新SLAM系列的文章了,前面我们讲到了激光SLAM技术.基于激光雷达的 ...

  8. 室内+室外激光SLAM关键算法、代码和实战剖析正式开课(cartographer+LOAM+ LIO-SAM)

    应用背景介绍 高精地图作为自动驾驶的眼睛,在自动驾驶研发中占据极大的份额,而激光SLAM则是高精地图定位导航算法的关键技术,其重要性不言而喻,在AI产品如矿卡.汽车.清扫车和扫地机器人等领域都占据一席 ...

  9. 一套就够了!室内+室外激光SLAM关键算法讲解与工程实现(源码和数据开源)...

    应用背景介绍 高精地图作为自动驾驶的眼睛,在自动驾驶研发中占据极大的份额,而激光SLAM则是高精地图定位导航算法的关键技术,其重要性不言而喻,在AI产品如矿卡.汽车.清扫车和扫地机器人等领域都占据一席 ...

最新文章

  1. GitHub开源城市结构公交路线数据可视化
  2. 奇瑞a3中控按键图解_纷纷亮相,奇瑞众多黑科技悄然现身,焦点全在星途VX智能座舱上...
  3. Android系统语言默认设置为简体中文
  4. HTTPS 工作原理
  5. 服务器多网站布置,如何在一台服务器上实现多个web站点的方法
  6. 鸿蒙os开启第二批公测,鸿蒙OS开启第二批公测,7款机型加入升级名单,NOVA用户恭喜了...
  7. Linux学习笔记009---Centos7安装vim ifconfig wget tree等基础命令
  8. 爆火的Java面试题-kafka源码解析与实战豆瓣
  9. [转]Android 导入v7包常见错误,以及项目引用v7包错误解决
  10. (一二一)核心动画基础
  11. C语言--输入一个数判断是否为素数(多种方法)
  12. 设置Solidworks为Ansys Workbench进行参数化设计作准备
  13. 使用 SpringMail +163 邮箱 发送邮件的方法
  14. 计算机对外访问端口受限,打开445端口提示拒绝访问(445端口访问受限原因和解决法)...
  15. Android9.0源代码中替换默认静态壁纸
  16. Mac使用Python接入东方财富量化接口Choice,调试与获取数据
  17. npm 脚本跨平台设置环境变量命令 cross-env
  18. 听说这本RPA的书卖火了,你现在读还来得及
  19. 2022年山东省安全员C证考试及山东省安全员C证考试题库
  20. 资源3(ZY3)号卫星三线阵数据制作DEM

热门文章

  1. 创新型中小企业申报流程
  2. drupal 6.0 入门教程 - 第一章
  3. 如何构建关系型数据库
  4. idea部署RuoYi-Vue分离版详解,够细!你值得拥有
  5. 聚焦场景化应用 华为要做数字化转型的“赶路人”
  6. lesson14 Do you speak english? 你会说英语吗?-ask for VS ask sb to do -过去完成时-neither of, both, either of
  7. JAVA毕设项目九宫格日志网站(java+VUE+Mybatis+Maven+Mysql)
  8. position属性详解
  9. ITIL先锋论坛专家风采——陈多思
  10. linux服务被植入挖矿(2t3ik与ddgs)解决方式