USE CASE · RAILCAR DETECTION

Railcar detection AI
at the loading station.

A LiDAR mounted above the loading track identifies, counts and locates every freight wagon as it stops — six lid centerpoints, wagon number, Roboterwagen flag, all from a single scan in under two seconds. Drives the automated loading sequence, writes a per-wagon material log into ERP/MES. This is our shipped Bahnwagon pipeline, in production today.

< 5 cm centroid error vs ground truth
< 2 s per scan, commodity hardware
Roboterwagen-aware leading control wagon detected
ERP / MES per-wagon log write-back
USE CASE  ·  Railcar detection · LiDAR perception at the loading station

Wagon position, lid count, sequence number — from a single scan.

Railcar detection AI is a perception pipeline that ingests a single 3D-LiDAR scan of a freight wagon at the loading station and returns the wagon position, its identifying features (lid count, lid centerpoints, the leading roboterwagen if present) and a wagon-number assignment — drives automated loading workflows and per-wagon material logs into ERP.

The pain shows up at every industrial plant that loads bulk material onto rail — salt mines, scrap recycling, bulk yards, fertiliser depots. Wagons roll under the loading equipment one by one, and the loading control system needs to know precisely where each wagon is, how many compartments it has, and when it is full. Today operators do this visually: peering over the rail, eyeballing lid positions, ticking wagons off on a clipboard. It is slow, error-prone and unforgiving — the wrong lid gets loaded, the wrong wagon gets billed, the ERP entry does not match the actual yard state, and the shift loses an hour reconciling paper against reality.

Our approach is one LiDAR mounted above the loading track. As each wagon stops, the sensor captures a single scan; a six-stage stateless geometric pipeline — ground crop → deck-Z estimation → height-band masking → lid clustering → wagon-bounds → tracker state machine — returns the wagon's exact 3D position, all lid centerpoints, the leading Roboterwagen if it is in frame, and a sequence number. The geometry stages are pure NumPy and scipy in the prototype and port cleanly to C++/C# for the final plant controller. Mean centroid error stays under 5 cm against hand-labelled ground truth; the whole scan is processed in under two seconds on commodity hardware.

This engagement descends from Industrial Perception AI and is the one use case where we already shipped — the Bahnwagon-Deckelerkennung pipeline runs in production at a north-German recycling and mining operation. The same geometric approach works whether the wagon carries rock, salt, scrap or grain; only the calibration constants in config.yaml change, no model retraining required.

„One scan, six lid centerpoints, wagon number, under two seconds — that is what the loading control wants to see."

The Bahnwagon-Deckelerkennung pipeline is in production today — six lid centroids, sub-5 cm error, two-second response, Electron + Vue 3 + Three.js operator UI.

Three stages

From wagon stop to ERP entry — three stages of the pipeline.

1 · LiDAR capture at the loading position

One LiDAR mounted above the loading track, IP65+ housing, scans every wagon as it stops at the loading position. No camera required, no second sensor to calibrate. Runs through dust, snow, night light and the steam that comes off warm bulk material. One scan per wagon stop, written to local storage with a per-wagon UUID for audit trail.

2 · Six-stage geometric pipeline

Pure NumPy and scipy in the Python prototype, ports straight to C++/C# for the plant controller. Six stateless stages: ground crop, deck-Z estimation, height-band masking, lid clustering, wagon-bounds, tracker state machine. Runs in under two seconds on commodity hardware. No GPU required, no model retraining when the wagon class changes — calibration lives in config.yaml.

3 · ERP / MES integration

Wagon ID, lid coordinates and material assignment write back over OPC UA or REST — same wagon stop, before the next train pulls in. The loading control system reads real wagon positions instead of operator clipboard estimates. Misroutes get flagged before the lid opens; the ERP material log matches the yard state by the end of the shift.

Pipeline architecture · #how-it-works

How the pipeline works — concretely.

The architecture is boring on purpose. Three loosely coupled stages, each one independently testable, each one swappable when the rail operator changes wagon class or relocates the loading position. Built on the same stack we use across all our perception work: NumPy, scipy, PCL, Open3D.

01

Scan capture

A single LAS file per wagon stop — typically a million-plus points covering the wagon deck, the lids and a strip of track on either side. The LiDAR captures the scan as the wagon comes to rest at the loading position. Raw point cloud writes to local storage with a per-wagon UUID for audit trail and re-labelling.

02

Six-stage geometric pipeline

