0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

激光SLAM:Faster-Lio算法编译与测试

新机器视觉 来源:古月居 2024-01-12 10:22 次阅读

来源:古月居

前言

Faster-LIO是基于FastLIO2开发的。FastLIO2是开源LIO中比较优秀的一个,前端用了增量的kdtree(ikd-tree),后端用了迭代ESKF(IEKF),流程短,计算快。Faster-LIO则把ikd-tree替换成了iVox,顺带优化了一些代码逻辑,实现了更快的LIO。在典型的32线激光雷达中可以取得100-200Hz左右的计算频率,在固态雷达中甚至可以达到1000-2000Hz,能够达到FastLIO2的1.5-2倍左右的速度。当然具体数值和计算平台相关。

FasterLIO使用了一种基于稀疏体素的近邻结构iVox(incremental voxels)。我们会发现这种结构用来做LIO更加合适,可以有效的降低点云配准时的耗时,也不会影响LIO的精度表现。

iVox也可以被集成到其他LO或LIO里,但是大部分方案里,最近邻并不是主要的计算瓶颈,gtsam/ceres什么的耗时相比最近邻那可太多了。、把iVox集成到Lego-LOAM里,、主要只是省了增量地图构建那部分时间,优化方面没什么变化(点少)。所以iVox与FastLIO倒是相性更好一些。

编译

部署系统:ubuntu20.04
ROS版本: noetic

github 地址:https://github.com/gaoxiang12/faster-lio

下载源码

git clone https://github.com/gaoxiang12/faster-lio

正克隆到 ‘faster-lio’…
remote: Enumerating objects: 224, done.
remote: Counting objects: 100% (108/108), done.
remote: Compressing objects: 100% (43/43), done.
remote: Total 224 (delta 76), reused 65 (delta 65), pack-reused 116
接收对象中: 100% (224/224), 38.13 MiB | 1.49 MiB/s, 完成.
处理 delta 中: 100% (97/97), 完成.

985009e6-b0db-11ee-8b88-92fbcf53809c.png

将原文件拷入ros工作空间

依赖

•ROS (melodic or noetic)

•glog: sudo apt-get install libgoogle-glog-dev

•eigen: sudo apt-get install libeigen3-dev

•pcl: sudo apt-get install libpcl-dev

•yaml-cpp: sudo apt-get install libyaml-cpp-dev

编译

catkin_make

报错1:

CMake Error at /home/jk-jone/jone_ws/build/livox_ros_driver/livox_ros_driver/cmake/livox_ros_driver-genmsg.cmake:14 (add_custom_target):
add_custom_target cannot create target “livox_ros_driver_generate_messages”
because another target with the same name already exists. The existing
target is a custom target created in source directory
“/home/jk-jone/jone_ws/src/faster-lio/thirdparty/livox_ros_driver”. See
documentation for policy CMP0002 for more details.
Call Stack (most recent call first):
/opt/ros/noetic/share/genmsg/cmake/genmsg-extras.cmake:307 (include)
livox_ros_driver/livox_ros_driver/CMakeLists.txt:46 (generate_messages)

985636fe-b0db-11ee-8b88-92fbcf53809c.png

如果工作空间中之前编译了 livox_ros_driver 的功能包,则需要删掉 faster-lio/thirdparty/livox_ros_driver 这个文件夹

再次编译

CMake Error at faster-lio/CMakeLists.txt:15 (add_subdirectory):
add_subdirectory given source “thirdparty/livox_ros_driver” which is not an
existing directory.

985b4c70-b0db-11ee-8b88-92fbcf53809c.png

因为把那个文件删了,所以找不到路径

将 faster-lio/CMakeLists.txt 文件的第15行注释掉

add_subdirectory(thirdparty/livox_ros_driver)
改为
#add_subdirectory(thirdparty/livox_ros_driver)

再次编译

