Odometry transform lookup fails in AMCL node [closed]

asked 2012-11-28 04:36:55 -0600

ejkreinar gravatar image

Hi,

I'm new to working with tf so any input would be really appreciated.. I'm broadcasting an odom->base_link transform at 10 Hz. When I run my amcl node, I get the following warning:

[ WARN] [1354118581.042450543]: Failed to compute odom pose, skipping scan (Unable to lookup transform, cache is empty, when looking up transform from frame [/base_link] to frame [/odom])

I'm working with a slightly modified AMCL node, but it is based on the navigation stack's AMCL, and the transform listener/ odometry lookup works exactly the same.

Some debugging...

If I explicitly wait for the transform to arrive in the amcl getOdomPose function (shown below), the base_link->odom transform lookup works:

this->tf_->waitForTransform(odom_frame_id_, f, t, ros::Duration(0.1));
this->tf_->transformPose(odom_frame_id_, ident, odom_pose);

Or if I future-date the transform before broadcasting in the odometry node (shown below), the base_link->odom transform lookup also works:

odom_broadcaster_.sendTransform(
  tf::StampedTransform(tf::Transform(tf::createQuaternionFromYaw(tht_), tf::Vector3(x_, y_, 0.0)),
  ros::Time::now()+ros::Duration(0.1), "odom", "base_link"));

I am not particularly happy with either of these fixes. Waiting for the transform causes the running time of the AMCL to take a huge hit. And I'm nervous about future dating the odometry because the position would be wrong if tf performs interpolation. I could increase the publishing rate of odometry from 10Hz to 20-30 Hz or so, but that doesnt seem to be a catch-all solution to me.

What is the accepted way to make sure amcl received the base_link->odom transform correctly?

edit retag flag offensive reopen merge delete

Closed for the following reason question is not relevant or outdated by tfoote
close date 2015-08-31 20:15:33.343674

Comments

Does this happen only during startup? Then this is normal. The tf cache needs to fill up first.

dornhege gravatar imagedornhege ( 2012-11-28 04:47:53 -0600 )edit

No, it happens during normal function. Also to note, Ive tested amcl with stageros publishing the odom->base_link transform, which works without any tf errors.

ejkreinar gravatar imageejkreinar ( 2012-11-28 06:24:28 -0600 )edit