ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
3

/odom to /base_footprint

asked 2012-06-04 11:06:57 -0500

Rydel gravatar image

updated 2014-01-28 17:12:34 -0500

ngrennan gravatar image

My question: Hey everyone, What is the best way to connect odom to base_link? Should I modify the navigation stack to look for odom_combined instead? Or would that be too difficult?

Explanation/background: I'm using the iRobot create and the package create_node. The package works great and I can send cmd_vel topics via the keyboard and it responds, however in rxgraph i can see the create_node is publishing /odom but it is not being sent to tf and therefore it is not the parent of base_link. When I view the tf tree odom_combined is the parent of base_link and odom is not connected, but none of the navigation stacks care about odom_combined, they only want odom. Running on a modified turtlebot.

edit retag flag offensive close merge delete

Comments

It sounds like you're getting the /odom topic (what rxgraph shows) and the /odom frame confused. Note that all transform messages show up as /tf in rxgraph. I'm not familiar with the particular packages you're using - if it's all working, why do you need to have a frame named "/odom"?

lindzey gravatar image lindzey  ( 2012-06-04 13:54:41 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
7

answered 2012-06-04 22:35:28 -0500

Lorenz gravatar image

I'm not sure where to find the create_node you are talking about but I guess you are just using a really old version of the turtlebot_node.

On the PR2 and I think also on older turtlebot configurations, robot_pose_ekf, a node that implements an extended Kalman filter for fusing IMU and odometry, subscribes to the /odom topic and publishes the transform from odom_combined to base_link (or base_footprint in case of the PR2). All navigation nodes that need to know about the odometry TF frame provide a parameter to change the default frame from odom to odom_combined which is done in all PR2 navigation launch files. In newer Turtlebot launch files, the TF frame name for odometry is odom (parameter output_frame here) which allows to use the default values for the odometry frame in the navigation nodes.

If you don't have an IMU, I can just guess that the transform odom_combined -> base_link is published by the create_node but to be sure, double check by running rosrun tf tf_monitor. In that case, I suggest that you update your robot driver to the current Turtlebot driver (stack turtlebot. The Turtlebot is based on the iRobot Create, so the driver will work for you. It provides a few parameters to control how transforms are published. E.g. the following launch file might work:

<launch>
  <node name="turtlebot_node" type="turtlebot_node.py" pkg="turtlebot_node">
    <rosparam>
      publish_tf: true
      odom_frame: odom
    </rosparam>
  </node>
</launch>
edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2012-06-04 11:06:57 -0500

Seen: 4,100 times

Last updated: Jun 04 '12