Understanding when tool0 and tool0_controller will update with TCP from UR

I have been working my way through getting a UR3 running with the ROS2 Driver. So far, going pretty well with the off-the-shelf stuff. I have the communication working, and both simulator and real robot working fine with the MoveIt config. So, that’s all great.

Next step is for me to get my EOT working and the TCP added to the TF Frame hierarchy.

In the ur_robot_driver documentation, it notes that if there is a tool set up on the Teach Pendant, that tool0 should reflect this (pasted in the docs below):

Robot frames

While most tf frames come from the URDF and are published from the robot_state_publisher, there are a couple of things to know:

  • The base frame is the robot’s base as the robot controller sees it.
  • The tool0_controller is the tool frame as published from the robot controller. If there is no additional tool configured on the Teach pendant (TP), this should be equivalent to tool0 given that the URDF uses the specific robot’s calibration. If a tool is configured on the TP, then the additional transformation will show in basetool0.

I am not sure if I am interpreting this correctly… I set a TCP offset on the Teach Pendant, but my tool0 is still right on the end of the flange/wrist3 in RViz. I looked through the driver code, and didn’t see anything anywhere that looked like tool0 would be updated dynamically - but I wanted to double check to make sure I am interpreting this properly in the first place.

Thanks!

It would be awesome if the tool frame could be updated dynamically according to the setting on the pendant, but I don’t think the URDF will update automatically.