@@ -153,7 +153,7 @@ def test_benchmark_ahrs(self):
153153
154154 smoother = sf .FixedIntervalSmoother (ains , cov_smoothing = True )
155155
156- euler_ains = []
156+ euler_ains , err_ains = [], []
157157 for f_i , w_i , h_i in zip (acc_imu , gyro_imu , head_aid ):
158158 smoother .update (
159159 f_i ,
@@ -165,12 +165,15 @@ def test_benchmark_ahrs(self):
165165 )
166166
167167 euler_ains .append (smoother .ains .euler (degrees = True ))
168+ err_ains .append (smoother .ains .P .diagonal ())
168169
169170 # Forward filter state estimates
170171 euler_ains = np .array (euler_ains )
172+ err_ains = np .array (err_ains )
171173
172174 # Smoothed state estimates
173175 euler_smth = smoother .euler (degrees = True )
176+ err_smth = np .array ([P_i .diagonal () for P_i in smoother .P ])
174177
175178 # Half-sample shift
176179 # # (compensates for the delay introduced by Euler integration)
@@ -184,13 +187,15 @@ def test_benchmark_ahrs(self):
184187 euler_err_ains = np .std ((euler_ains - euler )[warmup :], axis = 0 )
185188 np .testing .assert_array_less (euler_err_smth , euler_err_ains )
186189
190+ smoother .P .shape == (len (acc_imu ), 12 , 12 )
191+ np .testing .assert_array_less (err_smth [warmup :], err_ains [warmup :] + 1e-12 )
192+
187193 def test_benchmark_vru (self ):
188194 # Reference signal
189195 fs = 10.24 # sampling rate in Hz
190196 _ , pos , vel , euler , acc , gyro = benchmark_full_pva_beat_202311A (fs )
191197 euler = np .degrees (euler )
192198 gyro = np .degrees (gyro )
193- head = euler [:, 2 ]
194199
195200 # IMU measurements
196201 err_acc = sf .constants .ERR_ACC_MOTION2 # m/s^2
0 commit comments