LOAM進行點雲地圖創建

LOAM 原理簡述

論文地址 : LOAM: Lidar Odometry and Mapping in Real-time
作者主頁: Ji Zhang, Ph.D 其中有作者所有的相關論文,並且都附有 Video, 感興趣的可以去查看。
Google Scholar

作者想解決的問題: 構建低漂移的里程計。論文完成的工作是使用3D激光雷達構建出的里程計構來建三維點雲地圖。 但是作者的目標是縮小激光里程計的漂移和計算量,重點並不是構建出三維地圖,所以作者沒有考慮迴環問題(loop closure)。

作者實現的方法 : 作者的思路同SLAM(simulanteous localization and mapping)的思路一致,算法思路如下圖
Block diagram of the lidar odometry and mapping software system
主要經過以下幾個步驟

  1. Point Cloud Registration - 接收激光數據,完成點雲的註冊和特徵點雲(邊和麪)提取。
  2. Lidar Odometry - 通過特徵點雲的匹配以10hz頻率發佈一個里程計。此時的里程計精度並不高。
  3. Lidar Mapping - 接收里程計信息和當前點雲數據,基於粗匹配的里程計位姿進行精匹配,根據估計出的位姿將點雲註冊到地圖中,並按照1hz發佈更新後的位姿。
  4. Transform Integration - 接收 lidar odometry 和 lidar mapping 發佈的位姿信息,以10hz 的頻率發佈里程計信息。

topic關係

運行 'rosrun rqt_graph rqt_graph, 我們可以查看各個 topic 和節點的關係。

topic 關係圖

算法分析

  • 如何選取特徵點 邊點(edge point)和平面點 (planar point) 特徵點選取公式
    作者首先定義了一個衡量點平滑度的公式 , 通過測量點兩邊的距離差異,來衡量該點的平滑程度。c值最大的點將作爲邊點而cz值最小的點爲平面點。 將360度分爲四個區域,每個區域最多產生兩個邊點和四個平面點。這些邊點和平面點如下圖所示。
    這些提取出來的點作爲特徵點來完成前後幀的匹配,來估計自身的位姿。
    在這裏插入圖片描述
  • 構建損失函數 特徵點選取後, 根據 tf 關係轉換到 map 座標系下,在map 中尋找最近的 邊點和平面點, 將兩個最近的邊點和平面點當成對應點構建一個轉換矩陣,(t_x, t_y, t_z, theta), 對該轉換舉證求雅克比,使用高斯牛頓法縮小損失函數直至收斂。

算法僞代碼

在這裏插入圖片描述

===========
未完待續!!!

  • 矩陣的轉換和實現
  • 算法結果

LOAM 建圖實踐

創建你的 ROS Workspace

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/
$ catkin_make
$ source devel/setup.bash

下載LOAM Package

$ cd ~/catkin_ws/src
$ git clone https://github.com/laboshinl/loam_velodyne.git 
$ cd ..
$ catkin_make -DCMAKE_BUILD_TYPE=Release
$ source ~/catkin_ws/devel/setup.bash     

下載數據包

$ wget http://www.aisl.cs.tut.ac.jp/databases/hdl_graph_slam/hdl_400.bag.tar.gz
$ tar -axvf hdl_400.bag.tar.gz

運行 LOAM

$ roslaunch loam_velodyne loam_velodyne.launch
$ rosbap play hdl_400.bag

運行結果

LOAM—建圖效果

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