SLAM(自己位置推定と环境地図作成)

SLAMとは?

これだけは知っておきたい3つのこと

SLAM(同步定位和映射,自己位置推定と环境地図作成の同时実行)とは移动体の自己位置推定と环境地図作成を同时に行う技术の総称です.SLAMを活用することで,移动体が未知の环境下で环境地図を作成することができます。构筑した地図情报を使って障害物などを回避しつつ,特定のタスクを遂行します。

SLAMを活用する上で知っておきたい3つのことについて解说していきます。

なぜSLAMが重要か

SLAMは技术的には古くから研究されていましたが,近年,コンピューターの性能が向上し,かつ,カメラやレーザーレンジファインダーなどのセンサーが低価格で入手可能になったことで,様々な分野に活用が広がっています。近年ではディープラーニング(深层学习)の技術を応用した大满贯の実装も発表されています。

なぜSLAMが重要か,その利点や応用例を解说します。

大满贯を活用することの利点

なぜSLAMが重要なのでしょうか。

お掃除ロボットを例として取り上げてみます。大满贯を搭載しないお掃除ロボットではランダムに部屋の中を動き回り,ほこりの除去を試みます。この場合,全ての床面を掃除できるとは限りません。また,電力も余分に消費してしまうため,バッテリーの持ちも悪くなってしまいます。一方,大满贯を搭載するとお掃除ロボットは車輪の回転量やカメラなどの画像センサーから移動量を推定することができます。これを自己位置推定(本地化)と呼びます。それと同時にカメラなどのセンサーを使って周辺の障害物の地図を作ります。これを環境地図作成(映射)と呼びます。自己位置推定と環境地図作成を同時に行うことを大满贯と呼びます。

大满贯を活用することで,あらかじめ部屋の形状が分かっていなくても,走行しながら部屋の地図情報を構築することができます。構築した地図情報を活用することで,一度掃除した場所を重複することなく,最短時間で隅々までほこりの除去が行えます。

お扫除ロボットでのSLAMの利点

SLAMを活用することによって人间が行っているような柔软なタスクを移动体に行わせることができます。移动ロボットや自动运転,ドローンなどの移动体の自律化を実现する上で,SLAMは欠かせない技术になっているのです。

SLAMの応用例

大满贯は下記に挙げたように移動ロボット,自動運転,ドローンと用途が広がっています。身の回りの様々な用途に活用できる可能性を秘めています。

  • 自动运転车用の高精度地図(高清图)の作成
  • お扫除ロボットの部屋の间取り生成とほこりの效率的な除去
  • 芝刈りロボットによる效率的な芝のメンテンナンス
  • 工场内·生产ラインでの无人搬送车·无轨道型AGVの自律运転
  • 探查机·ローバーによる未知の惑星探查
  • 无人水下潜航器潜水艦・・水中探査ロボット・無人潜水機(AUV)による水中探査
  • ドローン·UAV·移动ロボットの自动操縦による荷物配达
  • 介护ロボットによる访问·见守り
  • 警备ロボットによる巡回
  • 施設内の案内をするサービスロボット
  • ドローン·UAVによる地形把握,灾害现场の状况把握,工事现场の図面作成

大满贯の仕組みとは

SLAMの仕组みについて说明していきます。

大满贯を実現する技術要素は大きく分けて2つあります。1つはセンサー信号処理を中心としたフロントエンドの処理部です。こちらは使用するセンサーに大きく依存する処理となっています。2つ目はポーズグラフの最適化を中心としたバックエンドの処理部です。バックエンドの処理部はセンサーによらず活用できます。

ここではフロントエンドの处理部に注目し,视觉SLAMと激光雷达SLAMという2つの手法についてご绍介します。

SLAMの处理の流れ

视觉垃圾

视觉大满贯は名称のとおり,カメラ・イメージセンサーからの画像を中心とした摔技術です。

カメラの种类としては単眼カメラ(広角カメラ,鱼眼カメラ,全天球カメラ),复眼カメラ(ステレオカメラ,マルチカメラ),RGB-dカメラ(深度カメラや的ToFカメラ)などが含まれます。

视觉SLAMは比较的安価に入手できるカメラを利用することでコストを抑える利点があります。また,カメラは情报量が多いため様々なランドマーク(以前観测した场所)を検出することができます。ランドマーク検出をグラフベースの最适化と组み合わせて柔软なSLAMを実装できる可能性があります。

