C-Styleでオムニホイール制御(その3 向き制御)
平行移動をするためには、ロボットの向きを一定方向に維持する必要があるが、そのためにはまずロボットの向きを知る必要がある。
向きを知るためには次のようなセンサを利用する。
- コンパスセンサ
- 機能&メリット:東西南北の絶対的な向きが分かる。
- デメリット:地磁気以外の磁気の影響を受けやすい。
- http://daisen-netstore.com/shopdetail/000000000005/
- 9Dコンパス | ロボットオプション,センサー | 株式会社ダイセン電子工業
- ジャイロセンサ
- 機能&メリット:相対的な向きの変化量が分かり、磁気の影響をうけない
- デメリット:メーカー製オプションがなく、自作が必要
- スタート時の向きに近ければ、特になにもしない。
- スタート時の向きと比較して右向きの場合は、左旋回する。
- スタート時の向きと比較して左向きの場合は、右旋回する。
の3パターンの制御できれば、とりあえずは向きが一定に保てそうだが、実際にこの制御を実装すると
- どれくらいのスピードで旋回するか?
- スタート時の向きに近い範囲を何度にするか?
などの設定値によってはピタッと向きが固定できないことも多く、その調整に時間が掛かることが多い。(より複雑な計算を行うことでそのような調整の手間を減らす制御方法もあるが、ここでは説明しない。)
向きの制御が振動する場合、
- スタート時の向きに近い範囲が狭すぎる
- 旋回スピードが早すぎる
のいずれかもしくは両方の原因で、スタート時の向きに近い範囲を飛ばして、右向きと左向きの状態を繰り返しているので、
- スタート時の向きに近い範囲を広くする
- 旋回スピードを遅くする
などの調整を行う。
スタート時の向きの判断方法についてはC-Styleのサンプルプログラム「10_3Ball with HMC6352 soccer sample」が参考になる。
(C-Styleを初期設定のままインストールしていれば「C:\Daisen\C-Style for TJ3B V171102\User_TJ3B\DirSensor」フォルダにサンプルプログラムがある)