You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When I set a 2D nav goal, Some errors have occurred:
[ INFO] [1702973286.012369648, 1702008461.360194988]: Got new plan
[ERROR] [1702973286.415246430, 1702008461.763362587]: Extrapolation Error: Lookup would require extrapolation 0.191100147s into the future. Requested time 1702008461.731280565 but the latest data is at time 1702008461.540180445, when looking up transform from frame [odom_est] to frame [map]
[ERROR] [1702973286.415310592, 1702008461.763362587]: Global Frame: odom_est Plan Frame size 79: map
[ WARN] [1702973286.415354428, 1702008461.763362587]: Could not transform the global plan to the frame of the controller
[ERROR] [1702973286.415398697, 1702008461.763362587]: Could not get local plan
I compare tf broadcaster in hdl_localization and AMCL, and then I modify the code for both L415 and L422 to "odom_trans.header.stamp = stamp + ros::Duration(0.2);".
There are no errors and it can work. But I don't know why it went wrong and I don't know if my workaround is correct.
The text was updated successfully, but these errors were encountered:
Same problem, and your solution works for me.
I think It's just because the map->odom tf trans sent by hdl_localization is too slow.
At first I thought there must be a better way to fix this, until I checked codes from amcl_node.cpp (line 1496):
if (tf_broadcast_ == true)
{
// We want to send a transform that is good up until a// tolerance time so that odom can be used
ros::Time transform_expiration = (laser_scan->header.stamp +
transform_tolerance_);
geometry_msgs::TransformStamped tmp_tf_stamped;
tmp_tf_stamped.header.frame_id = global_frame_id_;
tmp_tf_stamped.header.stamp = transform_expiration;
tmp_tf_stamped.child_frame_id = odom_frame_id_;
tf2::convert(latest_tf_.inverse(), tmp_tf_stamped.transform);
ROS_INFO("tmp_tf_stamped.transform: %6.3f, %6.3f, %6.3f",
tmp_tf_stamped.transform.translation.x,
tmp_tf_stamped.transform.translation.y,
tf2::getYaw(tmp_tf_stamped.transform.rotation));
this->tfb_->sendTransform(tmp_tf_stamped);
sent_first_transform_ = true;
}
So it's called tolerance, they add transform_tolerance_ to laser_scan's stamp, and send it to tf tree, just as what you did. 👍
When I set a 2D nav goal, Some errors have occurred:
[ INFO] [1702973286.012369648, 1702008461.360194988]: Got new plan
[ERROR] [1702973286.415246430, 1702008461.763362587]: Extrapolation Error: Lookup would require extrapolation 0.191100147s into the future. Requested time 1702008461.731280565 but the latest data is at time 1702008461.540180445, when looking up transform from frame [odom_est] to frame [map]
[ERROR] [1702973286.415310592, 1702008461.763362587]: Global Frame: odom_est Plan Frame size 79: map
[ WARN] [1702973286.415354428, 1702008461.763362587]: Could not transform the global plan to the frame of the controller
[ERROR] [1702973286.415398697, 1702008461.763362587]: Could not get local plan
I compare tf broadcaster in hdl_localization and AMCL, and then I modify the code for both L415 and L422 to "odom_trans.header.stamp = stamp + ros::Duration(0.2);".
There are no errors and it can work. But I don't know why it went wrong and I don't know if my workaround is correct.
The text was updated successfully, but these errors were encountered: