MOBIELE APPSREVOLUTIE IN DE DETECTIE VAN TREINAANKOMSTEN
15/12/2023 • Stijn Huygh

IT Problem-Solving: Deel 2. Voorbeeld uit de Praktijk - Revolutie in de detectie van treinaankomsten

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 reëel probleem uit de praktijk en laten we zien hoe de wetenschappelijke methode bij ACA wordt gebruikt om de detectie van treinaankomsten voor een klant radicaal te verbeteren.

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 reëel probleem uit de praktijk en laten we zien hoe de wetenschappelijke methode bij ACA wordt gebruikt om de detectie van treinaankomsten voor een klant radicaal te verbeteren.

De Uitdaging: Treinaankomsten met Precisie Detecteren

Onze reis begon met de vraag van een klant: "Kunnen we met een nauwkeurigheid van enkele seconden de aankomst en het vertrek van treinen op een perron detecteren?" Om dit aan te pakken, hebben we de iteratieve benadering van de wetenschappelijke methode toegepast, die vijf belangrijke stappen omvat:

  1. Identificeer en analyseer het probleem
  2. Formuleer een hypothese
  3. Voer experimenten uit om de hypothese te testen
  4. Analyseer de data
  5. Trek conclusies uit de resultaten 

Het oplossen van een vraag zoals die hierboven vergt meestal een paar iteraties om tot een volledig bevredigend resultaat te komen.

Iteratie 1: Waar Beginnen We Eigenlijk?

Stap 1: Identificeer en Analyseer het Probleem

De onderzoeksvraag luidt als volgt: "Is het mogelijk om de aankomst en vertrek aan het perron te detecteren gebruikmakend van een smartphone met een tijdsresolutie van een aantal seconden?" 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 projectbeperkingen kunnen deze eigenschappen worden gemeten met behulp van de GPS-functionaliteit in een smartphone. Bovendien is de snelheid nauwkeurig beschikbaar in de ontvangen gegevens, aangezien deze wordt gemeten met behulp van de Dopplerverschuiving van de draaggolffrequenties.

In dit geval kunnen we vertrouwen op gevestigde kennis en veronderstellingen, wat een solide startpunt biedt voor het oplossen van problemen. Als er geen bekende waarheden bestaan, moet je eerst voorbereidend onderzoek doen, in dit geval konden we rekenen op eerder werk.

Stap 2: Formuleer een Hypothese

Onze hypothese: “Als we de positie en snelheid verzamelen met aGPS, kunnen we op betrouwbare wijze de aankomst en het vertrek op een platform bepalen op basis van de positie- en snelheidskarakteristieken, en met een goede tijdsresolutie."
De hypothese is meetbaar, wat belangrijk is om een ​​experiment op te zetten waarbij gelabelde datapunten kunnen worden vergeleken met de voorspelde data.

Stap 3: Voer Experimenten uit om de Hypothese te Testen

In stap 3 hebben we een proof of concept opgezet, gericht op essentiële gegevens en de voorgestelde oplossing om onnodige details te vermijden voordat we de hypothese bewijzen. We hebben een app ontwikkeld die aGPS-info en snelheid opslaat, gelabeld voor rijden of stilstaan. Omdat we de beperkingen van aGPS kenden, hebben we filters toegepast met behulp van accelerometergegevens, de fysieke limitaties van treinen (draaicirkel, maximale snelheid, …), en voorspelde routes, waardoor de locatienauwkeurigheid aanzienlijk werd verbeterd. Dit resulteerde in een aanzienlijke verbetering van de locatiegegevens. 

Stap 4: Analyseer de Data

De resultaten van de experimenten:

  • Succesvolle detectie van aankomst en vertrek op een perron
  • Uitstekende systeemstabiliteit
  • Onbetrouwbare snelheid vanwege inconsistente beschikbaarheid op basis van de oorsprong van locatiegegevens
  • Onvoldoende tijdsresolutie, resulterend in onvoorspelbare locatiegegevens.

Stap 5: Trek Conclusies uit de Resultaten

