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

Thomas Moulard thomas.moulard at gmail.com
Wed Feb 8 13:39:35 UTC 2012


On Thu, Feb 2, 2012 at 3:59 PM, Jack O'Quin <jack.oquin at gmail.com> wrote:
> On Thu, Feb 2, 2012 at 8:06 AM, Thomas Moulard <thomas.moulard at gmail.com> wrote:
>> On Mon, Jan 23, 2012 at 4:06 PM, Jack O'Quin <jack.oquin at gmail.com> wrote:
>
>>> REP-0103 says:
>>>
>>>  "In relation to a body the standard is: x forward, y left, z up".
>>>
>>> While "up" may seem arbitrary for a gripper, "forward" suggests the
>>> direction to which it is extended.
>>
>> Sorry for the delay.
>> What would be your proposition, removing the scheme and just adding that
>> the frames is oriented as X toward the object and Y the object main axis?
>
> Definitely, X toward the object.
>
> I propose Y to be the main dimension in which the "fingers" of the
> gripper move. Some hand-like or claw-like devices may not fit that
> notion very well, but it can probably be defined in a way that is at
> least understandable.
>
> Z would be the remaining dimension, orthogonal to X and Y.

Ok. I updated the REP to match the new orientation.
Is there any additional suggestions?
-- 
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 going "toward" the object. Y the main dimension
in which the grasping device moves and Z orthogonal to X and Y axes.

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