Robotics StackExchange | Archived questions

TF error, no source frame

I have a tf from map to camera_link and I am using AMCL style code to create a TF from Map to odom to correct my odometry due to drift. However, when I run this code:

tf::Stamped<tf::Pose> odom_to_map;
    try
    {
        tf::Transform tmp_tf = TransformFromMat (position);
        tf::Stamped<tf::Pose> tmp_tf_stamped (tmp_tf.inverse(),
                                              current_frame_time_,
                                              camera_frame_id_param_);

        listener_.transformPose("odom", tmp_tf_stamped, odom_to_map);
    }
    catch (tf::TransformException)
    {
        ROS_DEBUG("Failed to substruct left_camera_link to odom transform");
        return;
    }

    tf::Transform latest_tf(tf::Quaternion(odom_to_map.getRotation()),
                            tf::Point(odom_to_map.getOrigin()));

    //ros::Time transform_expiration = (current_frame_time_.toSec());
    tf::StampedTransform tmp_tf_stamped(latest_tf.inverse(),
                                        current_frame_time_ + ros::Duration(0.1),
                                        map_frame_id_param_,
                                        "odom");


    static tf::TransformBroadcaster tf_broadcaster;
    tf::Transform transform = this->TransformFromMat(position);
    tf_broadcaster.sendTransform(tf::StampedTransform(transform, current_frame_time_, map_frame_id_param_, camera_frame_id_param_)); 

I get this warning:

[ WARN] [1566413067.333379658]: Could not obtain transform from map to odom. Error was "map" passed to lookupTransform argument source_frame does not exist. 

[ WARN] [1566413067.580395075]: Transform from map to odom was unavailable for the time requested. Using latest instead.

What could be wrong? If I do not do anything and let map to camera_link live without transforming it to map to odom, I get that TF but of course my tree becomes wrong and broken.

Asked by EdwardNur on 2019-08-21 13:48:23 UTC

Comments

Answers