Ask Your Question
0

Finding map to odom tf

asked 2018-05-02 22:04:11 -0600

villie gravatar image

Hi,

So I know my robots position in map frame and I know its position in odom frame. How can I get tf which translates map-odom? I know package like amcl will give you pose in map and also give map-odom tf. I am making my own localization algorithm and can calculate my position in map, and I have got odom-baselink tf, but haven't figured out how to calculate map-odom tf. I know I can run mathematical equations to calculate it, but is there any function in rospy transformations of even roscpp that might automatically handle it?

Thank you

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
0

answered 2018-05-04 06:46:43 -0600

villie gravatar image

I found the answer to that in amcl code.

  1. First you convert map to base position into a transform.
  2. Then you get tf::Stamped<tf::pose> object of it
  3. Then you reverse it
  4. After that you transform the reverse to "odom" frame
  5. Then you make a temporary transform object from above result
  6. Reverse of transform is result and you broadcast it. Below is the code.

    tf::Stamped<tf::pose> map_to_base (map_position_transform.inverse(), msg->header.stamp, "base_footprint"); listener.transformPose("odom", map_to_base, odom_to_map);

    latest_tf_ = tf::Transform(tf::Quaternion(odom_to_map.getRotation()),
                             tf::Point(odom_to_map.getOrigin()));
    
    tf::StampedTransform map_to_odom(latest_tf_.inverse(),
                                        ros::Time::now(),
                                        "map", "odom");
    br.sendTransform(tf::StampedTransform(map_to_odom, ros::Time::now(), "map", "odom"));
    
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: 2018-05-02 22:04:11 -0600

Seen: 329 times

Last updated: May 04 '18