Ondanks goede eerste resultaten voldeed de voorgestelde oplossing niet aan de essentiële eis op vlak van tijdsresolutie. Het bouwen van een systeem met een consistente uitvoersnelheid wordt onhaalbaar als je in een enorme kooi van Faraday rijdt die signalen kan blokkeren.

Iteratie 2: Terug naar het Tekenbord

Stap 1: Identificeer en Analyseer het Probleem

De eerste iteratie voldeed niet aan de verwachtingen, maar dat ontmoedigde ons niet. We realiseerden ons het probleem met de tijdsresolutie. Bovendien hadden we bij ACA in tussentijd met succes nieuwe technieken toegepast op een soortgelijk probleem.

De accelerometer leverde betrouwbare gegevens op, en door deze te combineren met de gyroscoop en magnetometer verkregen we richtingsversnelling. Anticiperend op verschillende versnellingspatronen voor verschillende transportmodi en -toestanden, zoals stilstand en rijden, hebben we besloten een Naïve-Bayes-algoritme te gebruiken. Dit begeleide leeralgoritme creëert een probabilistische classificatie, die stilstand en rijgedrag voorspelt op basis van gemeten eigenschappen.

Stap 2: Formuleer een Hypothese

We kwamen tot een nieuwe hypothese: "De Naïve-Bayes-classificator kan worden gebruikt om onderscheid te maken tussen het loopversnellingspatroon en zijn superpositie met het bewegingsversnellingspatroon van een trein."

Stap 3: Voer Experimenten uit om de Hypothese te Testen

Er is een applicatie gemaakt om gegevens te verzamelen die met de juiste status zijn gelabeld. Vervolgens hebben we de Naïve-Bayes-classificator getraind met behulp van verschillende gegevensfuncties, zoals maximum, minimum, gemiddelde, norm, standaardafwijking, afstand tot het platform en minimaal vereiste snelheid.

Stap 4: Analyseer de Data

Er werden meerdere classificatoren getraind, getest en beoordeeld met behulp van  confusion matrices. Uit de resultaten bleek dat rijden in 94% van de gevallen correct werd geïdentificeerd, maar stilstand slechts in 48% van de gevallen nauwkeurig werd geïdentificeerd, waarbij de classificator in 52% van de gevallen stilstand ten onrechte bestempelde als rijden.

Stap 5: Trek Conclusies uit de Resultaten

De Naïve-Bayes-classificatoren misten de nodige nauwkeurigheid voor ons probleem. De kenmerken overlapten elkaar aanzienlijk, waardoor er geen onderscheid kon worden gemaakt tussen stilstand en rijden. Bovendien konden de classificatoren de voorbijgaande aard van aankomst en vertrek niet nauwkeurig vastleggen. Verder onderzoek was dus nodig.

Iteratie 3: Het zit allemaal in de verandering

Stap 1: Identificeer en Analyseer het Probleem

Uit de eerdere experimenten bleek dat snelheid en positie onvoldoende tijdsresolutie boden, terwijl probabilistische modellen worstelden met de voorbijgaande aard van aankomst en vertrek. Als we het belang van het voorbijgaande aspect onderkennen, is het duidelijk dat eigenschappen als snelheid of positie niet cruciaal zijn; in plaats daarvan is acceleratie de sleutel. Aankomst kan worden gedefinieerd als een vertraging gevolgd door een periode van geen versnelling, terwijl vertrek een versnelling is, voorafgegaan door een periode van geen versnelling.

Stap 2: Formuleer een Hypothese

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

Stap 3: Voer Experimenten uit om de Hypothese te Testen

