DoF - a Robotiq Community
Warning sign
The Dof Community was shut down in June 2023. This is a read-only archive.
If you have questions about Robotiq products please reach our support team.
matthewd92

I am not very familiar with what is capable to be done using the palletizing wizard (we don't really use it, depend a lot on scripts for stuff like this) but I can see a way to do this in script and make a relatively easy program but a few questions first.  Are all 4 part numbers stacked the same pattern, just different box sizes?  If not, how much do the patterns vary?

We have done similar type applications, not palletizing, but packaging where we had to make determinations on orientation based on some pattern. You can use the modulo operator to help with that determination and then use some simple math to make the pattern.

So assuming that we want to stack the first layer, we would want to know the box height, width and length.  Let's call this layer 0 and lets start with column 0, so the bottom pink row.

I am going to assume that we have a feature with the origin at the front left corner of the pallet (corner of the pink box in the middle of the image) and that X runs to my left, Y runs to the back and then Z runs up.  This will be the coordinate system that we will use to determine where to place each box.

So here is some psuedo code and how I would think about doing the task

EDIT: I tried to format this as a code snippet but it would not show the whole thing so here it is as plain text

##############################################################

# Some constants that I would ask the operator at the start of the program

width (X direction)

length (Y direction)

height (Z Direction)

totalBoxes Total number of boxes per layer

numberOfcolumns Number of columns per layer

numberBoxesInLongColumn (pink columns)

numberBoxesInShortColumn (yellow columns)

originOfPallet (stored as a feature)

numberOfLayers

 

#Some variables that we will need to keep track of where we are in the process, I would make these installation variables

columnCount = 0

rowCount = 0

layerCount = 0

 

# First lets determine which layer we are on, even or odd so we know where the pink row goes

 

if (layer%2 == 0):

  layerName = "even"

elif( layer%2 == 1):

  layerName = "odd"

end

 

#Pick box from conveyor

Some move here to get box from the conveyor to near the box

 

#Start doing math to determine how to place box

 

if (layerName == even):

 if (columnCount == 0):

   xDistance = width

   yDistance = length

   zRotation = 1.57 (90 degrees in radians)

   longRow = True

 else:

  xDistance = length
  yDistance = width

  zRotation = 0

  longRow = False
 end

else:

 if (columnCount == 3):

   xDistance = width

   yDistance = length

   zRotation = 1.57 (90 degrees in radians)

   longRow = True

 else:

   xDistance = length

   yDistance = width

   zRotation = 0

   longRow = False

 end
end

 

xLocation = 0.5*xDistance + xDistance*columnCount

yLocation = 0.5*yDistance + yDistance*rowCount

zLocation = layerCount*height

boxLocation = pose_trans(originOfPallet,p[xLocation, yLocation, zLocation, 0, 0, zRotation])

overBoxLocation = pose_trans(boxLocation, p[0,0,height,0,0,0])

 

#Use variable waypoint and move to the box location

moveJ(overBoxLocation)

moveL(boxLocation)

set vacuum off

moveL(overBoxLocation)

 

# Move back over conveyor

 

#Keep track of all the counters

rowCount = rowCount + 1

if (longRow):

  if rowCount > numberBoxesInLongColumn:

    rowCount = 0

    columnCount = columnCount +1

  end

else:

  if rowCount > numberBoxesInShortColumn

    rowCount = 0

    columnCount = columnCount +1

  end

end

 

if columnCount > numberOfColumns:

  layerCount = layerCount + 1

  columnCount = 0

  if layerCount > numberOfLayers:

   layerCount = 0

   popup("Please remove the completed pallet and place a new empty pallet, THEN press CONTINUE")

  end

end

 ##############################################################


This is a very quick example based on the single image above but hopefully you can get the idea of how you could write a rather simple program to provide the pallet stacking like you are showing in the image above.

If you venture this and try it, let us know how it works out please.