モータパラメータの設定
ライトローバーが走行時にプルプルと震える場合や、ゲームパッドからの指令に対して十分な速度で走行しない場合、モータパラメータが適切でない可能性があります。
パラメータを変更してモータをスムーズに回転させるようにする方法を解説します。
ライトローバーのモータ制御方法
ライトローバーには、エンコーダ付きDCモータが搭載されています。
制御基板VS-WRC201はモータのエンコーダ値の読み取りおよびデューティー比の変更によるモータ制御が可能で、エンコーダ値に基づく比例制御の機能を有しています。
ライトローバーの標準サンプルでは、この比例制御の機能を使用し、位置補償による速度制御を行うことで走行をしています。
パラメータについて
調整可能なパラメータは次の2種類です。 左右のモータそれぞれに対して、異なるパラメータの設定が可能です。
パラメータ名 | 効果 |
---|---|
Pゲイン | 目標エンコーダ値と計測エンコーダ値との差に対して働く比例ゲインです。 大きな値ほど、小さなエンコーダ値の差に対して大きな出力が発生します。 最小値:0x0000 最大値:0x1000 初期値:0x0080 |
パンチ | モータ出力の最低値です。比例制御の結果計算された出力値がこの値以下だった場合、出力値が最低値まで引き上げられます。 最小値:0x0000 最大値:0x1000 初期値:0x09C4 |
パラメータ設定方法
catkin_wsに導入いただいたligthrover_rosパッケージのscriptsフォルダ内にある、下記のファイルをテキストエディタで開いてください。
- pos_controller.py
pos_controller.pyは、VS-WRC201に対して速度指令値に応じた目標エンコーダ値を逐次送信しているノードです。
pos_controller.pyのpos_cntrl()メソッドにある下記の部分を探してください。
write_msg(MS16_FB_PG0,0x0080,2,'w')
write_msg(MS16_FB_PG1,0x0080,2,'w')
write_msg(MU16_FB_PCH0,0x09C4,2,'w')
write_msg(MU16_FB_PCH1,0x09C4,2,'w')
この4行で、Pゲインとパンチのパラメータを設定しています。
write_msg()は、VS-WRC201のメモリマップの指定の箇所に、指定されたデータ長のデータを書き込むメソッドです。
引数は順番にwrite_msg(書き込むメモリマップのアドレス, 書き込む値, データのバイト長, 書込み命令)です。
よって第二引数を適当な値に変更していただくことで、モータの挙動を調整いただくことができます。