Hello.
I am implementing an application where the robot will pick up a box from a conveyor (Position_1), move to a different point to wait (Position_2) and then place the box on a second conveyor (Position_3). The conveyors are static and the boxes stop at the same position.
My issue is that, while the motions are all relatively the same, the Pick, Wait and Place positions vary depending on the size of the box.
I want to be able to quickly switch between box models and simply load the relevant positions to the robot, so I could just have access to a list, sort of like this:
Model 1:
- Position_1
- Position_2
- Position_3
Model 2:
- Position_1
- Position_2
- Position_3
…
Model 15:
- Position_1
- Position_2
- Position_3
etc…
In other robots, I could just store positions “in a list” and access them by calling, for example, Position_1, Position_2, Position_20, etc…, but I haven’t been able to replicate this same kind of functionality with UR.
The best I could find natively is storing the positions in sub programs and calling them dynamically, but this gets unorganized very quickly and it is not very elegant.
Another solution I’ve found is connecting the robot to a server through TCP/IP and having the server store the relevant positions and handle the model change, so each cycle the robot just requests the positions to the server and the server answers depending on the current model. In this case, you could say the robot isn’t even “aware” that a model change may be taking place, it is just receiving the positions for the current work cycle. With this solution, the server also handles the payload for the kind of box and displays information to the operator, so it is more useful.
Finally, I think I’ve jumped through too many hoops for something that should be rather simple, so my question is… Is there a better way to implement this sort of application?
Thank you in advance for you help.