Intralogistics
Pallet Inspection with Machine Vision
Challenge
At a manufacturer, the pallet account regularly failed to reconcile between target and actual. Pallets were counted by hand, barcodes typed in manually, and reconciliation with the ERP was error-prone and time-consuming.
Solution
We developed an inspection system that captures pallets via barcode and QR recognition and reconciles them automatically against ERP data. Over three generations it grew from a desktop database application to a Flutter app with web dashboard and finally to a camera gantry with motorised axes and a vision server.
Result
Target/actual reconciliation now runs automatically with a live dashboard. Instead of manual counting, the camera gantry captures the codes itself, and differences to the ERP are visible immediately.
Starting point
In intralogistics, pallets are an account of their own: what goes in and out has to add up. At the customer, counting and reconciliation were manual, with lists, typed-in barcodes and regular deviations from the ERP. The question was not whether this could be automated, but how to introduce it step by step without disrupting daily operations.
Generation 1: Database and desktop app (2023)
The first step was a database with a desktop application in which barcodes are captured as a list and checked against the target stock. Deliberately simple, but already with a clean data model so the later stages could build on it.
Generation 2: Mobile app and web dashboard (2024)
With the second generation, capture moved to the smartphone: a Flutter app for scanning right at the storage location and a web dashboard for analysis. The target stock arrives via CSV import from the ERP, and reconciliation happens automatically. Typing in barcodes was history.
Generation 3: Camera gantry with vision server (2026)
The third generation takes scanning off people’s hands too. A camera gantry travels along the pallet: the X axis is driven by a BLDC motor with SimpleFOC, controlled by an ESP32 over WebSocket; the Z axis uses a stepper motor from the drilling unit project. An Android app based on CameraX handles image capture and talks to the axis controller via USB serial.
A Python/FastAPI server performs the image recognition, reconciles the detected codes with the ERP data and shows the result on a live dashboard. Deviations appear immediately, not at month end.
What the customer gets
Each generation was usable on its own and solved a concrete pain point. The system is built on standard components and open software, so it can be developed further in-house. For businesses with similar counting problems, the same approach transfers to containers, tools or bins.