車輪速度制御モデル (wheel.m) 解説&演習ガイド
InternalSoftwareE2023 の同定モデル・状態空間表現・PID/FF制御・エンコーダ速度推定・車輪回転視覚化
RDS 実機同定モデル (`ff_coeff`)
RDS コード内の同定伝達関数(1次遅れ要素,$T_s = 0.001$ s):
連続時間極 $a_m$ および入力ゲイン $b_m$ の算出:
状態変数と連続時間状態空間行列
状態変数 $x(t) = \begin{bmatrix} x_{\mathrm{enc}}(t) \\ v_{\mathrm{mot}}(t) \end{bmatrix}$(位置 [pulse],モータ角速度 [rad/s]):
ここで $K_{\mathrm{enc}} = \dfrac{\text{MOT\_PLS\_PER\_1REV}}{2\pi} \approx 1303.797$ [pulse/rad].
出力方程式 $y = Cx + d$
観測量 $y = x_{\mathrm{enc}}$ [pulse] を直接取り出す出力行列:
離散化(ZOH厳密離散化)による更新式:
エンコーダのパルス量子化 (離散化ノイズ)
実機エンコーダは 32bit 整数パルスを離散的にカウントするため:
💡 実機再現の重要性
パルスを整数化することで,低速時に後退差分を取った際の段階的なステップノイズ(離散化ノイズ)が再現され,フィルタ処理の重要性が視覚化されます.
PID コントローラ(`pid.hpp` 準拠)
ゲイン定数:$K_p = 2.0, K_i = 200.0, K_d = 0.0$
Anti-windup: 目標速度の符号反転($v_{\mathrm{ref}}[k-1] \cdot v_{\mathrm{ref}}[k] < 0$)時に積分値を 0 リセット.
FF (Feed-Forward) 制御項と飽和処理
RDS 実機の FF 制御(同定モデル逆フィルタ + 120Hz LPF):
全制御入力の制限(飽和限界):
後退差分によるパルスレート換算
エンコーダ位置パルス差分からパルス速度 [pulse/s] へ変換:
60Hz 2次バターワース LPF 差分方程式
`z_transform.hpp` 内の `lpf_2nd_coeff_60hz` 係数による計算:
係数:$a_1 = -1.475480, a_2 = 0.586920, b_0 = b_2 = 0.027860, b_1 = 0.055720$
単位変換:
※ $K_{\mathrm{p2r}} = \text{WHL\_PULSESEC\_TO\_MOT\_ANGVEL} = \frac{2\pi}{\text{MOT\_PLS\_PER\_1REV}}$ [rad/pulse]
シミュレータ設定
リアルタイム車輪モニタ
推定速度 $v_{fb}$: 0.0 rad/s
モータ回転数: 0.0 rpm
制御入力 $a_{pwm}$: 0 count
エンコーダ位置: 0 pulse