Suppose I had the following point P1 = {X 300, Y 50, Z 300, S 6, T 3} (let's ignore orientation for now).
I can then run
without any issues. If instead, however, I wanted to run
the robot throws an error (because P2 is on the other side of the robot). Ideally, I would want the robot to recognize that it is about to cross the turn boundary, and automatically PTP to {X 300, Y -50, Z 300, S 6, T 2}, but it looks like it still wants to go to {X 300, Y -50, Z 300, S 6, T 3}, which it cannot do. The code works if I call P2 a FRAME, but that seems like a hack and I would rather not.
For my application, I have a sequence of points to move to that I want to loop through, offset by some amount, and execute again. For each of these sequences, the robot will start fairly close to the start of the sequence.
My code looks like this (it's not this, but the same concept):
oldBase = $BASE
offsetBase = $BASE
FOR i = 1 TO 10
PTP somePosition
$BASE = offsetBase
; some arbitrary sequence of steps, which I do not have access to prior to running this code
PTP P1
PTP P2
PTP P3
;
offsetBase = offsetBase:{X 50}
$BASE = oldBase
Display More
Because of the way this application works, I cannot just convert
to
The entire sequence of steps is determined during runtime by an external system and pushed to the robot using DirectoryLoader. I have little access to what motions the robot must execute, my job is just to make sure it can execute those steps, offset them some number of times, and execute them again. Again, offsetting the points is not a problem, it's just making sure that the status and turn of the robot change fluidly and do not cause any weird motion.
Thanks for the assistance!