鉴于加速度计具有9 DOF(加速度计,陀螺仪和磁力计),我想在加速度计读数中去除/补偿重力的影响(加速度计可以自由旋转)。传感器给出相对于(磁)北,西和上参考系的四元数表示的方向。
我找到了http://www.varesano.net/blog/fabio/simple-gravity-compensation-9-dom-imus 但无法理解给定方程的基础。
如何获得上述信息?
答案 0 :(得分:10)
您需要将四元数的加速度计读数旋转到地球参照系(如果您愿意,进入房间的坐标系),然后减去重力。剩余的加速度是传感器在地球参考系中的加速度,通常称为线性加速度或用户加速度。
在伪代码中,像这样
acceleration = [ax, ay, ay] // accelerometer reading
q // quaternion corresponding to the orientation
gravity = [0, 0, -9.81] // gravity on Earth in m/s^2
a_rotated = rotate(acceleration, q) // rotate the measured acceleration into
// the Earth frame of reference
user_acceleration = a_rotated - gravity
您说您可以通过API获取q
。唯一不重要的步骤是实现rotate()
功能。
要在按v
旋转时计算向量q
的图像,应使用以下公式:v rotate = q v q -1 。要使用浮点数计算它,您需要自己计算公式;它们可在Using quaternion rotations获得。
据我所知,您提供的链接就是这样,您可以在那里看到扩展的公式,现在您知道它们来自何处。此外,链接的内容似乎以g为单位测量重力,即重力为[0,0,-1]。
注意标志惯例(无论你考虑引力[0,0,-1]还是[0,0,1])和handedness of your coordinate systems!
答案 1 :(得分:0)
我假设您的加速度计读数位于传感器主体框架中。首先,我们需要根据惯性框架表示加速度计数据,然后减去重力。 如果直接使用欧拉角而不是四元数,则需要计算旋转矩阵
phi
(用MATLAB表示法给出)。这里theta
代表滚动角度,psi
代表俯仰,R
代表偏航。这个z
矩阵是从身体到惯性框架。我认为在飞行动力学中它也被称为方向余弦矩阵(DCM)的转置。
当你应用矩阵乘法运算时,现在需要从<allow-navigation href="http://192.168.1.172:8100"/>
方向减去重力,以消除静态加速度,即重力。