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$?


1 Answer 1


I've implemented this algorithm before but I found a different paper easier to read. Try find the paper by Hamel and Mahoney (with Hamel listed as the first author).

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$.

  • $\begingroup$ 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$. $\endgroup$
    – sebsch
    Sep 22, 2014 at 13:53
  • $\begingroup$ 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 :) $\endgroup$
    – ryan0270
    Sep 22, 2014 at 14:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.