Пример #1
0
void GetEulerAngle(void)
{
	float deltaT;
	Struct_3f gy,ac;

	GetMPU6050Data();
	imuAccIIRLPFilter(&mpu_info.acc, &accelLPF, &accelStoredFilterValues,imuAccLpfAttFactor);
	gy.x = mpu_info.gyro.x * Gyro2Radian;
	gy.y = mpu_info.gyro.y * Gyro2Radian;
	gy.z = mpu_info.gyro.z * Gyro2Radian;
	ac.x = accelLPF.x;
	ac.y = accelLPF.y;
	ac.z = accelLPF.z;
	deltaT = GetDeltaT(GetSysTime_us());
	DCM_CF(gy,ac,deltaT);
}
Пример #2
0
//计算飞行器姿态
void IMU_GetAttitude()
{
	float deltaT;
	
#ifdef ANO_IMU_USE_LPF_1st	
	//加速度数据一阶低通滤波
	Acc_lpf = LowPassFilter_1st(Acc_lpf, Acc, ano.factor.acc_lpf);
#endif	
	
#ifdef ANO_IMU_USE_LPF_2nd	
	//加速度数据二阶低通滤波
	imu.Acc_lpf = LowPassFilter_2nd(&imu.Acc_lpf_2nd, imu.Acc);
#endif
	
	deltaT = getDeltaT(GetSysTime_us());
	
#ifdef ANO_IMU_USE_DCM_CF
	DCM_CF(imu.Gyro,imu.Acc_lpf,deltaT);
#endif
#ifdef ANO_IMU_USE_Quaternions_CF
	Quaternion_CF(Gyro,Acc_lpf_1st,deltaT);
#endif
}