All work

Warehouse system

A tabletop warehouse that lights the cheapest route to the shelf you need.

When
Jul to Oct 2024
Kind
Inventory routing model
Role
Led about 90%: design, code, physical model, wiring, sensors
Stack
Arduino Uno, C++, 74HC595, IRremote, Dijkstra, Graph neural network

A tabletop warehouse that knows what's on its shelves and lights the cheapest way to fetch it. Seven shelves and an entrance sit on a board joined by paths of LEDs. Press a button on an infrared remote and the Arduino runs Dijkstra's algorithm and lights the route, one path at a time.

shelves and the entrance
7 + 1
weighted paths between them
10
74HC595 shift registers driving every LED
3
220 Ω resistors, all hand-soldered
18
On this page
  1. My part
  2. Weights that mean something
  3. Out of pins
  4. What the remote does
  5. Then a neural network
  6. In use: a retrieval

My part

This was a group project at FUTA. I did about 90% of it: the system design, the code, the physical model, the wiring and the sensors. The group wrote the reports.

Weights that mean something

A path isn't only a distance. Each path's weight blends three normalised factors in equal thirds: the travel distance, how fragile the stock on its shelves is, and what that stock is worth. Glass sits at 0.80 to 0.85 on the fragility scale, ceramic at 0.50 to 0.65, plastic at 0.25 to 0.55, so a route past glass costs more than its length alone.

The warehouse board with every shelf lit and the entrance-to-shelf-4 path glowing
Fig. 1All seven shelves stocked; the path to shelf 4 lit.
The board with a different lit route between shelves
Fig. 2A route lit after a query from the remote.
The board with another lit route
Fig. 3Another query, another route.

Out of pins

A button and an LED per shelf would have needed sixteen pins before a single path lit up. The remote replaced the buttons, and three daisy-chained shift registers drive every shelf and path LED from three Arduino pins. The LEDs along one path share a register output, so a path lights as a single piece.

The back of the board showing LED legs, green jumpers, resistors and white bus wires
Fig. 4The underside: every LED leg, jumper and resistor.
The board before the shelves were labelled
Fig. 5The board during the build.

What the remote does

Buttons 1 to 8 mark a shelf stocked or empty. Button 0 finds the nearest stocked shelf of plastic kitchenware, 9 the nearest ceramic, and play the nearest glass; the route lights edge by edge from the entrance.

Then a neural network

The second version put a small graph neural network on the Arduino itself. It learns each path's weight from the shelves' occupancy, category, position, fragility and cost: an input layer, four hidden neurons, and one output per edge, trained in fixed-point arithmetic five epochs at a time and refreshed every minute. Its predictions feed the same Dijkstra search.

Diagram of the neural network: five inputs, four hidden nodes, an edge-weight output
Fig. 6The network: shelf features in, an edge weight out.
Flow from shelf sensors through feature engineering and the network to pathfinding
Fig. 7Where the network sits between the sensors and the pathfinding.
Table of raw and transformed node features for every shelf
Fig. 8Each shelf's features, raw and scaled for fixed-point maths.

In use: a retrieval

A clerk needs glass tumblers. They press play. The Arduino searches from the entrance over the weighted paths and lights the route to the nearest stocked glass shelf, one edge after another. It isn't always the shortest route, because a path past fragile, valuable stock costs more to take.

When that shelf runs out, the clerk marks it empty with its button and asks again, and the board lights the next best route.

A worked example of the model in use.

BJ BisonNext project: Telecom tower operations