0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

激光SLAM:Faster-Lio算法編譯與測試

新機器視覺 ? 來源:古月居 ? 2024-01-12 10:22 ? 次閱讀

來源:古月居

前言

Faster-LIO是基于FastLIO2開發(fā)的。FastLIO2是開源LIO中比較優(yōu)秀的一個,前端用了增量的kdtree(ikd-tree),后端用了迭代ESKF(IEKF),流程短,計算快。Faster-LIO則把ikd-tree替換成了iVox,順帶優(yōu)化了一些代碼邏輯,實現(xiàn)了更快的LIO。在典型的32線激光雷達中可以取得100-200Hz左右的計算頻率,在固態(tài)雷達中甚至可以達到1000-2000Hz,能夠達到FastLIO2的1.5-2倍左右的速度。當然具體數值和計算平臺相關。

FasterLIO使用了一種基于稀疏體素的近鄰結構iVox(incremental voxels)。我們會發(fā)現(xiàn)這種結構用來做LIO更加合適,可以有效的降低點云配準時的耗時,也不會影響LIO的精度表現(xiàn)。

iVox也可以被集成到其他LO或LIO里,但是大部分方案里,最近鄰并不是主要的計算瓶頸,gtsam/ceres什么的耗時相比最近鄰那可太多了。、把iVox集成到Lego-LOAM里,、主要只是省了增量地圖構建那部分時間,優(yōu)化方面沒什么變化(點少)。所以iVox與FastLIO倒是相性更好一些。

編譯

部署系統(tǒng):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 “l(fā)ivox_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文件的格式保存下來

在線測試

用之前建立的仿真環(huán)境下的 mid360雷達的數據進行一個初步在線測試

打開仿真環(huán)境

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

faster-lio 里面沒有 mid360 雷達的 配置文件和啟動文件 ,有avia的,都是livox的固態(tài)雷達,基本雷達,仿照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

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4588

    瀏覽量

    92511
  • 仿真
    +關注

    關注

    50

    文章

    4023

    瀏覽量

    133341
  • SLAM
    +關注

    關注

    23

    文章

    415

    瀏覽量

    31758
  • 激光雷達
    +關注

    關注

    967

    文章

    3921

    瀏覽量

    189446

原文標題:激光SLAM:Faster-Lio 算法編譯與測試

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    AGV激光雷達SLAM定位導航技術

    4個開關量輸入信號組合選取15組區(qū)域組(FieldSet)中的任一個作為當前工作區(qū)域組,適應復雜多變的應用環(huán)境,還可以輸出點云數據?!    鲨D神激光雷達+SLAM算法可實現(xiàn)的五大功能  激光
    發(fā)表于 11-09 15:59

    SLAM技術的應用及發(fā)展現(xiàn)狀

    應用行業(yè)也可分為兩大類,即工業(yè)領域和商業(yè)領域。商業(yè)用途方面,目前應用最為成熟的應該是掃地機行業(yè),而掃地機也算機器人里最早用到SLAM技術這一批了,國內的科沃斯、塔米掃地機、嵐豹掃地機通過用SLAM算法
    發(fā)表于 12-06 10:25

    激光SLAM與視覺SLAM有什么區(qū)別?

    機器人定位導航中,目前主要涉及到激光SLAM與視覺SLAM,激光SLAM在理論、技術和產品落地上都較為成熟,因而成為現(xiàn)下最為主流的定位導航方
    發(fā)表于 07-05 06:41

    激光SLAM技術在機器人運動控制系統(tǒng)中的應用是什么

    什么是激光SLAM?激光SLAM技術在機器人運動控制系統(tǒng)中的應用是什么?
    發(fā)表于 07-30 06:37

    基于SLAM的移動機器人設計

    )Kinect攝像頭  7)激光雷達2、已完成的部分,成果展示  根據Kinect攝像頭,小車能夠自主避障  利用Kinect攝像頭和slam算法,小車能在室內建...
    發(fā)表于 11-08 06:17

    激光SLAM和視覺VSLAM的分析比較

    什么是激光SLAM?視覺VSLAM又是什么?激光SLAM和視覺VSLAM有哪些不同之處?
    發(fā)表于 11-10 07:16

    視覺SLAM激光SLAM有什么區(qū)別?

    在業(yè)內,視覺SLAM激光SLAM誰更勝一籌,誰將成為未來主流趨勢這一問題,成為大家關注的熱點,不同的人也有不同的看法及見解,以下將從成本、應用場景、地圖精度、易用性幾個方面來進行詳細闡述。
    的頭像 發(fā)表于 08-28 14:53 ?1.7w次閱讀
    視覺<b class='flag-5'>SLAM</b>與<b class='flag-5'>激光</b><b class='flag-5'>SLAM</b>有什么區(qū)別?

    一種基于RBPF的、優(yōu)化的激光SLAM算法

    針對基于RBPF的激光SLAM算法在重采樣過程中出現(xiàn)的樣本貧化和激光測量模型不準確的問題,提出種優(yōu)化的激光
    發(fā)表于 04-01 10:48 ?6次下載
    一種基于RBPF的、優(yōu)化的<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,
    的頭像 發(fā)表于 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方法,實現(xiàn)了無GNSS環(huán)境下智能無人系統(tǒng)的高精度自主定位定姿,在智能駕駛國際著名公開數據集KITTI上排名全球第7(純
    的頭像 發(fā)表于 04-20 09:19 ?2042次閱讀
    基于三維<b class='flag-5'>激光</b>數據的層級式<b class='flag-5'>SLAM</b>方法

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

    近日,智行者高翔博士帶領的定位團隊撰寫的論文《Faster-LIO: Lightweight Tightly Coupled Lidar-inertial Odometry using
    的頭像 發(fā)表于 02-25 18:17 ?2810次閱讀
    智行者提出全新基于ivox<b class='flag-5'>激光</b>雷達<b class='flag-5'>算法</b>

    3D激光雷達SLAM技術的應用趨勢

    算法框架和關鍵模塊, 分析闡述了近年來的研究熱點問題和未來發(fā)展趨勢, 梳理了3D激光雷達 SLAM 算法性能的評估標準, 并據此選取目前較為成熟的具有代表性的6種開源 3D
    的頭像 發(fā)表于 03-21 16:07 ?4998次閱讀

    有哪些激光雷達SLAM算法?

    一般將使用單線雷達建構二維地圖的SLAM算法,稱為2D Lidar SLAM。大家熟知的2D Lidar SLAM算法有:gmapping,
    的頭像 發(fā)表于 03-27 11:06 ?2070次閱讀

    3D激光SLAM,為什么要選LeGo-LOAM?

    對于學術研究而言,LeGo-LOAM是激光SLAM的經典框架,LeGo-LOAM源碼簡潔清晰,比LOAM算法的代碼可讀性要高很多。近幾年各頂會上的很多SLAM
    的頭像 發(fā)表于 07-03 10:47 ?803次閱讀
    3D<b class='flag-5'>激光</b><b class='flag-5'>SLAM</b>,為什么要選LeGo-LOAM?

    NeRF何去何從?GS SLAM到底哪家強?來看看最新的開源方案!

    跟蹤場景表示。這里也推薦工坊推出的新課程《徹底剖析室內、室外激光SLAM關鍵算法和實戰(zhàn)(cartographer+LOAM+LIO-SAM)》。
    的頭像 發(fā)表于 12-26 16:38 ?1106次閱讀
    NeRF何去何從?GS <b class='flag-5'>SLAM</b>到底哪家強?來看看最新的開源方案!