loam_livox代碼結構簡介

loam_livox功能包關聯兩篇論文,一篇是loam_livox,對loam做了一些小改進,這是詳細解讀。另一篇是loam_livox_loop,用直方圖來檢測迴環,用直方圖來衡量關鍵幀與當前幀的相似性。主要是把loam用於livox上很牛,因爲livox的mid40是窄視角的固態激光,比傳統的機械激光(主要代表爲 velodyne)視角小得多,成本也低得多,在工程上對於降低成本非常有意義,所以很牛。(固態激光與機械激光區別戳這

代碼地址:https://github.com/hku-mars/loam_livox
論文:

下面是論文的原理圖,第1張是loam_livox的,第2張是loam_livox_loop。
在這裏插入圖片描述
在這裏插入圖片描述

代碼不多,總共1萬行左右
這個功能包總共生成3個可執行文件,看CMakeLists.txt就知道,實際只有前兩個用到了。

add_executable(livox_scanRegistration source/laser_feature_extractor.cpp)
add_executable(livox_laserMapping source/laser_mapping.cpp )
add_executable(read_camera source/read_camera.cpp)

include文件夾下有少量算法,但核心算法都在source文件夾下,下面先簡單介紹一下其結構,如下所示爲數據流轉過程。

數據流向(從上到下)

  • 原始數據
  • 提取特徵,剔除壞點(主要是laser_feature_extractor.cpp/hpp,它引用了livox_feature_extractor.hpp)
  • 點雲配準,位姿估計(主要是point_cloud_registration.hpp,也有scene_alignment.hpp)
  • 程序中轉核心(laser_mapping.hpp/cpp),同時構建場景地圖
  • 優化(ceres_icp.hpp,ceres_pose_graph_3d.hpp)
  • 程序中轉核心(laser_mapping.hpp/cpp),取回優化值,更新位姿和地圖

更詳細的解讀參見下列博客:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章