@@ -77,32 +77,36 @@ Motion Model
7777
7878The robot model is
7979
80- .. math :: \dot{x} = vcos (\phi)
80+ .. math :: \dot{x} = v \cos (\phi)
8181
82- .. math :: \dot{y} = vsin( (\phi)
82+ .. math :: \dot{y} = v \sin (\phi)
8383
8484.. math :: \dot{\phi} = \omega
8585
8686So, the motion model is
8787
88- .. math :: \textbf{x}_{t+1} = F\textbf{x}_t+B\textbf{u}_t
88+ .. math :: \textbf{x}_{t+1} = f(\textbf{x}_t, \textbf{u}_t) = F\textbf{x}_t+B\textbf{u}_t
8989
9090where
9191
9292:math: `\begin {equation*} F= \begin {bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 \\ \end {bmatrix} \end {equation*}`
9393
94- :math: `\begin {equation*} B= \begin {bmatrix} cos(\phi )dt & 0 \\ sin(\phi )dt & 0 \\ 0 & dt \\ 1 & 0 \\ \end {bmatrix} \end {equation*}`
94+ :math: `\begin {equation*} B= \begin {bmatrix} cos(\phi ) \Delta t & 0 \\ sin(\phi ) \Delta t & 0 \\ 0 & \Delta t \\ 1 & 0 \\ \end {bmatrix} \end {equation*}`
9595
96- :math: `dt ` is a time interval.
96+ :math: `\Delta t ` is a time interval.
9797
9898This is implemented at
9999`code <https://github.com/AtsushiSakai/PythonRobotics/blob/916b4382de090de29f54538b356cef1c811aacce/Localization/extended_kalman_filter/extended_kalman_filter.py#L53-L67 >`__
100100
101+ The motion function is that
102+
103+ :math: `\begin {equation*} \begin {bmatrix} x' \\ y' \\ w' \\ v' \end {bmatrix} = f(\textbf {x}, \textbf {u}) = \begin {bmatrix} x + v\cos (\phi )\Delta t \\ y + v\sin (\phi ) \\ \phi + \omega \Delta t \\ v \end {bmatrix} \end {equation*}`
104+
101105Its Jacobian matrix is
102106
103- :math: `\begin {equation*} J_F = \begin {bmatrix} \frac {dx}{dx }& \frac {dx}{dy } & \frac {dx}{d \ phi } & \frac {dx}{dv }\\ \frac {dy}{dx }& \frac {dy}{dy } & \frac {dy}{d \ phi } & \frac {dy}{dv }\\ \frac {d \ phi}{dx }& \frac {d \ phi}{dy } & \frac {d \ phi}{d \ phi } & \frac {d \ phi}{dv }\\ \frac {dv}{dx }& \frac {dv}{dy } & \frac {dv}{d \ phi } & \frac {dv}{dv}\\ \end {bmatrix} \end {equation*}`
107+ :math: `\begin {equation*} J_f = \begin {bmatrix} \frac {\partial x'}{ \partial x }& \frac {\partial x'}{ \partial y } & \frac {\partial x'}{ \partial \ phi } & \frac {\partial x'}{ \partial v }\\ \frac {\partial y'}{ \partial x }& \frac {\partial y'}{ \partial y } & \frac {\partial y'}{ \partial \ phi } & \frac {\partial y'}{ \partial v }\\ \frac {\partial \ phi'}{ \partial x }& \frac {\partial \ phi'}{ \partial y } & \frac {\partial \ phi'}{ \partial \ phi } & \frac {\partial \ phi'}{ \partial v }\\ \frac {\partial v'}{ \partial x }& \frac {\partial v'}{ \partial y } & \frac {\partial v'}{ \partial \ phi } & \frac {\partial v'}{ \partial v} \end {bmatrix} \end {equation*}`
104108
105- :math: `\begin {equation*} = \begin {bmatrix} 1 & 0 & -v sin(\phi )dt & cos(\phi )dt\ \ 0 & 1 & v cos(\phi )dt & sin(\phi ) dt\ \ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end {bmatrix} \end {equation*}`
109+ :math: `\begin {equation*} = \begin {bmatrix} 1 & 0 & -v \ sin (\phi ) \Delta t & \ cos (\phi ) \Delta t\ \ 0 & 1 & v \ cos (\phi ) \Delta t & \ sin (\phi ) \Delta t\ \ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end {bmatrix} \end {equation*}`
106110
107111Observation Model
108112~~~~~~~~~~~~~~~~~
@@ -111,15 +115,19 @@ The robot can get x-y position infomation from GPS.
111115
112116So GPS Observation model is
113117
114- .. math :: \textbf{z}_{t} = H \textbf{x}_t
118+ .. math :: \textbf{z}_{t} = g(\textbf{x}_t) = H \textbf{x}_t
115119
116120where
117121
118- :math: `\begin {equation*} B= \begin {bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ \end {bmatrix} \end {equation*}`
122+ :math: `\begin {equation*} H = \begin {bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ \end {bmatrix} \end {equation*}`
123+
124+ The observation function states that
125+
126+ :math: `\begin {equation*} \begin {bmatrix} x' \\ y' \end {bmatrix} = g(\textbf {x}) = \begin {bmatrix} x \\ y \end {bmatrix} \end {equation*}`
119127
120128Its Jacobian matrix is
121129
122- :math: `\begin {equation*} J_H = \begin {bmatrix} \frac {dx}{dx} & \frac {dx}{dy } & \frac {dx}{d \ phi } & \frac {dx}{dv }\\ \frac {dy}{dx }& \frac {dy}{dy } & \frac {dy}{d \ phi } & \frac {dy}{dv }\\ \end {bmatrix} \end {equation*}`
130+ :math: `\begin {equation*} J_g = \begin {bmatrix} \frac {\partial x'}{ \partial x} & \frac {\partial x'}{ \partial y } & \frac {\partial x'}{ \partial \ phi } & \frac {\partial x'}{ \partial v }\\ \frac {\partial y'}{ \partial x }& \frac {\partial y'}{ \partial y } & \frac {\partial y'}{ \partial \ phi } & \frac {\partial y'}{ \partialv }\\ \end {bmatrix} \end {equation*}`
123131
124132:math: `\begin {equation*} = \begin {bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ \end {bmatrix} \end {equation*}`
125133
@@ -132,21 +140,21 @@ Localization process using Extendted Kalman Filter:EKF is
132140
133141:math: `x_{Pred} = Fx_t+Bu_t`
134142
135- :math: `P_{Pred} = J_FP_t J_F ^T + Q`
143+ :math: `P_{Pred} = J_f P_t J_f ^T + Q`
136144
137145=== Update ===
138146
139147:math: `z_{Pred} = Hx_{Pred}`
140148
141149:math: `y = z - z_{Pred}`
142150
143- :math: `S = J_H P_{Pred}.J_H ^T + R`
151+ :math: `S = J_g P_{Pred}.J_g ^T + R`
144152
145- :math: `K = P_{Pred}.J_H ^T S^{-1 }`
153+ :math: `K = P_{Pred}.J_g ^T S^{-1 }`
146154
147155:math: `x_{t+1 } = x_{Pred} + Ky`
148156
149- :math: `P_{t+1 } = ( I - K J_H ) P_{Pred}`
157+ :math: `P_{t+1 } = ( I - K J_g ) P_{Pred}`
150158
151159Ref:
152160~~~~
0 commit comments