[100%] Linking CXX shared library /home/jk-jone/jone_ws/devel/lib/libfaster_lio.so
[100%] Built target faster_lio
Scanning dependencies of target run_mapping_offline
Scanning dependencies of target run_mapping_online
[100%] Building CXX object faster-lio/app/CMakeFiles/run_mapping_online.dir/run_mapping_online.cc.o
[100%] Building CXX object faster-lio/app/CMakeFiles/run_mapping_offline.dir/run_mapping_offline.cc.o
[100%] Linking CXX executable /home/jk-jone/jone_ws/devel/lib/faster_lio/run_mapping_online
[100%] Built target run_mapping_online
[100%] Linking CXX executable /home/jk-jone/jone_ws/devel/lib/faster_lio/run_mapping_offline
[100%] Built target run_mapping_offline

9863ea60-b0db-11ee-8b88-92fbcf53809c.png

编译成功

测试

Faster-lio支持离线的测试与在线测试

离线测试

首先下载rosbag数据包到电脑

aviabags(https://drive.google.com/drive/folders/1YL5MQVYgAM8oAWUm7e3OGXZBPKkanmY1?usp=sharing)

ncltbags(https://drive.google.com/drive/folders/1VBK5idI1oyW0GC_I_Hxh63aqam3nocNK)

百度云盘下载地址:
BaiduYun:https://pan.baidu.com/s/1ELOcF1UTKdfiKBAaXnE8sQ?pwd=fekyaccess code: feky

OneDrive下载地址:
OneDrive:https://1drv.ms/u/s!AgNFVSzSYXMahcEZejoUwCaHRcactQ?e=YsOYy2

Call run_mapping_offline with parameters to specify the bag file and the config file like:
通过下面的指令 运行 run_mapping_offline 文件 并且加载对应的rosbag文件 和对应的配置文件

./build/devel/lib/faster_lio/run_mapping_offline --bag_file your_avia_bag_file --config_file ./config/avia.yaml

其中 your_avia_bag_file 路径需要更换为下载的数据包路径

同样对于nclt数据包可以运行下面的指令。数据是机械式激光雷达velodyne的数据

./build/devel/lib/faster_lio/run_mapping_offline --bag_file your_nclt_bag_file --config_file ./config/velodyne.yaml

your_nclt_bag_file 路径需要更换为下载的数据包路径

运行FasterLIO,然后退出的时候 会在终端打印FPS和time

像下面这样:

I0216 17:16:05.286536 26492 run_mapping_offline.cc:89] Faster LIO average FPS: 1884.6
I0216 17:16:05.286549 26492 run_mapping_offline.cc:91] save trajectory to: ./src/fast_lio2/Log/faster_lio/20120615.tum
I0216 17:16:05.286706 26492 utils.h:52] >>> ===== Printing run time =====
I0216 17:16:05.286711 26492 utils.h:54] > [   IVox Add Points ] average time usage: 0.0147311 ms , called times: 6373
I0216 17:16:05.286721 26492 utils.h:54] > [   Incremental Mapping ] average time usage: 0.0271787 ms , called times: 6373
I0216 17:16:05.286731 26492 utils.h:54] > [   ObsModel (IEKF Build Jacobian) ] average time usage: 0.00745852 ms , called times: 25040
I0216 17:16:05.286752 26492 utils.h:54] > [   ObsModel (Lidar Match) ] average time usage: 0.0298004 ms , called times: 25040
I0216 17:16:05.286775 26492 utils.h:54] > [ Downsample PointCloud ] average time usage: 0.0224052 ms , called times: 6373
I0216 17:16:05.286784 26492 utils.h:54] > [ IEKF Solve and Update ] average time usage: 0.342008 ms , called times: 6373
I0216 17:16:05.286792 26492 utils.h:54] > [ Laser Mapping Single Run ] average time usage: 0.530618 ms , called times: 6387
I0216 17:16:05.286800 26492 utils.h:54] > [ Preprocess (Livox) ] average time usage: 0.0267813 ms , called times: 6387
I0216 17:16:05.286808 26492 utils.h:54] > [ Undistort Pcl ] average time usage: 0.0810455 ms , called times: 6375
I0216 17:16:05.286816 26492 utils.h:59] >>> ===== Printing run time end =====

