Home› Programming
Discussion
Back to discussions page
Algorithm behind the pose_trans() script language function of a UR5e (Universal Robot) 
2.7K views

Answered  
/ Most recent by buttarme
in Programming

5 comments 
ur5eUser
Posts: 3 Apprentice
in Programming
Hello guys,
i am currently working on a UR5e (Universal Robots) where I have created a C# program that reads a list of drillings (up to 600 per file) transforms them and sends them in script language to the UR5e via socket ethernet connection. Everything works fine, except for the performance of the UR5e which seems to reach its limits as it is needed to use 8 pose_trans() script functions per drill. I have contacted the Universal Robots support already and they recommended to do the calculations done by the pose trans() script function in my C# program. The function has got 2 inputs, one for the starting position of the tool, and the second one for the distance covered relative to the starting position. The output is defined as the target position, after the distance has been covered.
In order to do the calculations of the pose_trans() function in my C# program i need to know the algorithm behind it. However, so far I was not successfull searching on the zacobria and universal robots forums so far. If somebody faced a similar problem already and knows the algorithm behind this function, it would be very helpful to me.
Best regards
i am currently working on a UR5e (Universal Robots) where I have created a C# program that reads a list of drillings (up to 600 per file) transforms them and sends them in script language to the UR5e via socket ethernet connection. Everything works fine, except for the performance of the UR5e which seems to reach its limits as it is needed to use 8 pose_trans() script functions per drill. I have contacted the Universal Robots support already and they recommended to do the calculations done by the pose trans() script function in my C# program. The function has got 2 inputs, one for the starting position of the tool, and the second one for the distance covered relative to the starting position. The output is defined as the target position, after the distance has been covered.
In order to do the calculations of the pose_trans() function in my C# program i need to know the algorithm behind it. However, so far I was not successfull searching on the zacobria and universal robots forums so far. If somebody faced a similar problem already and knows the algorithm behind this function, it would be very helpful to me.
Best regards
Best Answer

Kaleb_Rodes Founding Pro, Partner, Beta Tester VIsion 1.1 Program, Tactile Sensor Beta Testers, Beta Tester Camera URCap 1.2.0beta Posts: 62 Handy
@ur5eUser Please see the attached document and image. Hopefully, these help explain how I calculated the result. The results are more precise when using radians rather than degrees for theta. If you have any questions let me know!
I have taken both, the link and the description of the function in the script manual, into consideration already. However, it is not clear to me how exemplarily the result on the extract from the script manual that you posted is being calculated.
The first point is p[0.2,0.5,0.1,1.57,0,0]
The second point is p[0.2,0.5,0.6,1.57,0,0]
And the result is p[0.4,0.0996,0.60048,3.14,0.0,0.0]
I have attached a picture of my calculation. I have used the transformation matrix for the rotation and translation (second point) relative to the first point. However, I dont get to the right result.
Anyone having a clue what I am missing here?
Yiru
Code is in PDF format because I can't upload .PY
This program works for all angles, basically same as you define poses in URScript.
Main problem was, you need to convert rotation vector to Euler angles before creating rotation matrix.