Palletizing with ActiNav
In this article we will be adding in native palletizing into a bin picking pick and place
Introduction
UR robots include a built-in palletizing method, which we here call Known Location Palletizing. ActiNav adds a second method, which we call ActiNav Native Palletizing.
- For Known Location Palletizing, the robot always picks the part in the same orientation. This makes palletizing a simple matter of indexing in x, y, or z coordinates.
- ActiNav Native Palletizing is specific to bin picking. In this case, the robot often picks the part in a variable orientation, and must adjust the part orientation, as well as index across the pallet, to place the part.
Palletizing Asymmetrical Parts
When bin picking an asymmetrical part, more parts can be picked if multiple pick locations are defined on the part. But if it is not possible to place the part using some of these pick locations, a re-grip fixture is required, for the robot to shift its grip to one that allows placing of the part. Re-grip fixtures add to cycle time, but make more picks available. Since a re-grip fixture places the part in a consistent, known orientation, it is most efficient to use the Known Location Palletizing that is built in to Polyscope with re-grips.
Palletizing Symmetrical Parts
When bin picking a part with at least some symmetry, it is frequently possible to skip the re-grip fixture and use ActiNav Native Palletizing to place the part directly in the pallet. When a part is symmetrical about at least one axis, ActiNav allows a single trained pick to represent an infinite number of identical picks. If one of these picks can be placed, all of them can. For example, in the figure, a part that can be placed in any rotation around the blue (Z) axis is shown. ActiNav Native Palletizing can shorten cycle time by eliminating the re-grip fixture.
The drawback of ActiNav Native Palletizing is that ActiNav must calculate a path from the pick location to every possible place location before placing the part. So if there are 4 place locations, ActiNav will need to validate 4 paths to pick a single part. So in some cases, specifically when there are many place locations, it may be more beneficial to cycle time to use a regrip fixture and use Known Location Palletizing.
Prerequisites for this example
- Universal Robot e-series
- ActiNav
- Single suction cup end effector
- Vacuum Generator
- Vacuum Pressure Sensor
- Part that is symmetric around at least one of its axes
- Place Fixture
Set Up Procedure:
Hardware Setup:
- Be sure your Robot, Autonomous Motion Module, and vacuum generator are connected and are functioning properly with your end effector.
- Add in your pressure sensor into your I/O of your controller. In the following example we will be using an analog signal input.
- Make sure your physical environment is built with your desired place target.
Programming Tree.
- The Main Goal with this Example is to teach 4 DISCRETE Place Locations.
- Under the Installation tab, create a new Variable called “Pallet_Position”
3. Load in the Basic Template Program from the ActiNav UR Cap. Below is what a complete program will look like:
4. Under Pick Rules, train a pick rule. Attach the part to the end effector, present the attached part to the 3D sensor, and select teach. To simplify things you can square up your numbers by manually adjusting them as seen below. This is telling the robot how you would like to pick the part.
5. Under the “Advanced” section of the pick rule, select the axis of part symmetry in which you would like your tool to rotate about. Since you are using a single suction cup end effector, be sure that the Tool Rotation around its Z axis is selected:
6. Here is an example of what could be palletized. In this example, you will palletize from right to left into a hydraulic CNC Vice.
7. To teach a place rule, attach the part to the end effector and present the part to the 3D sensor and tap “Teach”. After the part has been matched, move the part to the first position you would like to place your part. In this case, we will call this Place Rule-0. Follow the wizard through the following sequence, Place->Pre-Place->Post-Place.
8. Repeat Step 7 for the other discrete place locations, defining a new Place Rule for each. Note that this allows any unique positions to be used for palletizing: there is no incrementing of x, y, or z offsets.This like the Irregular option in Polyscope for Known Location Palletizing.
9. Add a Before Start Sequence and create an “Assignment” and set your Pallet_Position variable to 0.
10. Set the Home position outside of the scanning volume of the 3D sensor, preferably near the place positions.
11. Below is the Simplified Program. The flow of the program is:
- The program starts at the Home Position.
- Then we do our “Do Pick”, and move right into a “Custom Pose”. This Custom Pose is right above all 4 discrete place locations. This simplifies the paths for ActiNav to validate.
- The placing starts by testing the analog input for the presence of a vacuum seal on the part. In this case, if no suction is detected, the vacuum is turned off and the loop ends.
- Underneath this conditional is another conditional. In this section is the actual palletizing routine.
12. The images below are the expanded version of the above program. Notice the Do Pick node is expanded and we turn on our air at “Pre-Pick” and wait .5 seconds at the “Pick”.
13. Now we are at the conditional within the conditional. We add in an “If statement” and we will be counting the positions of where to place the part. In the first statement we say if Pallet_Position = 0 then Do Place. Do Place can be inserted just like the template program under UR Caps on the left hand side. There are two things that need to be implemented for this to work correctly. First is under the Do Place rule we need to tell the system to use Place Rule 0 (seen below). The second is at Post-Pick. Use a set command to increment “Pallet_Postion” by 1. This will ensure that after it has done this place it will move to the second position.
14. After you have step 11 done correctly, select the If Statement and add an “ElseIf” and repeat step 11 for the second to fourth position. Be sure to use the correct Place Rule under each of the Do Places.
15. The last step is on the last do place. The Pallet_Position variable is reset to 0 so the palletizing can start again at the beginning.