|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2013-4-1 20:07:43
|
显示全部楼层
现在假设大家已经得到了一下数据:
滤波后的加速度数据 AX,AY,AZ,陀螺仪数据:GX,GY,GZ,怎么用这些数据得到姿态?
我的程序里面用的四元数,我就简单给大家讲讲用法,具体四元数的原理什么的,我的不懂。。。。。矩阵、旋转、空间、三维。。。。实在太。。
IMUupdate(GX,GY,GZ,AX,AY,AZ);
这个函数的调用在control。c 里面,大家可以看一下,只要把加速度和陀螺仪的相关数据,传进这个函数就可以了,就这么简单。
这个函数可以根据我们传递进去的传感器数据,计算表示姿态的四元数,计算出了 四元数怎么用呢?请看程序末尾:
Q_ANGLE.Pitch = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; // pitch
Q_ANGLE.Rool = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; // roll
这两句话就是根据四元数,计算表示飞机姿态的欧拉角。
有了欧拉角,就可以方便的用于控制了。
听说四元数可以直接参与控制,我还不懂是怎么回事,有懂的大神还请解释解释啊,大家一起学习一下。 |
|