ssk tech blog

自律移動ロボットの話を書きます

LiDAR-SLAM資料まとめ

目次

はじめに

こんにちは.ササキ(@saitosasaki)です.
今回はLiDAR-SLAMに関わるSLAMの資料をまとめました。

資料

書籍

  • 確率ロボティクス
    言わずもがな名著です.

下のリンクは原本に関するサイトです。説明スライドが置いてあります。
http://www.probabilistic-robotics.org/

  • SLAM入門
    『確率ロボティクス』は2005年に発売された本なので、カルマンフィルタやパーティクルフィルタのようなベイズフィルタ系のアプローチのSLAMがメインになっています(語弊があるかも)。
    最近(少なくとも屋外では)主流のスキャンマッチングやグラフベースSLAMといった最適化によるアプローチは以下の解説論文が詳しいです。
    移動ロボットの環境認識 —地図構築と自己位置推定
    より詳しくは上の解説論文を書いた方が書いた『SLAM入門』があります。

記事

  • Crafty_as_a_FoxさんのQiita記事

SLAM(Simultaneous Localization and Mapping)と環境計測センサについて - Qiita

Graph-Based SLAMを用いた軌跡推定シミュレーション - Qiita

  • sakai atushiさんのブログmy enigmaの記事

Simultaneous Localization And Mapping (SLAM)について - MyEnigma

Simultaneous Localization And Mapping (SLAM) 技術がもたらす利点 - MyEnigma

EKF SLAMのためのMATLAB, Pythonサンプルプログラム - MyEnigma

ちなみにこの方、趣味で作ったOSS(Open Source Software)がGithubで4000starを超えるという凄い人です。
GitHub - AtsushiSakai/PythonRobotics: Python sample codes for robotics algorithms.

PythonRoboticsはロボットでよく使われるアルゴリズムPythonでのサンプルコード集で、 ロボティクス初学者におすすめのOSSです。
SLAMにおいてもEKF(Extended Kalman Filter)SLAM、FastSLAM、GraphBasedSLAMが実装されています。

スライド

  • ICRA 2016 Tutorial on SLAM

www.dis.uniroma1.it

https://www.doc.ic.ac.uk/~ajd/Robotics/

  • 確率ロボティクスの翻訳者で千葉工大の上田先生の授業スライド
    『確率ロボティクス』の解説.「ロボットフロンティア(中部大学にて)」は出張授業のようで短くまとまっています.
    https://lab.ueda.tech/?page_id=166

また,上田さんは『確率ロボティクス』のアルゴリズムプログラムをgithubに挙げています. 『確率ロボティクス』の解説書(?)もそのうち出すらしいです(楽しみ).
GitHub - ryuichiueda/probrobo_practice: 確率ロボティクスのアルゴリズム解説(こちらに最新・もっと正確なバージョンがあります->)

PDF

  • State Estimation

State Estimation for Robotics (399 pages)(リンク先のPDF) http://asrl.utias.utoronto.ca/~tdb/

  • リー群
    A tutorial on SE(3) transformation parameterizations and on-manifold optimization

https://www.researchgate.net/publication/235412302_A_tutorial_on_SE3_transformation_parameterizations_and_on-manifold_optimization

Lie Groups for 2D and 3D Transformations

http://ethaneade.com/lie.pdf

オンライン授業

  • Artificial Intelligence for Robotics | Udacity
    無料で『確率ロボティクス』の著者であるセバスチャン・スラン先生が講義を聞けます。
    初学者でない方にも、各レッスンの最後に行われるQ&Aは非常に知見が得られるのでお勧めです。 SLAMはGraphSLAMの説明だけなのですが、非常にわかりやすいです。

ROS実装のある有名なOSSまとめ

以下ROS実装がある最近有名なLidarベースのSLAMオープンソースソフトウェアとその解説記事・スライドをまとめました。

まとめ表

