|
看了下用毕卡求解法,更新姿态四元数,其他都明白了,但是有个地方没有明白,就是所谓的角增量与角速度。
陀螺仪读出来的数据不是直接就是角速度了吗,为什么书上说陀螺仪出来的是角增量呢,
按照我的理解
角增量 约= 角速度 * 采样时间T,
这是什么意思,希望有大神能够指点一二~、、
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
忽略那个问题,顺便分享一下将IMUupdate的四元数更新微分方程改为一、二、三、四阶毕卡求解法的代码:
直接将四元数更新方程,进行替代就可以了
注:
1.IMUupdate函数的四元数姿态更新方程 实质上就是毕卡一阶近似算法
2.下面的q0_last, q1_last, q2_last, q3_last, 是四元数缓冲,因为我发现IMUupdate里面貌似忽略了这个问题,
比如最开始q0,进行更新了,然后开始更新q1,但是更新q1是用的更新后的q0,但是根据方程,更新四元数的时候,都是用的更新前的四元数
一阶近似算法
q0 = q0 + (-q1*gx - q2*gy - q3*gz)*halfT;
q1 = q1 + (q0*gx + q2*gz - q3*gy)*halfT;
q2 = q2 + (q0*gy - q1*gz + q3*gx)*halfT;
q3 = q3 + (q0*gz + q1*gy - q2*gx)*halfT;
二阶近似算法
delta2 = (gx*gx + gy*gy + gz*gz)*T*T;
q0 = q0_last*(1-delta2/8) + (-q1_last*gx - q2_last*gy - q3_last*gz)*halfT;
q1 = q1_last*(1-delta2/8) + (q0_last*gx + q2_last*gz - q3_last*gy)*halfT;
q2 = q2_last*(1-delta2/8) + (q0_last*gy - q1_last*gz + q3_last*gx)*halfT;
q3 = q3_last*(1-delta2/8) + (q0_last*gz + q1_last*gy - q2_last*gx)*halfT;
三阶近似算法
delta2 = (gx*gx + gy*gy + gz*gz)*T*T;
q0 = q0_last*(1-delta2/8) + (-q1_last*gx - q2_last*gy - q3_last*gz)*T*(0.5 - delta2/48);
q1 = q1_last*(1-delta2/8) + (q0_last*gx + q2_last*gz - q3_last*gy)*T*(0.5 - delta2/48);
q2 = q2_last*(1-delta2/8) + (q0_last*gy - q1_last*gz + q3_last*gx)*T*(0.5 - delta2/48);
q3 = q3_last*(1-delta2/8) + (q0_last*gz + q1_last*gy - q2_last*gx)*T*(0.5 - delta2/48);
四阶近似算法
delta2 = (gx*gx + gy*gy + gz*gz)*T*T;
q0 = q0_last*(1 - delta2/8 + delta2*delta2/384) + (-q1_last*gx - q2_last*gy - q3_last*gz)*T*(0.5 - delta2/48);
q1 = q1_last*(1 - delta2/8 + delta2*delta2/384) + (q0_last*gx + q2_last*gz - q3_last*gy)*T*(0.5 - delta2/48);
q2 = q2_last*(1 - delta2/8 + delta2*delta2/384) + (q0_last*gy - q1_last*gz + q3_last*gx)*T*(0.5 - delta2/48);
q3 = q3_last*(1 - delta2/8 + delta2*delta2/384) + (q0_last*gz + q1_last*gy - q2_last*gx)*T*(0.5 - delta2/48);
附上理论公式的图片 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|