# Non-linear complementary filter on so3: Corrected equations?

While reading the paper "Multirotor Aerial Vehicles: Modeling, Estimation, and Control of Quadrotor" by Mahony, Kumar and Corke, I stumbled across the following equations for a non-linear attitude observer, which I would like to implement, but I believe there is something wrong.

$\dot{\hat{R}} := \hat{R} \left( \Omega_{IMU} - \hat{b} \right)_\times - \alpha \\ \dot{\hat{b}} := k_b \alpha \\ \alpha := \left( \frac{k_a}{g^2}((\hat{R}^T \vec z) \times a_{IMU}) + \frac{k_m}{|^Am|^2} ((\hat{R}^T {^Am}) \times m_{IMU}) \right)_\times + k_E \mathbb{P}_{so(3)} (\hat{R} R_E^T)$

Where $\hat{R}$ and $\hat{b}$ are etimates of orientation and gyroscope bias, $\Omega_{IMU}, a_{IMU}, m_{IMU}, R_E^T$ are measurements and $k_X$ are scalar gains, which may be set to 0 for measurements that are not evailable.

Now $\dot{\hat{R}}$ and $\alpha$ need to be matrices $\in \mathbb{R}^{3\times 3}$ due to their definitions. $\hat{b}$ and thus $\dot{\hat{b}}$ need to be vectors $\in \mathbb{R}^3$. But then what is the correct version of the second equation $\dot{\hat{b}} := k_b \alpha$?

From that paper, which I don't have available at the moment, I believe the first equation should was \begin{align} \dot{\hat{R}} &= \hat{R} \left ( \Omega_{IMU} - \hat{b} - \alpha \right )_\times \end{align} but in that paper $\alpha$ ($\omega$ in the paper) was a vector.
Another thing to look at for the equations you have listed is if the second equation shouldn't have the operator transforming $\alpha$ from its skew-symmetric matrix form to a vector on $\mathbb{R}^3$.
• Thanks! In the end I found this paper by Mahony et al. very useful: Nonlinear Complementary Filters on the Special Orthogonal Group. The explicit complementary filter with bias correction is similar to the filter described in the paper above but without the external attitude measurement $R_E$. $\alpha$ above should indeed be a vector, but then it is unclear how to integrate $R_E$. Sep 22 '14 at 13:53
• I'm not familiar with the $R_E$ update since it wasn't in the original papers. The $\mathbb{P}_{so(3)}$ operator is just the anti-symmetric part of the matrix, right? That will be skew-symmetric and could be converted to a vector on $\mathbb{R}^3$ which maybe would be used somehow ... just thinking out loud :) Sep 22 '14 at 14:59