示例#1
0
void L3GD20H::Calibrate( float dt, bool last_pass )
{
	Vector3f gyro;
	Read( &gyro, true );
	mCalibrationAccum += Vector4f( gyro, 1.0f );

	if ( last_pass ) {
		mOffset = mCalibrationAccum.xyz() / mCalibrationAccum.w;
		aDebug( "Offset", mOffset.x, mOffset.y, mOffset.z );
		mCalibrationAccum = Vector4f();
		mCalibrated = true;
	}
}
示例#2
0
文件: MPU9150.cpp 项目: kvip/bcflight
void MPU9150Accel::Calibrate( float dt, bool last_pass )
{
	if ( mCalibrated ) {
		mCalibrated = false;
		mCalibrationAccum = Vector4f();
		mOffset = Vector3f();
	}

	Vector3f accel;
	Read( &accel, true );
	mCalibrationAccum += Vector4f( accel, 1.0f );

	if ( last_pass ) {
		mOffset = mCalibrationAccum.xyz() / mCalibrationAccum.w;
		mCalibrationAccum = Vector4f();
		mCalibrated = true;
		gDebug() << "MPU9150 SAVING CALIBRATED OFFSETS !\n";
		aDebug( "mOffset", mOffset.x, mOffset.y, mOffset.z );
		Board::SaveRegister( "MPU9150:Accelerometer:Offset:X", std::to_string( mOffset.x ) );
		Board::SaveRegister( "MPU9150:Accelerometer:Offset:Y", std::to_string( mOffset.y ) );
		Board::SaveRegister( "MPU9150:Accelerometer:Offset:Z", std::to_string( mOffset.z ) );
	}
}