PWM値を変化させ、モータが回転し始める PWM 値(不感帯の値)を左右のモータでそれぞれ確認し、その値を motor.c の
L_SHIFT(左モータ), R_SHIFT(右モータ)とする。
左右のモータの回転速度が指定した速度で安定して回転するように、vel_ctrl.c の
Kp_l(左モータの比例ゲイン), Ki_l(左モータの積分ゲイン), Kp_r(右モータの比例ゲイン), Ki_r(右モータの積分ゲイン)の値を調整する。
安定した速度制御が行えているかを、モータの回転の様子を目視で観察するととにも、テストプログラムの終了後に表示される
var_left(左モータ速度の分散)とvar_right(右モータ速度の分散)の値で確認し、その値がより小さくなるようにゲインを調整する。
3,4 の走行調整は
MIRSを床に接地させ、バッテリーを2本とも搭載した状態で行うこと。
前後のキャスタがスムースに回転するかを確認しておくこと。(埃が詰まってスムースに回転しない場合がある)
test_run_ctrl のストレート走行モードで、
MIRSが正確に直進走行するように、run_ctrl.c の Kp_s(直進補正の比例ゲイン)、 Kd_s(直進補正の微分ゲイン)の値を調整する。
MIRSの直進性を目視で確認するとともに、指定距離走行後に表示される sum_diff_l_r(左右のタイヤの回転距離差(絶対値)の総和)の値がより小さいくなるようにゲインを調整する。
この調整時に、必要があれば併せて以下のことを行う。
-
スタート時に動き出しが遅い場合は、vel_ctrl.c の Ki_l, Ki_r の値を大きくする。(どの程度大きくするかは試行錯誤によるが、増分は元の値の0.1~0.5倍の間には入るはず。)
-
MIRSの直進走行距離が指定距離と異なる場合は、hardware.h の TIRE_R の値を調整する。
TIRE_R の元の値に(実際の走行距離)/(指定走行距離)をかける。
-
sum_diff_l_r の値が小さいにも関わらず、系統的に左右どちかに曲がってしまう場合は、
hardware.h の TIRE_DIST_RATIO の値を調整する。
左側に曲がってしまう場合は、RIRE_DIST_RATIO の値を1より大きくする。
右側に曲がってしまう場合は、RIRE_DIST_RATIO の値を1より小さくする。
test_run_ctrl の回転走行モードを使って、
MIRSが正確に回転するように、run_ctrl.c の Kp_r(回転補正の比例ゲイン)、 Kd_r(回転補正の微分ゲイン)の値を調整する。
MIRSのを回転を目視で確認するとともに、指定角度回転後に表示される sum_diff_l_r(左右のタイヤの回転距離差(絶対値)の総和)の値がより小さくなるようにゲインを調整する。
この調整時に、必要があれば併せて以下のことを行う。
-
回転後の dist_l と dist_r の絶対値が大きく異なる場合は、vel_ctrl.c の Ki_lの Ki_r の値を変更する。
(絶対値の小さい方の Ki_ の値を大きくする。)
-
MIRSの実際の回転角が指定の回転角と異なる場合は、hardware.h の BETWEEN_TIRE の値を調整する。
現在のBETWEEN_TIRE の値に(指定の回転角/実際の回転角)をかける。