WebRTC en HoloLens
Social Brothers zet WebRTC in voor de remote assistance-applicatie van Bureau Veritas. Bureau Veritas keurt schepen over heel de wereld. Dat wil zeggen dat hun inspecteurs soms de hele wereld overvliegen voor een inspectie van tien minuten. Niet alleen kost dat tijd en geld voor de inspecteur, ook de scheepvaart kan miljoenen mislopen. Het schip moet immers stil blijven liggen totdat de inspecteur ter plekke is.
Bij Social Brothers werken we al een tijdje met de HoloLens. Voor Bureau Veritas hebben we zelf een applicatie gebouwd om aan te sluiten bij dit vraagstuk van Bureau Veritas en keuringen op afstand mogelijk te maken. Het idee achter onze remote assistance-applicatie is dat er op het schip iemand aanwezig is die de HoloLens draagt. De inspecteur van Bureau Veritas zit op afstand achter zijn eigen bureau en kan via het camerabeeld van de HoloLens meekijken op het schip en communiceren met de drager van de HoloLens. Lees voor meer informatie over remote assistance ons blog hierover.
Daarnaast heeft de applicatie de mogelijkheid om audio uit te wisselen en om extra data uit te wisselen zoals de positie van de drager van de HoloLens in de machinekamer van het schip. Hierdoor kan de inspectie op afstand sneller en efficiënter uitgevoerd worden. Voor het communicatieprotocol bleek WebRTC de beste technologie en vandaar dat we dit zijn gaan toepassen voor dit proof-of-concept. WebRTC maakt het namelijk mogelijk om op een heel simpele manier twee apparaten te verbinden en een stabiele audio- en videoverbinding te krijgen.
Snelle verbinding
WebRTC is een simpele manier om twee (of meer) apparaten stabiel met elkaar te verbinden. Beide apparaten laten de server weten dat ze verbinding willen. Ze wisselen P2P-data uit (de zogenaamde handshake) en vervolgens wordt de verbinding gestart. Deze staat los van de server: die wordt enkel en alleen gebruikt voor het initiële contact. Het heen en weer sturen van custom data tussen de twee apparaten wordt mogelijk gemaakt door de RTCDataChannel-API. De techniek hierachter is beschikbaar als een reguliere JavaScript API. Voor verschillende voorbeelden over de mogelijkheden kun je hier kijken.
Het WebRTC-protocol zorgt voor een snelle verbinding. Als de server de verbinding is, stuurt de een wat naar de server en de ander haalt het op. Dat is een extra stap die voor vertraging zorgt. Vergelijk het met een gesprek: het is makkelijk om direct met degene te praten aan wie je een specifieke boodschap over wilt brengen, dan dat je een gesprek voert via een tussenpersoon. Door de extra stap in het digitale communicatieproces over te slaan, heeft P2P tot zesmaal snellere verbindingstijden. De videokwaliteit is beter en je hebt natuurlijkere online gesprekken doordat er geen vertraging in zit.
Veilige verbinding
Doordat er geen server tussen zit, is WebRTC in principe ook extra veilig, want er kan moeilijker een man-in-the-middle-aanval plaatsvinden die bepaalde communicatie opvangt. Natuurlijk moet je wel de persoon met wie je verbinding maakt vertrouwen. We verifiëren daarom via een websocket-techniek of je met de juiste persoon verbinding maakt. Als je verbinding maakt met de server, dan maakt socket.io vanaf de server een kamer aan. Die kamer krijgt een aparte naam waardoor je alleen aan kan sluiten als je de naam van de kamer weet. Zo weet je wie er aan de andere kant staat.
Datachannels bij WebRTC
Een ander voordeel van het WebRTC-protocol zijn de datachannels. Die maken het mogelijk om buiten spraak en beeld andere data heen en weer te sturen. Voor de Bureau Veritas applicatie is dat de positie van de HoloLens in de machinekamer. De inspecteur heeft een 3D-model van de machinekamer op zijn computerscherm, naast het videobeeld van de HoloLens. De positie en rotatie van de HoloLens wordt constant doorgestuurd naar de inspecteur door het datachannel. Aan de hand van die data zorgen we ervoor dat er in het 3D-model precies wordt weergegeven op welke positie de drager van de HoloLens zich bevindt.