Om ons te concentreren op het gebruik van accelerometergegevens voor aankomst- en vertrekdetectie, hebben we gegevens uit de vorige iteratie gebruikt, waarmee we een nieuw onderzoeksdomein zijn binnengegaan met als doel een signaalanalyse-algoritme voor classificatie te bouwen.

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

  1. Bekijk de Data:

    Kijk eens naar de grafiek van het Y-kanaal van de versnellingsmeter. We hebben ervoor gekozen om de versnelling in eerste instantie niet op de as van de echte wereld te projecteren om deze in zijn ruwe vorm te houden, waardoor de vereiste rekenkracht tot een minimum wordt beperkt.
    Met deze gegevens werd ons programma niet veel wijzer, de waarden zien er grotendeels willekeurig uit.

  2. Voer Gegevensmanipulatie uit om de Duidelijkheid te Verbeteren:

    Tijdens het rijden en stilstaan ​​blijft de snelheid constant, maar aankomst en vertrek worden gekenmerkt door veranderingen in de acceleratie. Bij aankomst is sprake van vertraging gevolgd door geen versnelling, terwijl bij vertrek sprake is van versnelling na een periode van geen versnelling. Het accumuleren van de versnelling in de loop van de tijd onthult trends die vergelijkbaar zijn met de snelheid, maar met opmerkelijke veranderingen tijdens aankomst en vertrek, wat inzichten oplevert voor programma-interpretatie, hoewel verdere signaalverwerking noodzakelijk is.
  3. Bereken de Gradiënt:

    Om te voorkomen dat de oorspronkelijke gegevens worden opgehaald door de gradiënt uit de cumulatieve curve te nemen, wordt aanvullende gegevensmanipulatie uitgevoerd. De cumulatieve curve wordt afgevlakt via een gewogen gemiddelde van één seconde. Op macroscopisch niveau behoudt de curve zijn uiterlijk, maar wordt de ruis in de gegevens verminderd. De resulterende grafiek, waarin voor de volledigheid alle drie de kanalen zijn opgenomen, wordt verkregen door de gradiënt te nemen.


  4. Kuis de Data op:

    De huidige gegevens blijven troebel en uitdagend voor programma-interpretatie. In stilstandsgebieden (rood gebied) wordt een minimale versnelling waargenomen, terwijl het rijgebied aanzienlijke schommelingen vertoont. Dit is in strijd met het idee van constante snelheid tijdens beweging, toegeschreven aan treintrillingen en versnelling/vertraging. In tegenstelling tot de opvattingen over constante snelheid vergroot deze ongelijkheid tussen staten de kans op het vinden van een haalbare oplossing, waarbij beide staten worden aangepakt in plaats van alleen de overgang tussen stilstand en autorijden.
    Om de gegevenskwaliteit te verbeteren, wordt 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:

  5. Negeer het Teken van Versnelling:

    Om de directionaliteit van de versnelling te negeren, elimineren we tekens en de kanalen worden gecombineerd door de absolute waarde te nemen en de drie kanalen bij elkaar op te tellen. Om de resterende dataruis te beperken, wordt een cut-off toegepast, waarbij een onbeduidende versnelling wordt genegeerd.



    Met behulp van deze bewerkte 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, waarbij +1 het vertrek aangeeft en -1 de aankomst aan het perron.


Stap 4: Analyseer de Data

Gegevensanalyse vond voornamelijk plaats tijdens het experiment. Vervolgens werd ons algoritme getest met ongebruikte gegevens, waarbij enkele valse positieven aan het licht kwamen, maar geen valse negatieven. Dit vergemakkelijkt de data-optimalisatie. Hoewel gegevens niet uit het niets kunnen worden gegenereerd, helpt het combineren van metingen met aGPS-gegevens om valse positieven uit te filteren.

Stap 5: Trek Conclusies uit de Resultaten

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

“Het is mogelijk om de vergankelijke aard van aankomst en vertrek op een perron te gebruiken om de aankomst en het vertrek met een goede tijdsresolutie en goede nauwkeurigheid te detecteren.”

Conclusie: Een Reis naar Precisie

In deze blogpost hebben we het volledige proces voor het nauwkeurig oplossen van een complex probleem beschreven. Door iteraties, het leren van fouten en het negeren van veronderstelde kennis hebben we een betrouwbare oplossing gecreëerd.

Het algoritme, dat bekende wiskunde combineert met aGPS-gegevens, kan de aankomst en het vertrek van treinen op een perron nauwkeurig detecteren met behulp van alleen een smartphone, waarbij een tijdsresolutie van minder dan één seconde wordt bereikt.

Wil je meer weten over onze bewezen methode voor IT problem-solving?
Of ben je op zoek naar een ervaren partner in app development?
Contacteer onze experten