一方,単眼カメラを使用する場合は距離の単位(スケール)が不定となるため,ARマーカーやARタグ,QRコード,チェッカーボードなど既知の物体を検出して画像上から物理量を知る,もしくは,IMU(惯性测量单元,慣性計測装置)などの物理量を直接計測できるセンサーとフュージョンする必要があります。视觉大满贯のテクノロジーとしては结构与运动(SfM)や视觉测程法(ビジュアルオドメトリー),Visual-Inertial测程法(ビジュアルイナーシャルオドメトリー),バンドル調整などが関連します。

视觉SLAMのアルゴリズムは大きく2つに分类できます。画像特徴点のマッチングによる疎な手法(基于特征的方法)と,画像全体の辉度を使った密な手法(直接法)です。アルゴリズムとして,前者はPTAMやORB-SLAM,ORB-SLAM2,后者はDTAM,LSD-SLAM,DSO,SVOなどがよく知られています。

结构与运动の例

ORB-SLAMによる特徴点マッチング

ORB-SLAMのカメラ轨迹と生成された地図

视觉大满贯(ORB-SLAM)の例

激光雷达SLAM

激光雷达(光检测和测距)というレーザーセンサー(距离センサー)を主に使用した方法です。

レーザーセンサーはカメラやToFなどの他のセンサーに比べて格段に精度が高く,自動運転やドローンなど速度が速い移動体で広く使用されています。レーザーセンサーの出力値は一般的に2 d (X, Y座標)もしくは3 d (X, Y, Z座標)の点群データとなります。レーザーセンサーの点群は距離精度が高く,大满贯の地図構築に対して非常に有効に働きます。一般に点群同士をマッチングすることで移動量を逐次推定します。移動量を積算することで自己位置を推定することができます。激光雷达からの点群のマッチングではICP(迭代最近点)アルゴリズムや无损检测(正态分布变换)アルゴリズムが用いられます。地図としては2 dや3 dの点群地図やグリッドマップ,ボクセルマップとして表現することがあります。

一方,密度の観点において,点群は画像などに比べて粗く,点群同士のマッチングにおいて,特徴が十分でない侧面もあります。例えば,周囲に障害物が少ないような场所では点群间の位置合わせが容易でなく,移动体の位置を见失ってしまうことがあります。また,点群のマッチングは一般に处理负荷が高いため,高速化の工夫が必要となります。よって车両の位置推定にはホイールオドメトリーやGNSS(RTKなどの高精度なもの),IMUなどの他の计测结果をフュージョンすることもあります。また,激光雷达は高価なため赤外线センサーや超音波センサー,电波によるレーダーセンサーで代替する场合もあります。その场合,精度は大幅に低下してしまいます。

二维激光雷达による激光雷达大满贯

3 d激光雷达による激光雷达大满贯

大满贯を実現するための課題

SLAMは一部実用化されているものの,より泛用的に活用するには様々な技术的课题があります。主要な3つの课题を取り上げ,解说します。

课题1。位置推定の误差が蓄积し,真値から大きく外れる

SLAMのもっとも知られた课题の1つに,误差の蓄积(ドリフト)があります.SLAMは逐次移动量を推定します。移动量の推定には必ず误差が発生します。この误差が累积していくことで,真の位置と大きくずれる现象が発生します。この误差の蓄积により,地図データが崩れたり,歪んだりするため,それ以降の探索が困难になります。

例としてロの字の通路を周回することを考えます。このとき,誤差が蓄積していくと始点と終点の位置が一致しないような現象が発生します。このようなループが閉じない現象をループの閉じこみ(閉ループ,循环关闭)問題と呼びます。位置推定の誤差は本質的に不可避なものです。ループの閉じこみを検出し,誤差の蓄積をどのように補正・キャンセルするかが重要となります。

元の位置に戻らない(地図が歪む)

対策の1つは,以前访れた场所の特徴を何らかランドマークとして记忆しておき,过去の位置推定の误差を最小化することです。误差の补正には姿势グラフ·ポーズグラフ(姿态图形)を构筑して実现します。误差の最小化を最适化问题として解くことでもっともらしい地図データを生成します。このような最适化は视觉SLAMではバンドル调整(束调整)などとも呼ばれます。

ポーズグラフを構築し,誤差の最小化を行った例

課題2.位置推定が失敗し,地図上の位置を見失う

画像や点群によるマッチングではロボットの运动は考虑されていません。そのため,非连続的な姿势推定结果を出力することがあります。例えば,秒速1米で移动しているロボットが急に10米先に飞ぶような计算结果を出力することもあります。

