6 mei 2025
Leestijd 9 min
IT-problemen oplossen: Deel 2. Voorbeeld uit de echte wereld - Treinaankomstdetectie revolutioneren
<span id="hs_cos_wrapper_name" class="hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_text" style="" data-hs-cos-general-type="meta_field" data-hs-cos-type="text" >IT-problemen oplossen: Deel 2. Voorbeeld uit de echte wereld - Treinaankomstdetectie revolutioneren</span>
Share this via:

In Deel 1. De wetenschappelijke methode onderzochten we de toepassing van de wetenschappelijke methode bij het oplossen van zakelijke uitdagingen. In deel 2 duiken we in een probleem uit de praktijk en laten we zien hoe de wetenschappelijke methode bij ACA wordt gebruikt om een revolutie teweeg te brengen in de detectie van treinaankomsten voor een klant.

In deel 1. De wetenschappelijke methode onderzochten we de toepassing van de wetenschappelijke methode bij het oplossen van zakelijke uitdagingen. In deel 2 duiken we in een probleem uit de praktijk en laten we zien hoe de wetenschappelijke methode bij ACA wordt gebruikt om de detectie van treinaankomsten voor een klant revolutionair te verbeteren.

De uitdaging: De aankomst van treinen met precisie detecteren

De reis begon met de vraag van een klant: "Kunnen we binnen een paar seconden nauwkeurig detecteren of treinen aankomen en vertrekken op een perron?". Om deze vraag te beantwoorden, pasten we de iteratieve aanpak van de wetenschappelijke methode toe, die vijf belangrijke stappen omvat:

  1. Identificeer en analyseer het probleem
  2. Vorm een hypothese
  3. Experimenten uitvoeren om de hypothese te testen
  4. Gegevens analyseren
  5. Conclusie trekken uit de resultaten

Om een vraag als de bovenstaande op te lossen, zijn meestal een paar iteraties nodig om tot een volledig bevredigend resultaat te komen.

Iteratie 1: Waar beginnen we?

Stap 1: Het probleem identificeren en analyseren

De onderzoeksvraag luidt als volgt: "Is het mogelijk om de aankomst en het vertrek van een trein op een perron te detecteren met de tijdresolutie van enkele seconden met behulp van een smartphone?". In de eerste stap is het belangrijk om het probleem te analyseren: het begrijpen van de eigenschappen van aankomst en vertrek. Rekening houdend met de beperkingen van het project, kunnen deze eigenschappen worden gemeten met behulp van de GPS-functionaliteit in een smartphone. Bovendien is de snelheid nauwkeurig beschikbaar in de ontvangen gegevens, omdat deze wordt gemeten met behulp van de dopplerverschuiving van de draaggolffrequenties.

In dit geval konden we vertrouwen op bestaande kennis en aannames, wat een solide uitgangspunt voor probleemoplossing bood. Als er geen bekende waarheden bestaan, moet je vooronderzoek doen. In dit geval konden we ons baseren op eerder werk.

Stap 2: Vorm een hypothese

Onze hypothese: "Als we de positie en snelheid met eenGPS verzamelen, kunnen we de aankomst en het vertrek op een platform betrouwbaar bepalen op basis van de positie- en snelheidskenmerken en met een goede tijdresolutie."
De hypothese is meetbaar, wat belangrijk is om een experiment op te zetten waarbij gelabelde gegevenspunten vergeleken kunnen worden met de voorspelde gegevens.

Stap 3: Experimenten uitvoeren om de hypothese te testen

In stap 3 zetten we een proof of concept op dat zich richt op essentiële gegevens en de voorgestelde oplossing om onnodige details te vermijden voordat we de hypothese bewijzen. We ontwikkelden een app die aGPS-info en gelabelde snelheid opslaat voor rijden of stilstaan. Omdat we de beperkingen van aGPS kenden, pasten we filters toe die gebruik maakten van versnellingsmetergegevens, treinbeperkingen en voorspelde routes, waardoor de locatienauwkeurigheid aanzienlijk verbeterde. Dit resulteerde in een aanzienlijke verbetering van de locatiegegevens.

Stap 4: Gegevens analyseren

De resultaten van de experimenten:

  • Succesvolle detectie van aankomst en vertrek op een perron
  • Uitstekende systeemstabiliteit
  • Onbetrouwbare snelheid door inconsistente beschikbaarheid op basis van herkomst locatiegegevens
  • Onvoldoende tijdresolutie, resulterend in onvoorspelbare locatie-uitvoer.

Stap 5: Conclusie over de resultaten

Ondanks de goede aanvankelijke resultaten voldeed de voorgestelde oplossing niet aan de essentiële vereiste voor tijdresolutie. Het bouwen van een systeem met een consistente outputsnelheid wordt onhaalbaar tijdens het rijden in een enorme kooi van Faraday die signalen kan blokkeren.

