Concept
Both the Contact Point and the Slip Detector are implemented as classes, designed for use in Object-Oriented Programming (OOP) frameworks. Implementations are available for C++, Python and ROS2, each with corresponding SDKs.
FT Stack Compatibility
Designed to be easily used in combination with other components.
Flexible Configuration
Configuration is handled through a configuration object populated in code, or a JSON configuration file, passed to the class constructor.
Usage pattern
The two blocks are chained, in this order:
Step 1. Payload compensation
The contact point can only be recovered if the wrench signal contains only the contact wrench, without the contribution of gravity and inertial effects of the payload mounted on the sensor. For this reason the tactile sensing blocks must be chained after a Payload Compensator.
Step 2. Contact point
The compensated wrench is fed to the contact point block, which locates the contact on the configured surface. Its output is not only a position: it is the wrench moved to that position, carrying the force and torsion torque the contact transmits.
Step 3. Slip detection
The slip detector runs on the output of the contact point block. Friction limits are statements about the contact, so they can only be evaluated at the contact: the normal and tangential directions are the ones of the contact surface, and the torsion compared against the torsional limit is the one the contact point block has isolated.
Note
Filter blocks can be intercalated at any point in the pipeline to smooth signals.
Configuration
Every block in the toolkit can be configured in two interchangeable ways:
Configuration object
A plain-data struct populated in user code and passed to the constructor. This allows in-line configuration of the block.
Configuration file
A JSON file whose path is passed to the constructor. This allows reconfiguration without recompiling.
Contact Point
Contact Point Configuration Structure
Basic configuration
name
string
Human-readable label for the block, accessible via name().
policy
string
Runtime error policy. Accepted values: "best_effort" (default),
"soft_rt", "hard_rt", "strict_rt".
force_threshold
double
Force threshold, in N. Must be greater than zero. Default 0.3.
Applied to the force magnitude it decides whether a contact is reported at all; applied to
the normal force it decides whether the contact can be localised.
Contact geometry
geometry_type
string
Contact surface type. Currently only "plane" is supported, a plane parallel
to the xy-plane of the wrench frame.
geometry_params
object
Parameters of the contact surface. For "plane", the single field:
dz
double
Offset of the plane along +z, in m, measured from the origin of the wrench frame. For a flat tool mounted on the sensor, this is typically the tool thickness.
Slip Detector
Slip Detector Configuration Structure
Basic configuration
name
string
Human-readable label for the block, accessible via name().
policy
string
Runtime error policy. Accepted values: "best_effort" (default),
"soft_rt", "hard_rt", "strict_rt".
force_threshold
double
Force threshold, in N. Must be greater than zero. Default 0.3.
Below it there is no contact to lose, and no slip verdict is produced.
Friction coefficients
friction_coefficients
object
It must have the following fields:
linear
double
Linear friction coefficient of the contact pair, dimensionless. The tangential-to-normal force ratio above which the contact is declared to be slipping.
torsional
double
Torsional friction coefficient of the contact pair, in m. The torsion-to-normal-force ratio above which the contact is declared to be slipping.
Note
Both friction coefficients are properties of the contact pair, the tool material against the object material, and not of the sensor. Measure them once per material combination by loading the contact until it gives way, and read off the ratio at which it did.