マイクロマウスのモデル化


独立型二輪車量ロボット

マイクロマウス競技は,あらかじめゴール座標のみが知らされた未知の迷路を駆け抜ける競技です.ロボットは規定の大きさで,燃料電池を使わないなどの最低限の制約をクリアすれば,どのようなロボットを作成しても構わないとされています.多くのマウサーは下図のような,独立型二輪車量ロボットを作成します.

このロボットを制御するには,有る程度数式としてモデル化せねばなりません.本稿では,よく使われている独立型二輪車両ロボットのモデル化について述べます.

先ほど図で提示した車両は以下の図のように,壁までの距離を測定する光センサー,車輪の相対的な回転量を測定できるエンコーダ,歯車を通して車輪に力を与えるモータで成り立っています.前者は計測に関するデバイス・後者は制御(駆動)に関するデバイスと言えます.

Targetmouse-hutouTargetmouse-heimen2

物理的な仮定の必要性

物理的な対象は,一般に複雑すぎて,そのままでは数学で取り扱えません.そのため,いくつかの物理的な仮定を行います.(仮定を置く際には,物理的に妥当となるように注意します.)すなわち,仮定と物理のギャップが小さければ,パラメーター調整をしなくても,いきなりロボットが正確に動きます.しかし,一般にギャップが小さいモデルは数式化しても,解析しきれないことがあります.

例えば,歯車の歪みを考慮しようとすると,おそらく構造解析の分野をディープに勉強する必要があるでしょう.マイクロマウスにおいては,歯車の歪みはごくごくわずかなものでしょうから,「歯車はゆがまない」と,切り捨ててしまった方が良いのかもしれません.このようにして,ロボットが必要とするスペック・挙動にあわせて,物理的な仮定をおいていきます.

そして,「歯車はゆがまない」という仮定と物理的なギャップを小さくするために,歯車の剛性が十分に高い機械設計をするのも良いかもしれません.

物理的仮定の設定

本稿では,例えば,以下のような仮定をおきます.

  • 車輪は十分厚みが薄いとみなせる
  • 車輪は滑らない.すなわち,車輪は車軸に垂直な方向にしか移動できない。
  • モーターは指定された回転速度をただちに出力できる.
  • 歯車にバックラッシや歪みはなく,モーターの回転量を遅れなく,正確にタイヤに伝えることができる.

また,上記のリストには含めませんでしたが,

  • 車両は平面上を動く(地球は球だが,マイクロマウスは限られた迷路スペースを動くので)

も暗黙のうちに仮定します.あまりにも細かく仮定を羅列すると,何がしたいのかサッパリわかんなくなってしまいます.そのため,自明な仮定はしばしば省かれます.省き過ぎると意味不明な理論になるため,理論の本質に対して必要十分な仮定をしっかり用意することが大事で,かつ,難しいです.

仮定の解釈

座標系の設定

まず,座標系を以下のように取り車両の位置を定義します.すなわち,タイヤとタイヤの中央の点を車両の位置とします.こうすることによって,位置x,y\in\mathbb{R}^2\displaystyle・姿勢角\theta\in S^1\displaystyleの3変数によって,車両の位置・姿勢を一意に定めることができます.
State

ある変数X\displaystyleに対して,その時間微分を\dot{X}\displaystyleで表します.例えば,位置x,y\in \mathbb{R}\displaystyle・姿勢角\theta\in S^1\displaystyleの時間による微分を\dot{x},\dot{y},\dot{\theta}\displaystyleと置きます.これらはそれぞれ,x\displaystyle軸方向への移動速度,y\displaystyle軸方向への移動速度,回転速度を意味します.

状態量・入力の定式化

位置x,y\in\mathbb{R}^2\displaystyle・姿勢角\theta\in S^1\displaystyleの三つ組(x,y,\theta)\in \mathbb{R}^2\times S^1\displaystyleを状態量とします.ただし,S^1\displaystyleは円周空間であり,(\piに値を加えると,-\piとなるような実数空間であるとここでは思っておいてください.)\mathbb{R}は実数全体の集合を意味します.

  • モーターは指定された回転速度をただちに出力できる.

という仮定より,左右のモータの回転速度\phi_l,\phi_r\displaystyle[rad]をロボットは出力することができます.これらの対(\phi_l,\phi_r)\displaystyleを入力とします.