Iteratie 2: Terug naar de tekentafel

Stap 1: Het probleem identificeren en analyseren

De eerste iteratie voldeed niet aan de verwachtingen, maar dat ontmoedigde ons niet. We realiseerden ons de onoplettendheid in tijdresolutie. Bovendien pasten we in die tijd bij ACA met succes nieuwe technieken toe op een soortgelijk probleem.

De versnellingsmeter leverde betrouwbare gegevens en door deze te combineren met de gyroscoop en magnetometer verkregen we gerichte versnelling. Omdat we verschillende versnellingspatronen verwachtten voor verschillende vervoerswijzen en -toestanden, zoals stilstaan en rijden, besloten we een Naïve Bayes-algoritme te gebruiken. Dit algoritme voor leren onder toezicht creëert een probabilistische classificator die stilstand en rijden voorspelt op basis van gemeten eigenschappen.

Stap 2: Vorm een hypothese

Er ontstond een nieuwe hypothese: "Naïve Bayes classifier kan worden gebruikt om onderscheid te maken tussen het versnellingspatroon van lopen en de superpositie daarvan met een versnellingspatroon van een trein in beweging."

Stap 3: Experimenten uitvoeren om de hypothese te testen

Er werd een applicatie gemaakt om gegevens te verzamelen die werden gelabeld met de juiste toestand. Vervolgens trainden we de Naïve Base-klassificator met behulp van verschillende gegevenskenmerken, zoals maximum, minimum, gemiddelde, norm, standaardafwijking, afstand tot het platform en minimaal vereiste snelheid.

Stap 4: Gegevens analyseren

Meerdere classifiers werden getraind, getest en beoordeeld met behulp van verwarringmatrices. De resultaten toonden aan dat rijden 94% van de tijd correct werd geïdentificeerd, maar dat stilstand slechts 48% van de tijd correct werd geïdentificeerd, waarbij de classificator stilstand in 52% van de gevallen ten onrechte als rijden bestempelde.

confusion matrix

Stap 5: Conclusie over de resultaten

De Naïve Bayes classificeerders hadden niet de vereiste nauwkeurigheid voor ons probleem. De kenmerken overlapten elkaar aanzienlijk, waardoor geen onderscheid kon worden gemaakt tussen stilstaan en rijden. Bovendien konden de classificeerders de voorbijgaande aard van aankomst en vertrek niet nauwkeurig vastleggen, waardoor verder onderzoek naar een oplossing nodig was.

Iteratie 3: Het draait allemaal om de verandering

Stap 1: Identificeer en analyseer het probleem

De vorige experimenten toonden aan dat snelheid en positie onvoldoende tijdsresolutie hadden en dat probabilistische modellen moeite hadden met de voorbijgaande aard van aankomst en vertrek. Nu we het belang van het voorbijgaande aspect inzien, is het duidelijk dat eigenschappen als snelheid of positie niet cruciaal zijn; in plaats daarvan is versnelling de sleutel. Aankomst kan worden gedefinieerd als een vertraging gevolgd door een periode zonder versnelling, terwijl vertrek een versnelling is die wordt voorafgegaan door een periode zonder versnelling.

Stap 2: Vorm een hypothese

Er werd een nieuwe hypothese geformuleerd: "Het is mogelijk om de voorbijgaande aard van aankomst en vertrek op een platform te gebruiken om de aankomst en het vertrek te detecteren met een goede tijdsresolutie en een goede nauwkeurigheid."

Stap 3: Experimenten uitvoeren om de hypothese te testen

Om ons te richten op het gebruik van versnellingsmeterdata voor aankomst- en vertrekdetectie, gebruikten we data van de vorige iteratie, waarbij we een nieuw onderzoeksdomein betraden met als doel een signaalanalysealgoritme te bouwen voor classificatie.

In de volgende stappen worden meerdere grafieken toegevoegd. De rode achtergrond geeft aan dat de trein op het perron stond, groen geeft aan dat de trein in beweging was.

  1. Kijk naar de gegevens:

    Bekijk de grafiek van het Y-kanaal van de versnellingsmeter. We kozen ervoor om de versnelling in eerste instantie niet te projecteren op de werkelijke as, om het in zijn ruwe vorm te houden en zo de benodigde rekenkracht te minimaliseren.
    Er was niet veel te vertellen aan ons programma met deze gegevens, het ziet er voornamelijk willekeurig uit.

    Magnitude Y

  2. Voer gegevensmanipulaties uit om de duidelijkheid te verbeteren:
    Snelheid blijft constant tijdens het rijden en stilstaan, maar aankomst en vertrek worden gekenmerkt door veranderingen in versnelling. Bij aankomst is er sprake van vertraging gevolgd door geen versnelling, terwijl er bij vertrek sprake is van versnelling na een periode van geen versnelling. Accumulatie van versnelling in de tijd laat trends zien die vergelijkbaar zijn met snelheid, maar met opmerkelijke veranderingen tijdens aankomst en vertrek, wat inzicht geeft voor interpretatie van het programma, hoewel verdere signaalverwerking noodzakelijk is.
    Gradient calculation
  3. Bereken de gradiënt:
    Om te voorkomen dat de oorspronkelijke gegevens worden opgehaald door de gradiënt uit de cumulatieve curve te halen, worden de gegevens extra gemanipuleerd. De cumulatieve curve wordt afgevlakt door middel van een voortschrijdend gemiddelde van één seconde. Op macroscopisch niveau behoudt de curve zijn uiterlijk, maar de ruis in de gegevens wordt verminderd. De resulterende grafiek, waarin voor de volledigheid alle drie de kanalen zijn opgenomen, wordt verkregen door de gradiënt te nemen.

  4. De gegevens opschonen:
    De huidige gegevens blijven ruisachtig en vormen een uitdaging voor de interpretatie van het programma. In stilstandgebieden (rode gebied) wordt minimale versnelling waargenomen, terwijl het rijgebied aanzienlijke fluctuaties vertoont. Dit weerlegt het idee van constante snelheid tijdens beweging, dat wordt toegeschreven aan treintrillingen en acceleratie/deceleratie. In tegenstelling tot het idee van constante snelheid, vergroot dit verschil tussen de toestanden de kans op het vinden van een haalbare oplossing, waarbij beide toestanden worden aangepakt in plaats van alleen de overgang tussen stilstand en rijden. Om de kwaliteit van de gegevens te verbeteren is een hoogdoorlaatfilter toegepast, dat drift (groene en blauwe curve niet gecentreerd rond 0) en elektronische ruis (constante frequentie in de groene curve) verwijdert. De resultaten zijn als volgt:
    Data clean up
  5. Teken van versnelling negeren:
    Om de richtinggevoeligheid van de versnelling te negeren, elimineren we de tekens en worden de kanalen gecombineerd door de absolute waarde te nemen en de drie kanalen bij elkaar op te tellen.Om de resterende ruis in de gegevens te verminderen, wordt een cut-off toegepast, waarbij onbelangrijke versnellingen worden genegeerd.
    sign of acceleration
    Met behulp van deze verwerkte gegevens wordt een eenvoudig algoritme bedacht voor het bepalen van aankomst en vertrek. Zoals eerder vermeld, wordt aankomst gekenmerkt door vertraging gevolgd door geen versnelling, terwijl vertrek versnelling is na een periode van geen versnelling. Dit onderscheid is duidelijk zichtbaar in de grafiek, waar +1 staat voor vertrek en -1 voor aankomst op het perron.
    sample count

Stap 4: Gegevens analyseren

De gegevensanalyse vond voornamelijk plaats tijdens het experiment. Vervolgens werd ons algoritme getest met ongebruikte gegevens, waarbij enkele fout-positieven werden gevonden, maar geen fout-negatieven. Dit vergemakkelijkt het optimaliseren van de gegevens. Hoewel gegevens niet uit het niets gegenereerd kunnen worden, helpt het combineren van metingen met aGPS-gegevens om valse positieven uit te filteren.

Stap 5: Concludeer op de resultaten

Het algoritme dat in deze iteratie van de wetenschappelijke methode werd ontwikkeld, bewees onze laatste hypothese.

"Het is mogelijk om de voorbijgaande aard van aankomst en vertrek op een platform te gebruiken om de aankomst en het vertrek te detecteren met een goede tijdresolutie en een goede nauwkeurigheid."

Conclusie: Een reis naar precisie

In deze blogpost hebben we het volledige proces beschreven om een complex probleem met precisie op te lossen. Door middel van iteraties, leren van mislukkingen en het weggooien van veronderstelde kennis, hebben we een betrouwbare oplossing gemaakt.
Het algoritme, dat bekende wiskunde combineert met aGPS-gegevens, kan nauwkeurig de aankomst en het vertrek van treinen op een perron detecteren met alleen een smartphone, met een tijdresolutie van minder dan 1 seconde.

Wilt u meer weten over onze bewezen methode voor het oplossen van IT-problemen?
Of bent u op zoek naar een ervaren partner voor app-ontwikkeling?


Stijn Huygh
Stijn Huygh
Solution Engineer, ACA Group
Contact us

Want to dive deeper into this topic?

Get in touch with our experts today. They are happy to help!

ACA mug mok koffie tas
Contact us

Want to dive deeper into this topic?

Get in touch with our experts today. They are happy to help!

ACA mug mok koffie tas
Contact us

Want to dive deeper into this topic?

Get in touch with our experts today. They are happy to help!

ACA mug mok koffie tas
Contact us

Want to dive deeper into this topic?

Get in touch with our experts today. They are happy to help!

ACA mug mok koffie tas