目次 — 知りたいところから読む
前提と読み方
前提知識 座標・速度・センサの基本用語。学習ガイドから前提記事を選べます。
入門 · 原理・構成・判断のための解説です。
自動運転車の屋根に載った回転式のセンサーや、掃除ロボットの上面についた小さな窓——これらの多くはLiDAR(Light Detection And Ranging)であり、レーザー光を使って周囲までの距離を直接測るセンサーである。LiDAR-SLAMは、このLiDARが返す点群データだけ(場合によってはIMUなどの補助センサーを併用)を頼りに、自己位置推定と地図構築を同時に行う技術である。Visual-SLAM(「Visual-SLAM入門」参照)がカメラの2次元画像から3次元構造を間接的に復元しようとするのに対し、LiDAR-SLAMは最初から3次元の距離情報を直接手にしている点が大きな違いになる。この記事では、LiDARが何を測っているのかという原理から出発し、点群同士を重ね合わせるICP・NDTという2大アルゴリズム、LOAMに代表される特徴点ベースの設計、Loop ClosureとGraph SLAM、そして代表アルゴリズムの系譜と実用上の選び方までを体系立てて見ていく。最新の研究動向は「LiDAR-SLAMの技術動向」で扱っている。
Velodyne LiDARファミリー
Livox LiDAR製品例画像: Velodyne Lidar sensor family(APJarvis, CC BY-SA 4.0) / Livox Mid-40, Horizon, and Tele-15(Dllu, CC BY-SA 4.0)、Wikimedia Commons。本文の最新モデルそのものではなく、方式を理解する代表的な製品群である。
0. この記事で分かること
- LiDARが何を測っていて、なぜ距離情報を「直接」得られるのか
- SLAMの基本問題が、点群の世界ではどう表れるのか
- ICP(Iterative Closest Point)とNDT(Normal Distributions Transform)という2大スキャンマッチングアルゴリズムの仕組みと違い
- Scan-to-ScanとScan-to-Mapという2種類のLiDAR Odometryの違い
- LOAMがなぜ特徴点(エッジ・平面)を抽出するのか、その設計思想
- Loop ClosureとPose Graph最適化がどう組み合わさるのか
- ICP/NDT/LOAM/LeGO-LOAM/A-LOAM/Cartographer/LIO-SAM/FAST-LIO2という代表アルゴリズムの違いと選び方
1. LiDAR-SLAMとは何か
一言でまとめると、LiDAR-SLAMとは、レーザー光の飛行時間(あるいは位相差)から得られる高精度な距離情報の集合(点群)を使い、連続するスキャン同士を繰り返し重ね合わせる(スキャンマッチングする)ことで、センサー自身の移動軌跡と周囲の3次元地図を同時に求める技術である。
入力はLiDARが一定周期で出力する点群(1回のスキャンにつき数千〜数十万点)であり、出力はVisual-SLAMと同じく、各時刻でのセンサーの6自由度の姿勢(位置3自由度+向き3自由度)と、周囲の環境を表す3次元の点群地図の2つである。自動運転車が周囲の車両・歩行者・道路構造物との正確な距離関係を保ちながら自己位置を推定する場面や、倉庫内の自律搬送ロボットが棚の間を正確にナビゲートする場面、ドローンが室内・トンネルのような幾何学的に複雑な空間を飛行する場面は、いずれもLiDAR-SLAMが裏側で動く典型例である。
2. LiDARは何を測っている?
LiDARの測距原理は大きく2つに分けられる。ToF(Time of Flight、飛行時間)方式は、レーザーパルスを発射してから、対象物に反射して戻ってくるまでの時間Tを測定し、光速cとの関係から距離Dを求める。
光は往復するため、実際に測った時間Tの半分が片道の伝搬時間に対応する。もう1つの方式である位相差(FMCW/AMCW)方式は、連続的に変調したレーザー光を送出し、反射光との位相のズレから距離を求める。いずれの方式でも、LiDARは「そこに何かがある」という事実だけでなく、「そこまで実際に何メートルあるか」という絶対的な距離を、1回の観測だけで直接得られる。これはカメラにはない大きな特徴である——4節で見るように、単眼カメラの画像だけからは実世界のスケール(実寸)を復元できないが、LiDARの点群は最初からメートル単位の実寸を持っている。
LiDARのハードウェア構成にも2つの系統がある。回転式(メカニカルスキャン式)は、複数のレーザー発光・受光素子を積んだユニットを機械的に回転させ、360度全周の点群を得る方式で、Velodyne・Ousterなどの製品が代表例である。ソリッドステート式は、機械的な回転部品を持たず、MEMSミラーや光フェーズドアレイなどで走査範囲を限定しつつ小型・低コスト化を図る方式で、Livoxなどの製品が代表例である。ソリッドステート式は視野角が限られる代わりに、走査パターンが非反復的(同じ場所を毎回わずかに違う軌跡で走査する)になる製品が多く、時間をかけて点群を蓄積すると密な点群が得られるという特性を持つ。
LiDARの点群には、カメラの画像にはない固有の構造もある。回転式LiDARは、垂直方向に並んだ複数のレーザー(例えば16層・32層・128層)を水平方向に回転させながら発光するため、点群は水平方向には密、垂直方向には層状に疎という、非等方的な分布を持つ。この構造は、後述するLOAMの特徴抽出やICPの法線推定の設計に直接影響してくる。
3. SLAMの基本問題「今の点群は、地図のどこにある?」
Visual-SLAMが「今の画像は、過去の画像・地図のどこに対応するか」を特徴点の対応づけで解くように、LiDAR-SLAMは「今のスキャン(点群)は、過去のスキャン・地図のどこに対応するか」を点群同士の位置合わせで解く。この問題設定自体はセンサーが変わっても本質的に同じである——1回の観測だけでは絶対位置は分からず、過去の観測(地図)との対応関係を手がかりに、今の位置を求め続けるしかない。
ただし対応づけの中身は大きく異なる。Visual-SLAMでは、画像上の「際立った点(特徴点)」を検出し、その周辺の見た目を記述子として数値化し、記述子同士の類似度で対応点を探す。これに対しLiDARの点群は、そもそも輝度や色といった「見た目」の情報をほとんど持たない(反射強度は得られるが、識別力は画像の記述子ほど高くない)。そのため点群同士の対応づけは、多くの場合「幾何学的に最も近い点はどれか」という空間的な近さだけを手がかりに行われる。この「点群同士の剛体変換(回転R・並進\mathbf{t})を求める処理」全般をScan Matching(スキャンマッチング)と呼び、LiDAR-SLAMの核心をなす処理になる。
この章の結論は単純である。Visual-SLAMの「特徴点マッチング+Epipolar幾何」に対応する位置に、LiDAR-SLAMでは「スキャンマッチング」が入る。次の2節では、このスキャンマッチングを実現する2大アルゴリズム、ICPとNDTを見ていく。
4. ICPを理解する
ICP(Iterative Closest Point、反復最近点法)は、Besl & McKayが1992年にIEEE Transactions on Pattern Analysis and Machine Intelligence誌で発表した、点群同士の位置合わせのための古典的かつ現在も広く使われるアルゴリズムである。名前が示す通り、「最も近い点」を対応点とみなし、それを反復的に繰り返して精度を高めていく、という単純な発想に基づいている。
アルゴリズムの手順は次の3ステップに整理できる。
- 対応点探索: 動かす側の点群(Source)の各点p_iに対し、固定する側の点群(Target)の中から最も近い点q_iを探す(通常はKD-treeなどの空間探索構造を使う)。
- 変換推定: この対応点の集合\{(p_i, q_i)\}に対し、対応点間の距離の総和が最小になるような回転R・並進\mathbf{t}を求める。もっとも単純なPoint-to-Point誤差は次のように定義される。
- 変換の適用と反復: 求めたR・\mathbf{t}をSourceの点群全体に適用し、1に戻って対応点を探し直す。この対応点探索→変換推定→適用のサイクルを、誤差が十分小さくなる(あるいはこれ以上減らなくなる)まで繰り返す。
Point-to-Point誤差は直感的だが、平坦な壁のような広い平面同士を位置合わせする場合、点同士がその平面上のどこで対応していても誤差への寄与にほとんど差がない(平面に沿ってわずかにズレていても、垂直方向にさえ合っていれば誤差が小さい)ため、収束が遅くなりやすい。この問題を解決するのがPoint-to-Plane誤差である。対応点q_iの周辺の局所的な形状から法線ベクトルn_iを推定し、点と平面の距離(法線方向の食い違いだけ)を最小化する。
Point-to-Planeは、平面に沿った方向のズレを許容しつつ、平面に対して垂直な方向の食い違いだけを厳しく罰する形になっており、特に建物内部のような平面が多い環境で、Point-to-Pointよりも速く・安定して収束することが広く知られている。ただし2節で触れたように、回転式LiDARの点群は垂直方向に層状の疎な構造を持つため、素朴に法線を推定すると層の並びに引きずられたノイズの多い法線が得られてしまう場合があり、法線推定自体にも工夫が必要になる。
ICPの弱点は主に2つある。第一に、対応点探索を「幾何学的な最近傍」だけに頼るため、初期位置のズレが大きいと誤った対応点を選んでしまい、局所解に収束してしまう(良い初期値を与える必要がある)。第二に、フレームごとに数万点規模の点群に対して最近傍探索を繰り返す必要があり、計算コストが点群のサイズに応じて増大する。次節のNDTは、この対応点探索そのものを回避する、別のアプローチを取る。
5. NDTを理解する
NDT(Normal Distributions Transform、正規分布変換)は、Biber & Straßerが2003年にIEEE/RSJ International Conference on Intelligent Robots and Systems(IROS)で発表した、ICPとは異なる発想でスキャンマッチングを行うアルゴリズムである。この原型はもともと2次元のレーザースキャナ向けに提案されたものであり、後に3次元の点群を扱えるように拡張されている。
NDTの核心は、点群を個々の点の集合としてではなく、格子状に区切ったボクセルごとの確率分布として表現するという発想にある。各ボクセル内に含まれる点群の分布を、平均\muと共分散行列\Sigmaを持つガウス分布(正規分布)として近似する。
こうしてTarget点群全体を、ボクセルごとのガウス分布の集合(区分的に連続で微分可能な確率密度関数)として表現しておく。ここまで準備できれば、Source点群を位置合わせするために「個々の点同士の対応を探す」必要はなくなる。代わりに、変換パラメータT(回転・並進)でSource点群の各点\mathbf{x}_iを変換した点\mathbf{x}_i' = T(\mathbf{x}_i)が、対応するボクセルのガウス分布上でどれだけ「もっともらしいか」を、次のようなスコア関数として合計し、これを最大化するTを求める。
この最適化はニュートン法などの勾配ベースの手法で解かれる。ICPのように「対応点探索」と「変換推定」を別ステップとして反復する必要がなく、あらかじめ計算しておいたガウス分布のパラメータに対して勾配を評価するだけで済むため、対応点探索(最近傍探索)のコストを避けられるという利点がある。また個々の点のノイズは、ボクセル単位で平均・共分散に集約されることである程度吸収されるため、ノイズに対して頑健になりやすい。
一方でNDTには、ボクセルサイズの選び方というトレードオフが伴う。ボクセルを大きくすると計算は軽くなるが、細かい形状の違いが平均化されて失われ、位置合わせの精度が落ちる。ボクセルを小さくすると形状の解像度は上がるが、1つのボクセルに含まれる点数が減ってガウス分布の推定自体が不安定になり、さらにボクセル数が増えるため計算コストも上がる。この使用者が調整すべきパラメータの存在が、NDTを使う上での実務的な難しさになる。
6. LiDAR Odometry(Scan-to-Scan/Scan-to-Map)
ICPやNDTを使ってフレームごとの相対的な動きを求め、それを逐次積み重ねていく処理をLiDAR Odometryと呼ぶ。Visual-SLAMのVisual Odometryと同じく、地図全体との整合性を取り戻す仕組み(Loop Closure)を持たない限りは、時間とともに誤差が蓄積するDrift(ドリフト)を避けられない。
LiDAR Odometryには、比較する相手の違いによって2つの方式がある。Scan-to-Scanは、直前の1つ前のスキャンとだけ位置合わせを行う方式であり、計算は軽いが、1回ごとの推定誤差がそのまま次の推定の初期値に持ち越されるため、Drift(ドリフト)が蓄積しやすい。Scan-to-Mapは、直前のスキャン1つではなく、これまでに蓄積してきた局所地図(Local Map)全体と位置合わせを行う方式であり、より多くの観測情報を参照するためノイズの影響を受けにくく、Scan-to-Scanより高精度になりやすい一方、参照する点群が大きくなる分だけ計算コストは高くなる。
実用的な多くのLiDAR-SLAM実装は、この2つを組み合わせている。まずScan-to-Scan(あるいはIMUの予測、5節のNDTを使った粗い位置合わせなど)で高速に大まかな初期値を求め、その初期値を出発点としてScan-to-Mapによる精密な位置合わせを行う、という2段構えの設計である。次のパイプラインは、この考え方に基づいた一般的なLiDAR-SLAMの処理の流れを示している。
図1 — 毎scanの高速経路はDeskewから局所Registration、姿勢・Local map更新へ進み、その結果を次回の初期値と参照地図へ戻す。別の低頻度経路がKeyframe履歴から再訪を検証し、採用したloop制約でGraph最適化して全体軌跡・地図を補正する。
図中のDeskew(走査中の歪み補正)は、LiDAR特有の処理である。回転式LiDARの1回のスキャンは瞬時に得られるのではなく、数十〜百ミリ秒程度の走査時間をかけて取得される。この間にセンサー自身が動くと、1回のスキャンの中で先に取得した点と後で取得した点とで、実際には異なる時刻・異なる位置から見た点が混在してしまう(Motion Distortion)。IMU(あるいは直前の速度推定)を使ってこの走査中の動きを補正し、あたかも1つの瞬間から見たかのような点群に再構成する処理がDeskewである。この補正はVIO/LIO(「VIO/LIO入門」参照)で扱うIMUとの融合とも深く関わっている。
7. LOAMを理解する
LOAM(Lidar Odometry and Mapping in Real-time)は、Zhang & Singhが2014年にRobotics: Science and Systems(RSS)で発表した、現在に至るLiDAR-SLAMの多くの実装の土台になった手法である。LOAMの最大の工夫は、点群のすべての点を使うのではなく、幾何学的に特徴的な点だけを抽出して使うという設計にある。
LOAMは各点の周辺の局所的な滑らかさ(曲率)を評価し、周囲と比べて曲率が大きい点をエッジ特徴点(物体の角や輪郭のような、鋭く折れ曲がった部分)、曲率が小さい点を平面特徴点(壁や床のような、滑らかに続く面の一部)として抽出する。数万点あるスキャン全体をそのまま位置合わせに使う代わりに、この特徴点だけに絞り込むことで、スキャンマッチングの計算コストを大きく下げられる。
特徴点が求まったあとの誤差の定義は、4節のICPと似た発想を取るが、対応する幾何要素が「点」ではなく「線」や「面」になる点が異なる。エッジ特徴点p_iは、直前のスキャン(あるいは地図)中の対応する2点p_a・p_bが張る直線までの距離を最小化する。
平面特徴点は、対応する3点が張る平面までの距離(4節のPoint-to-Plane誤差と同じ形)を最小化する。これらの距離の総和を、回転・並進について最小化することで、フレーム間の相対運動を求める。
LOAMのもう1つの中心的な設計が、高頻度のLidar Odometryと低頻度のLidar Mappingという2段構成である。Lidar Odometryは、直前のスキャンとの間で特徴点ベースのScan-to-Scanマッチングを高頻度(スキャンごと)に実行し、粗いが素早い姿勢推定を出力する。Lidar Mappingは、この粗い推定値を初期値として、蓄積された地図全体に対するScan-to-Mapマッチングを、Lidar Odometryよりも低い頻度で実行し、精度の高い姿勢とより正確な地図を作る。2つの処理を異なる頻度で並行させ、最終的にLidar Mappingの結果でLidar Odometryの推定を補正するという構成により、高頻度な出力と高精度な推定を両立させている。この「高頻度の粗い推定+低頻度の精密な補正」という設計思想は、後続の多くのLiDAR-SLAM・LIO実装(9節)に受け継がれている。
8. Loop ClosureとGraph SLAM
LiDAR Odometryだけでは、Visual-SLAMのVisual Odometryと同様にDriftが蓄積し続け、ロボットが出発点に戻ってきても、推定された軌跡はそのことに気づかない。この蓄積誤差を補正する仕組みがLoop Closure(ループクロージャ)である。
LiDARにおけるLoop Closureは、大きく2つのステップに分かれる。第一がPlace Recognition(場所認識)であり、現在の点群が、過去に訪れた場所の点群と似ているかどうかを判定する。画像のような輝度情報を持たない点群では、点群の形状分布そのものを記述子化する手法(例えばスキャンを扇形のセルに分割し、各セルの最大高さを並べて記述子とするScan Contextのような手法)や、点群全体の幾何学的な特徴量を要約する手法が使われる。第二が幾何検証であり、場所認識で候補として挙がったスキャン同士に対して、実際にICP/NDTでスキャンマッチングを試み、十分に一致するかどうかを確認する。この2段階を経て初めて、「今の位置」と「過去にその場所を訪れたときの位置」を結びつける拘束が信頼できるものとして採用される。
このループクロージャの拘束を使って、蓄積した姿勢と地図全体を辻褄が合う形に補正する処理がPose Graph(姿勢グラフ)最適化、あるいはより一般にGraph SLAMと呼ばれる枠組みである。各時刻のセンサー姿勢をノード、フレーム間(あるいはループを構成する2つの離れた時刻の間)の相対運動の拘束をエッジとしたグラフを構築し、すべてのエッジの拘束が最も辻褄の合う形になるように、非線形最適化でノード(姿勢)を調整する。ループクロージャで新たに追加されたエッジが、それまで一方向にしか伝播していなかったDriftを、ループを構成する経路全体に配分し直す役割を果たす。この最適化には、Visual-SLAM(「Visual-SLAM入門」10節参照)と同じく、g2oやGTSAM、Ceres SolverといったライブラリがLiDAR-SLAM実装の内部でも広く利用されている。
9. 主要アルゴリズム
LiDAR-SLAMの歴史は、「点群をどう位置合わせするか」「どこまでを特徴点に絞り込むか」という軸で見ると理解しやすい。
ICP(Besl & McKay、1992年)は、4節で見た通り、点群位置合わせの古典的かつ現在も広く使われる基礎アルゴリズムである。単体でリアルタイムSLAMに使われることは少ないが、後続のほぼすべての手法の内部で、何らかの形の対応点最小化として姿を変えて使われ続けている。
NDT(Biber & Straßer、2003年)は、5節で見た通り、対応点探索を避けたガウス分布ベースのスキャンマッチングであり、ICPと並ぶもう1つの基礎的な選択肢として、2次元の屋内ロボットSLAMから3次元の自動運転用途まで幅広く使われている。
LOAM(Zhang & Singh、2014年)は、7節で見た通り、エッジ・平面の特徴点抽出と、高頻度Odometry+低頻度Mappingの2段構成を導入し、現在に至る多くのLiDAR-SLAM・LIO実装の設計の土台になった。
LeGO-LOAM(Lightweight and Ground-Optimized Lidar Odometry and Mapping、Shan & Englot、2018年IEEE/RSJ International Conference on Intelligent Robots and Systems(IROS)発表)は、LOAMを地上を走行する車両向けに最適化した拡張である。点群をまず地面点と非地面点に分離し、地面点をロール・ピッチ・高さの推定に、非地面点を残る自由度(水平方向の位置・ヨー)の推定に使うことで、計算資源の限られた組み込みシステムでもリアルタイムに動作する軽量な設計を実現した。
A-LOAM(Advanced LOAM)は、HKUST Aerial Robotics Groupなどによって公開された、LOAMの考え方をCeres Solverベースの非線形最適化で再実装した、簡略化されたオープンソース実装である。オリジナルのLOAMが持つ細かな工学的調整の一部を省き、コードの見通しを優先した構成になっており、LOAM系のアルゴリズムを学ぶ・実験する際の入門的な実装としてよく参照される。
Cartographer(Hess・Kohler・Rapp・Andor、2016年IEEE International Conference on Robotics and Automation(ICRA)発表、Google製)は、複数のスキャンをまとめたSubmap(サブマップ)単位でCeres Solverベースのローカルなスキャンマッチングを行い、さらに探索空間を分割統治的に絞り込むBranch-and-Bound法による高速なループクロージャ検出を組み合わせた手法である。2次元・3次元双方に対応し、ROS向けのオープンソース実装が広く公開されていることもあって、屋内マッピングの分野で広く採用されている。
LIO-SAM(Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping、Shan・Englot・Meyers・Wang・Ratti・Rus、2020年IROS発表)は、IMUの事前積分(Preintegration)Factor、LiDARスキャンマッチングによるOdometry Factor、GPS Factor、Loop Closure Factorを、共通のFactor Graph上にまとめて最適化する、密結合のLiDAR-Inertial Odometry(LIO)である(詳細は「VIO/LIO入門」参照)。
FAST-LIO2は、香港大学MARSラボのXu・Zhangらが発表した、Tightly-Coupled Iterated Kalman Filter(反復拡張カルマンフィルタ)による高速なLIOである。点群を逐次的な最近傍探索構造(incremental k-d tree、iKD-Tree)で直接管理することで、特徴抽出という明示的な工程を経ずに点群を直接地図へレジストレーションでき、計算資源の限られた小型プラットフォームでの実時間動作を重視した設計になっている。2026年時点の最新動向は「LiDAR-SLAMの技術動向」で扱っている。
10. 各手法を比較
| 手法 | 原理 | 精度 | 計算コスト | ロバスト性 | 実装難易度 |
|---|---|---|---|---|---|
| ICP | 最近傍点探索+剛体変換の反復最小化 | 初期値が良ければ高精度、悪いと局所解に陥る | 中〜高(最近傍探索の反復コスト) | 低テクスチャ(幾何)な環境や初期値ズレに弱い | 低(概念は単純、既存実装も豊富) |
| NDT | ボクセルごとのガウス分布への適合度最大化 | ボクセルサイズに依存、ノイズに比較的頑健 | 中(対応点探索は不要だが勾配計算あり) | ノイズには強いがボクセルサイズの調整が必要 | 中(パラメータ調整にコツが要る) |
| LOAM | エッジ・平面特徴点抽出+2段階Odometry/Mapping | 特徴が豊富な環境で高精度 | 中(特徴点に絞るため点群全体より軽い) | 特徴の乏しい環境(トンネル等)に弱い | 中〜高(パラメータ・設計が複雑) |
| LeGO-LOAM | 地面点分離+LOAM型の2段階最適化 | 地上車両では高精度、空中機では前提が崩れる | 中(LOAMより軽量) | 平坦な地面がある環境に強く依存 | 中 |
| A-LOAM | LOAMのCeres Solverによる簡略再実装 | LOAM相当(実装依存で変動) | 中 | LOAMと同様の弱点を継承 | 低〜中(学習用途で参照しやすい) |
| Cartographer | Submap単位のスキャンマッチング+Branch-and-Bound Loop Closure | 屋内環境(2D)で高精度、大域整合性に強み | 中〜高(Submap管理とBranch-and-Bound探索のコスト) | ループが豊富な屋内環境に強い | 中(ROSエコシステムで導入は容易) |
| LIO-SAM | IMU事前積分+LiDAR Odometry+GPS+Loop ClosureのFactor Graph最適化 | IMU併用で高精度、GPSがあれば大域整合性も向上 | 高(Factor Graph最適化のコスト) | 幾何学的縮退にIMUで対抗できる | 中〜高(9軸IMU等センサー前提が細かい) |
| FAST-LIO2 | Iterated Kalman Filter+iKD-Treeによる直接レジストレーション | 高精度かつ高頻度(特にソリッドステートLiDARで顕著) | 低〜中(直接法で特徴抽出コストを回避) | 縮退環境ではIMU依存、極端な低ジオメトリには弱い | 中(実装は公開されているが内部調整は専門性を要する) |
全体としては、ICP・NDTが「土台となる位置合わせアルゴリズム」、LOAM系(LOAM/LeGO-LOAM/A-LOAM)が「特徴点設計による効率化」、Cartographerが「大域整合性とループクロージャの効率化」、LIO-SAM/FAST-LIO2が「IMUとの密結合による頑健性の底上げ」という、それぞれ異なる軸での改良を積み重ねてきた系譜として理解すると全体像がつかみやすい。
11. LiDAR-SLAMの難所
LiDARは能動的にレーザーを照射して距離を測るため、Visual-SLAMが苦手とする暗所や逆光には強い。しかしLiDAR-SLAM固有の弱点も存在する。
- 幾何学的な縮退(Degeneracy): 長いトンネルや、広く続く平坦な駐車場のように、点群の形状が特定の方向にほとんど変化しない環境では、スキャンマッチングがその方向の並進・回転を一意に決められなくなる。ICP・NDTの最適化が、その方向にはどんな値でも誤差がほとんど変わらない「平坦な谷」に陥ってしまうためであり、これは特徴の乏しい壁で起こるVisual-SLAMの弱点と、原理的に同じ根を持つ問題である。
- 悪天候: 雨・雪・霧・砂塵は、レーザー光を散乱・吸収し、本来届くはずの反射光が減衰したり、ノイズ点(実際には存在しない位置に生じる偽の反射点)が発生したりする。
- 鏡面・透明物体: ガラスや鏡のような物体は、レーザー光を正反射してしまい、実際の物体の位置とは異なる場所(鏡像の位置)に偽の点を作り出すことがある。
- 動的物体: 歩行者や車両のように動く物体上の点を、静止した環境の一部として位置合わせに使ってしまうと、センサー自身の動きの推定に誤差が混入する。動的物体の検出・除外、あるいは動的物体を明示的にモデル化する拡張が必要になる。
- 点群密度と計算コストのトレードオフ: 高解像度・高頻度な点群ほど位置合わせの精度は上がりやすいが、1フレームあたりの点数が増えるほどスキャンマッチングの計算コストも増大する。組み込み機器やドローンのように計算資源が限られる場面では、この密度と速度のトレードオフが設計上の大きな制約になる。
- ハードウェアコスト: 高解像度・長距離の回転式LiDARは、カメラと比べて依然として高価であり、コストが導入の障壁になりやすい。
これらの弱点の多くはカメラの弱点とは異なる方向に生じるため、Camera(Visual-SLAM)とLiDAR(LiDAR-SLAM)を組み合わせるセンサー融合(「Sensor Fusion入門」参照)が、どちらか単体の限界を補う有力な手段になる。
12. 実用上の選び方
LiDAR-SLAMをどう選ぶかは、搭載できるセンサー構成、計算資源、要求される精度、そして環境の幾何学的な性質によって大きく変わる。
- 屋内サービスロボット・掃除ロボット: 低コストな2D LiDARを使う構成が根強く、Cartographerのようなロバストな2D SLAM実装が広く使われる。壁や家具といった構造物が豊富な屋内は、幾何学的な縮退が起きにくく、LiDAR-SLAMが機能しやすい環境である。
- 自動運転車: 高解像度な3D LiDARと、GPS・IMU・カメラとの多センサー融合が前提になる。トンネルや高架下のような幾何学的に縮退しやすい区間への対策として、LIO-SAM/FAST-LIO2のようなIMU密結合構成が重視される。
- ドローン: 搭載重量・電力への制約が厳しいため、ソリッドステートLiDAR(Livoxなど)と、計算効率を重視したFAST-LIO2のような直接法が選ばれやすい。
- 倉庫・工場の自律搬送ロボット(AGV/AMR): 定型的な通路構造を持つ環境が多く、2D LiDARベースのScan-to-Map(Cartographerなど)が実用的な選択肢になる。棚の配置が頻繁に変わる環境では、地図の更新頻度も選定基準に加わる。
- トンネル・地下・長い直線廊下のような縮退環境: LiDAR単体では位置合わせが不安定になりやすいため、IMUとの密結合(LIO-SAM/FAST-LIO2)や、車輪オドメトリのような別系統の情報源との併用が実質的に必須になる。
- 屋内 vs 屋外: 屋内は構造物が多く幾何学的な手がかりが豊富でLiDAR-SLAMが機能しやすい一方、屋外は開けた空間での縮退や悪天候への対策が課題になり、IMU・GNSSとの併用がより重要になる。
計算資源に制約が大きく高頻度な出力を優先するならFAST-LIO2のような直接法、GPSも含めた大域的な整合性を重視するならLIO-SAM、2D環境での実績とROSエコシステムとの親和性を重視するならCartographer、というのが実務上の大まかな判断軸になる。IMUを一切使わない構成(ICP/NDT/LOAM単体)は、縮退環境への耐性という点で今日ではほぼ非現実的な選択になりつつあり、多くの実運用システムはIMUとの密結合を前提に設計されている。
13. 参考資料
- Besl & McKay, “A Method for Registration of 3-D Shapes” (IEEE TPAMI, 1992)
- Zhang & Singh, “LOAM: Lidar Odometry and Mapping in Real-time” (RSS, 2014)
- Xu et al., “FAST-LIO2: Fast Direct LiDAR-Inertial Odometry” (IEEE T-RO, 2022)
14. まとめ
LiDAR-SLAMは、レーザー光の飛行時間から得られる実寸の距離情報(点群)を、ICP(最近傍点の反復的な位置合わせ)かNDT(ボクセルごとのガウス分布への適合)のいずれかでスキャンマッチングし、Scan-to-ScanとScan-to-Mapを組み合わせたLiDAR Odometryで軌跡を積み重ね、Loop ClosureとPose Graph最適化で蓄積誤差を補正し続けることで、自己位置推定と地図構築を同時に実現する技術である。LOAM系(特徴点抽出による効率化)・Cartographer(大域整合性の効率化)・LIO-SAM/FAST-LIO2(IMUとの密結合による頑健性向上)という代表アルゴリズムの系譜は、それぞれ異なる課題への解として発展してきたものであり、幾何学的な縮退環境への対処という一点において、多くの実運用システムがIMUとの密結合を前提とする設計へ収束しつつある。
LiDARが距離を測れれば自己位置も一意に分かる?
平面や長い廊下では動きの一部を拘束しにくい。距離測定の成功と、位置合わせの幾何的な観測可能性を分ける。
コメント
コメントの投稿にはログインが必要です
まだコメントはありません。