Joe,
The key to doing this kind of thing is remembering where an object's origin is (i.e. x=0, y=0, z=0), which is always the bottom left corner. To keep this straight in my mind, I like to reset the rotation of the model by right-clicking in an empty space and going to View --> Reset View Rotation. Then I zoom in on the object I am going to work on. In your model, I also drew a small red box at the origin of Olive_AGV_1. You can delete this box by deleting the code in the Custom Draw trigger.
Also, remember that the pallet's origin is also the bottom left corner.
The code to position an item in the AGV is in the OnLoad trigger. The main command is setloc(object, xloc, yloc, zloc).
I calculate how far back to move the pallet when it is picked up, which in this case is the size of the pallet. But, since I want to move the pallet backwards, it is the negative size of the pallet.
Then, to center the pallet in the y axis, I move it down by half of the AGV's ysize and then back up by half of the pallet's ysize. To move the pallet down, I go negative and to go back up, I add.
Finally, the z location is simply 0 to put it on the ground, or you can raise it by using something larger than 0.
Incidentally, if you do not need to change all three of the locations (x, y, and z), you can use: set(spatialx(item), -xsize(item)). For example, if you look closely at the combiners where Olive_AGV_1 picks up the pallets, you will notice that the pallets are slightly sunk into the combiner. In Olive_Market Place_3's OnEntry trigger, I put the following command: set(spatialz(item), zsize(current)). This just raisers the pallet up to be on top no matter what the the zsize of the combiner is.