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.
Ein LiDAR über dem Verladegleis erkennt, zählt und ortet jeden Güterwagen, sobald er hält — sechs Deckel-Mittelpunkte, Waggonnummer, Roboterwagen-Flag, alles aus einem einzigen Scan in unter zwei Sekunden. Treibt die automatische Beladung, schreibt ein Material-Log pro Waggon ins ERP/MES. Unsere produktive Bahnwagon-Pipeline, heute im Einsatz.
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.
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.
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.
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.
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.Waggon-Erkennung KI ist eine Wahrnehmungs-Pipeline, die einen einzelnen 3D-LiDAR-Scan eines Güterwagens an der Verladestation verarbeitet und die Waggonposition, die identifizierenden Merkmale (Deckelzahl, Deckel-Mittelpunkte, vorausfahrender Roboterwagen falls vorhanden) sowie die Waggonnummer-Zuordnung zurückgibt — treibt die automatische Verladeautomatisierung und schreibt das Material-Log pro Waggon ins ERP.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.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.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.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.Den Schmerz kennt jeder Industriebetrieb, der Schüttgut auf die Schiene verlädt — Salzbergwerke, Schrott-Recycling, Schüttgut-Höfe, Düngemittel-Depots. Güterwagen rollen einzeln unter die Verladeeinrichtung, und die Verladesteuerung muss exakt wissen, wo jeder Waggon steht, wie viele Kammern er hat und wann er voll ist. Heute machen Bediener das per Augenmaß: über die Schiene gebeugt, Deckelpositionen geschätzt, Waggons auf dem Klemmbrett abgehakt. Es ist langsam, fehleranfällig und gnadenlos — der falsche Deckel wird beladen, der falsche Waggon abgerechnet, das ERP passt nicht zum tatsächlichen Hof-Zustand, und die Schicht verliert eine Stunde damit, Papier gegen Realität abzugleichen.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.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.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.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.Unser Ansatz ist ein LiDAR, montiert über dem Verladegleis. Sobald ein Waggon hält, nimmt der Sensor einen einzigen Scan auf; eine sechsstufige zustandslose geometrische Pipeline — Ground-Crop → Deck-Z-Schätzung → Höhenband-Maskierung → Deckel-Clustering → Waggon-Bounds → Tracker-Zustandsautomat — liefert die exakte 3D-Position des Waggons, alle Deckel-Mittelpunkte, den vorausfahrenden Roboterwagen falls im Bild und eine Sequenznummer. Die Geometriestufen sind im Prototyp reines NumPy und scipy und portieren sauber nach C++/C# für den finalen Anlagencontroller. Der mittlere Mittelpunkts-Fehler bleibt unter 5 cm gegenüber handgelabelter Ground Truth; der gesamte Scan wird in unter zwei Sekunden auf Standard-Hardware verarbeitet.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.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.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.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.Das Projekt geht aus unserem Hub-Service Industrielle Objekterkennung hervor und ist der eine Anwendungsfall, in dem wir bereits ausgeliefert haben — die Bahnwagon-Deckelerkennung läuft produktiv bei einem norddeutschen Recycling- und Bergbaubetrieb. Derselbe geometrische Ansatz funktioniert unabhängig davon, ob der Waggon Stein, Salz, Schrott oder Getreide trägt; nur die Kalibrierungskonstanten in config.yaml ändern sich, ein Modell-Retraining ist nicht nötig.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.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.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.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.
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. Die Bahnwagon-Deckelerkennung läuft heute produktiv — sechs Deckel-Mittelpunkte, Fehler unter 5 cm, Antwort in zwei Sekunden, Bediener-UI in Electron + Vue 3 + Three.js. 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. 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. 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. 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.
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. Ein LiDAR, montiert über dem Verladegleis, IP65+-Gehäuse, scannt jeden Güterwagen, sobald er an der Verladeposition hält. Keine Kamera nötig, kein zweiter Sensor zu kalibrieren. Läuft durch Staub, Schnee, Nachtlicht und den Dampf, der von warmem Schüttgut aufsteigt. Ein Scan pro Waggon-Stopp, gespeichert auf lokalem Speicher mit pro-Waggon-UUID für den Audit-Trail. 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. 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. 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. 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.
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. Reines NumPy und scipy im Python-Prototyp, portiert direkt nach C++/C# für den Anlagencontroller. Sechs zustandslose Stufen: Ground-Crop, Deck-Z-Schätzung, Höhenband-Maskierung, Deckel-Clustering, Waggon-Bounds, Tracker-Zustandsautomat. Läuft in unter zwei Sekunden auf Standard-Hardware. Keine GPU nötig, kein Modell-Retraining bei Waggon-Klassen-Wechsel — Kalibrierung liegt in config.yaml. 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. 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. 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. 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.
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. Waggon-ID, Deckel-Koordinaten und Material-Zuordnung schreiben zurück per OPC UA oder REST — gleicher Waggon-Stopp, bevor der nächste Zug einfährt. Die Verladesteuerung liest echte Waggonpositionen statt Bediener-Schätzungen vom Klemmbrett. Fehl-Routings werden markiert, bevor der Deckel öffnet; das ERP-Material-Log passt zum Hof-Zustand am Schichtende. 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. 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. 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. 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.
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. Die Architektur ist absichtlich langweilig. Drei lose gekoppelte Stufen, jede einzeln testbar, jede einzeln tauschbar, wenn der Bahnbetreiber die Waggon-Klasse ändert oder die Verladeposition verschiebt. Gebaut auf demselben Stack, den wir für unsere gesamte Wahrnehmungs-Arbeit nutzen: NumPy, scipy, PCL, Open3D. 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. 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. 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. 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.
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. Eine einzige LAS-Datei pro Waggon-Stopp — typisch über eine Million Punkte über das Waggon-Deck, die Deckel und einen Streifen Gleis links und rechts. Der LiDAR nimmt den Scan auf, sobald der Waggon an der Verladeposition zum Stehen kommt. Die Rohpunktwolke schreibt auf lokalen Speicher mit pro-Waggon-UUID für Audit-Trail und Re-Labelling. 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. 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. 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. 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.
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. Ground-Crop entfernt Gleis und Schotter. Deck-Z-Schätzung lokalisiert die Waggon-Deck-Ebene. Höhenband-Maskierung isoliert die Deckel-Schicht. Deckel-Clustering liefert die sechs Mittelpunkte. Waggon-Bounds gibt die 3D-Box. Der Tracker-Zustandsautomat vergibt die Sequenznummer und markiert den vorausfahrenden Roboterwagen, falls im Bild. Der mittlere Mittelpunkts-Fehler bleibt unter 5 cm gegen handgelabelte Ground Truth. 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. 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. 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. 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.
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. Ausgabe pro Waggon: JSON-Datensatz mit Waggon-ID, Deckel-Mittelpunkten, Material-Zuordnung und Audit-Bildern. Schreibt ins ERP, MES oder Verladesteuerungs-System per OPC UA oder REST. Die Bediener-Oberfläche in Electron + Vue 3 + Three.js zeigt die Live-3D-Punktwolke, die Zug-Übersicht und einen CSV-Export für das Schicht-Log. 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. 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. 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. 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. Alle drei Stufen laufen auf einem Industrie-PC an der Verladestation — Python-Prototyp für die Entwicklung, C++/C#-Portierung für den finalen Controller. Keine Cloud-Abhängigkeit, keine externe API, kein Lizenz-Heimruf. Der Code gehört Ihnen bei der Übergabe. 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. 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. 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. 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.
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. Jeder Waggon-Stopp liefert eine exakte 3D-Bounding-Box, die sechs Deckel-Mittelpunkte, eine Waggon-Sequenznummer und ein Roboterwagen-Flag. Geht direkt in den Zustandsautomaten der Verladesteuerung, so dass die nächste Verladebewegung eindeutig ist. Dieselbe geometrische Ausgabe, die die Bahnwagon-Pipeline heute produktiv erzeugt. 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. 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. 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. 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.
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. Material-Typ, Tonnage und Deckel-Aufschlüsselung schreiben pro Waggon ins ERP/MES — gleiche Schicht, bevor der Zug abfährt. Kein Klemmbrett-Abgleich mehr, keine Falsch-Abrechnung mehr. Das Hof-Management-System sieht die tatsächlich beladene Masse statt der Bediener-Schätzung. 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. 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. 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. 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.
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. Vue 3 + Three.js Desktop-App für den Verladestations-Bediener: Live-3D-Punktwolke, Übersicht pro Waggon, Zug-Liste, CSV-Export, Waggon-für-Waggon-Audit. Bereits produktiv beim Bahnwagon-Kunden im Einsatz — übergeben mit vollem Quellcode. Läuft lokal auf dem Anlagen-PC; keine Browser-Cloud-Abhängigkeit. 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. 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. 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. 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.
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. Jede Verladestation hat ihre eigene Waggon-Klasse, ihre eigene Gleisgeometrie, ihre eigene bestehende Steuerung. Ein generischer Detektor löst den generischen Fall; Ihre Verladeposition ist nicht der generische Fall. 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. 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. 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. 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.
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. Jede Waggon-Klasse ist anders — sechs Deckel, acht Deckel, Stirn-Lader, Oben-Lader, mit oder ohne vorausfahrenden Roboterwagen. Wir kalibrieren die geometrische Pipeline auf Ihren Waggons an Ihrer Verladeposition und re-kalibrieren, wenn der Bahnbetreiber die Flotte tauscht. Kalibrierungs-Konstanten liegen in config.yaml — kein Retraining, keine GPU. 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. 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. 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. 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.
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. Derselbe geometrische Ansatz funktioniert auf Stein, Salz, Schrott und Getreide — nur die Toleranzen im Deckel-Clustering ändern sich. Kein ML-Retraining bei Material-Wechsel; die Pipeline kümmert sich um Waggon-Geometrie, nicht um den Inhalt des Deckels. Genau diese Eigenschaft macht das Bahnwagon-Projekt anlagen-übergreifend portabel. 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. 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. 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. 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.
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. Die geometrischen Stufen sind zustandslos. Zustand liegt nur im Tracker — der Komponente, die Waggon-Sequenznummern vergibt und den vorausfahrenden Roboterwagen erkennt. Saubere Grenze, einfache Integration in Ihren bestehenden Hof-Management-Zustand, einfach tauschbar, wenn sich die Verladesteuerungs-Software ändert. 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. 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. 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. 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.
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. Sie besitzen den Python-Prototyp, die C++/C#-Portierung, die Kalibrierungs-Dateien und die Electron-Bediener-Oberfläche nach der Übergabe. Wir dokumentieren das System, schulen Ihr Team und gehen sauber raus. Keine Black Box, keine monatliche Pro-Waggon-Lizenz, kein Servicevertrag, aus dem Sie nicht rauskommen. Standard-Bedingungen siehe unsere FAQs zu IP und Zusammenarbeits-Modell. 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. 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. 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. 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.
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. Die Fragen zum Zusammenarbeits-Modell, die wir von jedem Verladestations-Kunden hören, der einen Custom-Perception-Build erwägt. Brauchen Sie etwas Spezifischeres zu Ihrer Waggon-Klasse? Sprechen Sie uns an. 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. 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. 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. 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.
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. Sensor-Setup, Beispiel-Scans, Ihre Waggon-Klasse, Ihre Verladesteuerungs-Schnittstelle — alles, was Sie haben. Wir kommen innerhalb von zwei Werktagen mit einer ehrlichen ersten Einschätzung und einem Festpreis-Angebot für den Discovery-Workshop zurück. 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. 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. 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. 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.