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; } }
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 ) ); } }