EV3way ETロボコンで使用している倒立振子APIパラメーターの再計算手順


ETロボコンで使用している倒立振子APIのパラメーターの再計算手順について簡単に説明します。
いただいたもの、見つけたもの等々いくつかの情報の寄せ集めになります。

走行体の形状・重量に変更があった場合に、最適なパラメーターを再計算することができます。
ここで再計算するのは次のパラメーターになります。

balancer_param.c
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]

物理パラメーターの設定

param_plant.m
% 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時点

param_plant.m
% 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] の値を、走行体の挙動を確認しながら微調整する必要があります。

param_controller.m
% suppress velocity gain because it fluctuates NXTway-GS
k_f(3) = k_f(3) * 0.85;

速度ゲインkf(3)が大きいと倒立状態を維持するための振動が大きくなるため、param_controller.mでは速度ゲインの計算値を適当に調節しています。