RDS 車輪速度制御モデル (wheel.m) 構造解説
実機同定伝達関数・状態空間表現・PID/FF制御器・エンコーダ量子化・2次LPF速度推定の全容
実機同定モデル (`ff_coeff`) と連続系変換
離散時間 1次遅れ伝達関数(サンプリング時間 $T_s = 0.001$ s):
極 $a_m$ 及びゲイン $b_m$ の導出:
状態変数 $x(t) = \begin{bmatrix} x_{\mathrm{enc}}(t) \\ v_{\mathrm{mot}}(t) \end{bmatrix}$ の連続時間状態方程式:
※ $K_{\mathrm{enc}} = \frac{8192}{2\pi} \approx 1303.797 \text{ pulse/rad}$
モータ&エンコーダ 内部シグナルフロー図
出力方程式 $y = Cx + d$ と厳密離散化
観測量 $y$ はエンコーダ累積パルス $x_{\mathrm{enc}}$ のみを取り出します:
ZOH(0次ホールド)厳密離散化行列:
💡 パルス離散化ノイズのメカニズム
実機エンコーダは整数ステップでしか位置を測れません.微分(後退差分)時にこれが激しい離散化ノイズ(ステップ状スパイク)を生みます.
エンコーダの構造とパルス量子化 (丸め) 概念図
PID フィードバック制御部 (`pid.hpp`)
ゲイン定数:$K_p = 2.0, \quad K_i = 200.0, \quad K_d = 0.0$
🔄 アンチワインドアップ (Anti-windup)
目標速度の符号反転時($v_{\mathrm{ref}}[k-1] \cdot v_{\mathrm{ref}}[k] < 0$)に積分値を 0 リセットし、逆転時の急激なオーバーシュートを抑制.
FF (Feed-Forward) 制御部 & 飽和処理
同定モデル逆伝達関数($1/G_m$)+ 120Hz 1次LPF:
全制御入力の飽和リミッタ処理:
コントローラ内部回路・詳細ブロックダイアグラム
速度推定アルゴリズムと 60Hz LPF 係数
Step 1: 後退差分によるパルスレート計算
Step 2: 2次 IIR フィルタ (`lpf_2nd_coeff_60hz`)
係数:$a_1 = -1.475480, a_2 = 0.586920, b_0 = b_2 = 0.027860, b_1 = 0.055720$
Step 3: 単位換算(パルス速度 $\to$ 角速度)
速度推定パイプラインとフィルタ波形比較
シミュレータ設定
⚙️ リアルタイム車輪モニタ
推定速度 $v_{fb}$:
0.0 rad/s
モータ回転数:
0.0 rpm
制御入力 $a_{pwm}$:
0 count
エンコーダ位置:
0 pulse