# How do I move the Robot using TCP Coordinates without changing the tools orientation

**URL:** <https://forum.universal-robots.com/t/how-do-i-move-the-robot-using-tcp-coordinates-without-changing-the-tools-orientation/31767>\
**Category:** General Application Help: How do I?\
**Created:** [December 11, 2023, 10:18am UTC](https://forum.universal-robots.com/t/how-do-i-move-the-robot-using-tcp-coordinates-without-changing-the-tools-orientation/31767 "2023-12-11T10:18:16Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![lukas](https://avatars.discourse-cdn.com/v4/letter/l/e9a140/32.png) [@lukas](https://forum.universal-robots.com/u/lukas)\
**Post date:** [December 11, 2023, 10:18am UTC](https://forum.universal-robots.com/t/how-do-i-move-the-robot-using-tcp-coordinates-without-changing-the-tools-orientation/31767/1 "2023-12-11T10:18:16Z")

</div>

Hej, I’m trying to rotate the tool while simultaneously having the arm follow a predefined path. My approach was to obtain the joint positions and modifying only the final value by adding 90 degrees, allowing for a 90-degree turn of the tool using moveJ. However, I also need the tool to follow a specific path as it rotates.I tried using moveL, but this seems to override the original moveJ command. My question is: Is there a way to move to TCP coordinates without altering the orientation?  
Thanks in advance!

---

<div class="post-metadata">

**Author:** ![cg1](https://avatars.discourse-cdn.com/v4/letter/c/c77e96/32.png) [@cg1](https://forum.universal-robots.com/u/cg1)\
**Post date:** [December 11, 2023, 12:45pm UTC](https://forum.universal-robots.com/t/how-do-i-move-the-robot-using-tcp-coordinates-without-changing-the-tools-orientation/31767/2 "2023-12-11T12:45:14Z")

</div>

As i see it you have a couple of options.

1. use the tool\_path\_offset functionality, this would require having a thread that controled the rotation in the tool frame.

2. use interpolate\_pose(p\_from, p\_to, alpha) to generate a list of all the poses between your start and stop pose.  
and then get\_inverse\_kin(x, qnear, maxPositionError =1e-10,maxOrientationError =1e-10, tcp=’active\_tcp’)  
to get their joint poses, now you can manipulate the end joint of all of them and convert them back to poses using  
get\_forward\_kin(q=’current\_joint\_positions’, tcp=’active\_tcp’)
