ICub joints

From Wiki for RobotCub and Friends

Jump to: navigation, search

Contents

Naming convention

The iCub joints are organized into six sub-systems: the head, left arm, right arm, torso, left leg, and right leg.

The joints are numbered to give a natural open kinematic chain, with the base reference frame on the torso. 0 is the most proximal joint, N_max the most distal joint. The key reference point on the body is the base of the neck.

The joint numbers are used when calling methods of the motor control device interfaces. A mechanism will be available for mapping from joint identifiers to numbers. Joint identifiers are unique across the body, except for bilateral symmetry - left or right is specified separately.

Head group

The head has 6 joints in the standard configuration (without the facial features).

Joint number Can Address Identifier Description Notes
0 3 neck_pitch Neck pitch

Assuming the standard definition of roll, pitch and yaw with respect to a gravity oriented reference frame aligned with the torso main dimensions

1 3 neck_roll Neck roll --
2 3 neck_yaw Neck yaw --
3 1 eyes_tilt Eyes tilt Common tilt of the eyes
4 1 eyes_version Eyes version

Common version, the eyes move together, synchronized in the DSP controller (see also VergenceVersion)

5 1 eyes_vergence Eyes vergence

Vergence control, the eyes move together, synchronized in the DSP controller (see also VergenceVersion)

Left arm

The arm includes the hand for a total of 16 controlled degrees of freedom.

Joint Number Can Address Identifier Description Notes
0 x shoulder_pitch Shoulder pitch Front-back movement when the arm is aligned with gravity (post decoupling in firmware)
1 x shoulder_roll Shoulder roll Adduction-abduction movement of the arm (post decoupling in firmware)
2 x shoulder_yaw Shoulder yaw Yaw movement when the arm principal axis is aligned with gravity (post decoupling in firmware)
3 x elbow Elbow --
4 x wrist_prosup Wrist pronosupination Forearm rotation along the arm principal axis
5 x wrist_pitch Wrist pitch when hand-wrist aligned with the arm principal axis: i.e. this is relative to the forearm (not necessarily to gravity). Decoupling made in firmware
6 x wrist_yaw Wrist yaw Decoupling made in firmware
7 x hand_finger Hand finger adduction/abduction --
8 x thumb_oppose Thumb opposition --
9 x thumb_proximal Thumb proximal flexion/extension Single tendon looped
10 x thumb_distal Thumb distal flexion Single tendon + return spring for extension spanning two physical joints
11 x index_proximal Index proximal flexion/extension Single tendon looped
12 x index_distal Index distal flexion Single tendon + return spring for extension spanning two physical joints
13 x middle_proximal Middle proximal flexion/extension Single tendon looped
14 x middle_distal Middle distal flexion Single tendon + return spring for extension spanning two physical joints
15 x pinky Ring and little finger flexion Single tendon + return spring spanning six joints on two fingers

Right arm

The arm includes the hand for a total of 16 controlled degrees of freedom. The structure is identical to the left arm.

Torso

Joint number Identifier Description Notes
0 torso_yaw Torso yaw With respect to gravity
1 torso_roll Torso roll Lateral movement (after decoupling in firmware - differential joint)
2 torso_pitch Torso pitch Front-back movement (after decoupling in firmware - differential joint)

Left leg

This refers to the new version which is not yet fully designed.

Joint number Identifier Description Notes
0 hip_pitch Hip pitch When the leg principal axis is aligned with gravity (front-back movement)
1 hip_roll Hip roll Lateral movement (when leg aligned with gravity)
2 hip_yaw Hip yaw Rotation along the leg/tight principal axis
3 knee Knee --
4 ankle_pitch Ankle pitch When the calf is aligned with gravity
5 ankle_roll Ankle roll When the calf is aligned with gravity

Right leg

The structure is the same as the left leg.

Device and Port view

The iCub user will be able to control all joints as they wish, if they wish. For each sub-system, the programmer will be able to retrieve the control interfaces they need.

We expect that these control interfaces will normally be accessed remotely, for all but the tightest control loops. There will be three ports per control group. For example, the head group will have three ports named as follows:

port name purpose
/icub/head/rpc:i commands that require replies
/icub/head/command:i streaming commands
/icub/head/state:o motor state information

A user can see the commands that the "rpc:i" port supports by using "yarp rpc" to send it the message "help", or browsing to it via the address reported by "yarp where" and clicking "help". For example, typing:

 yarp rpc /icub/head/rpc:i

followed by:

 [set] [pos] 0 45

will command axis 0 of the head (neck_pitch) to 45 degrees. If no motion is seen, it may be necessary to "enable" the axis:

 [set] [aen] 0

where "aen" means "axis enable". The braces are optional. Of course, there are APIs for all such operations.

Here are the identifiers used in port names for the different control groups:

Part Side Identifier
head -- head
arm left left_arm
arm right right_arm
torso -- torso
leg left left_leg
leg right right_leg

Units

All angles are given in DEGREES.

Personal tools