Automation · Goods-to-person Built
At a goods-to-person station the operator never travels — handling units come to them. openWCS presents a single stock HU and lights up every order destination that SKU is needed at, so one unit fills many orders in a single pass. That batch pick-and-put is built today.
The station model
A station is a small graph: STOCK nodes where a stock HU is presented, and ORDER destination nodes where puts land. Allocation feeds the station open demand — for each destination, which SKU and how many to put there.
A station has at least one STOCK node — the position where a retrieved stock HU is presented to the operator. From here its contents are distributed across the order destinations.
Each ORDER node is a put destination with an optional put-light and a currently bound order HU. It's where the operator places the units this order needs from the presented stock HU.
Demand is posted against an ORDER node — an order line, a SKU and a quantity to put there. This is the REST seam where allocation and order-management feed real work into the station.
How it works
The pick-and-put work cycle is a tight loop: present a stock HU, get a put-list, confirm each put. One presented HU serves as many destinations as need that SKU — that's the goods-to-person batch.
Presenting a stock HU (SKU + qty) matches it against open demand across the station's ORDER nodes and greedily fills most-needed-first, emitting a put-list of instructions.
Each put instruction names a destination node, the resolved order/HU, its put-light and the qty. The operator works the lit cubbies in turn — one stock HU serving the whole batch of orders.
Confirming a put decrements the cycle's remaining stock and the destination's demand. A fully-putted destination completes; a cycle with no open puts left completes too.
Confirming a smaller qty is a short put — the instruction goes SHORT and the destination's remaining demand stays OPEN for a later cycle, so nothing is silently lost.
If the presented qty can't cover all demand, the surplus simply stays OPEN for the next stock HU of that SKU — the batch continues across however many units it takes.
Per-endpoint role-based access (toggleable): viewing demand and cycles needs ORDER_VIEW, while present and confirm need DEVICE_OPERATE — the operator role on the floor.
Two physical worlds
A station's mode documents how its ORDER destinations are physically realised — but the execution engine is identical. The same present / put-to-light / confirm cycle drives both, so you don't maintain two pickers.
Order HUs sit in fixed or conveyor-fed locations at the station — the classic put-to-order layout. The operator puts into the order HU presented at each destination, conveyor delivering and clearing them.
ORDER destinations are cubbies in a lit rack — the typical goods-to-rack realisation for AMR fleets. Each cubby is an ORDER node with its own put-light; the same engine drives the puts.
Inbound queue & station control
A station's inbound queue tracks every handling unit routed to it — whether it's still on its way or waiting for the operator. Deactivating a station drains it cleanly without losing any queued work.
Conveyor HUs enter the queue as IN_TRANSIT with a computed arrival time (distance ÷ 0.5 m/s). They flip to QUEUED when due — the operator sees only what's ready to work.
ASRS, AMR and AutoStore HUs arrive immediately QUEUED. The operator console auto-presents the head QUEUED tote — no manual selection needed; completing the cycle marks the entry DONE and advances to the next. The full queue is accessible as a fold-out drawer on the right edge of the console.
Deactivating a station stops new HUs from being routed in while the operator finishes the existing queue. Re-activating reopens it — useful for shift changes or maintenance windows.
When a count tote arrives at a STOCK_COUNT station, the operator console switches to a blind-count panel: enter the quantity you see — no system figure shown. Two counts that agree confirm a variance and post a StockAdjusted event to the host automatically.
At a glance
allocation ─► open demand (per ORDER node: order-line · SKU · qty)
│
present stock HU ─► openWCS gtp ── match SKU, fill most-needed-first ─► put-list
│ (destination · order/HU · put-light · qty)
put-to-light ─► confirm put ─► decrement stock + demand
│ short put → instruction SHORT · demand stays OPEN
│ destination fully putted → COMPLETED
▼
cycle COMPLETED when no OPEN puts remain · surplus rolls to next HU
Built & open
The station engine is open source and records the put-lights and HUs it drives. Physical light hardware and retrieving HUs to the station are adapter / flow-orchestrator follow-ups — the batch logic is live today.