默认点云会以pcd文件的格式保存下来

在线测试

用之前建立的仿真环境下的 mid360雷达的数据进行一个初步在线测试

打开仿真环境

986c5fba-b0db-11ee-8b88-92fbcf53809c.png

faster-lio 里面没有 mid360 雷达的 配置文件和启动文件 ,有avia的,都是livox的固态雷达,基本雷达,仿照avia的写一个就行

mid360.yaml 如下

common:
  lid_topic: "/livox/lidar"
  imu_topic: "/livox/imu"
  time_sync_en: false     # ONLY turn on when external time synchronization is really not possible
  time_offset_lidar_to_imu: 0.0 # Time offset between lidar and IMU calibrated by other algorithms, e.g. LI-Init (can be found in README).
                 # This param will take effect no matter what time_sync_en is. So if the time offset is not known exactly, please set as 0.0


preprocess:
  lidar_type: 1        # 1 for Livox serials LiDAR, 2 for Velodyne LiDAR, 3 for ouster LiDAR, 
  scan_line: 4
  blind: 0.5


mapping:
  acc_cov: 0.1
  gyr_cov: 0.1
  b_acc_cov: 0.0001
  b_gyr_cov: 0.0001
  fov_degree:  360
  det_range:   100.0
  extrinsic_est_en: false   # true: enable the online estimation of IMU-LiDAR extrinsic
  extrinsic_T: [ -0.011, -0.02329, 0.04412 ]
  extrinsic_R: [ 1, 0, 0,
          0, 1, 0,
          0, 0, 1]


publish:
  path_en: false
  scan_publish_en: true    # false: close all the point cloud output
  dense_publish_en: true    # false: low down the points number in a global-frame point clouds scan.
  scan_bodyframe_pub_en: true # true: output the point cloud scans in IMU-body-frame


pcd_save:
  pcd_save_en: true
  interval: -1         # how many LiDAR frames saved in each pcd file; 
                 # -1 : all frames will be saved in ONE pcd file, may lead to memory crash when having too much frames.

launch文件如下


 


  


  


  
  
  
  
  
  
  
   


  
  
  


运行该launch文件

roslaunch faster_lio mapping_mid360.launch

初始位置的情景和点云模型

987133f0-b0db-11ee-8b88-92fbcf53809c.png

飞一圈后整个地图模型

9875869e-b0db-11ee-8b88-92fbcf53809c.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4612

    浏览量

    92869
  • 仿真
    +关注

    关注

    50

    文章

    4080

    浏览量

    133586
  • SLAM
    +关注

    关注

    23

    文章

    423

    浏览量

    31827
  • 激光雷达
    +关注

    关注

    968

    文章

    3971

    浏览量

    189898

