Case PoC latency

Latency bij het real-time aansturen van grijpmachines

Sinds 1959 is Elaut Group actief in de amusementspelen. De meeste toestellen die je vindt op de kermis en in arcade hallen zijn waarschijnlijk door hen bedacht en geproduceerd. Elaut is dan ook een innovatieve wereldspeler in elektromechanische spellen. Ze omarmen continu nieuwe technieken om de kwaliteit van hun games naar een hoger niveau te tillen.

Door hun innovatieve karakter zijn ze bij Refleqt terecht gekomen. Bij Elaut waren ze volop de eerste stappen in hun digitalisatieverhaal aan het zetten. Ze wilden een platform waarop je games kan livestreamen en zo arcade spellen kan spelen vanaf je smartphone. Lees: vanuit je zetel een grijpklauwmachine bedienen om zo een prijs te winnen.

Nood van de klant

Om dit verhaal waar te maken, kwam al redelijk snel aan het licht dat de latency van de videobeelden een enorme uitdaging was. De latency is de tijd die gegevens nodig hebben om van punt A naar B en terug te gaan. Wanneer je een commando stuurde naar de grijpmachine, duurde het bij de eerste interne testen meer dan vijf seconden vooraleer je op het scherm de grijparm zag bewegen. Dit was veel te traag voor dit type spel.

Daardoor kwam Elaut bij Xplore Group aankloppen. Meer bepaald bij Refleqt, Cloudway, AppFoundry en Gluo. Hun vraag was zo complex dat we de expertises van deze vier competentie centers binnen onze groep moesten bundelen om een Proof-of-Concept (PoC) op te stellen. Vooraleer we uitspraken deden over de haalbaarheid van het project, moesten we dit eerst in het klein testen.

Proof-of-concept

Het project is gestart als een nauwe collaboratie tussen Refleqt en Cloudway, onze partner die gespecialiseerd is in cloud-native development. Na heel wat brainstormsessies kwamen we met een vijfstappenplan om de latency te testen.

Vanuit een speciaal ontwikkelde webapplicatie konden we MQTT-berichten sturen naar een Raspberry Pi, een hardwarecomponent die ook gebruikt wordt bij de aansturing van de echte grijpmachines. In plaats van een grijpmachine aan de andere kant van de Raspberry Pi te verbinden, sloten wij die aan met een scherm. Dit scherm veranderde continu van rood naar groen afhankelijk van het bericht dat we via MQTT hadden gestuurd.

Arcade spel met een camera die de bewegingen filmt om remote arcade gaming mogelijk te maken

Ten slotte filmden we het scherm continue met een camera. Ook het signaal van de stream stuurden we naar de hardwarecomponent die het op zijn beurt weer terugstuurde naar de webapplicatie. Via image recognition registreerden we hier dan wanneer het scherm van kleur veranderde.

Deze set-up was ideaal voor onze PoC. We registreerden wanneer we een signaal verzonden om de kleur te switchen. Via de image recognition ontvingen we een signaal wanneer de kleur ook werkelijk veranderd was. Door die twee meetmomenten naast elkaar te leggen, konden we de latency end-to-end meten.

Uitvoering PoC

Nadat we onze set-up hadden bepaald, was het tijd om metingen uit te voeren. We voerden 100.000den metingen uit om de latency te bepalen. Dit proces automatiseerden we volledig. We vonden het belangrijk om zo grondig mogelijk te werk te gaan, dus hebben we verschillende netwerksnelheden getest: wifi, 3G en 4G.

Elaut is een wereldspeler, daarom vonden we het belangrijk de latency te testen op een globale schaal. We voerden metingen uit in Oregon en Virginia in de VS, in Ierland, Mumbai in India en Sydney in Australië. Daarbij moesten we wel rekening houden dat zowel de Raspberry Pi als de software vanuit België opereerden. Dit betekende mogelijks extra vertragingen.

Toch overtroffen de resultaten onze verwachtingen. Wanneer we een commando stuurden vanuit Sidney naar België – het verste punt – keerde de videostream terug aan gemiddeld 600 milliseconden. Dit is (waanzinnig) snel.

Doordat dit proces zo snel verliep, namen we contact op met AWS: onze toonaangevende leverancier van cloud computing services. We wilden weten of onze metingen correct waren. Om te antwoorden op onze vraag, stelde AWS zelf een kleine set-up op om deze snelle meting te controleren. Wat bleek: ons meetresultaat was correct.

Ten slotte maakte AppFoundry ook nog een mobiele applicatie, die op een vergelijkbare manier was aangesloten op een echte fysieke grijpmachine. Met geheel dezelfde technische setup, konden we deze aansturen via MQTT commando’s en hadden we een real-time video stream binnen onze app ter beschikking. Hierdoor konden we naast een technische validatie ook zelf aanvoelen hoe de latency in real life scenario’s.

Wanneer we een commando stuurden vanuit Sidney naar België – het verste punt – keerde de videostream waanzinnig snel terug: aan gemiddeld 600 milliseconden.

Wim Vervust

Resultaat

Samenwerking met veel verschillende disciplines

Wanneer we terugblikken op deze PoC, is het eerste dat ons opvalt dat we dit niet alleen hadden gekund. We hebben intens samengewerkt met onze partners in dit verhaal:

  • Cloudway: zij hebben de hele cloudstructuur opgezet. Denk bijvoorbeeld aan het verwerken van de videostream in de applicatie.
  • AppFoundry: zij bouwden de front-end van de applicatie waarmee je de grijparm bestuurt en een pluche beer kan scoren.
  • Gluo: zij stonden in voor DevOps en het automatiseren van de cloud infrastructuur.
  • Elaut: zij waren verantwoordelijk voor het opzetten en configureren van de camera’s.

Als we deze experten uit verschillende disciplines niet hadden samengebracht, was het praktisch onmogelijk geweest deze PoC op te stellen. Of dan had het traject waarschijnlijk een veel langere doorlooptijd gehad. Nu hebben we deze op een zeer snel tempo opgezet en uitgevoerd: op amper drie weken!

Latency gaf groen licht om Livecadia waar te maken

De rode draad in dit verhaal was dus de latency zo snel mogelijk krijgen. Tijdens onze PoC zijn we heel wat bottlenecks tegengekomen die een invloed hadden op de latency, onder andere de camera zelf.

Indien we de camera’s configureerden om maximale beeldkwaliteit door te sturen, hadden deze een vertragende factor, omdat die ook grotere hoeveelheden data moest doorsturen. Om dit struikelblok weg te werken, hebben we met een aantal instellingen gespeeld, bijvoorbeeld het aantal frames per seconde omlaaggehaald. Het uiteindelijke resultaat waren nog steeds zeer heldere beelden, zonder dat het nog een invloed had op de performantie.

Het was een technisch hoogstandje om deze PoC te realiseren. We zijn dan ook heel erg trots dat we dit klaar hebben gespeeld. De PoC diende louter om te kijken of de vraag van Elaut technisch mogelijk was.

Met dit project bewezen we de technische haalbaarheid van dit project. Namelijk: om remote via een videostream in bijna real-time arcade games te spelen. Het resultaat gaf ons groen licht om met de eigenlijke implementatie van het project te starten. Stay tuned, binnenkort vertellen we je meer over het development verhaal van Livecadia!

Benieuwd naar welke performance testing services we nog bieden?

Heb jij een vergelijkbare uitdaging waar je hulp bij nodig hebt? Neem gerust contact op!