“Hoe laat komt de trein aan waarin ik me nu bevind?” Om een snel(ler) antwoord te geven op deze vraag testte NS een nieuwe feature in de NS Lab-app: treindetectie. Er moest nog wel het nodige gebeuren om de feature nauwkeurig genoeg te krijgen. In dit artikel lees je hoe dit is opgelost.
Ruud de Jong, product owner NS Lab, legt uit: “De aanleiding voor het ontwikkelen van deze feature is dat we bij de analyse van het gedrag van gebruikers van de NS-app zagen dat er best veel reizen worden gepland met een vertrektijd in het verleden. Dit wijst erop dat gebruikers in die situatie op zoek zijn naar de actuele reisinformatie van de trein waar ze zich nu in bevinden.”
Uitrol vanaf december
Met treindetectie lost NS dit voor je op. Je hoeft niet langer te zoeken in welke trein je zit. Kort na vertrek krijg je automatisch een melding en als je daarop klikt zie je alle volgende stations op je traject, met de bijbehorende stoptijden. Dit is overigens ook precies de informatie die reizigers zien op het scherm in de trein. In de bètaversie van de NS-app is treindetectie inmiddels al te vinden. Vanaf begin december zullen de eerste gebruikers van de ‘standaard’ NS-app de feature kunnen gebruiken.
Gebruikers die op Android en iOS als eerste nieuwe features willen testen, kunnen hiervoor op hun mobiele devices de NS Lab-app downloaden vanuit de Play Store en App Store. “Treindetectie is in de NS Lab-app de hoogst gewaardeerde feature”, vertelt Ruud. In de afgelopen maanden is het uitgebreid getest, wat nog niet eenvoudig was met de teruglopende aantallen treinreizigers als gevolg van de corona-lockdown. “NS Lab telt inmiddels 50.000 downloads, maar om het systeem echt bulletproof te maken, hebben wij het met ons eigen ontwikkelteam van zeven personen ook zelf uitgebreid getest in de trein.”
Treinradar
Het traject dat heeft geleid tot treindetectie begon ongeveer twee jaar geleden. “We zagen het gedrag van gebruikers, die veel reizen planden in het verleden. En we hadden al de treinradar in de NS-app, waarmee je alle treinen in Nederland live kunt zien rijden. Toen we zagen dat reizigers op zoek zijn naar informatie over hun huidige trein, ontstond het idee dat we deze informatie zouden kunnen matchen met de locatie die de reiziger met ons deelt.” De feature werd vervolgens gebouwd voor de NS Lab-app, waarin NS nieuwe features test voordat ze in de NS-app komen.
“Zowel de NS-app als de Lab-app zijn als native apps gebouwd”, vertelt Frank Bos, developer bij NS en onderdeel van het Lab-team van Ruud. “Voor iOS is dat Swift, voor Android bouwen we in Kotlin. Dat maakt het overzetten van nieuwe features wat eenvoudiger. Maar batterijverbruik is ook een belangrijke reden om native te bouwen. Zeker met zaken als locaties ophalen en het bewaken van de privacy van de gebruiker geeft dit veel controle.”
Detectie lastig in de stad
De eerste versie van de feature was nog vrij ruw, herinnert Frank zich. “In feite was het niets meer dan een cirkel tekenen rondom de locatie van de gebruiker en daar de juiste trein bij zoeken. In een weiland werkt dat nog goed, maar in een stad met veel treinen op een klein gebied niet meer.” In de volgende versie namen de ontwikkelaars meer sensordata mee, waaronder de snelheid van een device en het kompas. “In die fase werd de feature al heel goed gewaardeerd. Gebruikers zagen ook wel dat hij potentie had. Wij moesten het alleen nog wel verder brengen, want het was nog niet goed genoeg.”
De tweede versie pakte soms nog de verkeerde trein, wat vooral gebeurde als twee treinen met dezelfde snelheid in dezelfde richting en op hetzelfde moment uit een station vertrokken. Dit probleem werd in de derde versie opgelost. “De feature maakt nu ook een snapshot van historische data en vergelijkt jouw pad met die van je trein. Daar komen overigens nog de nodige wiskundige zaken bij kijken. We hebben een developer met een wiskundige achtergrond die daar helemaal op losging.”
De feedback van NS Lab-gebruikers dat de feature verkeerde detecties maakte, verdween na de derde versie. Wanneer het niet mogelijk is om een juiste bepaling te maken van de trein waarin de gebruiker zit, wordt deze informatie niet in de NS Lab-app getoond. “Alleen als we zeker genoeg weten dat we de juiste informatie kunnen ophalen, tonen we deze. Vanuit het oogpunt van de gebruikers is dat ook heel logisch. Zij vinden het niet erg als er geen detectie mogelijk is, maar wel als je het verkeerd doet.”
Privacy
Ruud merkt op dat het opvallend is dat het cijfer dat NS Lab-gebruikers gedurende het ontwikkeltraject hebben gegeven stabiel hoog is gebleven. “Ondanks de imperfecties in de eerste versies. Het zegt veel over deze groep gebruikers dat zij daar doorheen kunnen kijken.” Andersom was rekening houden met de gebruikers en hun privacy al vanaf het begin een belangrijk aandachtspunt, vertelt Frank. “Binnen ons eigen team hebben wij de feature getest zonder rekening te houden met onze eigen privacy. We gebruikten dus een volledige tracking-app die de geschiedenis bijhield en bewaarde, inclusief alle datapunten. Dat was voor onszelf als developers geen probleem en zelfs handig om kwalitatief goed te testen, maar voor gebruikers wilden we dit natuurlijk niet in de app hebben.”
Wat deel je als gebruiker dan wél met de NS-app voor treindetectie? Ruud: “De paden die wij vergelijken, bevatten je laatste tien locaties. Hoe lang dit teruggaat in de geschiedenis is afhankelijk van hoe lang je telefoon erover heeft gedaan deze locaties op te halen. Standaard staat het op twintig seconden ingesteld. Wat de app wel opslaat, en wat we in de toekomst wellicht willen gebruiken, zijn succesvolle detecties. Het gaat dan om geanonimiseerde data van alleen tellingen van zulke detecties. Wij zouden deze data kunnen gebruiken om real-time informatie en voorspellingen te geven over hoe vol treinen zijn."
Treinen, tunnels en telefoons
Treindetectie is inmiddels volwassen genoeg voor een uitrol naar de NS-app, maar er blijven uitdagingen, vertelt Frank. “Een daarvan is dat sommige treinen geen gps hebben, bijvoorbeeld de Intercity Direct tussen Schiphol en Rotterdam. En tunnels blijven ook lastig, vooral rondom Schiphol. Een andere uitdaging is dat de gps-functie op telefoons vaak niet zo goed werkt als we zouden willen.” Om de functie nauwkeuriger te maken, wil het developers-team de wifipunten in de trein gebruiken. Frank: “Dat is een alternatief voor gps. Aan de hand van treinpunten kunnen we identificeren of een gebruiker in de buurt is. Lastig is wel dat dit op dit moment alleen voor Android mogelijk is..”
Ook op andere vlakken gaat het werk door, met de NS Lab-app als testomgeving. Ruud: “Een logische vervolgstap voor Treindetectie is dat we je ook gaan vragen waar je treinreis naartoe gaat. Op basis van die informatie zouden we je een rollende planning kunnen geven, met een reisplan dat verandert zodra er iets op het spoor gebeurt. Met bijvoorbeeld een omreisadvies als treinen niet rijden. Andere ontwikkelingen waarmee we bezig zijn, zijn het regelen van deelscooters vanuit de app en het in- en uitchecken van een reis op je mobiel. Er staat dus van alles aan te komen om je treinreis aangenamer te maken.”
Wil jij ook werken aan interessante en impactvolle IT-projecten? Lees meer op werkenbijns.nl. Benieuwd naar de in dit artikel beschreven feature? Download dan NS Lab nu in de Apple App Store of Google Play Store.