Dear all,

REP-105 [1] states that the coordinate frames for navigation should look like this:

   map --> odom --> base_link

... where base_link can be an arbitrary link and does not have to lie in the ground plane.

However, the PR2 specifies an additional virtual link, base_footprint, which lies below base_link in the ground plane. Moreover, robot_pose_ekf publishes transforms from odom_combined to base_footprint. All in all, the PR2's frames look like this (on Diamondback):

   map --> odom_combined --> base_footprint --> base_link

So, what is the best way to resolve this inconsistency when creating an own URDF model?
  - Follow the REP? This unfortunately means that robot_pose_ekf cannot be used, since the transform from odom_combined to base_footprint is hard coded.
  - Follow PR2's model? In that case, the REP should probably be updated.

Also, what is the semantical meaning of odom_combined? From my experience, I'd say that the pure odometry publishes "odom -> base_link" (or base_footprint), and the EKF publishes "odom_combined -> base_link". However, since base_link can only have one parent, one has to switch off all but one of those TF publishers via a parameter. In that case, why not just call all of them "odom" (or "odom_combined")?

Cheers,
Martin

[1] http://www.ros.org/reps/rep-0105.html

--
Dipl.-Inf. Martin Günther
Universität Osnabrück
Institut für Informatik
Albrechtstr. 28  (Raum 31/503)
D-49076 Osnabrück

Fon: 0541 969 2434
http://www.inf.uos.de/mguenthe/