jjzjj

3D激光SLAM:LIO-SAM整体介绍与安装编译

月照银海似蛟龙 2023-12-12 原文

3D激光SLAM:LIO-SAM整体介绍与安装编译

LIO-SAM的全称是:Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping

从全称上可以看出,该算法是一个紧耦合的雷达惯导里程计(Tightly-coupled Lidar Inertial Odometry),借助的手段就是利用GT-SAM库中的方法。

LIO-SAM 提出了一个利用GT-SAM的紧耦合激光雷达惯导里程计的框架。
实现了高精度、实时的移动机器人的轨迹估计和建图。

框架的构成
通过相对观测(两帧间的估计)及绝对观测(GPS),还包括回环检测,构成因子图。

这个框架必须要有激光雷达IMU。可以没有回环和GPS。

IMU的作用:
用IMU的数据对激光雷达点云作畸变矫正
为激光雷达里程计的优化提供一个初值

系统对IMU的作用:
获得的雷达里程计会用来估计IMU的零偏(bias)

点云匹配建图方式
为了保障性能和实时,并不是将激光雷达一帧数据和全局地图进行匹配,而是和经过边缘化的历史地图进行匹配
这种当前帧和局部地图配置而不是全局地图的做法,可以显著提高系统的实时性。

局部地图构成
通过选取关键帧的方式,利用滑窗的方法,将当前的关键帧和历史尺度和大小一致的子关键帧集合配准。

测试情况
提出的方法在三个平台进行了测试,手持设备、UGV、船,在不同场景下表现都很不错。

LIO-SAM整体框架

输入层中的三个矩形框是是三个传感器

  • IMU
  • 点云
  • GPS(可选)

输出以IMU的频率发布里程计的结果

LIO-SAM中的四个矩形图,对应ROS中的四个节点。每个节点都有其单独的功能。

图像映射节点

可以先看图像映射的节点
该节点订阅3个消息

  • 原始imu数据
  • 原始点云数据
  • imu里程计数据 来自IMU预积分节点

其中imu里程计数据在系统初始化阶段没有该消息,图像映射节点仅有两个数据

主要功能有四个:

  • 获得变换初始估计,该估计是从imu里程计数据获得
  • 组织点云,与lego-loam类似,将点云转为深度图像
  • 点云畸变矫正 只对旋转部分补偿,平移部分在代码中注释掉了。利用的IMU原始数据

该节点发布的消息:
处理后的点云

特征提取节点

订阅信息1个:
来自图像映射节点的处理后的点云

功能:
提取角点和面点

该节点发布的消息:
处理后的点云

建图优化节点

订阅信息两个

  • 特征提取处理后的点云
  • 原始GPS数据(可选)

主要功能

  • 点云匹配
  • 计算雷达里程计的位姿
  • 因子图优化(雷达里程计因子、GPS因子、回环因子),注意这里没有IMU因子

发布消息

  • 激光雷达里程计,发送给IMU预积分节点

IMU预积分节点

该节点最后一个工作,需要前面3个工作完,得到激光雷达里程计后,再进行IMU预积分

订阅数据:

  • imu原始数据
  • 激光雷达里程计(来自建图优化节点)

功能:

  • 因子图优化(IMU预积分因子、雷达里程计因子)
  • 估计IMU零偏

发布消息:

  • IMU里程计信息

LIO-SAM编译与安装

可以参考官网
官网地址

该功能包的依赖有

  • ROS
    验证的版本有Kinetic 和 Melodic
    同时需要安装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
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

cmake 可以改成如下指令

cmake -DGTSAM_BUILD_EITH_MARCH_NATIVE=OFF -DGTSAM_USE_SYSTEM_EIGEN=ON ..

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

之后就可以下载LIO-SAM的代码进行安装了

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

安装编译成功后,会提示如下:

运行

roslaunch lio_sam run.launch

通过上面的指令就能运行了。

但是在运行前,要根据自己的情况进行一些参数配置

在params.yaml文件中可以看到一些配置

  pointCloudTopic: "points_raw"               # Point cloud data
  imuTopic: "/imu_correct"                         # IMU data
  odomTopic: "odometry/imu"                   # IMU pre-preintegration odometry, same frequency as IMU
  gpsTopic: "odometry/gpsz"                   # GPS odometry topic from navsat, see module_navsat.launch file

其中

  • 点云的Topic名称为points_raw
  • IMU的Topic名称为/imu_correct

这两个如果自身的数据发布名称不一致,需要改成一致的

  • GPS的Topic名称为odometry/gpsz
    如果没有GPS可以不用管
  sensor: velodyne                            # lidar sensor type, either 'velodyne' or 'ouster'
  N_SCAN: 16                                  # number of lidar channel (i.e., 16, 32, 64, 128) 雷达的通道数量
  Horizon_SCAN: 1800                          # lidar horizontal resolution (Velodyne:1800, Ouster:512,1024,2048)激光雷达水平分辨率   也就是水平角度分辨率  360/1800=0.2
  downsampleRate: 1                           # default: 1. Downsample your data if too many points. i.e., 16 = 64 / 4, 16 = 16 / 1
  lidarMinRange: 1.0                          # default: 1.0, minimum lidar range to be used  雷达最小距离长度
  lidarMaxRange: 1000.0                       # default: 1000.0, maximum lidar range to be used  雷达最大距离长度

这边雷达参数也要对应的设置

  extrinsicTrans: [0.0, 0.0, 0.0]
  extrinsicRot: [1, 0, 0,
                  0, 1, 0,
                  0, 0,  1]
  extrinsicRPY: [ 1, 0, 0,
                0, 1 , 0,
                  0, 0, 1]

IMU和类的外参配置一下
别的就没啥了

配置完即可运行launch文件,然后在rviz中就可以看到地图了



粉色的是面点,绿色的是角点

有关3D激光SLAM:LIO-SAM整体介绍与安装编译的更多相关文章

  1. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  2. ruby - 完全离线安装RVM - 2

    我打算为ruby​​脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn

  3. ruby-on-rails - rails 目前在重启后没有安装 - 2

    我有一个奇怪的问题:我在rvm上安装了ruby​​onrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(

  4. ruby - 如何为 emacs 安装 ruby​​-mode - 2

    我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby​​提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs

  5. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  6. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  7. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

  8. ruby - Fast-stemmer 安装问题 - 2

    由于fast-stemmer的问题,我很难安装我想要的任何ruby​​gem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=

  9. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

  10. ruby - 通过 RVM 安装 Ruby 1.9.2 永远行不通! - 2

    当我执行>rvminstall1.9.2时一切顺利。然后我做>rvmuse1.9.2也很顺利。但是当涉及到ruby​​-v时..sam@sjones:~$rvminstall1.9.2/home/sam/.rvm/rubies/ruby-1.9.2-p136,thismaytakeawhiledependingonyourcpu(s)...ruby-1.9.2-p136-#fetchingruby-1.9.2-p136-#downloadingruby-1.9.2-p136,thismaytakeawhiledependingonyourconnection...%Total%Rece

随机推荐