コンテンツにスキップ

モータパラメータの設定

ライトローバーが走行時にプルプルと震える場合や、ゲームパッドからの指令に対して十分な速度で走行しない場合、モータパラメータが適切でない可能性があります。
パラメータを変更してモータをスムーズに回転させるようにする方法を解説します。

ライトローバーのモータ制御方法

ライトローバーには、エンコーダ付き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(書き込むメモリマップのアドレス, 書き込む値, データのバイト長, 書込み命令)です。
よって第二引数を適当な値に変更していただくことで、モータの挙動を調整いただくことができます。