原文标题:激光SLAM:Faster-Lio 算法编译与测试

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AGV激光雷达SLAM定位导航技术

    4个开关量输入信号组合选取15组区域组(FieldSet)中的任一个作为当前工作区域组,适应复杂多变的应用环境,还可以输出点云数据。    ■镭神激光雷达+SLAM算法可实现的五大功能  激光
    发表于 11-09 15:59

    SLAM技术的应用及发展现状

    应用行业也可分为两大类,即工业领域和商业领域。商业用途方面,目前应用最为成熟的应该是扫地机行业,而扫地机也算机器人里最早用到SLAM技术这一批了,国内的科沃斯、塔米扫地机、岚豹扫地机通过用SLAM算法
    发表于 12-06 10:25

    激光SLAM与视觉SLAM有什么区别?

    机器人定位导航中,目前主要涉及到激光SLAM与视觉SLAM激光SLAM在理论、技术和产品落地上都较为成熟,因而成为现下最为主流的定位导航方
    发表于 07-05 06:41

    激光SLAM技术在机器人运动控制系统中的应用是什么

    什么是激光SLAM激光SLAM技术在机器人运动控制系统中的应用是什么?
    发表于 07-30 06:37

    基于SLAM的移动机器人设计

    )Kinect摄像头  7)激光雷达2、已完成的部分,成果展示  根据Kinect摄像头,小车能够自主避障  利用Kinect摄像头和slam算法,小车能在室内建...
    发表于 11-08 06:17

    激光SLAM和视觉VSLAM的分析比较

    什么是激光SLAM?视觉VSLAM又是什么?激光SLAM和视觉VSLAM有哪些不同之处?
    发表于 11-10 07:16

    一种基于RBPF的、优化的激光SLAM算法

    针对基于RBPF的激光SLAM算法在重采样过程中出现的样本贫化和激光测量模型不准确的问题,提出种优化的激光
    发表于 04-01 10:48 6次下载
    一种基于RBPF的、优化的<b class='flag-5'>激光</b><b class='flag-5'>SLAM</b><b class='flag-5'>算法</b>

    激光雷达SLAM算法有哪些?

    一般将使用单线雷达建构二维地图的SLAM算法,称为2D Lidar SLAM。大家熟知的2D Lidar SLAM算法有:gmapping,
    的头像 发表于 04-18 10:18 1.3w次阅读
    <b class='flag-5'>激光</b>雷达<b class='flag-5'>SLAM</b><b class='flag-5'>算法</b>有哪些?

    基于三维激光数据的层级式SLAM方法

    课题组已将该研究成果应用于智能驾驶即时定位与建图(SLAM)任务中,提出了基于三维激光数据的层级式SLAM方法,实现了无GNSS环境下智能无人系统的高精度自主定位定姿,在智能驾驶国际著名公开数据集KITTI上排名全球第7(纯
    的头像 发表于 04-20 09:19 2080次阅读
    基于三维<b class='flag-5'>激光</b>数据的层级式<b class='flag-5'>SLAM</b>方法

    智行者提出全新基于ivox激光雷达算法

    近日,智行者高翔博士带领的定位团队撰写的论文《Faster-LIO: Lightweight Tightly Coupled Lidar-inertial Odometry using
    的头像 发表于 02-25 18:17 2902次阅读
    智行者提出全新基于ivox<b class='flag-5'>激光</b>雷达<b class='flag-5'>算法</b>

    3D激光雷达SLAM技术的应用趋势

    算法框架和关键模块, 分析阐述了近年来的研究热点问题和未来发展趋势, 梳理了3D激光雷达 SLAM 算法性能的评估标准, 并据此选取目前较为成熟的具有代表性的6种开源 3D
    的头像 发表于 03-21 16:07 5086次阅读

    有哪些激光雷达SLAM算法

    一般将使用单线雷达建构二维地图的SLAM算法,称为2D Lidar SLAM。大家熟知的2D Lidar SLAM算法有:gmapping,
    的头像 发表于 03-27 11:06 2187次阅读

    3D激光SLAM,为什么要选LeGo-LOAM?

    对于学术研究而言,LeGo-LOAM是激光SLAM的经典框架,LeGo-LOAM源码简洁清晰,比LOAM算法的代码可读性要高很多。近几年各顶会上的很多SLAM
    的头像 发表于 07-03 10:47 880次阅读
    3D<b class='flag-5'>激光</b><b class='flag-5'>SLAM</b>,为什么要选LeGo-LOAM?

    NeRF何去何从?GS SLAM到底哪家强?来看看最新的开源方案!

    跟踪场景表示。这里也推荐工坊推出的新课程《彻底剖析室内、室外激光SLAM关键算法和实战(cartographer+LOAM+LIO-SAM)》。
    的头像 发表于 12-26 16:38 1232次阅读
    NeRF何去何从?GS <b class='flag-5'>SLAM</b>到底哪家强?来看看最新的开源方案!

    激光雷达在SLAM算法中的应用综述

    SLAM算法运行的重要传感器。基于激光雷达的SLAM算法,对激光雷达
    的头像 发表于 11-12 10:30 551次阅读
    <b class='flag-5'>激光</b>雷达在<b class='flag-5'>SLAM</b><b class='flag-5'>算法</b>中的应用综述