2016/12/02

SLAMの起こりとアルゴリズムの種類

SLAMの名著に

probabilistic robotics

があります





[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]
PROBABILISTIC ROBOTICS(H) [ SEBASTIAN THRUN ]
価格:10575円(税込、送料無料) (2016/12/3時点)


日本語訳の「確率ロボティクス」も最近再販したので手軽に読めるようになりました(内容は手軽じゃないかもしれないですけど)



自己位置推定の基本から色々なSLAMアルゴリズムまで順々にレベルアップして詳しく述べられています。

SLAM初期の発展がわかり、現在の基礎にもなっています。

今回はこの名著に従ってSLAMの発展を見て見ましょう

アルゴリズム興味ない人はSLAMのはじまりくらい見ていただけたら

・SLAMのはじまり

昔はものの位置を知る必要のあるロボットといったら工場とかみたいに組み立てラインで流れてくるものを加工していくロボットとかでした

どこにどうものが流れてくるかはわかっているのでものの位置はここだって確実性高くわかります

でももっと汎用的に、現実で扱うとなるとセンサでものの位置を図らないといけなくなってしまいます

すると誤差が発生して間違ってしまうかも

他にも内部モデルとかアルゴリズムの近似とかでも誤差は発生します

ものの位置は本質的に不確実なのです

じゃあ確率で表現しよう

ってなります

これが確率ロボティクスであり、その中でもSLAMは基本的な問題になります

ここからしばらくはこの本ではSLAMのための基礎知識が続きますが、いきなりSLAMアルゴリズムにいってしまいましょう

アルゴリズムに興味がないなら見なくてもいいです

・EKF SLAM
(extended kalman filter SLAM)

最初期かつ今でもセンサフュージョンに必須のEKFを用いたSLAMです

自己位置は現在位置はわかるものの過去の軌跡は考慮しないのでオンラインSLAMの一種といえます

KFは線形の動きにしか対応しないのでこれ拡張したのがEKFです

1000点程度のマップならばリアルタイム動作します

・graph SLAM

ロボットの現在位置だけでなく、軌跡も計算する完全SLAMの一種です

使うフィルタはEIF(extended information filter)です

軌跡まで考慮するのでEKFより正確ですが、データが大きくなると計算に時間がかかります

その中でもグラフが疎であるとすると

SEIF(sparse EIF)で計算が早くなります

・Fast SLAM

初期のSLAMの完成系といえるSLAMです

自己位置推定にPF(particle filter)を用いた完全SLAMです

そのままやると計算時間が膨大なので地図でマップに反映する点はロボット姿勢のもと、条件付き独立としてRao-Blackwillized PFを用います

簡単にいっちゃうとparticleそれぞれが推定自己位置、推定地図をもち、正しいっぽいやつが生き残って正しくないっぽいのは消えて行くっていう手法です

要するに、

それぞれがロボット姿勢の候補であるparticleをばらまく

particle filterそれぞれが自分の姿勢にとっての地図をEKFで計算する

それに従って重みがつく

重みの大きさに比例た確率でparticleがいくつか選ばれる(重複あり)

制御命令(前へ進めとか)通りにparticleを移動させる

それぞれのparticleにとっての地図をEKFで計算

繰り返し

です

particleがへってきたら適当にparticleをばら撒きます

で、ここには変な問題があって

センサの精度が制御命令に対して良すぎちゃうと

particleのばらつきかたが狭くなっちゃって

正しいparticleが消えちゃう可能性が増えすぎちゃうのです

そこで制御命令でparticleを動かすときにも観測結果を反映してそれに対応したのが

Fast SLAM2.0です

以上、SLAMアルゴリズム

次回、センサによるSLAM

独学の知識なので間違ってたらすみません

0 件のコメント:

コメントを投稿