Ground crop removes the track and ballast. Deck-Z estimation locates the wagon-deck plane. Height-band masking isolates the lid layer. Lid clustering returns the six centerpoints. Wagon-bounds gives the 3D box. The tracker state machine assigns a sequence number and flags the leading Roboterwagen if it is in frame. Mean centroid error stays under 5 cm against hand-labelled ground truth.

03

Per-wagon record write-back

Output per wagon: JSON record with wagon ID, lid centerpoints, material assignment and audit images. Writes into the ERP, the MES or the loading-control system over OPC UA or REST. The Electron + Vue 3 + Three.js operator UI shows the live 3D point cloud, the train summary and a CSV export for the shift log.

All three stages run on an industrial PC at the loading station — Python prototype for development, C++/C# port for the final controller. No cloud dependency, no external API, no licence dial-home. The code is yours at handover.

What you get

Three deliverables — from the same shipped pipeline.

Wagon position + identity

Every wagon stop returns an exact 3D bounding box, the six lid centerpoints, a wagon sequence number and a Roboterwagen flag. Drops directly into the loading-control state machine so the next loading move is unambiguous. Same geometric output the Bahnwagon pipeline produces in production today.

Per-wagon material log

Material type, tonnage and per-lid breakdown write into ERP/MES per wagon — same shift, before the train leaves. No more clipboard reconciliation, no more billing the wrong wagon. The yard-management system sees the actual loaded mass instead of the operator estimate.

Electron operator UI

Vue 3 + Three.js desktop app for the loading-station operator: live 3D point cloud, per-wagon summary, train list, CSV export, wagon-by-wagon audit. Already in production with our Bahnwagon customer — handed over with full source. Run it locally on the plant PC; no browser-cloud dependency.

Why custom

Why a custom build — not an off-the-shelf product.

Every loading station has its own wagon class, its own track geometry, its own existing control system. A generic detector solves the generic case; your loading position is not the generic case.

Plant-specific lid geometry calibration

Every wagon class is different — six lids, eight lids, end-loaders, top-loaders, with or without a leading Roboterwagen. We calibrate the geometric pipeline on your wagons at your loading position, and we re-calibrate when the rail operator rotates the fleet. Calibration constants live in config.yaml — no retraining, no GPU.

Payload-agnostic pipeline

The same geometric approach works on rock, salt, scrap and grain — only the lid clustering tolerances change. No ML retraining required when the material switches; the pipeline cares about wagon geometry, not what is inside the lid. This is the property that made the Bahnwagon project portable across plants.

Tracker as a separate state machine

The geometric stages are stateless. State lives only in the tracker — the component that assigns wagon sequence numbers and detects the leading Roboterwagen. Clean boundary, easy to integrate with your existing yard-management state, easy to swap when the loading control software changes.

IP ownership + handover

You own the Python prototype, the C++/C# port, the calibration files and the Electron operator UI at handover. We document the system, train your team and walk away clean. No black box, no monthly per-wagon licence, no service contract you cannot exit. See our FAQs on IP and engagement model for the standard terms.

FAQ

Questions about railcar detection AI.

The engagement-model questions we hear from every loading-station customer considering a custom perception build. Need something more specific to your wagon class? Ask us.

Industrial Perception AI

