我在我的项目中实施了不同的IMU
方法,而我目前正在尝试着名的Madgwick's implementation of Mayhony's AHRS algorithm(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度的形式接收俯仰和滚动。