LoginSignup
108
105

最新のROS実装のあるLidarSLAMオープンソースソフトウェアまとめ

Last updated at Posted at 2018-12-30

したこと

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

まとめ表

名前 2D/3D ループクローズ オドメトリ IMU ライセンス 補足
gmapping 2D 有るが非明示的 必須 必須(対向二輪の場合は無くても可) BSD, Apache-2.0(2019年7月CCから変更) ベイスフィルタによるSLAM。
slam_toolbox 2D 有り 必須 LGPL-2.1 ceres-solverによるicpスキャンマッチングとGraphSLAM。手動で地図補正も可。
iris_lama_ros 2D 無し/有るが非明示的 必須 BSD-3 スキャンマッチングによるSLAMとパーティクルフィルターによるSLAMの二種類あり。他と比べて、CPU使用率等が低く、効率的。
LOAM 3D 無し 不可 可(9軸) BSD リアルタイム性がウリ。
Cartographer 2D/3D 有り 2D可。3Dは必須(6軸)。 Apatch-2.0 分岐限定法によるループ閉じ込みがウリ。ceres-solverによるGraphSLAM。グリッドベースドなスキャンマッチング。
Autoware ndt-mapping 3D 無し 可(9軸) Apatch-2.0 ndtの非PCL実装やCUDA実装あり。
hdl_graph_slam 3D 有り 可(加速度と地磁気センサ) BSD-2 OpenMPによるndt/gicpスキャンマッチングの高速化。g2oによるGraphSLAM。GPSもグラフ制約として可。
blam 3D 有り 不可 不可 GPL-2.0 gicpによるスキャンマッチング。gtsamによるGraphSLAM。
LeGO-LOAM 3D 有り 不可 可(9軸) BSD-3 LOAMにgtsamによるGraphSLAMを加えたもの。
LIO-mapping 3D 無し 不可 可(6軸) GPL-3.0(VINS-MONOがGPL-3.0のため) LOAMにVINS-MONO(Visual Inersial SLAM)のIMU補正手法等を取り入れたもの。
LIO-SAM 3D 有り 不可 必須(9軸) BSD-3 LeGO-LOAMにgtsamによるIMU補正手法等を取り入れたもの。
interactive_slam 3D GPL-3.0 GUIでGraphSLAMを行うツール。

ライセンスに関してLidar SLAMによく使われるライブラリを言及すると,
点群処理ライブラリであるpclはBSD-3,グラフ最適化を解くためのソルバーであるg2oはBSD(極一部LGPL-3 +,LGPL-3、以前は全てLGPL)、gtsamはBSD、ceres-solverはBSDです。

navigationスタックのgmapping

Rao-Blackwellised Particle FilterによるSLAM。
2D。ループ閉じ込みはあるが非明示的。
https://github.com/ros-planning/navigation

解説記事。
Navigation Stack を理解する - 4.3 gmapping(格子ベースFast SLAM): 原理をみる(応用編)

slam_toolbox

大規模でlifelongなマップを構築するために作られたツール群。
2D。ceres-solverによるicpスキャンマッチングとGraphSLAM。手動でポーズグラフの調整も可。
ROS2 Eloquent(2019年リリース)でのnavigation2スタックの標準のSLAMになっている。
Github
https://github.com/SteveMacenski/slam_toolbox
実装者本人による解説動画
https://vimeo.com/378682207
実装者本人による解説スライド
https://roscon.ros.org/2019/talks/roscon2019_slamtoolbox.pdf

iris_lama_ros

2D。スキャンマッチングによるSLAMとパーティクルフィルターによるSLAMの二種類あり。動作が軽い。
スキャンマッチングによるSLAMはループ閉じ込み無し。

Github
https://github.com/iris-ua/iris_lama_ros

ROSコミュニティの掲示板で実装者が建てたスレッド
Announcing LaMa: An alternative localization and mapping package
https://discourse.ros.org/t/announcing-lama-an-alternative-localization-and-mapping-package/10916

iris_lama_rosを試した方のブログ。slam_toolboxとの比較あり。
Giving LaMA a shot
https://msadowski.github.io/iris-lama-slam-with-ros/

LOAM(Laser Odometry and Mapping)

レーザーオドメトリとマッピングを分割したことによるリアルタイム性をウリにしたSLAM。
最近のROS実装のLiDAR SLAMのOSSはこのLOAMを基にしたものが多いです。
エッジ点と平面上の点を使った特徴点マッチング。
3D。リアルタイム性が売り。ループ閉じ込み無し。
オドメトリ・IMU必要なし。IMU複合可。
IMUを入れると、スキャン歪みを補正してくれます。
Github
https://github.com/laboshinl/loam_velodyne

解説スライド。
https://www.slideshare.net/pflab/journalcloubaritoshi20170720
image.png

