crazyflie2.0中从四元数获取欧拉角的程序中,看到如下程序:
void sensfusion6GetEulerRPY(float* roll, float* pitch, float* yaw)
{
float gx, gy, gz; // estimated gravity direction
gx = 2 * (q1*q3 - q0*q2);
gy = 2 * (q0*q1 + q2*q3);
gz = q0*q0 - q1*q1 - q2*q2 + q3*q3;
if (gx>1) gx=1;
if (gx<-1) gx=-1;
*yaw = atan2f(2*(q0*q3 + q1*q2), q0*q0 + q1*q1 - q2*q2 - q3*q3) * 180 / M_PI_F;
*pitch = asinf(gx) * 180 / M_PI_F; //Pitch seems to be inverted
*roll = atan2f(gy, gz) * 180 / M_PI_F;
}
但是在看邓正隆的惯性技术这本书中,计算出来的应该是如下公式,其中Z轴Yaw偏航,X轴Pitch俯仰,Y轴Roll翻滚;使用如下公式计算之后,从crazyflie PC client上看到X轴和Y轴交换了,很奇怪,不知道为什么?先记录下结果
在crazyflie2.0的程序中,将四元数转换为欧拉角时遇到了与理论公式不一致的情况。根据邓正隆《惯性技术》中的描述,计算欧拉角时,预期Z轴对应偏航,X轴对应俯仰,Y轴对应翻滚。然而实际应用中发现X轴和Y轴的欧拉角值出现了交换,这是一个未解的谜团,本文暂做记录待解决。
订阅专栏 解锁全文
675

被折叠的 条评论
为什么被折叠?



