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
-
Choose a desired
toolframe 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. -
Choose motion direction. When defining a
targetframe in the world, the skill will interpolate a direct linear motion in task space towards the target frame. By contrast, afixed vectorexpressed in thetoolframe will lead to a linear Cartesian motion following the fixed-vectors direction. By default, the tool frame z-axis is set as motion direction. -
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.
-
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
| Code | Title | Recovery Instructions |
|---|---|---|
| 10201 | Invalid parameterization | Check and fix input parameters. |
| 10301 | Stabilization timeout | Check chosen contact_stiffness (oneof) value. |
| 10302 | Approach timeout | Increase timeout or increase contact force. |
| 10303 | Move to contact timeout | Unknown timeout, check parameterization. |