座標系・迷路表現の定義


一般的な独立二輪型ロボットタイプのマイクロマウスロボットは,3次元の変数(x,y,\theta)\displaystyleで姿勢を一意に表現できます.

しかし,この一文には暗黙に「座標系」の定義があってできるものです.「座標系」をしっかり定義しないと,理論の前提条件が崩れてしまいます.

座標系の例

以下のように,座標を定義を定義する手法が考えられます.

  • マウスのスタート地点の左端の柱を原点として定義
  • 東方向を正としてx\displaystyle軸方向を定義
  • 北方向を正としてy\displaystyle軸方向を定義
  • x\displaystyle軸方向を基準に,反時計回りを正として,\theta\displaystyle軸方向を定義

この手法を図示すると,次図のようになります.
Zahyou

\theta\displaystyle方向は,反時計回りを正とすることが多くなされているため,それに合わせました.(1から始める?物理学,ベクトル解析の記事とか)また,このように原点を取ると,マウスが迷路から突き出してしまわない限り,x,y\displaystyle変数が正の値を取るようにできます.

迷路表現の例

ベーシックマウス森永さんのページでは,以下のような表現法が提案されています.すなわち,16x16マスの迷路を,int map[16][16];のように,配列で表現します.そして,変数に,上,右,下,左の壁情報を記録します.

  • 壁の位置 0bit:上 1bit:右 2bit:下 3bit:左   1:壁有り 0:壁無し
  • 壁の探索 4bit:上 5bit:右 6bit:下 7bit:左   1:済み 0:未探索

この定義はきわめて直観的で,多くのマウサーが採用していると思われます.ただし,ここで定義した座標系との整合性はあまりよくありません.すなわち,θ軸の正方向は反時計まわり,壁の定義は時計回りと,姿勢角の方向が不統一です.これは,コーディングにおいてバグを誘発します.

迷路表現の例2

本稿では以下のような表現法を提案します.

  • 壁の位置 0bit:右 1bit:上 2bit:左 3bit:下   1:壁有り 0:壁無し
  • 壁の探索 4bit:右 5bit:上 6bit:左 7bit:下   1:済み 0:未探索

この定義だと,θと,壁のビット数の間を簡単に変換できるようになります.例えば,上方向は1ビット目ですが,これに\pi/2\displaystyleを乗じるだけで,\theta=\pi/2\displaystyleと,上側を意味する物理量\theta\displaystyleを得ることができます.本稿で挙げた座標系を使う限りは,こちらの定義法の方が混乱がないと思います.

外部サイト