Universal Robots Forum

Read position complete / motion has completed

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

UR script
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

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

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.


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