@@ -29,6 +29,8 @@ volatile bool odom_running = false;
2929volatile uint32_t last_odom_time_ms = 0 ;
3030volatile uint32_t last_pursuit_time_ms = 0 ;
3131
32+ volatile uint32_t fps = 200 ;
33+ volatile uint32_t mstowait = 5 ;
3234volatile float global_x = 0.0f , global_y = 0.0f , global_h = 0.0f ;
3335volatile int32_t last_left_angle = 0 , last_right_angle = 0 ;
3436float odom_deg_to_mm = 1.0f ;
@@ -60,7 +62,7 @@ void pb_background_odometry_update(void) {
6062 if (!left_servo_ptr || !right_servo_ptr ) return ;
6163
6264 // --- RATE CAP: 200 Hz (5ms) ---
63- if (now - last_odom_time_ms < 5 ) return ;
65+ if (now - last_odom_time_ms < mstowait ) return ;
6466 last_odom_time_ms = now ;
6567 // ------------------------------
6668 vm_loop_counter ++ ;
@@ -97,7 +99,7 @@ void pb_background_pursuit_update(void) {
9799
98100 // --- RATE CAP: 100 Hz (10ms) ---
99101 uint32_t now = mp_hal_ticks_ms ();
100- if (now - last_pursuit_time_ms < 10 ) return ;
102+ if (now - last_pursuit_time_ms < mstowait ) return ;
101103 last_pursuit_time_ms = now ;
102104 // -------------------------------
103105
@@ -144,7 +146,9 @@ mp_obj_t experimental_start_odometry(size_t n_args, const mp_obj_t *args) {
144146 global_x = mp_obj_get_float (args [4 ]);
145147 global_y = mp_obj_get_float (args [5 ]);
146148 global_h = mp_obj_get_float (args [6 ]);
147-
149+ fps = mp_obj_get_int (args [7 ]);
150+
151+ mstowait = 1000 / fps ;
148152 int32_t unused ;
149153 pbio_servo_get_state_user (left_servo_ptr , (int32_t * )& last_left_angle , & unused );
150154 pbio_servo_get_state_user (right_servo_ptr , (int32_t * )& last_right_angle , & unused );
@@ -153,6 +157,8 @@ mp_obj_t experimental_start_odometry(size_t n_args, const mp_obj_t *args) {
153157 return mp_const_none ;
154158}
155159
160+
161+
156162mp_obj_t experimental_get_odometry (void ) {
157163 mp_obj_t tuple [3 ] = {
158164 mp_obj_new_float_from_f (global_x ),
0 commit comments