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
From left to right (of the robot and image) : 9B10 9B9 9B8 9B7
l_foot , from tip to heel : 10B12, 10B13
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:
|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.