Distributed Inertial sensing
Warning: This documentation describe experimental features that are bound to change.
Distributed Inertial sensing
The skin system of the iCub has been updated for incorporating distributed inertial sensing (accelerometers and gyroscopes). Currently this features are available only on iCubGenova01, for more information on how to enable it on your iCub please contact icub-support.
The skin system is equipped with two types of sensors:
- a LIS331DLH 3-axis digital accelerometer from STMicroelectronics and
- a L3G4200D 3-axis digital gyroscope from STMicroelectronics.
This sensors are embedded in the skin system. Their distribution is different depending on wheter the iCub is working with the old CAN based low level electronics or with the new Ethernet based electronics.
An accelerometer is embedded in all the MTB boards used for reading the skin taxel output. For more information about MTB placements, please check Electrical wiring, in particular the "Logic and Harness iCub Skin" documents. The two MTB 1B7 and 2B7 placed in the palms are equipped with one accelerometer and one gyroscope.
For the location of the boards in the part, please check the following images
Link l_upper_arm, top cover: 1B13, bottom cover from shoulder to elbow: 1B12 1B10 1B11 .
Link l_forearm, top cover: 1B8 , bottom cover: 1B9 .
Link r_upper_arm, top cover: 2B13, bottom cover from shoulder to elbow: 2B12 2B10 2B11 .
Link r_forearm, top cover: 2B8 , bottom cover: 2B9 .
Link: chest, left to right (of the robot and image) : 9B10 9B9 9B8 9B7
Link l_upper_leg, front cover, from up to down and from external to internal: 10B1 10B2 10B3 10B4 10B5
Link r_upper_leg, front cover, from up to down and from external to internal: 11B1 11B2 11B3 11B5 11B4
Link l_upper_leg, back cover, from external to internal: 10B6 10B7
Link r_upper_leg, back cover, from external to internal: 11B6 11B7
Link l_lower_leg, from external to internal: 10B10 10B8 10B9 10B11
Link r_lower_leg, from external to internal: 11B10 11B8 11B9 11B11
Link l_foot , from tip to heel : 10B12, 10B13
Link r_foot , from tip to heel : 11B12, 11B13
For CAN Robots with feet skin (i.e. iCubGenova01) the feet skin is mounted on the Skin Torso CAN network, so the address are different.
Reading the sensors
CAN based iCub
The sensors data are streamed on the CAN bus by the MTB boards.
Configuration and reading of the streamed data is done through the canBusInertialMTB device driver.
The documentation for the parameters used by this driver are available in http://wiki.icub.org/iCub_documentation/group__canbusinertialmtb.html .
The relevant configuration files loaded by the robotInterface can be found in the hardware/skin subfolder of your robot configuration file directory.
Currently the setup used in iCubGenova01 publish the reading of the sensors in these ports:
(Note: in the following table, under "Description of the values", you'll get the exact mapping of the publish data. The accelerometers raw outputs are published as a sequence of doubles on the CAN bus, without any status or ID flag in between)
|Port||Number of values||Description of the values||Header text|
|/icub/torso_accelerometers/analog:o||12||Raw outputs of the accelerometers on MTBs 9B7 9B8 9B9 9B10||All boards belong to the chest link|
|/icub/left_arm_accelerometers/analog:o||18||Raw outputs of the accelerometers on MTBs 1B13 1B12 1B10 1B11 1B8 1B9||1B13 1B12 1B10 1B11 belong to the l_upper_arm link, 1B8 1B9 to the l_forearm link|
|/icub/right_arm_accelerometers/analog:o||18||Raw outputs of the accelerometers on MTBs 2B13 2B12 2B10 2B11 2B8 2B9||2B13 2B12 2B10 2B11 belong to the r_upper_arm link, 2B8 2B9 to the r_forearm link|
|/icub/left_hand_inertial/analog:o||6||Raw outputs of the accelerometer and gyroscope on MTB 1B7||1B7 board belongs to the l_hand link|
|/icub/right_hand_inertial/analog:o||6||Raw outputs of the accelerometer and gyroscope on MTB 2B7||2B7 board belongs to the r_hand link|
|/icub/left_foot_inertial/analog:o||3||Raw outputs of the accelerometer on MTB 9B3||9B3 board belongs to the l_foot link|
|/icub/right_foot_inertial/analog:o||3||Raw outputs of the accelerometer on MTB 9B12||9B12 board belongs to the r_foot link|
Ethernet based iCub
Currently the sensors are streaming their raw outputs.
To convert the accelerometer measure in m/s^2 the conversion factor is (fullscale in m/s^2)/(fullscale in raw) = (2*g)/(2^15) ~= 5.9855e-04.
To convert the gyroscope measure in dps (deg/s) the conversion factor is (fullscale in dps)/(fullscale in raw) = (250)/(2^15) ~= 7.6274e-03.