このような位置推定の失敗(ロスト)に対処する2つの方法があります。一つ目は移動体の運動モデルや複数のセンサーをフュージョンすることで位置推定の失敗を抑制することです。もう一つは位置推定が失敗した際に復帰するアルゴリズムを準備しておくことです。

運動モデルを活用したセンサーフュージョンにはいくつかの方法があります。代表的なものはカルマンフィルターを使った位置推定です。一般的な差動駆動型ロボットや四輪車は非線形の運動モデルとなるため,拡張カルマンフィルターやパーティクルフィルター(モンテカルロローカリゼーション)がよく使われます。他に,无味カルマンフィルターなどのより柔軟なベイズフィルターを用いることもあります。センサーフュージョンとしてよく用いられるセンサーは慣性計測装置(IMU,明显,INS,加速度センサー,ジャイロセンサー,地磁気センサー)があります。車両の車輪に取り付けたホイールオドメトリー(ホイールエンコーダー)を用いることもよくあります。

位置推定に失败してしまった场合に复帰する方法として,过去に访问した点をランドマークとして记忆しておく方法があります。このような点はキーフレームとも呼ばれます。ランドマークを探索する场合は何らか特徴量をインデックス化しておき,高速に走查できるようにしておきます。画像特徴量による手法としは特色的袋(BOF),视觉词袋(BoVW)があります。近年ではディープラーニングによる特徴量から距离比较を行い,近いシーンかどうかの判断を行うこともあります。

课题3。画像处理·点群处理·最适化の计算コストが高い

SLAMを実机ロボット上で実现する际に问题になるのが计算コストです。

ロボットの计算ユニットには一般的に省电力·小型の组み込みマイコンなどが使用されます。位置推定を精度よく実现するためには,画像处理や点群处理によるマッチングを速い周期で実行する必要があります。また,ループ闭じこみのような最适化计算も负荷の高い处理になります。このような计算コストの高い处理をどのように组み込みマイコン上で実行するかが课题となります。

マッチング処理の前処理となる特徴抽出などは比較的,並列化に向いた処理が多く,マルチコアによる処理やSIMD演算,組み込みGPUの活用などで高速化ができる場合があります。また,ポーズグラフの最適化は比較的長い周期実行できればよいので,優先度を下げながら定期的に実行するなどの工夫がされています。

MATLABによるSLAM

马铃薯®では大满贯を実装するための様々なコンポーネントを用意しています。これらのコンポーネントを組み合わせて対象のシステムにあった大满贯アプリケーションの構築を試行錯誤できます。

  1. 大满贯のフロントエンド活用可能な様々なセンサー信号処理・画像処理
  2. SLAMのバックエンドとして活用できる2D / 3Dのポーズグラフ
    • 导航工具箱による2D / 3Dポーズグラフ
    • 计算机视觉工具箱によるバンドル调整
  3. SLAMアルゴリズムを経路计画や制御など他の工具箱と连携
    • 导航工具箱のパスプランニングアルゴリズムと连携が可能
  4. SLAMアルゴリズムを検讨するためのカメラや雷达のセンサーモデル
    • 自动驾驶工具箱と史诗般的游戏®の虚幻引擎®を连携し,3Dシミュレーション环境から画像や点群を生成

SLAMについてさらに详しく

SLAMによる自己位置推定と地図构筑について解说します。スキャンマッチングやループの闭じこみを検出,误差の蓄积を补正·キャンセルするための姿势グラフの最适化について解说します。
自律移动ロボット开発に关连する认知,判断,行动计画,操舵までの各种机能をご绍介します。また,これらの机能を组み合わせて自律移动ロボットアプリケーションを开発するワークフローについてご绍介いたします。
この例では,ポーズグラフ最適化を使用して,収集された一連の2 d激光雷达スキャンを使って大满贯アルゴリズムを実装する方法を示します。二维激光雷达スキャンを使用して環境のマップを構築し,ロボットの位置軌道を推定します。
慣性測定ユニット(IMU)の読み取り値を活用して,車両に搭載されたセンサーからの3 d激光雷达データを処理して,マップを構築する方法を紹介します。車両の軌道を全地球測位システム(GPS)記録と比較する方法も示します。
结构与运动(SfM)は一連の2次元画像シーケンスからシーンの3次元構造を推定します。この例では,ビューのシーケンスからキャリブレーションされたカメラの姿勢を推定し,シーンの3次元構造を再構成します。
ビジュアルオドメトリは,画像シーケンスを分析することにより,カメラの位置姿勢を推定するプロセスです。一連の画像からキャリブレーションされた単一のカメラの軌跡を推定する方法を示します。