dra*_*gsu 5 math accelerometer quaternions gravity
鉴于加速度计具有9 DOF(加速度计,陀螺仪和磁力计),我想在加速度计读数中去除/补偿重力的影响(加速度计可以自由旋转).传感器给出相对于(磁)北,西和上参考系的四元数表示的方向.
我发现这个http://www.varesano.net/blog/fabio/simple-gravity-compensation-9-dom-imus 但是无法理解给定方程的基础.
如何获得上述信息呢?
Ali*_*Ali 11
您需要将四元数的加速度计读数旋转到地球参照系(如果您愿意,进入房间的坐标系),然后减去重力.剩余的加速度是传感器在地球参考系中的加速度,通常称为线性加速度或用户加速度.
在伪代码中,类似这样的东西
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
Run Code Online (Sandbox Code Playgroud)
你说你可以q
通过API.唯一不重要的一步是实现该rotate()
功能.
要v
在旋转时计算矢量图像,q
应使用以下公式:v rotate = q v q -1.要使用浮点数计算它,您需要自己计算公式; 它们在使用四元数旋转时可用.
据我所知,您提供的链接就是这样,您可以在那里看到扩展的公式,现在您知道它们来自何处.此外,链接的内容似乎以g为单位测量重力,即重力为[0,0,-1].
注意标志惯例(无论你考虑重力[0,0,-1]还是[0,0,1])和坐标系的手性!