loamの派生はたくさんあるので、この記事で詳しく取り上げていないのも下記に載せておきます。
https://github.com/HKUST-Aerial-Robotics/A-LOAM
https://github.com/wh200720041/floam
https://github.com/wh200720041/iscloam
https://github.com/Livox-SDK/livox_horizon_loam
https://github.com/gogojjh/M-LOAM

Google Cartographer

2D/3D。ループとじ込み有り。
2Dはオドメトリ・IMU必要なし(どちらも複合可)。3DはIMU必須。
逐次SLAMがいまいち。

Github
https://github.com/googlecartographer/cartographer_ros/tree/master/cartographer_ros
image.png
日本語で詳しく解説したものは見当たりませんでしたが、概要は以下のブログ記事にあります。
余談ですが、下記の記事ではHector SLAMの概要もあります。
http://daily-tech.hatenablog.com/entry/2018/11/27/064724

Autowareのndt mapping

NDT(Normal Distributions Transform)マッチングによるSLAM。
3D。ループとじ込み無し。オドメトリ・IMU必要なし(どちらも複合可)。
pcl実装のndt以外にもndtの独自実装(ndt_tku)やcuda実装があります。
Github
https://github.com/CPFL/Autoware

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

hdl_graph_slam

豊橋技術科学大学の博士だった方の成果。
3D.ループ閉じ込み有り.
OpenMPによるndt/gicpスキャンマッチングの高速化をしていて、GraphSLAMにはg2oを使用しています。GPSもグラフ制約として複合可。
Github
https://github.com/koide3/hdl_graph_slam
image.png

BLAM

Berkeley Localization And Mapping.2016年から更新がありません。
3D.ループとじ込み有り。gicpによるスキャンマッチングとgtsamによるGraphSLAM。
Github
https://github.com/erik-nelson/blam

LeGO-LOAM

3D.ループ閉じ込み有り.LOAMにgtsamによるGraphSLAMを加えたもの。
スキャンマッチングもセグメンテーションを基にしたラベルマッチングやz,roll,pitch->x,y,yawの二段階に分けたLevenberg-Marquardt 法等の改善あり。

論文はIROS2018採択。
Github
https://github.com/RobustFieldAutonomyLab/LeGO-LOAM

LeGO-LOAMのループ探索をグローバル記述子のScanContextで改良した下記もおすすめです。(このScan Contextを開発したgisbi-kimさんは様々なSLAMにScanContextを複合してるので、彼のレポジトリは要チェックです。)
https://github.com/irapkaist/SC-LeGO-LOAM

LIO-mapping

3D.LOAMにVINS-MONO(Visual Inersial SLAM)のIMU補正手法等を取り入れたもの。
論文の『A Tightly Coupled 3D Lidar and Inertial Odometry and Mapping Approach』はICRA 2019採択。

プロジェクトページ
https://sites.google.com/view/lio-mapping

Github
https://github.com/hyye/lio-mapping

LIO-mappingの解説記事はありませんが、VINS-MONOには以下のスライドがあります。

20190825 vins mono
https://www.slideshare.net/takmin/20190825-vins-mono

LIO-SAM

3D.LeGO-LOAMにgtsamによるIMU補正手法等を取り入れたもの。作者はLeGO-LOAMの人と同じ。
論文の『LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping』はIROS 2020採択。

Github
https://github.com/TixiaoShan/LIO-SAM

LIO-SAMのループ探索を改良した下記もおすすめです。
https://github.com/gisbi-kim/SC-LIO-SAM

interactive_slam

hdl_graph_slamの作者によるGUIでGraph SLAMを修正(ループ箇所を手動or自動で指定して最適化/ Plane-basedで地図の歪みを補正/複数地図の合成)するOSSです。他のOSSと少し毛色が違いますが便利なので紹介しておきます。
Github
https://github.com/koide3/interactive_slam

その他(随時更新)

随時更新します。(そのうち上のまとめにも反映したいんですが、気力が)

LiDAR Inertial SLAM

LINS(ICRA2020)

FAST_LIO 2(IROS2022)(最近の3D Lidar Inertial SLAMはこれが人気な気がします。Livox MID-360でも動作実績が有るのも良い点。)

LIO-PPF(IROS 2023)

LIO-SEGMOT(ICRA 2023)

slict(RA-L 2023)

LiDAR Inertial Visual SLAM

LVI-SAM(ICRA2021)

FAST-LIVO(IROS2022)

その他

  • A collection of docker environments for 3D SLAM packages

様々なLiDAR SLAMのOSSをdockerで提供しています。大変便利。

  • Bundle Adjustment on Lidar Point Clouds

Pose Graph Optimazationでは無くBundle Adjustmentを使っているSLAMです。
https://github.com/hku-mars/BALM

  • Continuous-Time LiDAR Odometry

  • KISS-ICP

パラメータを調整せず色々なシステムで動くことをウリにしているICPです。

108
105
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
108
105