How to Re-Establish 3D ETH Relationships After Movement
Updated on 2026 / 03 / 24
Examples are valid for :
TMflow Software version: All versions
TM Robot Hardware version: HW3.2 or above versions
Other specific requirements:
โข 3D camera
โข Landmark
โข Robot with 2D Camera
Note that older or latest software versions may have different results.
Purpose
โข We can establish the relationship between the robot and the 3D camera through ETH calibration, as illustrated by the green line in the figure below.
โข If the robot or the table is moved, this will alter the relationship between the 3D camera and the robot, as shown by the red line in the figure below. In this case, the relationship becomes unknown.

โข At this point, we can fix a landmark at one corner of the table and use the position of the landmark to re-establish the ETH relationship between the 3D camera and the robot.

Definition of Symbols
- BTA represents the transformation relationship from A base to B base.

- APobject represents the position of an object in A base

Advantages of Built-in Vision for the Robot

Base Transformation Relationship
Fixed Robot Base/Camera
Under normal circumstances, we can obtain the relationship RobotT3D Cam (3D ETH Camera Calibration)through ETH calibration, which defines the workspace.
- Through vision job in TMflow, we can obtain RobotPobject, which represents the position of the object in the Robot Base.
- At this point, the relationship 3D CamTworld is unknown in TMflow. We need to derive 3D CamTworld using RobotT3D Cam and RobotPobject. This derived relationship describes the objectโs pose in the 3D Camera Base.
- The relationship is as follows:


Before Moving- Unfixed Robot Base/Camera
โข Place the landmark at a fixed position on the table.
โข Next, create a vision job to locate the landmark and obtain the Vision Base of the landmark, denoted as RobotTLM. . The relationship is as follows:


- At this point, RobotT3D Cam and RobotTLM are known. To obtain the hand-eye relationship after moving, we must first determine the relationship LMT3D Cam before moving. The relationship LMT3D Cam is as follows:


After Moving- Unfixed Robot Base/Camera
- Base on the settings before moving, the relationship LMT3D Cam is already known. After moving, capture the LM again to obtain the new relationship of LM relative to the Robot RobotT'LM. . Combing RobotT'LM , we can derive the new workspace after moving, which is RobotT'3D Cam . The relationship is as follows:

- Using the relationship RobotT'3D Cam in combination with 3D CamTworld , we can transform the object in the World Base worldPobject to the new Robot Base, which is RobotP'object . The relationship is as follows:


TMflow Configuration
Vision Job Localization
โข After completing the ETH correction, it is necessary to instruct the picking position.
โข In step #1, acquire the vision job objectโs vision base and variable โBase[โVision_Find_Object_ModelCADโ].valueโ.
โข In step #2, teach the picking point โPrepick_Pointโ through the Vision base.

Fixed Robot Base/Camera
โข Under normal circumstances, we can obtain the relationship RobotT3D Cam (3D ETH Camera Calibration) through ETH calibration, which defines the workspace.
โข Through vision job in TMflow, we can obtain RobotPobject, which represents the position of the object in the Robot Base.
โข At this point, the relationship 3D CamTworld is unknown in TMflow. We need to derive 3D CamTworld using RobotT3D Cam and RobotPobject.. This derived relationship describes the objectโs pose in the 3D Camera Base.
โข The relationship is as follows:


- Add a global variable โg_workspaceโ and record the calibrated ETH relationship in this variable.

- Add the variable โvar_T_ObjectTo3DCamโ to describe the transformation 3D CamTworld.

- After the vision job object localization, connect a SetNode next

- Use the โchangerefโ function to change the object's Vision base from Robot Base to describe it on the 3D Camera Base, and record this relationship in โvar_T_ObjectTo3DCamโ, which is 3D CamTworld

Before Moving- Unfixed Robot Base/Camera
โข Place the landmark at a fixed position on the table.
โข Then, create a vision job to locate the Landmark and obtain the Landmarkโs Vision Base and the variable Base["Vision_Find_LM"].Value. This relationship is denoted as RobotTLM , and the relationship formula is as follows:



- At this point, RobotT3D Cam and RobotTLM are known. To obtain the hand-eye relationship after moving, we must first determine the relationship LMT3D Cam before moving. The relationship LMT3D Cam is as follows:


- Next, create the global variable โg_3DCamToLMโ

โข Use the โchangerefโ function within the set node to change the description of the 3D Camera Base from Robot Base to Landmarkโs Vision Base. This relationship is denoted as LMT3D Cam, representing the pose of the 3D Camera in Landmarkโs Vision Base.

- After executing these two nodes, which are the preparatory steps

- Once the setup is completed, RobotT3D Cam becomes a known value as well.
After Moving - Unfixed Robot Base/Camera
- Base on the settings before moving, the relationship LMT3D Cam is already known. After moving, capture the LM again to obtain the new relationship of LM relative to the Robot RobotT'LM. . Combing RobotT'LM , we can derive the new workspace after moving, which is RobotT'3D Cam . . The relationship is as follows:

- Using the relationship RobotT'3D Cam in combination with 3D CamTworld, we can transform the object in the World Base worldPobject to the new Robot Base, which is RobotP'object . The relationship is as follows:


- Set the initial position to a location where is can capture the Landmark
- First, set the Landmarkโs vision job before the objectโs vision job , as shown in the diagram.

- Add the variable โvar_new_workspaceโ to describe the relationship RobotT'3D Cam

- In the previous โSet_update_ETHโ set node, use the โchangerefโ function to change the pose of the 3D Camera described in landmarkโs Vision Base to Robot Base. This action establishes the relationship RobotT'3D Cam,, representing the new Workspace.

โข At this point, the relationship RobotT'3D Cam is also known, indicating that we have obtained a new Workspace.
โข Next, by combining the new Workspace RobotT'3D Cam with the transformation 3D CamTworld , we deduce the objectโs new position in Robot Base RobotP'object , which is the objectโs new Vision Base. Similarly, using the โchangerefโ function, we convert the objectโs pose described in the 3D Camera Base to Robot Base, obtaining RobotP'object.
โข Finally, record this relationship in the variable โBase[โVision_Find_Object_ModelCADโ].valueโ of the original objectโs Vision Base to update the Vision Base accordingly.

Execute the Project
Finally, execute this project. The process flow is shown in the diagram below. The picking point โPrepick_Pointโ will be updated according to the movements of the camera or the robot base.

Was this article helpful ?







