株式会社アイズ・ソフトウェア

/~eyes-software-co-jp/A1A2
お問い合わせ |  情報セキュリティへの取組について情報セキュリティ方針個人情報保護方針) |  ブログ

NEWS RELEASE 新着情報

ETロボコン技術要素・自己位置推定

ETロボコン・デベロッパーズ部門プライマリークラスは基本的にはコースに引かれたラインをトレースして走る競技です。
ですので、自己位置については1次元的に走った距離がわかっていれば位置がわかります。
しかし、チームアイズでは少しでもタイムを縮めるために、急カーブや複合カーブではラインをはずして走るという戦略をとりました。
最初はバランスコントロールライブラリに渡す"ターン値"を決めて曲がるという事を試しましたがロボットの速度、バッテリー残量等の違いで常に同じ弧を描いて曲がるという事が出来ませんでした。
そして考えたのが仮想の円をライントレースするという方法です。内側が黒、外側が白の仮想の円を描き、そのエッジをPID制御でライントレースして走行させていると考えてください。
この仮想円は中心の座標と半径で決まります。あと、ロボットの座標がわかれば、ロボットが仮想円のエッジ(半径)からの距離が計算できます。この距離を明るさの差分に当てはめ、PID制御でライントレースします。

この案の実現の為、ロボットの自己位置推定処理を実装しました。



ETロボコンのロボットで自己位置推定の為に使用できるのは左右の車輪モーターから取得できる回転角度だけです。
この回転角度より 2πr×(回転角度÷360) で車輪の進んだ距離が算出できます。

ロボットが一定期間の間に図1のように走ったとします。
進んだ距離と曲がった角度を計算する為に、図2のように変形させます。
図2よりロボットを取り除き、計算に必要な記号等を追加したのが図3です。

進んだ距離と曲がった角度は下記の式で計算できます。
   R = Rモーター回転角度×車輪直径×π÷360
   L = Lモーター回転角度×車輪直径×π÷360
   d = (L+R)÷2
   θ= atan((R-L)÷W)

進んだ距離と曲がった角度より新しい座標を求めます。この座標と角度を始点として上記の計算を繰り返して自己位置推定をしています。

自己位置推定の結果をエクセルで座標にプロットしたのが図4です。コースは2010年版のコースです。

クリックでエクセルをダウンロード



図1から図2への変形でわかるとおり、この自己位置推定処理は誤差を含んだ計算となっています。長く走るほど誤差が累積していきます。その為、遠くまで正確にコースを走るにはコースの何らかの印を検出し、位置情報を補正する処理が必要となります。

本ブログの説明はチームアイズのロボットに実装している自己位置推定処理を説明したものです。
本ブログの記載を元にETロボコンのモデル又はプログラムを作成した結果については(株)アイズ・ソフトウェアは一切の責任を負いません。使用はご自身の責任で行ってください。