カルマンフィルタを用いたセンサフュージョン(2)

前回の内容

前回は図1に示す対向二輪型ロボットの位置及び姿勢を推定するために、カルマンフィルタを用いることを考え、「姿勢」についての状態方程式と観測方程式を考えました。

画像に alt 属性が指定されていません。ファイル名: 795316b92fc766b0181f6fef074f03fa-1024x397.png
図1 ロボットのシステム概要

今回は対向二輪型ロボットの「位置」に関する状態方程式と観測方程式を考えようと思います。

位置推定用の状態方程式と観測方程式の導出

前回と同様にまずは注目する状態(今回の場合位置)に関する数理モデルの式を導出します。

位置に関する式を次式に示します。

$$x_{k + 1} = x_k + v_{k_x} \delta t \tag{7}$$

$$y_{k + 1} = y_k + v_{k_y} \delta t \tag{8}$$

ここで、$x$、$y$はロボットの位置を、$v_x$、$v_y$はロボットの速度、$\delta t$はマイコンの制御周期を表しています。

次に式$(7)$と式$(8)$を用いて、状態方程式を導出します。

$$\begin{pmatrix}
x_{k + 1} \\
y_{k + 1}
\end{pmatrix}
=
\begin{pmatrix}
1 & 0 \\
0 & 1
\end{pmatrix}

\begin{pmatrix}
x_k \\
y_k
\end{pmatrix}

+

\delta t
\begin{pmatrix}
v_x \\
v_y
\end{pmatrix}
\tag{11}
$$

ここで

$$\boldsymbol{x_k} =
\begin{pmatrix}
x_k \\
y_k
\end{pmatrix}

A_{xy} =
\begin{pmatrix}
1 & 0 \\
0 & 1
\end{pmatrix}

B_{xy} =
\delta t

\boldsymbol{u_k} =
\begin{pmatrix}
v_x \\
v_y
\end{pmatrix}
$$

とします。

また、$x_k$、$y_K$はGPSセンサで直接観測できますが、観測誤差$w$を含むため観測方程式は以下のようになります。

$$\begin{pmatrix}
x_k + w \\
y_k + w
\end{pmatrix}

=

\begin{pmatrix}
1 & 0 \\
0 & 1
\end{pmatrix}

\begin{pmatrix}
x_k \\
y_k
\end{pmatrix}

+

\begin{pmatrix}
w \\
w
\end{pmatrix}
\tag{12}
$$

ここで

$$\boldsymbol{y_k} =
\begin{pmatrix}
x_k + w \\
y_k + w
\end{pmatrix}

C_{xy} =
\begin{pmatrix}
1 & 0 \\
0 & 1
\end{pmatrix}

\boldsymbol{w_k} =
\begin{pmatrix}
w \\
w
\end{pmatrix}
$$

とします。ここで、GPSセンサは$x$、$y$方向で同様の誤差$w$が生じるとします。

位置推定用のカルマンフィルタ

カルマンフィルタを用いて位置を推定する手順は、前回の姿勢を推定する流れと同様になります。

位置推定用にカルマンゲインと共分散行列を導出し、$\boldsymbol{x}$の最大事後確率を求めます。その後、数理モデルを用いて次ステップ$(k+1)$の状態予測を行います。

以上の流れを繰り返すことで、各ステップにおけるロボットの位置を推定することが出来ます。

まとめ

今回は位置推定用の状態方程式と観測方程式を考えました。前回姿勢を推定する方法は考えたので、これでカルマンフィルタによるセンサフュージョンによってロボットの状態(位置、姿勢)推定が可能となります。

次回は実際にシミュレーションを行って、それぞれのセンサ値から推定した状態と、カルマンフィルタによるセンサフュージョンで推定した状態を比較しようと思います。

コメントを残す

メールアドレスが公開されることはありません。