If you are comfortable with a Process Flow heavy approach, I would do it that way. See my attached model for an simple version of what you have described.
In my 3d model you will notice I have a Queue acting as an origin for the Trucks, a floor storage Rack that acts as my parking lot. I also have network nodes for the drivers to follow as they walk over to their Kiosk. For simplicity, I assumed it would be OK to have a kiosk assigned to each parking spot, so if they parked in the first spot, they use the first Kiosk etc. There is also an object I've marked as an Exit so the trucks can drive away when their driver gets back.
In the Process Flow, I'm using a token Source to create Truck objects in the Queue, which then sends the trucks to the Rack, using the "Task Executor as Flowitem" option found under Use Transport. Next I have a Wait for Event activity that holds the truck token until it arrives tot he parking lot. There's a few different ways to do the truck creation and the initial travel to the Parking Lot but, I chose this way because I thought it looked good.
Once the truck is parked, I figure out which spot the truck is in by using rackgetlevelofitem() and save it to a label. I create a Driver object 'in' the Network Node closest to his parking spot.
I then used a Split activity so I have one token that represents the truck, and another that represents the driver. While the truck does it's delay for check-in, the driver walks to his Kiosk, delays and then walks back to his truck. I use a Synchronize activity so that the truck and the driver have to wait for each other before releasing the truck to the exit.
Have a look at the model, and hopefully this gives you an idea of what is possible
truck-and-driver.fsm