@@ -92,7 +92,6 @@ static struct EKFData {
9292 float H [NUMV ][NUMX ];
9393 // local magnetic unit vector in NED frame
9494 float Be [3 ];
95- float BeScaleFactor ;
9695 // covariance matrix and state vector
9796 float P [NUMX ][NUMX ];
9897 float X [NUMX ];
@@ -281,26 +280,25 @@ void INSSetGyroBiasVar(const float gyro_bias_var[3])
281280 ekf .Q [8 ] = gyro_bias_var [2 ];
282281}
283282
284- // must be called AFTER SetMagNorth
285- void INSSetMagVar (const float mag_var [3 ])
283+ void INSSetMagVar (const float scaled_mag_var [3 ])
286284{
287- ekf .R [6 ] = mag_var [0 ] * ekf . BeScaleFactor ;
288- ekf .R [7 ] = mag_var [1 ] * ekf . BeScaleFactor ;
289- ekf .R [8 ] = mag_var [2 ] * ekf . BeScaleFactor ;
285+ ekf .R [6 ] = scaled_mag_var [0 ];
286+ ekf .R [7 ] = scaled_mag_var [1 ];
287+ ekf .R [8 ] = scaled_mag_var [2 ];
290288}
291289
292- void INSSetBaroVar (float baro_var )
290+ void INSSetBaroVar (const float baro_var )
293291{
294292 ekf .R [9 ] = baro_var ;
295293}
296294
297295void INSSetMagNorth (const float B [3 ])
298296{
299- ekf . BeScaleFactor = invsqrtf (B [0 ] * B [0 ] + B [1 ] * B [1 ] + B [2 ] * B [2 ]);
297+ float invmag = invsqrtf (B [0 ] * B [0 ] + B [1 ] * B [1 ] + B [2 ] * B [2 ]);
300298
301- ekf .Be [0 ] = B [0 ] * ekf . BeScaleFactor ;
302- ekf .Be [1 ] = B [1 ] * ekf . BeScaleFactor ;
303- ekf .Be [2 ] = B [2 ] * ekf . BeScaleFactor ;
299+ ekf .Be [0 ] = B [0 ] * invmag ;
300+ ekf .Be [1 ] = B [1 ] * invmag ;
301+ ekf .Be [2 ] = B [2 ] * invmag ;
304302}
305303
306304void INSStatePrediction (const float gyro_data [3 ], const float accel_data [3 ], float dT )
@@ -402,8 +400,6 @@ void INSCorrection(const float mag_data[3], const float Pos[3], const float Vel[
402400 Z [3 ] = Vel [0 ];
403401 Z [4 ] = Vel [1 ];
404402 Z [5 ] = Vel [2 ];
405- // magnetometer data in any units (use unit vector) and in body frame
406-
407403
408404 if (SensorsUsed & MAG_SENSORS ) {
409405 // magnetometer data in any units (use unit vector) and in body frame
0 commit comments