« Raspberry Pi 2でマルチスレッドプログラミングしようと思ったけど・・・ | トップページ | 全日本マイクロマウス大会の申込完了 »

FastSLAMが動いた

だいぶ苦労しましたが、占有格子地図をつかったFastSLAMが一応それっぽく動くようになってきました。画像は、ロボトレースの機体を手で押して走らせながら地図を生成する様子です。

ロータリーエンコーダと半導体ジャイロによるオドメトリで得られた機体自身の位置と、カメラから得られるコース形状から、上からコースを見たときの地図を確率的に生成しています。

射影変換を除けばなにも難しいことはなく、確率ロボティクスの本に書かれたアルゴリズムを素直に実装しただけです。
地図に自機の位置が表示されていないため、ちょっとわかりにくくてすみません。

94d220768ec42067dbee2446b5360258
カメラ画像
10a9bcf000f45356436f34696a0a04e9
カメラ画像とオドメトリ結果から作成された占有格子地図

正直、占有格子地図の生成は完璧とはいえず、地図がぼやけています。これには原因がいくつか考えられます。


1.パーティクルの数が足りない
→現在パーティクルは計算速度の問題で100個しか使っていません。本当は数千個必要ですが、如何せんRaspberry Pi 2では速度に限界が有ります。100個でフレームレートは1fps以下です。
これから実装を最適化して速度を大幅向上させる予定です。


2.外乱の影響
→カメラ画像にあるように奥にコース以外の余計な物が写っています。コースは平面なので大丈夫ですが立体物がカメラに映ると、機体の位置によって見え方が変化するので、地図生成に大きな悪影響を与えてしまいます。どげんかせんといかん。
たとえば対策としては、近くを撮影した画素の重みは大きく、遠くを撮影した画素の重みは小さくしたりすると、影響が低減できるかもしれません。あと立体物の問題は、ロボトレース競技だとスタート地点にスタートゲートとゴールゲートでも生じるので、これの悪影響を受けないように何とかしないといけません。

|

« Raspberry Pi 2でマルチスレッドプログラミングしようと思ったけど・・・ | トップページ | 全日本マイクロマウス大会の申込完了 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1213530/61495237

この記事へのトラックバック一覧です: FastSLAMが動いた:

« Raspberry Pi 2でマルチスレッドプログラミングしようと思ったけど・・・ | トップページ | 全日本マイクロマウス大会の申込完了 »