Contact Node

Created by Rico Stodt, Modified on Mon, 31 Jan, 2022 at 11:46 AM by Rico Stodt

This page provides a detailed overview about the Contact Node.


Node Description

ContactMove 5 1.png

Contact Node

The Contact Node is used to train the robot to perform force behaviors. There are 2 main modes that can be trained. The first involves setting a specific stiffness for the joints in relation to the tool center point. The stiffness can be set to whatever frame of reference that the robot has been trained with. The Contact Node is also used to train the robot to push or pull with a specified amount of force.

The pose, frame and active endpoint are important when specifying a Contact Node.

Node Type

Primitive - Cannot have children.

Node Inspector: Set Stiffness

Contact Node Inspector.png

Arm Pose

  • test

Moves the arm to the pre-set arm pose (either live or in simulation). Cannot be used until a Arm Posed has been set.

  • + arm pose

Set the arm pose to the current pose of the robot (either live or sim, depending what mode you're in).

  • ID

Not editable

  • name

Name of the node. Auto Generated and User Editable.

  • timed move

Default off. Enables ability to specify a target duration for the Contact Move Node.

  • number of retries

Number of times to retry moving to the set pose before returning an error.


Force and Compliance

  • use tcp frame

Choose the tool center point from for the node.

  • force frame

If the 'use tcp from' is de-selected (greyed out), choose the appropriate force frame to move for this move.

  • stiffness

Set the stiffness for any of the 6 axes (X,Y,Z,Rx,Ry,Rz). Set between 0 - 1,300 NM for X,Y,Z or between 0 - 30 N·m/rad for Rx,Rz,Rz. Max stiffness is the default. To change, move the slider or type in a value.

  • torque limit

For a specific axis, check "Torque Limit" to set a do not exceed limit for the force.



  • move type

Choose joint or linear move.

  • joint tolerance

Set the tolerance for the commanded joint positions for a particular move. The higher the joint tolerance, the less the commanded joint positions have to match the trained joint positions.

  • speed ratio

on a scale of 0.1 - 1.0, the relative speed of the arms movement.

  • joint acceleration

Choose slow, medium, fast or express. Sets an acceleration velocity for the arm movement.


Arm Pose

  • arm pose

Dropdown menu - choose an arm posed used by a different node. If you update the arm pose from the referenced node, it will automatically update.

  • ID

Not editable

  • name

Name of the arm pose. Auto Generated and User Editable.

  • tool center point

Choose the appropriate tool center point for this node. Defaults to the current tool center point chosen in the behavior editor.

  • used By

Lists other nodes where this arm pose is used.



  • endpoint

Not editable

  • ID

Not editable

  • name

Not editable

  • parent

Drop down menu - choose a parent for this node.

  • update children

If marked green, will update all of the children with the chosen endpoint.

  • used By

Lists other nodes where this Endpoint is used.

  • comments

User editable - add comments about this node. 

Node Inspector: Apply Force

Contact Node Inspector Apply Force.png

  • Apply Force

Set the applied force for any of the 6 axes (X,Y,Z,Rx,Ry,Rz). Set between -50 - 50 NM for X,Y,Z or between -5 - 5 N·m/rad for Rx,Rz,Rz. Max stiffness is the default. To change, move the slider or type in a value.

  • Warnings

Whenever an apply force is set, a warning will appear. For X,Y,Z, this warning appears Warning:Tool will accelerate in x axis until contact is made. For Rx,Rz,Rz, this warning appears Warning: Tool will accelerate in roll axis until contact is made. 


With the introduction of Intera 5, Sawyer is now capable of interacting with the physical world better than ever before. This will lead to more robust tasks and will also open up new tasks which may have been impossible with other robots in the past. This is all possible due to Sawyer’s hardware architecture and the introduction of CONTACT nodes in Intera 5. To learn more about what this is and the capabilities it opens, please read Intera 5 Force Features.

ATTENTION: It is important to understand how this node works in order to use it to its full capacity and not misuse it. Please read these points carefully before starting to explore the power of the CONTACT node.

  • The CONTACT node is not meant to work in free space, but rather in interaction with the environment/objects.
  • Because of the previous point, it is good practice to approach the CONTACT location with a MOVE node first and then place a CONTACT node at the same Arm Pose. (This way you would move in free space through the regular move and get in close proximity to the object you want to manipulate and then switch to CONTACT mode.)
  • It’s a good idea to include a WAIT node after every CONTACT node. CONTACT nodes execute for a predefined length of time (this depends on the duration of the underlying trajectory) and always finish after that pre-specified time. Therefore, if you want the CONTACT node to last longer (as is often the case) you need to have a WAIT node directly following it in the behavior tree.
  • Any node under a CONTACT MODE parent is going to be in interaction mode, i.e. if there is a WAIT node as a child of a CONTACT MODE parent, the arm will be in interaction mode during the wait. The wait will inherit the interaction properties of the CONTACT node prior to it. If there is no CONTACT node before the wait, it will inherit the default interaction settings.
  • In most tasks, you care about one or two dimensions to have a certain property, i.e. either apply force or be compliant in one or two dimensions. All other dimensions should then be set to maximum stiffness. For example, if I want to apply 10 N in Z, choose all dimensions other than Z to be set to Max Stiffness.. Z should be set to apply force mode with 10 N.
  • There are two ways to apply a force of X Newtons:
    • Choose apply force for the dimension of interest and set force to X.
      • Pro: There is no need to define a waypoint. The robot will just push with the specified force in the specified axes.
      • Con: If there is no contact, then the robot will continue moving until it reaches the joint limits.
    • Choose stiffness mode for the dimension of interest, nudge the Arm Pose in the dimension well past the point of contact with the object in that dimension, and choose a force limit of X.
      • Pro: A limit in how much the robot can move can be established while also applying force.
      • Con: Without a virtual waypoint, which is set past the actual contact location, no force will be applied
  • It is typically better to choose lower speed ratios for the CONTACT nodes. Choosing a high speed ratio may make the arm pause while moving.
  • CONTACT nodes inherit many of properties of the regular moves, i.e. speed ratio, interpolation type, etc. If all dimensions are chosen to have stiffness with max stiffness, a CONTACT node will act similar to a MOVE node (with the exception that the elbow would be compliant.)
  • Setting a force or torque limit does not mean that force/torque is going to be achieved. It only means that is the upper bound on the magnitude of the force/torque the arm will have during that motion. Setting a force/torque limit of zero means the arm will have no resistance in that dimension, and will be completely free (having a small force for e.g. 1 N will have a similar effect). This is probably not very useful since the arm will be fully loose in that direction.
  • You can use the TEST button on a CONTACT node to test its properties. For example, if we have a contact move applying 10 N in Z, pressing TEST on that node will have the robot exerting 10 N in Z and we can test to see if the force is desirable or not.




Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article