Ask Your Question
1

navsat_transform_node in robot_localization raises extrapolation in time

asked 2021-02-16 09:48:35 -0500

r91 gravatar image

We're running a robot with two ekf, the first ekf processes IMU and Odometry, and the second one process the output of the first ekf and adds the filtred gps from the navsat_transform node.

However, when running the setup on ROS dist Melodic we got the following error:

[ERROR] [1613489401.836650482, 25.942000000]: Global Frame: odom Plan Frame size 2: map

[ WARN] [1613489401.836680933, 25.942000000]: Could not transform the global plan to the frame of the controller Extrapolation Error: Lookup would require extrapolation into the future. Requested time 25.931000000 but the latest data is at time 25.925000000, when looking up transform from frame [odom] to frame [map]

But when we run the exact same setup but with ROS dist Kinetic, it runs perfectly.

The TF tree seems to be fine (looks the same when running Kinetic and Melodic).

When disabling the navsat_transform_node and replaced by a static transform between map->odom it works fine. So it seems the problem appears when we run the navsat_transform_node

edit retag flag offensive close merge delete

Comments

Take a look at the default configuration examples of robot_localization. https://github.com/cra-ros-pkg/robot_...

Here you will find a parameter transform_time_offset. The explanation of this is:

Use this parameter to provide an offset to the transform generated by ekf_localization_node. This can be used for

future dating the transform, which is required for interaction with some other packages. Defaults to 0.0 if

unspecified.

This sounds pretty much like what you need. Just take a look at how large the offset between your frmes is and start from ther.

I am posting this as a comment since i never had that problem hence i never played with that parameter. But this is where i would start.

Let me know if it's working then i'll post this comment as an actual answer.

Tristan9497 gravatar image Tristan9497  ( 2021-02-16 10:48:29 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
1

answered 2021-03-25 04:23:45 -0500

Tom Moore gravatar image

Is that the only node that's different between Kinetic and Melodic? Did your GPS driver change? Any other sensor drivers? The filter is going to produce a transform at the timestamp of its most recent sensor message. At some point, you are requesting a transform at a time stamp before the EKF has had a chance to produce output for that time.

In any case, please post your EKF config and a sample message from each sensor input.

When disabling the navsat_transform_node and replaced by a static transform between map->odom it works fine.

I assume you mean when disabling the second tier EKF.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2021-02-16 09:48:35 -0500

Seen: 62 times

Last updated: Mar 25