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

Revision history [back]

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>