diff --git a/src/dynamic_graph/sot/dynamics/humanoid_robot.py b/src/dynamic_graph/sot/dynamics/humanoid_robot.py
index 8a805ae07949f245f9c5791315eb77a198ef8e4e..16fd1f8ad811de9b07be63d88cc4808d55ad2689 100755
--- a/src/dynamic_graph/sot/dynamics/humanoid_robot.py
+++ b/src/dynamic_graph/sot/dynamics/humanoid_robot.py
@@ -36,15 +36,28 @@ I4 = reduce(lambda m, i: m + (i*(0.,)+(1.,)+ (3-i)*(0.,),), range(4), ())
 class AbstractHumanoidRobot (object):
     """
     This class instantiates all the entities required to get a consistent
-    representation of a humanoid robot:
+    representation of a humanoid robot, mainly:
+      - device : to integrate velocities into angular control,
+      - dynamic: to compute forward geometry and kinematics,
+      - zmpFromForces: to compute ZMP force foot force sensors,
+      - stabilizer: to stabilize balanced motions
 
-    - robot model
+    Operational points are stored into 'OperationalPoints' list. Some of them
+    are also accessible directly as attributes:
+      - leftWrist,
+      - rightWrist,
+      - leftAnkle,
+      - rightAnkle,
+      - Gaze.
 
-    - angleEstimator used to link the two robot models
+    Tasks are stored into 'tasks' dictionary.
+
+    For portability, some signals are accessible as attributes:
+      - zmpRef: input (vector),
+      - comRef: input (vector).
+      - com:    output (vector)
+      - comSelec input (flag)
 
-    - usual features and tasks for a robot:
-     - center of mass
-     - one task per operational point
     """
 
     OperationalPoints = ['left-wrist', 'right-wrist',
@@ -172,6 +185,9 @@ class AbstractHumanoidRobot (object):
     """
     timeStep = 0.005
 
+    def help (self):
+        print (AbstractHumanoidRobot.__doc__)
+
     def loadModelFromKxml(self, name, filename):
         """
         Load a model from a kxml file and return the parsed model.