Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5

Avoid delays between linear moves

#1
Part of our process requires the robot to move while performing other actions. It isn't practical to send a program like this to the robot controller, so a Python script performs the actions one after another.  In certain areas there are consecutive robot moves - there is a second or two delay between one move ending (linear or joint) and the next one starting. I hope this helps explain...
Code:
# Part of a Python script:

TheRobot.MoveL(pose01)
# do something
TheRobot.MoveL(pose02)
# do something else
TheRobot.MoveL(pose03)
TheRobot.MoveL(pose04)
# do another thing
In this example, there would be a noticable delay between pose03 and pose04.  I tried to add a command like:
Code:
TheRobot.setRounding(2)
My theory was that the delay was caused by the robot trying to be too exact.  This did not seem to make a difference.  So... is there a way to see the MoveL command that is sent to the ABB controller to verify that the rounding accuracy is included?  Is there anything else that I might be overlooking to cause this delay?

Thanks for your suggestions.
#2
I believe you want to use the non blocking option of robot movements. If you set the blocking flag to False, the robot will start moving while you can perform any other actions while it is moving. You can then use Busy or WaitMove to control the motion status of your robot. Example:
Code:
# Ask the robot to start moving:
robot.MoveL(pose1, blocking=False)
# ... Perform any other tasks that do not involve robot movements
# Check if the robot is still moving
if robot.Busy():
    print("The robot is still moving")
# Wait until the robot has finished moving
robot.WaitMove()
If you set the rounding value to something greater than 0, the robot will consider it finished the movement earlier (based on the rounding tolerance in MM for ABB controllers for example).
  




Users browsing this thread:
1 Guest(s)