AbudoriLab.

自律ロボットで誰でも遊べるよう試行錯誤するブログです。

SLAMを理解する - 自己位置推定と地図作成の相互依存関係 -

AbudoriLab.です。

ロボットの自立移動を実現するにおいて必要不可欠な技術となるSLAM(Simultainius Localization and Mapping)の概念を難しい数式などは使用せずにまとめていきます。

2回目となる本稿は「なぜSLAMでは自己位置推定に地図が必要で、地図作成には自己位置情報が必要になるか」についてご紹介します。

今回の話を始めるにあたり、自己位置の推定と地図の作成方法が理解されていることを前提としています。

以下の記事を参考いただけますと幸いです。 

www.abudorilab.com

先の記事でも触れていますが、SLAMの特徴は自己位置の推定と地図の作成を同時実行することにあります。

自己位置の推定精度を向上させ、地図の精度向上に役立つとても重要な役割があります。

本記事では上述の相互依存の関係性とその利点が効果的に発揮するには同時実行が適切なことを明らかにします。

自己位置推定と地図作成の同時実行の必要性

SLAMは自己位置の推定結果を用いて地図を作成し、地図を用いて自己位置の推定精度を向上させる仕組みになっています。

この互助の関係を効果的に機能させるには同時実行が最適です。

地図の更新が自己位置の推定タイミングと同期しない場合を例に考えます。

問題になるのが図1に示すように地図がない領域に踏み込んだときに、目をつぶりながら移動しているのと同じになることです。(下図では、車輪の回転数から移動量を算出して自己位置を推定しています)

 

f:id:nekoze-nya:20210516201642p:plain

図1: 車輪の回転数から推定する自己位置

つまり、歩数から自分の位置を推定すると同等で、どうしても自己位置を正しく推定できません。

その後しばらくして地図を更新すると、図2のように誤った地図が作成されます。

 

f:id:nekoze-nya:20210515125823p:plain

図2: 自己位置推定精度の低下による地図品質の低下

おまけに自己位置も修正できずに推定精度が低下したままになります。

上記のことが連続して誤差が蓄積すると、大きな精度低下につながり、ロボットの位置を正しく把握できないから自立移動の実現は難しくなります。

この1例でも自己位置推定と地図作成タイミングの足並みを揃えて処理することが大事なことが分かります。

したがって、互助の利点を効果的に機能させるには同時実行が必要になるため、頭文字にSimutaiousが付きSLAMと命名されました。

次に、同時実行が自己位置推定と地図作成の双方にとって利点となる、本題の相互依存ついてまとめます。

地図作成における自己位置情報の必要性

カメラやライダー等の外界センサで計測したデータをつなぎ合わせて地図を作成するには、計測値のローカルからグローバル座標系への座標変換が必要になります。

その変換に自己位置情報を利用することができます。

本章では座標系について述べた後、グローバル座標系の変換に自己位置情報が必要なことをまとめます。

グローバル座標系とローカル座標系

ロボットの自立移動実現に、ある地点の座標(自己位置や障害物の場所)を把握することが必要です。

その場所の位置情報を定義するために座標系を設定します。

座標系とは原点や座標軸(方角)などの基準を定義したものです。

座標系は大きくグローバル座標系とローカル座標に分類されます。

グローバル座標系・・・原点が移動せず座標軸が回転しない不変の基準となる座標系(自己位置、地図)

ローカル座標系・・・時々刻々と原点が移動し座標軸が回転する自己を中心とした座標系(camera,lidar等の計測データ)

地図の作成

冗長ですが重要なので何度も紹介しますと、ローカル座標系で計測したデータをグローバル座標系に座標変換することで地図を作成することができます。

図3に示すように、ロボットが移動しながら外界センサ(lidar)を用いてデータを計測しているとします。

 

f:id:nekoze-nya:20210508171510p:plain

図3: 外界センサを用いた特徴点計測

ロボットを中心とした円がlidarの計測範囲を表し、計測した特徴点がp_1,p_2,p_3,p_4,p_5,p_6,p_7となります。

時刻t-1で計測した特徴点がp_1,p_2,p_3,p_4、時刻tで計測した特徴点がp_3,p_4,p_5,p_6,p_7です。

また、両時刻で計測した特徴点p_3,p_4だけ色を別に分けています。

まずローカル座標のままで特徴点を並べた結果を図4とします。

各時刻t-1,tで計測した特徴点を識別できるようp^{t-1},p^{t}として示します。

f:id:nekoze-nya:20210508171710p:plain

図4: ローカル座標系での計測データの配置

ローカル座標系ではセンサ中心からの相対位置でデータを並べてしまい、地図を作成できないことがわかります。

したがって、地図の作成にはグローバル座標原点からの相対位置を計算して特徴点を並べる必要があります。

次に、ロボットの自己位置からの相対位置を計算して、グローバル座標空間上での特徴点の位置を算出します。(座標軸の方向と回転を合わせるためにいろいろ計算しないといけないのですが、概念的に紹介したいため省略しています。)

すると、図5に示すような我々が望む地図を作成できます。

f:id:nekoze-nya:20210508171903p:plain

図5:グローバル座標系返還後の特徴点の配置

ロボットの自己位置情報を用いることで特徴点の位置はグローバル座標系に変換され、それらをつなぎ合わせると地図の作成が可能になることがわかりました。

自己位置推定における地図の必要性

自己位置推定の精度をあげる方法の1つとして地図を使用できます。

時刻t+1までロボットが移動した場合を図6に示します。

f:id:nekoze-nya:20210508172157p:plain

図6: 自己位置の推定精度低下による地図の精度劣化

ここで問題が発生します。

特徴点p^{t}_5,p^{t+1}_5p^{t}_7,p^{t+1}_7が一致せず、地図が正しく作成できていません。(歪んだとも言えます。)

その原因は自己位置が正しく推定できていないことにあります*1

自己位置の推定精度が低下すると地図の精度にも影響を及ぼしてしまいます。

つまり、ズレがなければ自己位置は正しく推定できてる事として判断できます。

その事実を利用して自己位置の精度を向上させることができます。

図7のように時刻t,t+1地点でロボットが計測した共通の特徴点、p_{5,t},p_{5,t+1},p_{7,t},p_{7,t+1}間にズレがなくなるように自己位置x+1を修正します。

f:id:nekoze-nya:20210508172638p:plain

図7: 地図を用いた自己位置推定精度の向上

すると、正しい自己位置を推定できるようになります。

おわり

自己位置と地図作成の互助の関係について紹介しました。

文章では簡単に述べましたが、実際には様々な専門知識が必要になります。

例えば、自己位置の修正に地図の点と計測した点を合わせるには、その点同士が同じものかをどうやって認識させるかを考えなければなりません。

他にもリアルタイム性を考慮したとき、自己位置を修正するために、どうやって実現するかなど考えなくてはなりません。

多くの研究者がSLAMの課題に取り組んでいます。

機会があれば調査してみるものいいかもしれません。

*1:例:図1のようにwheel encoderから自己位置を推定したとき、スリップ時に正しく移動量を計測できない弱点があります。