3d Madgwick IMU算法,如何获取360度自由度变量?

3d Madgwick IMU算法,如何获取360度自由度变量?,3d,rotation,imu,3d,Rotation,Imu,我在我的一个项目中实现了不同的IMU方法,目前我正在试验著名的方法(MahonyAHRS.c) 到目前为止,它和我自己实现的基于矢量旋转和运行平均传感器融合(通常称为互补)的方法一样有效 但是,我想从中获得360度自由度,我目前使用此功能: void imu_mahony_getRollPitchYaw(float *roll_, float *pitch_, float *yaw_) { *yaw_ = fast_atan2f(2*q1*q2 - 2*q0*q3, 2*q0*q0 +

我在我的一个项目中实现了不同的
IMU
方法,目前我正在试验著名的方法(MahonyAHRS.c)

到目前为止,它和我自己实现的基于矢量旋转和运行平均传感器融合(通常称为互补)的方法一样有效

但是,我想从中获得360度自由度,我目前使用此功能:

void imu_mahony_getRollPitchYaw(float *roll_, float *pitch_, float *yaw_) 
{
    *yaw_ = fast_atan2f(2*q1*q2 - 2*q0*q3, 2*q0*q0 + 2*q1*q1 - 1); 
    *pitch_ = -asin(2*q1*q3 + 2*q0*q2); 
    *roll_ = atan2f(2*q2*q3 - 2*q0*q1, 2*q0*q0 + 2*q3*q3 - 1);
}
然而,这导致了90度的问题。 我想要的是接受0-359度的俯仰和滚转