ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

Without seeing sensor data inputs (please include those in the future), my guess is that you are seeing this:

  • Time t0: filter initialises. Internal state is all 0, but we don't publish anythning.
  • Time t1: receive IMU message. We only have orientation, velocity, and acceleration. We publish the first output, which has all 0s for position.
  • Time t2: navsat_transform_node receives the same IMU data, along with the GPS data, and produces a non-zero pose estimate. This is passed to the EKF.
  • Time t3: EKF receives pose data from navsat_transform_node, and fuses it, causing the EKF output to move towards the GPS pose. Each subsequent measurement drags the state estimate closer to the GPS pose.

There isn't currently a way to force the EKF to wait for a specific sensor input before it begins fusion. This could be added pretty trivially, though, and if it's a problem for you, I'd welcome a PR.

In the meantime, you could also modify your other nodes to wait until the first EKF message that has a time stamp after the first navsat_transform_node output message.