@@ -58,8 +58,9 @@ int main() {
5858
5959 // Noise & timestep
6060 double dt = 1.0 ;
61- Matrix9 Q = Matrix9::Identity () * 0.01 ;
62- Matrix3 R = Matrix3::Identity () * 0.5 ;
61+ // Continuous-time process noise (scaled by dt inside predict)
62+ Matrix9 Qc = Matrix9::Identity () * 0.01 ;
63+ Matrix3 R = Matrix3::Identity () * 0.5 ;
6364
6465 // Two IMU samples [a; ω]
6566 Vector6 imu1;
@@ -77,15 +78,15 @@ int main() {
7778 << " \n\n " ;
7879
7980 // --- first predict/update ---
80- ekf.predict (dynamics (imu1), dt, Q );
81+ ekf.predict (dynamics (imu1), dt, Qc );
8182 cout << " --- After predict 1 ---\n X: " << ekf.state ()
8283 << " \n P: " << ekf.covariance () << " \n\n " ;
8384 ekf.update (h_gps, z1, R);
8485 cout << " --- After update 1 ---\n X: " << ekf.state ()
8586 << " \n P: " << ekf.covariance () << " \n\n " ;
8687
8788 // --- second predict/update ---
88- ekf.predict (dynamics (imu2), dt, Q );
89+ ekf.predict (dynamics (imu2), dt, Qc );
8990 cout << " --- After predict 2 ---\n X: " << ekf.state ()
9091 << " \n P: " << ekf.covariance () << " \n\n " ;
9192 ekf.update (h_gps, z2, R);
0 commit comments