« 2014年11月 | トップページ | 2015年9月 »

2015年8月

計測結果のマッピング

カメラで計測したコース形状を、地図上にマッピングすることに挑戦しています。

3cd07684568d3e950fa00b9523e0da17F84b9b748d75b1d28a46019cc407e948
上図は地図上にマッピングしたコース、下図はカメラの生画像です。
いまは計測した結果をオドメトリと合わせてコース上にマッピングしているだけなので、オドメトリの誤差のせいで地図の繋ぎ目は滑らかではなくギザギザします。またコースの傾きなども考慮されていないので形状も歪んでいます。
これから、こうしたオドメトリの誤差すなわち実世界に存在する不確実さを考慮した自己位置推定および地図生成、いわゆるSLAM(Simultaneous Localization and Mapping)のプログラムを開発していきます。SLAMを実装したあとは、地図の繋ぎ目は滑らかに接続されるはずです。
ROS (Robot Operating System)等のSLAMをすでに実装してあるオープンソースソフトウェアを使えばもっと簡単に出来たかもしれないのですが、SLAMを勉強するためにあえてすべて自分の手で実装しました。
本日の内容に達するまでSLAMに関する学習およびテストプログラムの作成、カメラの逆射影変換テーブルの作成や、地図管理クラス作成など勉強や下準備に何ヶ月もかかりました。
準備だけでもう疲労困憊ですが、これからSLAMの本領、楽しい領域に突入するわけです。
初志貫徹、今年度のロボトレースでSLAM走行を披露できるように頑張ります。

| | コメント (2) | トラックバック (0)

SLAMへの道

ロボトレース用ロボットのMETEORAの画像処理部分を作りこんでいます。

METEORAにはカメラが付いておりその画像からコース形状を判別します。
昨年度はコース形状判別のために、白線のエッジ検出を用いていましたが、データの扱い方法が難しくロバストなライントレースはできず、すぐコースアウトして暴走していました。
そこで今年はエッジ検出ではなくコースの地図(占有格子地図)を作成することでデータを簡単かつロバストに扱えるようにします。
図はカメラ画像と、カメラ画像を逆射影変換することで復元されたコースの上面図画像です。この上面図から占有格子地図を作る予定です。
Bb68b80e4223bdace59a1a6446e66011
6c11119b570fea3f81530524c783d70a
上面図はよく見ると左上と右上の角が牛の角のように尖っていることがわかると思います。
これはカメラのレンズ歪を補正した結果です。レンズ歪補正を用いると直線がまっすぐ直線として写るメリットが有ります。
しかし、レンズ歪補正を含む逆射影変換は計算に非常に時間がかかるので予め変換テーブルを計算しておきます。Raspberry Pi 2とMathematicaで角度0.5度、位置5mmの分解能の変換テーブル作らせようとしたところ10日ぐらいかかるらしくこれでは実用に耐えないので対応策を考え中です…。

| | コメント (0) | トラックバック (0)

« 2014年11月 | トップページ | 2015年9月 »