ETロボコンで使用している倒立振子APIのパラメーターの再計算手順について簡単に説明します。
いただいたもの、見つけたもの等々いくつかの情報の寄せ集めになります。
走行体の形状・重量に変更があった場合に、最適なパラメーターを再計算することができます。
ここで再計算するのは次のパラメーターになります。
float K_F[4] = {-0.870303F, -31.9978F, -1.1566F*0.6, -2.78873F};
#モデルの入手
MathWorks社のサイトからnxtway_gsのモデルをダウンロードします。
#計算ツールの入手
Octaveまたは、MATLABを使用します。
ここでは、Octaveを使用する場合の手順を説明します。
##controlパッケージのインストール
Octaveを起動したら、再計算に必要なパッケージのインストールを行います。※初回のみ
>> pkg install -forge control [ENTER]
#物理パラメーターの設定
% NXTway-GS Parameters
m = 0.03; % wheel weight [kg]
R = 0.04; % wheel radius [m]
M = 0.6; % body weight [kg]
W = 0.14; % body width [m]
D = 0.04; % body depth [m]
H = 0.144; % body height [m]
各パラメーターの示す距離が具体的に何処から何処までなのかは、nxtway_gs\docs フォルダーのドキュメントを参照してください。
EV3way-ET2018年試作走行体では次の値を使用しています。 ※2017/11/24時点
% EV3way-ET2018 Parameters
m = 0.050; % wheel weight [kg]
R = 0.05; % wheel radius [m]
M = 0.80; % body weight [kg]
W = 0.180; % body width [m]
D = 0.08; % body depth [m]
H = 0.180; % body height [m]
#計算
Octaveを起動し、ホームパスを nxtway_gs\models にします。
controlパッケージをロードします。※Octave起動の都度
>> pkg load control [ENTER]
param_nxtway_gs で再計算を行います。
>> param_nxtway_gs [ENTER]
求まった。k_f の値を確認します。
>> k_f [ENTER]
-0.86242 -33.97778 -1.14361 -3.02191
表示された4つの値が K_F[] の値になります。
##車輪回転角速度係数について
K_F[2]は最終段階で別途係数処理されています。
実際にパラメーターを再計算する際はこの K_F[2] の値を、走行体の挙動を確認しながら微調整する必要があります。
% suppress velocity gain because it fluctuates NXTway-GS
k_f(3) = k_f(3) * 0.85;
速度ゲインkf(3)が大きいと倒立状態を維持するための振動が大きくなるため、param_controller.mでは速度ゲインの計算値を適当に調節しています。