# state.actual\_TCP\_pose results in wrong pose!

**URL:** <https://forum.universal-robots.com/t/state-actual-tcp-pose-results-in-wrong-pose/14498>\
**Category:** URScript\
**Created:** [May 24, 2021, 1:11pm UTC](https://forum.universal-robots.com/t/state-actual-tcp-pose-results-in-wrong-pose/14498 "2021-05-24T13:11:44Z")\
**Posts on this page:** 1\
**Showing post:** 9

<div class="post-metadata">

**Author:** ![kaha](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/kaha/32/5058_2.png) [@kaha](https://forum.universal-robots.com/u/kaha)\
**Post date:** [July 5, 2021, 7:47am UTC](https://forum.universal-robots.com/t/state-actual-tcp-pose-results-in-wrong-pose/14498/9 "2021-07-05T07:47:20Z")

</div>

Hello @anon59108369,

As promised I will answer your question while being back from holiday.  
In PolyScope we scale the rotation vector so that it looks more stable and doesn’t flicker so much. The RTDE data is unscaled, but when scaled it corresponds to the GUI values shown in the customer’s screenshot. Anyway, both solutions represents same position. If you want to scale the RTDE reading this portion of code may be useful:

```auto
def tcp_pose_scal():
	v = get_actual_tcp_pose()
	pi=3.1416
	l = sqrt(pow(v[3],2)+pow(v[4],2)+pow(v[5],2))
	scale = 1-2*pi/l
	if ( (norm(v[3]) >= 0.001 and v[3] < 0.0) or (norm(v[3]) < 0.001 and norm(v[4]) >= 0.001 and v[4] < 0.0) or (norm(v[3]) < 0.001 and norm(v[4]) < 0.001 and v[5] < 0.0) ):
		tcp_pose = p[v[0], v[1], v[2], scale*v[3], scale*v[4], scale*v[5]]
	else:
		tcp_pose = v
	end
		
	return tcp_pose
end

```

I’m hoping it answers your question. Wishing you all the best in developing your robotic solution.  
@mbush, it is never too late to have explanation of something 🙂

---

_[View the full topic](https://forum.universal-robots.com/t/state-actual-tcp-pose-results-in-wrong-pose/14498)._
