Skip to main content
Version: 8

How to use Tool Center Points (TCP)

In robotic applications, the Tool Center Point (TCP) is the specific point on a tool or end-effector that serves as the reference for motion and task execution. Accurate definition and calibration of the TCP are essential for precise movements, especially in tasks like welding, assembly, or material handling. This guide will walk you through the process of setting up and utilizing TCPs in MoveIt Pro, ensuring that your robotic operations are both accurate and efficient.

TCP
Image credit: How to Define the Tool Center Point (TCP) on a Robot

There are several options

Taking the transform from the CAD / URDF

Assuming the end effector is modeled accurately in your robot model (URDF), it will give you the TCP transform automatically. You can then use the TCP link name as the IK frame when using Behaviors.

Loading a transform from file

Another option is to load the TCP transform from a file, using a Behavior called LoadPoseFromYAML that allows you to load a YAML file with a geometry_msgs::msg::Pose in it. Then you can use that transform as a ‘tip offset’ in Behaviors that accept that input.

Calibrating the TCP precisely

Getting a more accurate calibration of the robot TCP requires some more advanced techniques, e.g. based on vision, or even dedicated TCP calibration sensors. In this case the user would need to create the specific calibration procedure via Objectives or even custom Behaviors, depending on the calibration requirements. MoveIt Pro offers a large set of building blocks that users can compose to create their own calibration process, e.g. move the arm manually to a point, read the current tip pose, estimate a pose from a visual marker, etc.

Can you read it from the OEM’s teach pendant?

It may be possible, based on each robot arm brand’s APIs, to get the TCP calibration for their teach pendant. For example UR robots allow you to calibrate the TCP with the teach pendant, and they provide a script to load those calibration parameters into the URDF.
In other cases, users can create their custom Behavior that provides support for this, provided that the arm vendor exposes an API for it.