名前 2D/3D ループ閉じ込み オドメトリ IMU 補足
gmapping 2D 有るが非明示的 必須 必須 ベイスフィルタによるSLAM
LOAM 3D 無し 不必要 リアルタイム性がウリ
Cartographer 2D/3D 有り 2Dが可。3Dは必須 ループ閉じ込みがウリ
Autoware ndt-mapping 3D 無し NDTマッチング(非PCL実装のNDTやICPもあり)
hdl_graph_slam 3D 有り NDT/ICP/GICP&ループ閉じ込み
blam 3D 有り 不可 不可
A-LOAM 3D 無し 不可
LeGO-LOAM 3D 有り 不可
LIO-mapping 3D
interactive_slam 3D GUIによるMap Correctionツール

gmapping

ROSのnavigationパッケージにもあって一番有名だと思います。
Rao-Blackwellised Particle FilterによるSLAMです.
2D。ループ閉じ込みはあるが非明示的。
Github
github.com
論文
Improved Techniques for Grid Mapping with Rao-Blackwellized Particle Filter

論文著者による解説スライド(英語)

http://www2.informatik.uni-freiburg.de/~stachnis/pdf/rbpf-slam-tutorial-2007.pdf

日本語による解説記事。 qiita.com

LOAM(Lidar Odometry and Mapping in Real-time)

ライダーオドメトリとマッピングを分割したことによるリアルタイム性をウリにしたSLAMです。
3D。リアルタイム性が売り。ループ閉じ込み無し。 オドメトリ・IMU必要なし。IMU複合可。
Github
github.com 論文
LOAM: Lidar Odometry and Mapping in Real-time

解説スライド

www.slideshare.net

Google Cartographer

2D/3D。ループ閉じ込み有り。 2Dはオドメトリ・IMU必要なし(どちらも複合可)。3DはIMU必須。GPSも複合可。ランドマーク複合可.
逐次SLAMがいまいち。
論文では2Dに関してのみですが、実装は3Dもあります。ただし、3Dでは処理が重すぎてリアルタイムにループ閉じ込みできないです。
Github
github.com 論文
Real-Time Loop Closure in 2D LIDAR SLAM
詳しく解説したものは(論文以外)なさげでしたが、概要は以下のブログ記事にあります。
ちなみに下の記事にはHector SLAMの概要もあります。
daily-tech.hatenablog.com

Autowareのndt mapping

3D。ループ閉じ込み無し。オドメトリ・IMU必要なし(どちらも複合可)。
他にもAutowareにはICPや色々な逐次SLAMの実装があります。
Github
github.com

実装者本人による解説スライド。ダウンロードしないと正常に見れないようです。
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日

hdl_graph_slam

3D.NDT/ICP/GICPから選んだ逐次SLAMとグラフベースSLAM.ループ閉じ込み有り.GPSも複合可。
github.com 論文
A Portable 3D LIDAR-based System for Long-term and Wide-area People Behavior Measurement

BLAM(Berkeley Localization And Mapping)

Berkeley Localization And Mapping.更新が2016年以降ありません. 3D.ループ閉じ込みあり。 

github.com

A-LOAM

LOAMの派生で、スキャンマッチングをceres-solverで解く等の改良が加えられています。ループとじ込みなし。

github.com

LeGO-LOAM

LOAMの派生です。論文はIROS2018採択。ループ閉じ込みあり。IMU複合可。オドメトリ複合不可。
GitHub - RobustFieldAutonomyLab/LeGO-LOAM: LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain

rosgraph f:id:ssk0109:20191221153349p:plain

LIO-mapping

論文の『A Tightly Coupled 3D Lidar and Inertial Odometry and Mapping Approach』はICRA 2019採択。

sites.google.com

github.com

rosgraph

f:id:ssk0109:20191221153252p:plain

interactive_slam

hdl_graph_slamの作者によるGUIでGraph SLAMを修正(ループ箇所を手動or自動で指定して最適化/ Plane-basedで地図の歪みを補正/複数地図の合成)するOSSgithub.com

その他

重複もありますが、他のROS実装のあるSLAMは以下にまとまっています。 ubuntuのバージョンが14.04以降では色々しないと動かない古いものが多く、自分は触ってません。  

ROSのLidarSLAMまとめ - Qiita