SLAM(同步定位和映射,自己位置推定と环境地図作成の同时実行)とは移动体の自己位置推定と环境地図作成を同时に行う技术の総称です.SLAMを活用することで,移动体が未知の环境下で环境地図を作成することができます。构筑した地図情报を使って障害物などを回避しつつ,特定のタスクを遂行します。
SLAMを活用する上で知っておきたい3つのことについて解说していきます。
SLAMは技术的には古くから研究されていましたが,近年,コンピューターの性能が向上し,かつ,カメラやレーザーレンジファインダーなどのセンサーが低価格で入手可能になったことで,様々な分野に活用が広がっています。近年ではディープラーニング(深层学习)の技術を応用した大满贯の実装も発表されています。
なぜSLAMが重要か,その利点や応用例を解说します。
なぜSLAMが重要なのでしょうか。
お掃除ロボットを例として取り上げてみます。大满贯を搭載しないお掃除ロボットではランダムに部屋の中を動き回り,ほこりの除去を試みます。この場合,全ての床面を掃除できるとは限りません。また,電力も余分に消費してしまうため,バッテリーの持ちも悪くなってしまいます。一方,大满贯を搭載するとお掃除ロボットは車輪の回転量やカメラなどの画像センサーから移動量を推定することができます。これを自己位置推定(本地化)と呼びます。それと同時にカメラなどのセンサーを使って周辺の障害物の地図を作ります。これを環境地図作成(映射)と呼びます。自己位置推定と環境地図作成を同時に行うことを大满贯と呼びます。
大满贯を活用することで,あらかじめ部屋の形状が分かっていなくても,走行しながら部屋の地図情報を構築することができます。構築した地図情報を活用することで,一度掃除した場所を重複することなく,最短時間で隅々までほこりの除去が行えます。
SLAMを活用することによって人间が行っているような柔软なタスクを移动体に行わせることができます。移动ロボットや自动运転,ドローンなどの移动体の自律化を実现する上で,SLAMは欠かせない技术になっているのです。
大满贯は下記に挙げたように移動ロボット,自動運転,ドローンと用途が広がっています。身の回りの様々な用途に活用できる可能性を秘めています。
SLAMの仕组みについて说明していきます。
大满贯を実現する技術要素は大きく分けて2つあります。1つはセンサー信号処理を中心としたフロントエンドの処理部です。こちらは使用するセンサーに大きく依存する処理となっています。2つ目はポーズグラフの最適化を中心としたバックエンドの処理部です。バックエンドの処理部はセンサーによらず活用できます。
ここではフロントエンドの处理部に注目し,视觉SLAMと激光雷达SLAMという2つの手法についてご绍介します。
视觉大满贯は名称のとおり,カメラ・イメージセンサーからの画像を中心とした摔技術です。
カメラの种类としては単眼カメラ(広角カメラ,鱼眼カメラ,全天球カメラ),复眼カメラ(ステレオカメラ,マルチカメラ),RGB-dカメラ(深度カメラや的ToFカメラ)などが含まれます。
视觉SLAMは比较的安価に入手できるカメラを利用することでコストを抑える利点があります。また,カメラは情报量が多いため様々なランドマーク(以前観测した场所)を検出することができます。ランドマーク検出をグラフベースの最适化と组み合わせて柔软なSLAMを実装できる可能性があります。
一方,単眼カメラを使用する場合は距離の単位(スケール)が不定となるため,ARマーカーやARタグ,QRコード,チェッカーボードなど既知の物体を検出して画像上から物理量を知る,もしくは,IMU(惯性测量单元,慣性計測装置)などの物理量を直接計測できるセンサーとフュージョンする必要があります。视觉大满贯のテクノロジーとしては结构与运动(SfM)や视觉测程法(ビジュアルオドメトリー),Visual-Inertial测程法(ビジュアルイナーシャルオドメトリー),バンドル調整などが関連します。
视觉SLAMのアルゴリズムは大きく2つに分类できます。画像特徴点のマッチングによる疎な手法(基于特征的方法)と,画像全体の辉度を使った密な手法(直接法)です。アルゴリズムとして,前者はPTAMやORB-SLAM,ORB-SLAM2,后者はDTAM,LSD-SLAM,DSO,SVOなどがよく知られています。
激光雷达(光检测和测距)というレーザーセンサー(距离センサー)を主に使用した方法です。
レーザーセンサーはカメラやToFなどの他のセンサーに比べて格段に精度が高く,自動運転やドローンなど速度が速い移動体で広く使用されています。レーザーセンサーの出力値は一般的に2 d (X, Y座標)もしくは3 d (X, Y, Z座標)の点群データとなります。レーザーセンサーの点群は距離精度が高く,大满贯の地図構築に対して非常に有効に働きます。一般に点群同士をマッチングすることで移動量を逐次推定します。移動量を積算することで自己位置を推定することができます。激光雷达からの点群のマッチングではICP(迭代最近点)アルゴリズムや无损检测(正态分布变换)アルゴリズムが用いられます。地図としては2 dや3 dの点群地図やグリッドマップ,ボクセルマップとして表現することがあります。
一方,密度の観点において,点群は画像などに比べて粗く,点群同士のマッチングにおいて,特徴が十分でない侧面もあります。例えば,周囲に障害物が少ないような场所では点群间の位置合わせが容易でなく,移动体の位置を见失ってしまうことがあります。また,点群のマッチングは一般に处理负荷が高いため,高速化の工夫が必要となります。よって车両の位置推定にはホイールオドメトリーやGNSS(RTKなどの高精度なもの),IMUなどの他の计测结果をフュージョンすることもあります。また,激光雷达は高価なため赤外线センサーや超音波センサー,电波によるレーダーセンサーで代替する场合もあります。その场合,精度は大幅に低下してしまいます。
SLAMは一部実用化されているものの,より泛用的に活用するには様々な技术的课题があります。主要な3つの课题を取り上げ,解说します。
SLAMのもっとも知られた课题の1つに,误差の蓄积(ドリフト)があります.SLAMは逐次移动量を推定します。移动量の推定には必ず误差が発生します。この误差が累积していくことで,真の位置と大きくずれる现象が発生します。この误差の蓄积により,地図データが崩れたり,歪んだりするため,それ以降の探索が困难になります。
例としてロの字の通路を周回することを考えます。このとき,誤差が蓄積していくと始点と終点の位置が一致しないような現象が発生します。このようなループが閉じない現象をループの閉じこみ(閉ループ,循环关闭)問題と呼びます。位置推定の誤差は本質的に不可避なものです。ループの閉じこみを検出し,誤差の蓄積をどのように補正・キャンセルするかが重要となります。
対策の1つは,以前访れた场所の特徴を何らかランドマークとして记忆しておき,过去の位置推定の误差を最小化することです。误差の补正には姿势グラフ·ポーズグラフ(姿态图形)を构筑して実现します。误差の最小化を最适化问题として解くことでもっともらしい地図データを生成します。このような最适化は视觉SLAMではバンドル调整(束调整)などとも呼ばれます。
画像や点群によるマッチングではロボットの运动は考虑されていません。そのため,非连続的な姿势推定结果を出力することがあります。例えば,秒速1米で移动しているロボットが急に10米先に飞ぶような计算结果を出力することもあります。
このような位置推定の失敗(ロスト)に対処する2つの方法があります。一つ目は移動体の運動モデルや複数のセンサーをフュージョンすることで位置推定の失敗を抑制することです。もう一つは位置推定が失敗した際に復帰するアルゴリズムを準備しておくことです。
運動モデルを活用したセンサーフュージョンにはいくつかの方法があります。代表的なものはカルマンフィルターを使った位置推定です。一般的な差動駆動型ロボットや四輪車は非線形の運動モデルとなるため,拡張カルマンフィルターやパーティクルフィルター(モンテカルロローカリゼーション)がよく使われます。他に,无味カルマンフィルターなどのより柔軟なベイズフィルターを用いることもあります。センサーフュージョンとしてよく用いられるセンサーは慣性計測装置(IMU,明显,INS,加速度センサー,ジャイロセンサー,地磁気センサー)があります。車両の車輪に取り付けたホイールオドメトリー(ホイールエンコーダー)を用いることもよくあります。
位置推定に失败してしまった场合に复帰する方法として,过去に访问した点をランドマークとして记忆しておく方法があります。このような点はキーフレームとも呼ばれます。ランドマークを探索する场合は何らか特徴量をインデックス化しておき,高速に走查できるようにしておきます。画像特徴量による手法としは特色的袋(BOF),视觉词袋(BoVW)があります。近年ではディープラーニングによる特徴量から距离比较を行い,近いシーンかどうかの判断を行うこともあります。
SLAMを実机ロボット上で実现する际に问题になるのが计算コストです。
ロボットの计算ユニットには一般的に省电力·小型の组み込みマイコンなどが使用されます。位置推定を精度よく実现するためには,画像处理や点群处理によるマッチングを速い周期で実行する必要があります。また,ループ闭じこみのような最适化计算も负荷の高い处理になります。このような计算コストの高い处理をどのように组み込みマイコン上で実行するかが课题となります。
マッチング処理の前処理となる特徴抽出などは比較的,並列化に向いた処理が多く,マルチコアによる処理やSIMD演算,組み込みGPUの活用などで高速化ができる場合があります。また,ポーズグラフの最適化は比較的長い周期実行できればよいので,優先度を下げながら定期的に実行するなどの工夫がされています。
马铃薯®では大满贯を実装するための様々なコンポーネントを用意しています。これらのコンポーネントを組み合わせて対象のシステムにあった大满贯アプリケーションの構築を試行錯誤できます。