What does custom perception AI software cost? +
We don't publish list prices because every project is scoped against your data and your decision logic — but we work to three predictable tiers. Discovery & Assessment — a 1–3 day workshop, on-site or remote, fixed price in the low-four-figure range. You receive a written feasibility note, a recommended next step and (if applicable) a fixed-price quote for the follow-on project. Useful even if you don't then go ahead — many customers use the note to evaluate two or three vendors. Custom Pipeline / Tool — a 4–12 week project delivering a working perception pipeline (parser + algorithm + dashboard or OPC UA integration). Fixed scope, fixed price, you own the code at handover. Typical project size is in the mid-five to low-six-figure range depending on data volume, sensor count and integration depth. Long-term Partnership — a monthly retainer for ongoing development and on-call support. Sized to the team capacity you need (typically 0.5–2 FTE equivalent). Quarterly road-mapping included. All three tiers include source code, written documentation and a clean handover — no licence dependence on us. See our Industrial Perception AI service for the full engagement model.
How long does it take to build a custom perception pipeline? +
From signed contract to a working tool in production, expect 4–12 weeks for a standard custom-pipeline engagement. The spread is driven by three factors. Data readiness. If you already have labelled data or representative recordings, we start training in week 1. If we need to set up data collection, add a sensor, or label from scratch, the front end adds 1–3 weeks. Integration depth. A standalone dashboard with REST output is the fastest path — typically 4–6 weeks. OPC UA integration into a running control system, with interlocks, factory-acceptance tests and a customer change-management process, is closer to 8–12 weeks. Sensor count and site complexity. One LiDAR + one camera in a clean indoor environment is faster than a six-sensor outdoor portal with dust, snow and dynamic lighting. We scope the difference up-front in the Discovery workshop. For a faster first signal we recommend the Discovery & Assessment tier — 1–3 days, fixed price, written feasibility note within a week. See Industrial Perception AI for the full model.
Who owns the code and IP we pay you to build? +
You do. Our standard contract transfers full ownership of the project-specific code, model weights, training data (where the data is yours) and documentation to you on final acceptance. We don't keep a back-door licence and we don't lock you into a maintenance contract. What we retain is our pre-existing toolbox — reusable libraries, calibration utilities, generic data parsers, the OWL EYE® core — which we license to you, royalty-free, for use on the delivered tool. This is the same boundary that any reputable engineering firm draws: we bring the toolbox, you keep the deliverable. If you want a different IP arrangement — for example a joint patent on a novel algorithm, or a co-developed model that we both reuse with consent — we structure that explicitly in the project contract. Tell us up-front in the Discovery workshop. Full engagement details on our Industrial Perception AI page.
Can you use our existing cameras and LiDAR sensors? +
Yes — in most cases. Our toolchain is sensor-agnostic on the data layer. If your sensors deliver a standard format (PCD, LAS, E57 for point clouds; RTSP, GigE Vision, USB3 Vision for cameras) we can ingest them in a day. We've worked with Riegl, Livox, Faro, Hesai, Velodyne, Ouster, Basler, FLIR, Allied Vision and IDS cameras. We'll tell you honestly when the existing hardware isn't the right tool. Common cases where we recommend a replacement: - The existing LiDAR is too narrow (FoV or range) to cover the area you want classified — usually solved by repositioning before buying anything new. - The camera is auto-exposing on a high-contrast scene (sun + shadow at a gate), which breaks classification reliability — solved by switching to a manual-exposure industrial camera with HDR sensor. - The existing sensor's vendor lock-in (proprietary stream format, no documented SDK) makes integration cost more than a Livox replacement. We don't earn a margin on reselling hardware to you. If you do want us to source new sensors, we do that through our normal Hardware & products channel at list price. See Industrial Perception AI for how we scope it.

Send us a scan from your loading station.

A single LAS file from your loading position, a few photos of the wagon class, a description of your loading-control system — we come back within two business days with a written feasibility note and a fixed-price scope for the discovery workshop. Part of our Industrial Perception AI service.

info@sachtleben-technology.com +49 7831 969 22-190
Send us a message

Tell us about your loading station.

Sensor setup, sample scans, your wagon class, your loading-control interface — anything you have. We come back within two business days with an honest first assessment and a fixed-price scope for the Discovery workshop.

Company address (optional)Firmenadresse (optional)Adres firmy (opcjonalnie)Indirizzo azienda (opzionale)Adresse de la société (facultatif)Dirección de la empresa (opcional)Endereço da empresa (opcional)
Direct line Direktwahl Telefon bezpośredni Linea diretta Ligne directe Línea directa Linha direta
Mon — Fri · 08:00 – 17:00 CET Mo — Fr · 08:00 – 17:00 Uhr Pn — Pt · 08:00 – 17:00 CET Lun — Ven · 08:00 – 17:00 CET Lun — Ven · 08:00 – 17:00 CET Lun — Vie · 08:00 – 17:00 CET Seg — Sex · 08:00 – 17:00 CET
Email E-Mail E-mail Email E-mail Correo electrónico E-mail
Response within one business day. Antwort innerhalb eines Werktages. Odpowiedź w ciągu jednego dnia roboczego. Risposta entro un giorno lavorativo. Réponse sous un jour ouvré. Respuesta en un día laborable. Resposta em um dia útil.
Headquarters Unternehmenssitz Siedziba główna Sede principale Siège social Sede central Sede
Sachtleben Technology GmbH
Tresdorf 6
24238 Mucheln
Germany Deutschland Niemcy Germania Allemagne Alemania Alemanha
Last updated: