マイクロマウス研修 Part13(岩本)


ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

マイクロマウス研修(岩本)一覧
Part1Part2Part3Part4Part5Part6Part7Part8Part9Part10Prat11Part12、Part13

番外
Part8.1

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

こんにちは岩本です。
今回は、前回やりきれなかったサンプルプログラムSTEP6-3(run_ROT_PWM)の中身を確認していきたいと思います。
run.cに新しくプログラムは旋回のプログラムが追加されています。
49行目~57行目で直進の時と同様に目標ステップ数や加速度を決めて、60行目~74行目で右に曲がる時と左に曲がる時で、switch関数で分けてます。
その他は、直進と同じなので、省略します。

 

このまま、step7(P_control_run_usb)についても確認していきます。
このステップでは、センサでフィードバック制御をして、迷路の真ん中を走らせます。interrupt.cにcmt0とcmt1のプログラムが追加されています。
cmt0では、フィードバック制御について記載されています。

色々書いてありますが、使っているのはP制御のみです。下図に式の部分のみ抜き出してみました。
偏差は、左右のちらかの壁がなかった場合、計算が合わなくなってしまうため、壁がなかった場合、センサーの値が無効になります。そのため、片方のセンサーの値のみが有効な場合は、片方のセンサーの値を2倍にして帳尻を合わせています。
なお、上図52行目から63行目でD制御とI制御用の計算だけしてますが、制御では使ってません。ここから先は、自分で頑張ってやってみようということのようです。

また、P制御の操作量についてですが、通常の式では、”操作量 = 比例定数 × 偏差” で求められます。
しかし、速度が速い時と速度が遅い時で操作量が同じ場合、遅い時の方が急カーブになってしまいます。(スリップの可能性が出てくる。)
そのため、操作量に速度が掛けられています。0.001は速度を掛けた為、そのままだと操作量が大きすぎるため、調整しています。

cmt1では、4つのセンサの値を記録し、左右に壁が有るか無いかの確認をしています。

今回はここまでです。


Posted in Pi:Co Classic3 製作記