iCub-main
skinManager

This module reads the raw tactile sensor values, compensates for the (thermal) drift of the sensors (basically it is a high pass filter) and writes the compensated values on output ports. More...

+ Collaboration diagram for skinManager:

This module reads the raw tactile sensor values, compensates for the (thermal) drift of the sensors (basically it is a high pass filter) and writes the compensated values on output ports.

The module can manage many input ports at the same time (see parameter "inputPorts"). For each input port the compensated tactile data are written on the corresponding output port (see parameter "outputPorts"). Optionally, the module also can apply a smoothing filter (low pass filter) and/or a binarization filter to the data. The skinManagerGui can be used to control and monitor an instance of the skinManager module. If the 3d position of the tactile sensors is provided, then this module computes the skinContacts (see library skinDynLib), which can be used by wholeBodyDynamics to compute the contact forces.

Description

When launched the module executes the skin sensor calibration, assuming that the sensors are not in contact with anything during this phase. The calibration resets the taxel baselines, gathers the sensor data for 5 sec, computes the mean (i.e. the baseline) and the 95 percentile (i.e. the touch threshold) for every taxel.

After the calibration the module starts reading the raw data, computing the difference between the read values and the baseline, and outputs the results. If no touch is detected (i.e. the compensated values are under the touch threshold) then the baseline is updated in order to follow the drift (if any).

The binarization filter is really simple. Every taxel has a touch threshold, given by its 95% percentile plus a safety threshold (2 by default). If the read value is greater than the corrisponding touch threshold the output is set to 100, otherwise to 0. The binarization filter can be used for stressing the touch detection, especially in cases where the touch is very light.

The smoothing filter performs an exponential moving average in order to reduce the sensor noise. The intensity of the filter can be tuned by setting the parameter alpha, also called "smoothing factor". The smoothed output is a weighted average of the current input and the previous output: y(t) = (1-alpha)*x(t) + alpha*y(t-1)

If the module is properly configured then it performs contact clustering, that is it determines how many contacts are detected by the tactile sensors. When tactile sensors that are neighbors detect contact, they are clustered together. When tactile sensors that are not neighbors detect contact, they are considered as independent contacts. The result of this operation is a skinContactList (see skinDynLib) that is written on the output port "\moduleName\skin_events:o". Tipically this port is connected to an input port of the module wholeBodyDynamics which uses this data to estimate the contact forces.

Libraries

YARP.

Parameters

Command-line Parameters

The following key-value pairs can be specified as command-line parameters by prefixing – to the key (e.g. –from file.ini). The value part can be changed to suit your needs; the default values are shown below.

Configuration File Parameters

The following key-value pairs can be specified as parameters in the configuration file (they can also be specified as command-line parameters if you so wish). The value part can be changed to suit your needs; the default values are shown below.

An optional section called SKIN_EVENTS may be specified in the configuration file. These are the parameters of this section:

Ports Accessed

All the ports listed in the "inputPorts" parameter and the corresponding rpc ports. For instance if in the "inputPorts" parameter it is specified the port

then also the port

will be accessed.

Ports Created

Output ports

Input ports

Input Data Files

None.

Output Data Files

None.

Configuration Files

None.

Tested OS

Linux and Windows.

Example Instantiation of the Module

skinManager –context skinGui –from driftCompRight.ini

Author
Andrea Del Prete (andre.nosp@m.a.de.nosp@m.lpret.nosp@m.e@ii.nosp@m.t.it), Alexander Schmitz, Francesco Giovannini (franc.nosp@m.esco.nosp@m..giov.nosp@m.anni.nosp@m.ni@ii.nosp@m.t.it)

Copyright (C) 2010 RobotCub Consortium

CopyPolicy: Released under the terms of the GNU GPL v2.0.

This file can be edited at ICUB_HOME/main/src/modules/skinManager/include/iCub/skinManager/skinManager.h.