# Read position complete / motion has completed

**URL:** https://forum.universal-robots.com/t/read-position-complete-motion-has-completed/1901
**Category:** Technical Questions
**Tags:** timing
**Created:** [April 19, 2018, 5:45am UTC](https://forum.universal-robots.com/t/read-position-complete-motion-has-completed/1901 "2018-04-19T05:45:15Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![jasontoh](https://avatars.discourse-cdn.com/v4/letter/j/ec9cab/32.png) [@jasontoh](https://forum.universal-robots.com/u/jasontoh)
#### Post date: [April 19, 2018, 5:45am UTC](https://forum.universal-robots.com/t/read-position-complete-motion-has-completed/1901/1 "2018-04-19T05:45:15Z")

</div>

I am sending move command through port say 30002, I need to wait for the ur to finished the move before I proceed with the next move or other commands. how can do it?

Jason Toh

---

<div class="post-metadata">

### Author: ![anon61951079](https://avatars.discourse-cdn.com/v4/letter/a/a5b964/32.png) [@anon61951079](https://forum.universal-robots.com/u/anon61951079)
#### Post date: [April 19, 2018, 10:39am UTC](https://forum.universal-robots.com/t/read-position-complete-motion-has-completed/1901/2 "2018-04-19T10:39:59Z")

</div>

UR script  
is\_steady()  
Checks if robot is fully at rest.  
True when the robot is fully at rest, and ready to accept higher external  
forces and torques, such as from industrial screwdrivers. It is useful in  
combination with the GUI’s wait node, before starting the screwdriver  
or other actuators influencing the position of the robot.  
Note: This function will always return false in modes other than the  
standard position mode, e.g. false in force and teach mode.  
Return Value  
True when the robot is fully at rest. Returns False otherwise  
(bool)

---

<div class="post-metadata">

### Author: ![jasontoh](https://avatars.discourse-cdn.com/v4/letter/j/ec9cab/32.png) [@jasontoh](https://forum.universal-robots.com/u/jasontoh)
#### Post date: [April 20, 2018, 12:47am UTC](https://forum.universal-robots.com/t/read-position-complete-motion-has-completed/1901/3 "2018-04-20T00:47:13Z")

</div>

Hi,  
Thanks for the reply. I know about Is\_Steady(). The question is how to I read the return in my python program. For example in my python program from my pc I send the following commands. How do I read the return?  
s.send(“movel(pose\_trans(get\_actual\_tcp\_pose(),p[0.01,0,0,0,0,0]),1,0.25,0,0)” + “\n”)  
s.send(“Is\_steady()” + “\n”)

Jason Toh

---

<div class="post-metadata">

### Author: ![inu](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/inu/32/732_2.png) [@inu](https://forum.universal-robots.com/u/inu)
#### Post date: [April 23, 2018, 3:50pm UTC](https://forum.universal-robots.com/t/read-position-complete-motion-has-completed/1901/4 "2018-04-23T15:50:11Z")

</div>

There is no ‘correct position’ or ‘in-motion’ bit to monitor for determining when the robot has finished a move. However there are some ways around this:

- Send an end of movement character to your python script to signal movement has been completed.
- Monitor current position and compare to target position to determine if movement was successfully completed.

I’d recommend using the RTDE interface to monitor your variables in conjunction to using port 30002 to send your move commands. The advantage here is the real-time synchronization that RTDE offers. You can read more on it [here](https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/).

---

<div class="post-metadata">

### Author: ![system](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/system/32/1_2.png) [@system](https://forum.universal-robots.com/u/system)
#### Post date: [January 26, 2021, 10:09pm UTC](https://forum.universal-robots.com/t/read-position-complete-motion-has-completed/1901/5 "2021-01-26T22:09:16Z")

</div>

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.
