Skip to content

Conversation

@kaidokert
Copy link

Prevent EKF and NavSat nodes from deadlocking on startup when using simulated time by avoiding clock wait blocks and validating clock readiness at runtime. The issue was introduced in #943

Bug Fixes:

  • Resolve a startup deadlock when use_sim_time is enabled by eliminating blocking waits for the ROS clock during EKF and NavSat node initialization and instead skipping processing until the clock has started.

Tests:

  • Add a C++ unit test to verify EKF and NavSat initialization do not block when use_sim_time is enabled.
  • Add integration tests plus supporting launch and helper scripts to ensure the EKF publishes filtered odometry both when the simulated clock starts before the EKF node and when it starts after.

Prevent EKF and NavSat nodes from deadlocking on startup when using simulated time by avoiding clock wait blocks and validating clock readiness at runtime.

Bug Fixes:
  - Resolve a startup deadlock when use_sim_time is enabled by eliminating blocking waits for the ROS clock during EKF and NavSat node initialization and instead skipping processing until the clock has started.

Tests:
  - Add a C++ unit test to verify EKF and NavSat initialization do not block when use_sim_time is enabled.
  - Add integration tests plus supporting launch and helper scripts to ensure the EKF publishes filtered odometry both when the simulated clock starts before the EKF node and when it starts after.
RCLCPP_INFO_STREAM(this->get_logger(),
"Delaying for " << delay << " seconds before starting...");
rclcpp::Duration delay_duration = rclcpp::Duration::from_seconds(delay);
this->get_clock()->sleep_for(delay_duration);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this already needs a working clock...

&min_frequency_,
&max_frequency_, 0.1, 10));

last_diag_time_ = this->now();
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This also needs a working clock.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants