Rückmeldung auf Modelleisenbahn



  • Hallo zusammen,

    als kleiner Junge hatte ich - wie vielleicht auch einige andere von Euch - mal eine Modelleisenbahn von Märklin. Als ich begann mich für andere Dinge z interessieren (keine weiteren Angaben was das gewesen sein könnte), wanderte die Anlage feinsäuberlich in Kisten verpackt auf den Speicher. Nachdem ich nun verheiratet bin, im eigenen Haus wohne und das Leben langsam wieder ruhiger wird, habe ich auch nochmal an die Modelleisenbahn gedacht. Schnell musste ich feststellen, dass die Technik auch an Märklin nicht vorbei gegangen ist.
    Da ich als Dipl. Informatiker sehr technikaffin bin, habe ich nach und nach die gesamte Anlage nun digitalisiert und auf den aktuellen Stand der Technik gebracht. Ich kann alle Weichen über den PC bedienen, ich habe ein Gleisbild und kann mehrere Züge gleichzeitig auf der Anlage steuern. ABER - vor einem Schritt habe ich mich bisher gescheut: Das gesamte Thema der Rückmeldung von Zugpositionen. Üblicherweise wird das durch Kontaktstrecken realisiert welche eine Besetztmeldung an die Steuerzentrale liefern oder den Abschnitt als "Frei" definieren. Dazu müssen Kontakte bei fast allen Gleisen durchtrennt werden und jede Menge Kabel gezogen werden. Dabei tut sich mein Informatiker-Herz noch sehr schwer. Ich habe mir zu dem Thema schon viele Gedanken gemacht und auch schon viel getestet. Meine erfolgversprechendste Idee kann ich leider mangels Programmierkenntnissen selbst nicht umsetzen, aber ich würde Sie gerne hier vorstellen und eine Diskussion anregen... im besten Fall sogar eine kleine Gruppe von Interessenten begeistern und das auch umsetzen möchten.
    Die Idee: Positionserkennung der Züge mittels Kamera. Eine Kamera hängt über der Modelleisenbahn und erfasst in einem definierten Intervall Bilder. Über die Subtraktion zweier aufeinanderfolgender Bilder sollten alle Bewegungen erkennbar sein und die Position der Züge durchaus nachvollziehbar. Verbindet man das nun mit einem Raster der definierten Rückmeldestrecken sollte man eigentlich die Steuerzentrale mit den benötigten Informationen über besetzte Gleisabschnitte versorgen können.
    Wie ist Eure Meinung zu dem Thema?? Würde mich sehr freuen den einen oder anderen fitten Programmierer begeistern zu können. Ich freue mich über Eure Kommentare.


  • Mod

    vielleicht noch einfacher: eine (IR)Diode an jedem zug (gesteuert) blinken lassen. eine infrarot kamera drueber und auswerten wo es auf befehl aufleuchtet.

    mit nem raspberry pi ginge das super einfach.
    1. bild capturen lassen (da gibt es ein commandline tool was es macht),
    2. das bild einlasen via z.b. https://github.com/nothings/stb/blob/master/stb_image.h
    3. das bild z.b. 5x5 pixel durchgehen und die hellste stell als position nehmen (oder eben zwei bilder und delta).



  • Hi Raspo,

    an etwas vergleichbares hatte ich auch schon gedacht, allerdings wollte ich soweit wie möglich vermeiden etwas an den Zug zu bauen. Von Vorteil dabei wäre natürlich, dass man evtl. sogar den Zug genau identifizieren kann.

    Noch eine kleine Anmerkung: Natürlich funktioniert das Ganze nicht bei Schattenbahnhöfen oder in Tunneln. Dort muss man natürlich entweder klassisch rückmelden oder eine andere Alternative finden. Gute Erfahrungen habe ich in dem Zusammenhang mit Ultraschallsensoren am Rasberry PI gemacht.



  • Hallo,

    je nachdem wie hoch die Qualitätsansprüche ist die Aufgabe einfach bis sehr schwierig.

    Also gehen wir mal vom ersten aus 😉
    Die Idee mit der Kamera wäre mir auch als erstes in den Sinn gekommen. Mit dem RPi und einer billigen Webcam kann man bereits ganz brauchbare Ergebnisse erzielen. Je besser die Kamera desto besser das Ergebnis, da du weniger Rauschen per SW wegrechnen musst.

    Falls die Installation fix ist, wirds noch einfacher:
    dann könntest du im Bild einmal die Strecke einzeichnen, so dass du weißt, wo ein Zug überhaupt sein kann. Das heißt du definierst einige Punkte und verbindest diese Punkte (automatisch) mittels Linien. Nur entlang dieser Linien musst du nun den Zug suchen. Außerdem kannst du dann auch genau ausgeben, wo sich der Zug befindet, also z.B. zwischen Punkt n und n+1, und zwar bei x% der Strecke.

    Zur Erkennung selbst:
    Die Differenztechnik die du vorschlägst ist durchaus brauchbar, zumindest solange der Zug fährt (falls er steht: dann verschwindet er nach 2 Frames wieder weil sich der Zug selbst wegsubtrahiert).
    Eine etwas komplexere, aber immer noch einfache Methode wäre es, die Strecke (ohne Zug) zu "lernen", das heißt es wird über x Frames je Pixel eine Statistik erstellt (Mittelwert des Pixels, Varianz der Pixels).
    Später, wenn der Zug dann fährt, brauchst du nur noch je Pixel überprüfen, ob der aktuelle Pixelwert größer/kleiner Mittelwert+-k*Varianz ist, wenn ja befindet sich dort der Zug (Ausgabepixel weiß), wenn nein eben nicht (Ausgabepixel schwarz).
    Schließlich hast du eine Menge an weißen Pixel. Du musst nun noch größere Regionen finden, welche einen Zug darstellen. Einzelne Störungen wirst du immer haben, d.h. eben nur größere Regionen verwenden.

    Wie umsetzen:
    wie schon gesagt mit dem RPi, einer Webcam, sowie der Bildverarbeitungsbibliothek OpenCV. Als Sprache bietet sich C++ oder Python an (je nach Vorliebe).
    OpenCV bietet alles, was du brauchst: Bilder von Webcam einlesen, diverse Algorithmen, einfache Möglichkeit zum Zugriff und Manipulation von Einzelpixel, ...

    Übrigens: es sollte reichen, alle Berechnungen auf Grauwertbildern durchzuführen. Das macht einiges einfacher.


  • Mod

    muestest du nicht eigentlich anhand der weichenstellung, geschwindigkeit und fahrtdauer der zuege genau wissen wo diese sind? ein/zwei kleine kalibrierungsstellen (z.B. lichtschranke) an z.b. Bahnhoefen sollten dann zur korrektur reichen.
    das wuerde dann auch in tunnel funzen.



  • optische sensoren kosten doch nix ...
    da kannst doch locker mehrere verbauen.
    Für ne simple bilderkennung im Sinne von Gleisbelegt Erkennung reicht die Quali doch allemal.
    Mit mehreren kriegst auch deinen Schattenbahnhof überwacht ...

    Selbst wenn mehrere Raspis / Arduinos verbauen müsstest, um den SteuerPC IO Technisch nicht zu überlasten, würde sich das preislich noch im Rahmen halten gegenüber dem kommerziellen Wert der Schienenfahrzeuge ^^

    Ciao ...



  • Alles in allem ist das was da beschrieben wird genau das, was ich gerne umsetzen würde, aber leider mangels Programmierkenntnissen nicht kann 😞

    Gäbe es denn hier vielleicht jemanden der Interesse hat diese Herausforderung programmiertechnisch an zu gehen??


Log in to reply