福井大学のからくり工房I・sysの方々に開発していただいた初心者用マウスのプログラムを少しづつ作っています。
マイクロマウスの前進距離はタイヤの直径に基づいて、タイヤを何回転させたら希望の前進距離になるかを計算して実現されます。 タイヤ直径はノギスなどで計測すれば概略の値が得られますが、ゴムタイヤの場合は、走行中につぶれて変形して、ノギスでの計測値とは実際に異なった値になっていると思われます。これは、ノギス計測値を使ってマイクロマウスを走行させた場合に、結果がずれますので容易にわかります。
そこで、概略の値を使って計算して、実際に走行させて、希望の走行距離との誤差を測定して、真の直径を推定します。推定式は以下のようになります。
Dt = D * ( 1 + e / L)
上式において
- Dt : タイヤ直径の推定値
- D : 事前に計測したタイヤ直径値
- e : 走行時の誤差(設定走行距離からどのくらい行き過ぎたのか、足りなかったらマイナス
- L : 設定した走行距離(この距離を走ると考えて走行させた値)
誤差を計測する際には、誤差を測る際の誤差(ややこやしいですが)の影響を小さくするためにも、走行距離Lを大きめにしましょう。
タイヤの直径と同じで、マイクロマウスが旋回する場合に、トレッド幅の値が必要になります。この値に関しても実際にその場で旋回させて誤差を計測して推定することが可能です。推定式は以下のようになります。
Wt = W / ( 1 + e / theta )
上式において
- Wt : トレッド幅の推定値
- W : 事前に計測したトレッド幅
- e : 旋回の誤差角
- theta : 設定した旋回角
こちらもthetaを多めにとる(何回転もさせる)ことが大事です。
目標の走行距離についてモータを何ステップ回転させたらその距離になるのかについては以下の式で計算できます。
Step = refarence_length / dL
上式において
- Step : ステッピングモータに与えるステップ数
- refarence_length : 目標の距離
- dL : 1ステップあたりの前進距離