ここでは,状態量と入力に対し,1階の微分方程式でそれらの関係を表したものを制御システムと呼ぶことにします.すなわち,「モーターに出力を加えると,位置情報がどれだけ変化するのか」という関係を具体的に数式で書き下したものを大雑把に制御システムと呼ぶことにします.そして,ある時刻の状態量を希望する値に収束(整定)する制御入力を求めることを「制御」と呼ぶことにします.

幾何拘束の立式・整理

  • 車輪は滑らない.すなわち,車輪は車軸に垂直な方向にしか移動できない。

という仮定より,車軸方向の移動速度は0であるため,以下のような幾何拘束が得られます.

(1)    \begin{align*} \dot{x}\sin\theta-\dot{y}\cos\theta=0 \end{align*}

また,機体軸方向の移動速度をv\displaystyleとすると,

(2)    \begin{align*} v=\dot{x}\cos\theta+\dot{y}\sin\theta \end{align*}

であるため,これらの式を整理すると,以下のような式が得られます.

(3)    \begin{align*} \dot{x}=v\cos\theta,\dot{y}=v\sin\theta \end{align*}

R_l,R_r\displaystyleは左右のタイヤの半径,G_l,G_r\displaystyleはギヤ比とします.
Phiafter
v\displaystyleは左右のタイヤの回転速度G_lR_l\phi_l,G_rR_r\phi_r\displaystyleの平均なので,

(4)    \begin{align*} v=\frac{G_rR_r\phi_r+G_lR_l\phi_l}{2} \end{align*}

であることが分かります.

また,ロボットの回転速度は,左右のタイヤの回転速度G_lR_l\phi_l,G_rR_r\phi_r\displaystyleの差分であるので,

(5)    \begin{align*} \dot{\theta}=\frac{G_rR_r\phi_r-G_lR_l\phi_l}{W} \end{align*}

ただし,W\displaystyleはトレッド(左右のタイヤの中心間距離)です.

以上をまとめると,二輪車量ロボットは以下のような,\mathbb{R}^2\times S^1\displaystyle上のシステムとして,モデル化することができます.

(6)    \begin{align*} \begin{bmatrix} \dot{x}\\ \dot{y}\\ \dot{\theta} \end{bmatrix} = \begin{bmatrix} \cos\theta &0\\ \sin\theta &0\\ 0&1\\ \end{bmatrix} \begin{bmatrix} \frac{G_rR_r\phi_r+G_lR_l\phi_l}{2}\\ \frac{G_rR_r\phi_r-G_lR_l\phi_l}{W} \end{bmatrix} \end{align*}

ここで,\omega:=\frac{G_rR_r\phi_r-G_lR_l\phi_l}{W}\displaystyle
とすれば,以下のような全単射の関係が(v,\omega),(\phi_r,\phi_l)\displaystyleの間に成立しています.

(7)   \begin{align*} \begin{bmatrix} v\\ \omega \end{bmatrix} &= \begin{bmatrix} \frac{G_rR_r}{2}& \frac{G_lR_l}{2}\\ \frac{G_rR_r}{W}&-\frac{G_lR_l}{W} \end{bmatrix} \begin{bmatrix} \phi_r\\ \phi_l \end{bmatrix}\\ \begin{bmatrix} \phi_r\\ \phi_l \end{bmatrix} &= \begin{bmatrix} \frac{1}{G_rR_r}& \frac{W}{2G_rR_r}\\ \frac{1}{G_lR_l}&-\frac{W}{2G_lR_l} \end{bmatrix} \begin{bmatrix} v\\ \omega \end{bmatrix} \end{align*}

そのため,以下のようなシステムとして制御を行っておき(目的を達するに必要な入力v,\omega\displaystyleを求めておき),求めたv,\omega\displaystyleに対応した\phi_r,\phi_r\displaystyleをモータに指示することがよくなされます.

(8)    \begin{align*} \begin{bmatrix} \dot{x}\\ \dot{y}\\ \dot{\theta} \end{bmatrix} = \begin{bmatrix} \cos\theta &0\\ \sin\theta &0\\ 0&1\\ \end{bmatrix} \begin{bmatrix} v\\ \omega \end{bmatrix} \end{align*}

memo:\omega\displaystyle側で制御則を設計し,そこから全単射の関係で\phi_r\displaystyleを求めるようにしておくと,機体の幅Wが変わった場合に,Wの値を設定しなおすだけで,同じ軌道で走るロボットを作ることができます.

外部リンク

参考文献

  • トラ技ORIGINAL No.7 マイコン&メカトロニクスの誕生 CQ出版社
  • 加地:二輪車量型ロボットの位置・姿勢制御,奈良先端科学技術大学院大学 修士論文(2005)