Skip to main content

move_to_contact

Skill class for ai.intrinsic.move_to_contact skill.

A skill that moves the TCP until it makes contact with the environment using feedback from a force-torque sensor mounted at the endeffector.

Moves the endeffector in a given motion direction and attempts to achieve a desired contact force upon contact making. The expected contact stiffness can be freely configured or chosen from presets, advanced tuning parameters allow to modify the compliance during motion. A maximum approach velocity can be configured for safety.

WARNING: This is a reactive skill based on a Cartesian admittance controller. Robot motions may be highly sensitive to sensed environmental forces based on the configuration of the skill (e.g. approach speed, desired forces, virtual stiffnesses). Robot motions are not validated to be kinematically-feasible or collision-free. Ensure skill starts from a manipulable start state (away from singularities and joint limits). Consider tuning the skill conservatively to begin with (slower speeds and lower contact forces) and proceed with caution!

Prerequisites

Required assets:

  • Robot arm
  • Force-torque (FT) sensor specced to the expected contact or process forces.

Before invoking move_to_contact, make sure the robot is in a meaningful, collision-free pre-contact configuration. In most cases, a move_robot skill will be used right before move_to_contact.

Usage Example

  1. Choose a desired tool frame which serves as reference for input commands like the motion direction. This frame does not need to be located after the FT-Sensor, in fact it can be any frame on the end-effector assembly.

  2. Choose motion direction. When defining a target frame in the world, the skill will interpolate a direct linear motion in task space towards the target frame. By contrast, a fixed vector expressed in the tool frame will lead to a linear Cartesian motion following the fixed-vectors direction. By default, the tool frame z-axis is set as motion direction.

  3. Choose a contact force (Newtons) that matches your process. Higher forces lead to higher approach speeds. Note that very high desired contact forces can lead to slight force-overshoot when establishing the contact.

  4. Select contact_stiffness. It is recommended to choose one of the given presents (default contact stiffnesses). A very stiff contact (e.g. colliding metal surfaces) might require an increase of the default parameters. For soft contact, e.g. when using a suction gripper, it is recommended to use the preset 'low'. In general, lower stiffness will also result in higher approach speed.

Parameters

tool

Tool frame for which motion and forces are being commanded. Must be a descendant of a wrist mounted FT sensor.

fixed_vector

Direction of tool specified as a vector with respect to a given reference. If reference frame is not provided, defaults to tool.

target

Direction of tool specified as a target frame to move towards. Must have a different translation than tool at the start of this skill. Note that this frame only defines a direction, and that the tool may move past this target if contact has yet to be made.

contact_force

The feedforward force (in N) to exert along the specified motion_direction. Must be positive. A higher contact_force also results in a higher approach velocity. The skill does the fastest possible approach with the goal of not exceeding the contact_force. Control deviations can result in slightly higher forces ad the defined contact_force.

timeout_sec

Time (in seconds) within which the contact force must be stably reached before the skill fails.

tool_translational_stiffness_in_nullspace

Translational stiffness (in N/m) of an idealized spring between the tool frame and the direction of motion; spring is only applied for directions orthogonal to the motion. For context, a value of 100 implies a disturbance of 10 N results in a displacement of 10 cm. Reasonable values are in the range of [200, 500].

no_translational_compliance

The robot not compliant in the translational directions orthogonal to the motion direction.

tool_rotational_stiffness_in_nullspace

Rotational stiffness (in N m/rad) of an idealized spring about the tool and direction of motion. Spring is only applied for directions orthogonal to the motion. For context, a typical doorknob deflects about 0.785 rad (45 degrees) with approximately 0.2 Nm of torque, implying a stiffness of 0.25 N m/rad.

no_rotational_compliance

The robot not compliant in the rotational directions.

mechanical_stiffness_at_contact

Mechanical stiffness (in N/m) when the robot is in contact with its environment. For example, the presence of a mechanical compliance device on the arm's EOAT, or a soft surface on which the system tool is making contact should be modeled here. Typically in the range from 1,000 to 200,000.

default_contact_stiffness

Predefined stiffness values which should handle most applications. Set mechanical_stiffness_at_contact if fine tuning the skill is required.

max_approach_velocity

The maximal allowed approach velocity of the skill. The expected velocity is computed based on the contact force and the contact stiffness. Higher contact force and lower stiffness result in a higher approach velocity. If the max_approach_velocity is lower than the expected velocity, the skill fails. Defaults to the application limits.

Capabilities

robot

Resource having all of the following capabilities:

  • Icon2Connection

  • Icon2PositionPart

  • Icon2ForceTorqueSensorPart

Error Code

CodeTitleRecovery Instructions
10201Invalid parameterizationCheck and fix input parameters.
10301Stabilization timeoutCheck chosen contact_stiffness (oneof) value.
10302Approach timeoutIncrease timeout or increase contact force.
10303Move to contact timeoutUnknown timeout, check parameterization.