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.
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.