I’m working on the development of a reinforcement learning platform for px4-based robots using SITL and gazebo. Since learning requires resetting the environment every time an episode ends, I need to reset the ekf2 on each startup run. So far I’ve been able to reset ekf2 using stop and start commands so there are no issues there. However, on each startup the ekf2 takes a lot of time ~ 5 secs to start GPS fusion. I searched through the ekf code and found hard-coded values of 5 seconds delay on GPS checks:
bool gps_checks_passing = (_time_last_imu - _last_gps_fail_us > (uint64_t)5e6);
bool gps_checks_failing = (_time_last_imu - _last_gps_pass_us > (uint64_t)5e6);
I tried dropping these delays to 1 second with no difference in takeoff and position hold allowing me to reset the environment much more quickly. Is there a specific reason these are such high values? And even if these are necessary for real flights, shouldn’t these parameters be modifiable for SITL?