Kanamaya Control Methodを用いたスラローム走行
Kanayama Control Methodを用いてスラローム走行を設計します。
1. Kanayama Control Methodとは
Kanayama Control Methodは独立二輪車のような非ホロノミック系において,目標軌道に追従させる制御手法のことです。
マイクロマウスも非ホロノミック系であり,Kanayama Control Methodを適用していきます.
この記事では以下を参考にしています。
https://www03.core.ac.uk/download/pdf/36732512.pdf
2. 理論を理解する
2.1 最低限必要な理解
絶対座標系での位置を$p=[x,y,\theta]^\text{T}$,その目標値を$p_r=[x_r,y_r,\theta_r]^\text{T}$とします。
並進速度$v$,回転速度$\omega$をまとめたベクトルを$q=[v, \omega]^\text{T}$,その目標値を$q_r=[v_r, \omega_r]^\text{T}$とします。$v,\omega$は絶対座標,機体座標系で共通となります。
絶対座標系での位置$p$の微分$\dot p$は
$$ \dot p=\left[ \begin{matrix} \dot x \\ \dot y \\ \dot\theta \end{matrix} \right]= \left[ \begin{matrix} v\ \text{cos}\theta \\ v\ \text{sin}\theta \\ \omega \end{matrix} \right] $$と表されます。
現在の状態を$p_c=[x_c,y_c,\theta_c]^\text{T}$,$\dot p_c=[\dot x_c,\dot y_c,\dot \theta_c]^\text{T}$,$q_c=[v_c, \omega_c]^\text{T}$とすると, 機体座標系での位置の誤差$p_e=[x_e,y_e,\theta_e]^\text{T}$は次のように表されます。
機体座標系での位置の誤差の微分$\dot p_e=[\dot x_e,\dot y_e,\dot\theta_e]^\text{T}$は
$$ \dot p_e=\left[ \begin{matrix} \dot x_e \\ \dot y_e \\ \dot\theta_e \end{matrix} \right]= \left[ \begin{matrix} y_e \omega_c - v_c + v_r\text{cos}\theta_e \\ -x_e\omega_c + v_r\text{sin}\theta_e \\ \omega_r - \omega_c \end{matrix} \right] $$となります。導出については資料にあります。
Kanayama Control Methodでは,誤差$p_e$を$[0,0,0]^\text{T}$に漸近収束させる速度入力$q$には
$$ q=\left[ \begin{matrix} v \\ \omega \end{matrix} \right]= \left[ \begin{matrix} v_c \\ \omega_c \end{matrix} \right]= \left[ \begin{matrix} v_r\text{cos}\theta_e + K_x x_e \\ \omega_r + v_r(K_y y_e + K_\theta \text{sin}\theta_e) \end{matrix} \right] $$があると証明されています。$K_x,K_y,K_\theta >0$はパラメータです。
とりあえず入力をこのようにするのだと思えば利用できます。
2.2 漸近安定の証明
$q$がLyapunov安定性を満たす入力であることが示されています。
まず,速度入力を$q$としたときの誤差の微分$\dot p_e$は
$$ \dot p_e=\left[ \begin{matrix} \dot x_e \\ \dot y_e \\ \dot\theta_e \end{matrix} \right]= \left[ \begin{matrix} \{\omega_r + v_r(K_y y_e + K_\theta \text{sin}\theta_e)\}y_e - K_x x_e\\ -\{\omega_r + v_r(K_y y_e + K_\theta \text{sin}\theta_e)\}x_e + v_r\text{sin}\theta_e \\ -v_r(K_y y_e + K_\theta\text{sin}\theta) \end{matrix} \right] $$となります。
Lyapunov関数$V$を
$$V = \dfrac{1}{2}(x_e^2 + y_e^2) + \dfrac{1}{K_y}(1 - \text{cos}\theta_e)$$
とすると,その微分は
$$\dot V = x_e\dot x_e + y_e \dot y_e + \dfrac{1}{K_y}\dot\theta_e\text{sin}\theta_e = -K_x x_e^2 - \dfrac{K_\theta}{K_y}v_r\text{sin}^2\theta_e \leq 0$$
となり,$\dot V$が平衡点$q_e=[0,0,0]^\text{T}$以外で常に負となればシステムは平衡点に漸近しますが,この式からは $q_e=[0,y_e,0]^\text{T}$においても$\dot V = 0$を満たす可能性があるため平衡点に漸近するとは言えません。
そこで,平衡点周りで線形近似したシステムに対してRouth-Hurbitsの安定判別法を適用し,システムが安定であれば平衡点に漸近すると言えます。テイラー展開で1次線形化したシステムは
$$ \dot p_e=\left[ \begin{matrix} \dot x_e \\ \dot y_e \\ \dot\theta_e \end{matrix} \right]= \left[ \begin{matrix} -K_x & \omega_r & 0 \\ -\omega_r & 0 & v_r \\ 0 & -v_rK_y & -v_rK_\theta \end{matrix} \right] \left[ \begin{matrix} x_e \\ y_e \\ \theta_e \end{matrix} \right]\equiv Ap_e $$であり,その特性方程式は
$$|Is-A|=0$$
より
$$a_3s^3 + a_2s^2 + a_1s + a_0=0$$
$$ \left\{ \begin{array}{l} a_3 =& 1\\ a_2 =& K_\theta v_r + K_x \\ a_1 =& K_yv_r^2 + K_xK_\theta v_r + \omega_r^2\\ a_0 =& K_xK_yv_r^2 + \omega_r^2K_\theta v_r \end{array} \right. $$ となります。$a_3=1$となるように整理してあります。
Hurbits行列式$H$は $$ H=\left| \begin{matrix} a_1 & a_3\\ a_0 & a_2 \end{matrix} \right|=a_1a_2 - a_0a_3 > 0 $$
となり,$a_3,a_2,a_1,a_0 > 0$かつ$H>0$であるため,システムは安定となります。
よって,速度入力$q$はシステムを平衡点$q_e=[0,0,0]^\text{T}$に漸近させることが証明されました。
3. 全体的なシステム
Kanayama Control Methodで求めた速度入力$v,\omega$を目標値として2自由度制御に渡します。
4. 目標軌道を生成する
MATLABでスラローム軌道生成を参考にします.
目標軌道はMATLABで生成し,マイコン内で更新をしない静的軌道とします.
目標の並進速度$v_r=0.506\ \text{m/s}$とし,$x_r,y_r,\theta_r,\omega_r$を$1\ \text{ms}$ごとに更新します.
5. 実装する
ゲイン$K_x,K_y,K_\theta$の調整が難しく,Kanayama Controllerから生成される目標速度$q$が振動しているようになってしまいました.
ですが,ある程度は追従できているので,並進方向の速度追従とKanayama Controllerのゲインを修正すれば良くなりそうです.