Home› Applications
Discussion
Back to discussions page
mhowe
Partner, Wrist Camera URCap 1.3.0 Posts: 41 Handy
50 Different pallet layouts |
1.3K views
|
Answered | |
/ Most recent by MarkEGuida
in Applications
|
11 comments |

in Applications
I have an application where a UR10 is palletizing boxes. There is about 50 different sizes which means 50 different pallet layouts. Multiple box sizes a day so it is always changing.
I am interested in seeing how others have accomplished this task, how you tell the UR what box is coming and if an external motion controller is used.
I am interested in seeing how others have accomplished this task, how you tell the UR what box is coming and if an external motion controller is used.
Best Answer
-
matthewd92 Founding Pro, Tactile Sensor Beta Testers Posts: 1,266 Handy
Yes, the information was stored in a data store on a separate computer. At that time we had a simple socket server sitting between the robot and database so we could make requests and get data. So for instance we'd send the server the configuration ID which would query the database then we'd ask for each bit of data until we had everything we needed to know how to do the job. So we would request the x-list and store that, then the y-list and store that....until we had everything stored on the robot. The great thing about an approach like this is you can tweak the configuration of the pallet in the database and not need to touch the robot program. Also, you could literally add hundreds of configurations to the system without any major issues.
We have since moved to a xmlrpc server which is much faster to get the data and much easier on the robot side but maybe not as familiar to the IT guys that you may need to get help from building out the server and database.
As far as how we planned to accomplish the task we were using a database that stored a set of arrays for each part number (pallet configuration) they were packaging. This database would basically return a set of lists to the robot, one list for the x,y and rotation of each box on the pallet, how many layers there were and the number of boxes on each layer as well as the center coordinates used by the robot to pick the box off of the pallet. The system then used that information to determine how to loop through the list of coordinates and place each box onto the pallet oriented in the correct direction, we would use a dead-stop at the end of the conveyor that was feeding the robot and a cylinder to square up the box prior to being picked. We were looking at using a camera potentially to ensure that the boxes were oriented correctly before being picked, less of a concern on that project as the boxes were flowing to the robot out of a taping machine so unless someone really messed up they were all oriented the correct direction.
Hope that gives you some ideas to work with.
Did you store the pallet configurations on a separate PC?
The script command for creating the server connection can be found in the URScript manual.
Find the attached image of program.
Ok, so I have a simple XMLRPC server running on my PC and I can communicate with it from URSim. The issue I'm having now is controlling the data types coming back to the robot. I'm using the same basic URP scripting that UR has in their support section.
On the server, this opens up a CSV file and strips out the 5th entry in the Box# column (using DictReader() class to read the CSV). When I run the simple Python client below, I enter 5 and it's works fine.
However, it arrives in Polyscope as:
Any idea how to handle this?