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

2015年11月

マイクロマウス2015所感とMETEORA 4の紹介

マイクロマウス2015に出場された方々および運営の方々お疲れ様でした。
私のロボトレーサ、METEORA 4は予選敗退でしたが全力を尽くしましたし、様々な人から反響を得られたので満足でした。

P2

METEORA 4はカメラ映像から白線を認識して走るロボトレーサです。認識処理は名刺サイズコンピュータのRaspberry Pi 2 Bをつかっています。
今年は昨年に比べてソフトウェアを大幅に進化させ、コースを認識する画像処理にSLAM(Simultaneous Localization And Mapping)という技術をつかいました。SLAMは近年自動運転車の制御にも用いられている、未知の環境下でロボットが自律移動するための技術でカメラなどの外界センサとオドメトリなどの内界センサからのデータから、ロボット周辺の環境地図の作成と、ロボット自身の自己位置推定を同時に実行します。
私はこのSLAM技術で、ロボトレースコースのS字カーブを連結させて直線みたいに走ったり、ルール違反にならない範囲でカーブの内側を走って走行距離を短縮したりという賢い動作をロボトレーサにさせたかったのです。
METEORA 4が使っている種類のSLAM(占有格子地図ベースのFastSLAM)では、計算の過程で少しずつ形の異なる地図を数万枚のメモリ上に記憶し、これらをカメラ映像とオドメトリの情報により常時更新する必要があるのですが、Raspberry Pi 2 BではCPUの動作速度とメモリの容量が限られているため地図は100枚だけつかいました。地図にはコースを12mm間隔で格子状に区切って白黒の濃淡を記録してあります。
以下の動画は手押しでコース上をロボットを走らせながらカメラとオドメトリの情報を録画して、あとからオフラインでSLAMをシミュレーションした様子の動画です。



ロボトレース予選では走行の途中からMETEORA 4が制御不能になりコースアウトしリタイアとなりました。 METEORA 4では地図をたった100枚だけしか持っていませんが、 SLAMでは機体の移動にともないそれぞれの地図が拡大していくため、メモリの消費量が急速に増大しどうやら処理速度が追いつかなかったようです。 
またRaspberry Pi 2 BはクアッドコアのARM Cortex-A7のCPUと1GBのRAMを搭載していますが、METEORA 4ではOpenMPで並列化し4個のコアをすべて使いきってました。
このハードウェアのままでは、これ以上計算速度を上げるのは難しそうです。次の一手を考えなくてはいけません。

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

制御方策の生成

前回の記事ではロボトレースの地図からショートカットする経路を生成しましたが今日、そこから更に制御方策(制御の計画)を立てることが出来ました。制御方策とは、状態ベクトル(x座標とy座標からなる二次元のベクトル)から、制御量(ロボットの角度θ)への射影です。すなわち制御方策とは、ロボットの自己位置から、姿勢の目標角度を決定するための対応表なのです。

下図は制御方策を可視化したものです。緑の直線が目標角度の方向を表しています。直線には赤い印で頭の方向を示してあります。

20151008_003306_cp1

一般的にこの制御方策はロボットのxとyの位置に加えロボットの姿勢θが加わった三次元になるようですが、勉強不足のためMETEORAではとりあえずこの制御方策をxとyの二次元で作りました。二次元なら三次元よりはるかにメモリの占有量も少ないし…。

このような制御方策を作ることのメリットは、ロボットの行動や計測の不確かさを考慮した制御ができることらしいです。らしい、と書いたのは私自身がまだ腑に落ちていないため、ただ確率ロボティクスの本の言葉を引用しているためです。ロボトレースの大会が終わったらさらに勉強したい。

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

最短経路生成

20151007_015833_2

前回FastSLAMでコース形状を取得するところまで行きましたが、この地図があればすぐロボットが走りだすというわけでは有りません。ロボットにどのような経路を通るべきか指示する経路計画が必要です。


経路計画の生成は、価値反復という手段が一般的に用いられるようですがロボトレースでは高級すぎます。ロボトレースでは単純に、スタート地点からロボットの初期の進行方向へ向けて、地図上の白いラインを追跡すれば大まかな経路は得られます。この追跡の結果が図の赤い十字です。一般的に、線の検出ならハフ変換が用いられますがハフ変換は計算量と精度がトレードオフの関係にあり、Raspberry Piにやらせるのは酷なので、今回は、逐次的な追従アルゴリズムを作り追跡させています。そのうちこのアルゴリズムを記事に書きたいなぁ…。


ちなみに、ロボットをただラインの追跡結果(図の赤い十字)に沿わせて走らせるのは非効率です。せっかくFastSLAMで広範囲の地図が取得できるわけですから、ロボットにカーブでは内側を走らせたり、スラロームではラインを無視しまっすぐ走らせたりするなど、ショートカットさせて探索走行や周回走行の所要時間を減らすのが理想です。


そこでショートカット経路生成アルゴリズムを考えました。アルゴリズム適用結果が図の緑の十字です。このアルゴリズムは、単純に注目点の前後2点の中点を、新たな点として採用することを逐次的に繰り返し、ショートカット経路を生成します。このアルゴリズムなら、逐次計算を繰り返すことでカーブでは経路がどんどん内側になるし、スラロームは経路が直線に変換されます。

なお、地図を生成にせっかく確率的手法であるFastSLAMを使ったのに、生成された図の経路は決定論的です。今後、これを確率論的な制御計画すなわち状態ベクトルから制御量への射影(制御方策)に変換する予定です。土曜日中に完成すると良いなぁ。


もう全国大会が近いですが、なんとかを完成させたいものです。

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

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