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:

Payload Compensator  →  Contact Point  →  Slip Detector
  • 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.


Ready to Get Started?

Choose your development platform