The iCub forward kinematics are described with respect to a (root) reference frame which is positioned at the level of the waist in the center of the robot as represented in the following pic (colored cylinders: the x axis is in red, the y axis is in green, the z axis is in blue).
The origin of the root reference frame is a point on the axis of rotation of the torso pitch. Among all points in this axis, the origin is located in the middle of the robot in between the two legs.
- The z axis of the root reference frame is parallel to gravity but pointing upwards.
- The x axis of the root reference frame points behind the robot.
- The y axis of the root reference frame points laterally and is chosen according to the right hand rule.
For simpler visualization the root reference frame of the forward kinematics is depicted in the picture below (light blue) (for the exact position refer the CAD pictures above):
Seven additional reference frames are defined with respect to this common root reference frame. The reference frames are located as shown in the CAD figure. The x axis is in red. The y axis is in green. The z axis is in blue.
- Left hand reference frame (see the CAD picture Media:LeftHandCADRefFrame.jpg)
- Right hand reference frame (see the CAD picture Media:RightHandCADRefFrame.jpg)
- Left Fingers reference frame (see the CAD picture Media:LeftHand.png)
- Right Fingers reference frame (see the CAD picture Media:RightHand.png)
- Left foot reference frame (see the CAD picture Media:LegsCADRefFrame.jpg)
- Right foot reference frame (see the CAD picture Media:LegsCADRefFrame.jpg)
- Left eye reference frame (see the CAD picture Media:HeadCADRefFrame.jpg)
- Right eye reference frame (see the CAD picture Media:HeadCADRefFrame.jpg)
- Inertia sensor reference frame (see the CAD picture Media:InertiaCADRefFrame.jpg)
The roto-translation which converts a point in one of these reference frames to the root reference frame are given by the following SE(3) matrices:
Each of these matrices is constructed with two steps. The first consists in a rigid roto-translation from the points in the root reference frame to points in the 0th reference frame as defined by the Denavit-Hartenberg convention. The second step corresponds to the Denavit-Hartenberg description of the forward kinematic, i.e. the roto-translation from the 0th reference frame to the nth reference frame being n the number of degrees of freedom.
Finally, the following image shows the root reference frame and all other coordinate systems at each joint of the robot (no hands included), along with the fixed transformation matrices from limbs to base reference frames. The Upper/Lower Torso division has been made according to the iDyn library convention (which is different the one found in iKin).
Here is a list of known projects that encode the kinematics in various formats. None of them are guaranteed to be accurate or up-to-date.
- http://robotcub.svn.sourceforge.net/viewvc/robotcub/trunk/iCub/src/iCubSimulation/ (see also configuration files http://robotcub.svn.sourceforge.net/viewvc/robotcub/trunk/iCub/app/simConfig/)
- http://robotcub.svn.sourceforge.net/viewvc/robotcub/trunk/iCub/src/gui/iCubGui/ (see configuration files http://robotcub.svn.sourceforge.net/viewvc/robotcub/trunk/iCub/app/iCubGui/)
... and probably many others, especially summer school projects.