[ros-users] Draft REP: Coordinate Frames for Humanoids Robots

Thomas Moulard thomas.moulard at gmail.com
Wed Jan 18 14:02:05 UTC 2012


On Fri, Jan 13, 2012 at 11:17 AM, Armin Hornung
<HornungA at informatik.uni-freiburg.de> wrote:
> Hi Thomas!
>
> I edited in the description of the base_footprint with some minor
> adjustments to keep it more general, and added a a rationale why this should
> be as described (I think this makes it easier to understand). I added
> another sentence to l/r_sole. What I don't fully understand are "It is
> recommended to choose the origin as the projection of the body center on the
> contact surface." for sole and toe. Is this the same as the sentence I added
> afterwards? Then I would suggest to change "body center" into "support body
> origin" or "support body link origin".

(I am posting your mail back to the ml so that anyone can take part in
the discussion)

Yes this is right, I made the modification.

> I also changed the frame hierarchy into a tree-format, what do you think?

It is better, I fixed it to be valid rst. Is it not as nice as your
tree, but I did not find any way
to do a better formatting job...

> You're right about the ankle, I haven't thought of non-rigid feet. I guess
> I'm too fixed to our Nao's which are all rigid and have no toes. Thinking
> about toes, I think there should be also room for an intermediate frame. In
> URDF there will be a frame at the toe link which is a child of the ankle or
> sole. Only then does the toe link follow (rigid or non-rigid like
> ankle->sole, is this correct?

Yes, this is correct.

> Concerning Tully's comments on the mailing list I tend to agree. Torso also
> sounds less medical or biological than chest (but that might only be my own
> preference since I've used "Torso" more often than "Chest"). I like "hand"
> more as it's more general than the "gripper" (which on the other hand is
> very specific to the PR2) but afaik the whole grasping / arm_navigation code
> in ROS is already using this convention.

I switched to torso and gripper to follow PR2 naming scheme.
I do not have any preference but we have to keep in mind that it would
not be sufficient
to use the PR2 arm navigation directly as PR2 frame names are
l_gripper_* and not l_gripper directly.
I it also a chance as it means that it is straight forward to add a
fixed joint in the PR2 model to
define the l_gripper / r_gripper as proposed in this REP.

@Tully:
IMHO adding a "strict" hierarchy will make the REP much more complex
to follow when dealing with mobile robots.
I think that humanoid robotos mechanical structure will evolve a lot
in the future. It will be much easier to extend it when
needed and complete it than freezing the whole thing right now.
As far as I'm concerned, I use task space control so as long as I can
identify the robot hands, I can generate a command which
will move them at the appropriate position without having any
knowledge regarding the intermediary frames and the real robot
structure.

Therefore, I would recommend not standardizing intermediary frames
unless you find it is crucial to do so.

The updated REP is here:
- online version:
http://laas.github.com/rep-coordinate-frames-for-biped-robots/rep-0120.html
- git repository / sources:
https://github.com/laas/rep-coordinate-frames-for-biped-robots

Best,
-- 
Thomas Moulard
-------------- next part --------------
REP: 120
Title: Coordinate Frames for Humanoids Robots
Version: $Revision: 1 $
Last-Modified: $Date: 2012-01-11 11:53:00 +0200 (Wed, 11 Jan 2012) $
Author: Thomas Moulard <thomas.moulard at gmail.com>
Status: Draft
Type: Informational
Content-Type: text/x-rst
Requires: 103, 105
Created: 25-Nov-2011
Post-History:

Abstract
========

This REP specifies naming conventions and semantic meaning for
coordinate frames of humanoids robots used within ROS.

Motivation
==========

Developers of packages aimed at humanoids robots need a shared
convention for coordinate frames in order to better integrate and
re-use software components.

The REP 105 [2] already defines frames for mobile bases. This REP
both remains compatible with REP 105 [2] and extends it to label other
important locations on a humanoid robot such as the gaze (head), left
and right wrists, hands and feet.


Specification
=============

Coordinate Frames
-----------------

base_link
'''''''''

The coordinate frame called ``base_link`` is rigidly attached to the
robot root body. It is recommended to choose the robot waist as its
root body. The ``base_link`` can be attached to the root in any
arbitrary position or orientation; for every hardware platform there
will be a different place on the base that provides an obvious point
of reference. Note that REP 103 [1] specifies a preferred orientation
for frames.

base_footprint
''''''''''''''

The ``base_footprint`` is the representation of the robot position on
the floor. The floor is usually the level where the supporting leg rests,
i.e. z = min(l_sole_z, r_sole_z) where l_sole_z and r_sole_z are the left
and right sole height respecitvely. The translation component of the frame
should be the barycenter of the feet projections on the floor. With respect
to the ``odom`` frame, the roll and pitch angles should be zero and the
yaw angle should correspond to the ``base_link`` yaw angle.

Rationale: `base_footprint`` provides a fairly stable 2D planar representation
of the humanoid even while walking and swaying with the ``base_link``.



l_wrist and r_wrist
'''''''''''''''''''

The coordinate frame called ``l_wrist`` defines the position and
orientation of the left arm regardless of the tool (grasping device
for instance) attached to it.

The coordinate frame called ``r_wrist`` defines the equivalent
frame for the right arm.


l_gripper and r_gripper
'''''''''''''''''''''''

The coordinate frame called ``l_gripper`` defines the position and
orientation of the left arm end effector.

If the end effector is a grasping device, the frame should be located
at the recommended object grasping location. The frame orientation is
defined as X the axis which should be collinear with the object axis
during the grasping process, Y the axis going "toward" the reached
object and Z the axis orthogonal to the (X,Y) plan.

.. image:: rep-0120-1.jpg
   :scale: 50
   :alt: Gripper frame (Y, Z) plane
.. image:: rep-0120-2.jpg
   :scale: 50
   :alt: Gripper frame (X, Y) plane


The coordinate frame called ``r_gripper`` defines the equivalent frame
for the right arm.


l_ankle and r_ankle
'''''''''''''''''''

The coordinate frame called ``l_ankle`` defines the position and
orientation of the left leg regardless of the support body geometry.


The coordinate frame called ``r_ankle`` defines the equivalent
frame for the right leg.


l_sole and r_sole
'''''''''''''''''

The coordinate frame called ``l_sole`` defines the position and
orientation of the left leg support body. The (X,Y) plane of this
frame must be coplanar with the support body contact surface. It is
recommended to choose the origin as the projection of the support body
origin on the contact surface. The Z coordinate of this frame should
be on the ground level when standing.


The coordinate frame called ``r_sole`` defines the equivalent
frame for the right leg.


l_toe and r_toe
'''''''''''''''

The coordinate frame called ``l_toe`` defines the position and
orientation of the left leg toe body. The (X,Y) plan of this frame
must be coplanar with the toe body contact surface. It is recommended
to choose the origin as the projection of the body center on the
contact surface.


The coordinate frame called ``r_toe`` defines the equivalent frame
for the right leg.


gaze
''''

The coordinate frame called ``gaze`` defines the head position and
orientation. The orientation indicates in which direction the head
appears to be looking regardless of any sensors (camera for instance).


torso
'''''

The coordinate frame called ``torso`` is attached to the lowest body
of the model which is a parent of ``l_gripper``, ``r_gripper`` and
``gaze``.


map and odom
''''''''''''

See REP 105 [1] for ``map`` and ``odom`` frames definition.


Frame Hierarchy
---------------


- base_link
   - base_footprint
   - ... - (l|r)_ankle - (l_r)_sole - (l|r)_toe
   - torso
      - ... - gaze
      - ... - (l|r)_wrist - (l|r)_gripper




Frame Authorities
-----------------

Unlike most mobile bases, the transformation from ``base_link`` to
``base_footprint`` is not rigid on humanoid robots and is broadcasted by
an external node.


Exceptions
----------

The scope of potential robotics software is too broad to require all
ROS software to follow the guidelines of this REP.  However, choosing
different conventions should be well justified and well documented.


Compliance
==========

This REP depends on and is compliant with REP 103 [1] and REP 105 [2].


References
==========

.. [1] REP 103, Standard Units of Measure and Coordinate Conventions
   (http://www.ros.org/reps/rep-0103.html)

.. [2] REP 105, Coordinate Frames for Mobile Platforms
   (http://www.ros.org/reps/rep-0105.html)

Copyright
=========

This document has been placed in the public domain.


More information about the ros-users mailing list