Automation · Automated storage & retrieval
Shuttle and crane ASRS, AutoStore, and AMR goods-to-person systems store handling units densely and bring them to an operator on demand — no one walks the aisles. openWCS drives the moves and knows exactly where every unit is. What goes where is the Slotting function; this page is about the automation itself.
How an ASRS is built
An aisle has a rack on each side and a shuttle or crane working the gap between them, with lifts at the end moving units (and sometimes the shuttles) between levels. openWCS models every storage position as a cell, so a unit's location is always precisely known.
Each cell is identified by its aisle, the side of the aisle, the horizontal position (x), the level (y) and the depth (z). A handling unit is booked to that exact cell — never just "somewhere in the block".
Captive or roaming shuttles work a level; a crane works a whole aisle; lifts bridge levels and the pre-zone. openWCS dispatches store and retrieve commands over the uniform device contract, vendor-neutral behind an adapter.
Rack shuttle/crane ASRS, AutoStore's bin grid, and AMR rack-to-person all fit the same model: a pool of cells, machines that move units, and a port that presents them. See the Automation overview.
Store & retrieve
The operator never travels into storage. The system retrieves the handling unit a task needs, presents it at a goods-to-person station, and returns it — and openWCS sequences those moves to keep the station fed and the machines busy.
Units are retrieved to a workstation for picking, decanting, counting, QC or maintenance, then returned to storage. See the goods-to-person deep dive.
Choosing the cell at put-away — velocity-to-exit, same-SKU lanes, aisle redundancy and fill balance — is the Slotting function, shared across all automation. See the Slotting page.
When a unit comes back from a station it's slotted again — it doesn't have to return to its old cell. Random/dynamic storage keeps density high and the fast positions free.
In-aisle behaviour
Inside a lane, where a unit sits — and which unit the machine reaches for — drives the cycle time the station actually feels.
Distance-to-exit is measured down the lane, not just to the aisle: fast movers sit in the shallowest cells for a short reach, slow movers go deep where the long reach rarely costs anything.
A deep lane (cells z1…zN) holds one SKU and fills from the back forward, so retrieval pulls the front unit first — last-in, first-out within the lane.
A machine that has just stored a unit is positioned to grab a retrieval on the way back, so it travels loaded in both directions instead of deadheading.
Empty-HU management
Empty carriers, trays and totes are inventory too — and if they sit near the exit they steal the fast positions from real stock. openWCS treats empties as a managed pool.
Empty HUs are stored in the cells furthest from the aisle port — slots a fast mover would never want — so short-cycle real estate stays reserved for stock that ships.
Consolidating and relocating empties runs at a lower transport priority than order-driven moves, filling idle gaps instead of competing with throughput at peak.
When inbound needs a carrier that's storable in the automation, an empty is pulled for decanting — so a fresh HU is ready at the station without a separate trip mid-receipt.
At a glance
put-away ─► slotting picks a cell (aisle·side·x·y·z) ──► shuttle/crane stores the HU
order ─────► retrieve HU ──► lift/conveyor ──► goods-to-person station (pick/decant/count/QC)
│
HU returned ──► slotted again (anywhere) · empties parked deep
Vendor-neutral & open
One uniform device contract behind adapters — add a vendor without re-architecting. The storage logic is open and configurable, not a locked-in integrator black box.