关于四元数解算姿态的问题

讨论区

根据网上比较流行的四元数加互补滤波的姿态解算方法,其中有一句代码是这样写的
v.x = 2(q2q4 - q1q3);

v.y = 2
(q1q2 + q3q4);

v.z = 1-2(q2q2 + q3*q3);
根据手头能查到的资料,说Vx Vy Vz 是 “”将当前姿态的重力在三个轴上的分量分离出来,把四元数换算成方向余弦中的第三行的三个元素,根据余弦矩阵和欧拉角的定义,就是地理坐标系(参考坐标系)的Z轴的重力向量。“”(摘自潇洒的石头《四元数完全解析及资料汇总》)
而后的解释是 参考坐标系(大地坐标系)的[0 0 1]向量与变换矩阵相乘的到的,在机体坐标系中,重力向量。
那么问题来了,怎么算也是第三列的3个元素,怎么弄出来个第三行。我想了想,如果是第三行的三个元素,那么有可能是 机体坐标系的Z轴[0 0 1]向量逆变换的到的大地坐标系中,机体坐标系的Z轴在大地坐标系中的表示。如此一来后面的叉乘计算就没有意义了,因为从加速度计中得到的数据是机体坐标系,而得到的Vx Vy Vz是大地坐标系的。

小弟初来乍到,拼凑了些代码用stm32f4 造了一个飞控,回头看代码感觉很困扰,希望数学,动力学好的大神给小弟解答。
感谢!
已邀请:

赞同来自:


同学,我最近也是刚学到这一块,也是遇到同样的疑惑,请问这个问题解答了吗,如果解答了可不可以帮我解惑一下

要回复问题请先登录注册