ekf_cal
0.4.0
A Kalman filter-based sensor calibration package
|
Fiducial markers can be excellent resources in localization and mapping. When visible, they can provide relative position and orientation measurements. While fiducial markers remain remain visible and stationary, they can provide a quick and moderately robust SLAM solution.
Issues can arise, however, when performing online calibration of IMU and Camera sensors or when there are sufficiently large errors in the position and orientation of the fiducial.
As such, it can be beneficial to simultaneously estimate the pose of the fiducial alongside the localization of the moving body. This is done by introducing the fiducial pose states into the overall filter as
\begin{equation} \boldsymbol{x}_F = \begin{bmatrix} \pose{F}{L} & \quat{F}{L} \end{bmatrix} \end{equation}
The error model used for a fiducial position measurement is
\begin{align} \pose{f}{C} = R(\quat{C}{B})^T \left( R(\quat{B}{L})^T \left[ \pose{f}{L} - \pose{B}{L} \right] - \pose{C}{B} \right) + n_p \end{align}
where
The error model used for a fiducial angular measurement is
\begin{align} \quat{f}{C} = \begin{bmatrix} \cos(n_\alpha) & -\sin(n_\alpha) & 0 \\ \sin(n_\alpha) & \cos(n_\alpha) & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} \cos(n_\beta) & 0 & \sin(n_\beta) \\ 0 & 1 & 0 \\ -\sin(n_\beta) & 0 & \cos(n_\beta) \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos(n_\gamma) & -\sin(n_\gamma) \\ 0 & \sin(n_\gamma) & \cos(n_\gamma) \end{bmatrix} \quat{C}{B}^{-1} \quat{B}{L}^{-1} \quat{F}{L} \end{align}
where