Accueil / Réalité Augmentée / Introduction à la réalité augmentée : comment fonctionne techniquement ARKit et Tango ?
apple-arkit-vs-google-tango-realite-augmentee-990x495

Introduction à la réalité augmentée : comment fonctionne techniquement ARKit et Tango ?

Si le petit monde – en pleine croissance – de la réalité augmentée (AR) vous intéresse, vous avez probablement entendu parler de deux technologies qui démocratiseront l’AR : Tango et ARKit. Alors que le premier est un projet développé par Google et dévoilé il y a déjà plus de deux ans, ARKit est une technologie disponible sur iOS 11 et sur certains iPhones de la marque à la Pomme. Les deux technologies sont déjà accessibles aux développeurs et les stores n’attendent plus que leurs applications pour apporter « une nouvelle jeunesse » et de nouvelles interactions à nos téléphones. Toutefois, ces technologies sont actuellement assez différentes et il n’est pas toujours possible de créer le même type d’application. GoGlasses a voulu faire le point pour essayer de comprendre quels pouvaient être les points forts de chaque technologie d’un point de vue technique et matériel, et de savoir de quelle manière il est possible d’utiliser ces SDK (Software Development Kit).

Ceci constitue une première introduction à la compréhension de la réalité augmentée, de son intégration technique sur les mobiles et du vocabulaire et méthodes utilisés. Elle vise à donner quelques bases et approches sur les choix techniques pour créer des expériences en AR sur smartphone, mais parle très peu du développement via ces SDK (Android ou iOS 11). Nous nous basons ici uniquement sur les smartphones et non pas sur les technologies intégrées dans des lunettes de réalité augmentée. Les technologies choisies seront seulement Tango (Google) et ARKit (Apple), étant donné qu’elles sont les plus susceptibles d’être les technologies mobiles les plus utilisées dans les années à venir (nous avons donc mis de côté des technologies comme Vuforia, OpenCV…). Outre cela, nous ne parlerons pas également des technologies de réalité augmentée pour mobile via le WebAR. Cela fera prochainement l’objet d’un (ou plusieurs) article(s) sur GoGlasses. Cela étant dit, les développement en WebAR seront notamment liés au développement du hardware dans les prochaines années. Les développements introductifs ci-dessous pourront également servir de base à une première approche.

Le SLAM : faisons le point

Le SLAM est probablement l’un des termes en vogue dans le domaine de la réalité augmentée (mais également dans des domaines comme les voitures autonomes ou les drones). Pour éviter qu’il ne devienne un « mot-valise », voici techniquement ce que signifie le SLAM, et quelles sont ses implications. Il signifie en anglais Simultaneous Localization And Mapping, traduit en français par Cartographie et Localisation Simultanées (CLS). C’est un système notamment utilisé en robotique qui permet à des robots de se repérer dans l’espace et de se mouvoir dans un environnement inconnu. Le SLAM a donc pour intérêt de les rendre autonomes dans le déplacement de leur environnement. Le SLAM doit pouvoir répondre à deux problématiques :

  1. La reconnaissance d’un environnement par sa cartographie. C’est la partie mapping. Le robot (ou autre objet utilisant le système SLAM), doit être capable, grâce à ses capteurs, de récupérer des données et de créer la cartographie d’un environnement. C’est la partie que l’on pourrait nommer « contextuelle » qui indique à l’objet la zone dans laquelle il doit se mouvoir et les différents obstacles qu’il doit éviter.
  2.  Pouvoir se localiser à un endroit précis et estimer son positionnement. C’est la partie localization. Pour effectuer cela, le robot (ou un autre objet utilisant le système SLAM tel que le smartphone par exemple), utilise l’odométrie. C’est ce qu’on pourrait nommer la partie « présence ». L’objet « se signale » dans son environnement/son contexte.

En tant qu’humain, nous sommes constamment amenés à effectuer ce processus. Dans le cas du SLAM, vous voyez bien que même si la cartographie de l’environnement et la localisation sont deux méthodes distinctes, il n’en demeure pas moins qu’elles sont au final interdépendantes les unes des autres afin de pouvoir réellement se déplacer. Le tout doit fonctionner de manière simultanée. En l’espèce, vous allez comprendre par la suite pourquoi le SLAM est très important pour la création d’expériences en réalité augmentée.

ARKit : introduction à son fonctionnement technique

developpement-app-arkit-realite-augmentee

Disponible sur les prochains smartphones de la marque à la Pomme sous iOS 11, le SDK ARKit a fait grand bruit auprès des développeurs qui souhaitent proposer des applications et usages en réalité augmentée sur iPhone. La promesse faite par Apple de rendre ce SDK disponible à partir de l’iPhone 6S rendant dès lors compatible la réalité augmentée avec quasiment 500 millions de smartphones a de quoi sonner le véritable début d’un nouveau média aux possibilités immenses.

Attardons-nous quelque peu sur l’aspect technique de l’ARKit pour mieux le comprendre. Techniquement, ARKit utilise ce qu’on appelle un VIO (Visual Inertial Odometry), c’est-à-dire un système par odométrie optique, avec une simple détection de plan 2D. Concrètement, l’odométrie est un procédé utilisé sur des robots afin qu’ils puissent calculer leur position lorsqu’ils sont en mouvement. En l’espèce, avec ARKit, c’est le même procédé qui est utilisé lorsque vous vous déplacez autour d’un objet en 3 dimensions : le VIO track votre position dans l’espace en temps réel et recalcule à chaque rafraîchissement d’image (30 images par seconde minimum jusqu’à 60) où vous vous trouvez. Selon Matt Miesnieks, ces calculs sont fait deux fois de manière parallèle. En effet, votre position est trackée par la caméra grâce au système visuel (du VIO) en matchant un point du monde réel avec un pixel de la caméra. Dans le même temps, votre position est également trackée par le système de navigation inertielle (accéléromètre et gyroscope). Via ces deux états, et lorsqu’on les combine à un filtre Kalman, ces deux systèmes nous fournissent la meilleure estimation de votre position réelle par rapport à la réalité du terrain. Il s’agit donc grâce à ces deux systèmes de connaître la position de l’iPhone dans un environnement en 6 dimensions (3 dimensions pour la translation et 3 dimensions pour la rotation, ce que l’on nomme en anglais le 6DOF).

L’avantage d’utiliser le système VIO est que les mesures nommées IMU (Inertial measurement unit) sont effectuées environ 1000 fois par seconde en fonction des mouvements de l’utilisateur via l’accéléromètre du téléphone. Ces mesures sont données via une méthode de calcul nommée Dead Reckoning. Cette méthode de calcul a pour objectif de fournir la position actuelle du smartphone en utilisant l’ancienne position connue (1), ainsi que la vitesse estimée sur le temps écoulé (2) pour en déduire une position. Toutefois, il faut savoir que cette technique de calcul peut être sujette à des erreurs (cumulatives) et qu’il est particulièrement important de refaire régulièrement les calculs pour recalculer la position actuelle. En d’autres termes, plus les temps de calcul seront espacés, plus les marges d’erreurs seront grandes.

Au final, dans l’utilisation du VIO, le système visuel ou le système inertiel sont indépendants dans leur calcul du positionnement. Ayant chacun leur faiblesse, la combinaison des deux avec le choix du « meilleur positionnement » par le filtre Kalman permet d’avoir un positionnement et une expérience de qualité.

ARKit est également muni d’une technique de détection de plan. Cette détection est indispensable si vous souhaitez que votre objet visionné en réalité augmentée n’ait pas l’impression de « flotter dans l’air », mais qu’il soit bien intégré à un plan/surface en particulier. Pour ce faire, ARKit définit via son système optique 3 points d’un plan (ce sont les petits points que vous voyez sur l’écran) de très nombreuses fois afin d’estimer où est véritablement le plan sur lequel il devra « fixer » l’expérience en réalité augmentée.

arkit-points-cloud-652x1138

Comment est-il possible d’obtenir de la stéréoscopie grâce à une seule lentille (de caméra) ?

A la différence de Tango qui intègre une caméra RDB ainsi qu’une caméra fisheye, les iPhones n’intègrent (du moins jusqu’à l’iPhone 7S) qu’une seule lentille pour la caméra. Avec deux lentilles, il est assez facile d’obtenir de la stéréoscopie et de calculer la position du device. Mais ce n’est pas le cas avec une seule lentille. Par conséquent, comment cela est-il possible avec une seule lentille comme le permet ARKit ? C’est là que l’IMU Dead Reckoning a tout son intérêt. Apple a tout particulièrement travaillé dessus, de sorte à ce que le pourcentage d’erreur soit le plus faible possible. Vu que vous n’avez qu’une seule lentille, vous devez prendre une image, puis une autre (à un endroit différent) et ensuite calculer la distance entre les deux lentilles et enfin utiliser l’IMU Dead Reckoning pour en déduire la positon de votre mobile.

ARKit utilise-t-il le SLAM pour créer des expériences en réalité augmentée ?

Comme nous l’avons vu plus haut, le SLAM requière deux éléments : un premier, de reconnaissance d’environnement, et un autre de localisation. Sur le second point (la localisation), nous avons vu qu’il était complet et qu’ARKit gérait plutôt bien cette caractéristique. Dans la question de la reconnaissance d’environnement, ARKit est seulement capable de reconnaître une surface plane en 2D pour positionner un objet (sans aucune Aera Learning [cf. Tango ci-dessous]). De ce point de vue-là, Tango est largement plus élaboré. Certes, l’on pourrait dire qu’ARKit est du « SLAM faible », mais ne pensez toutefois pas intégrer cette version dans des lunettes de réalité augmentée, et encore moins robot !

lego-arkit-app-developpement-realite-augmentee

Voici donc comment fonctionne le SDK ARKit d’un point de vue technique. Sachez qu’il ne sera disponible que sur certains iPhone et iPad sous iOS 11 dans un premier temps. Toutes les expériences pourront ensuite être téléchargées sur l’Apple Store. Si ARKit et l’iPhone ont le potentiel d’être un facteur de croissance sur le marché de la réalité augmentée et d’accélérer la démocratisation et la création de nouvelles expériences, Google, son concurrent direct sur le terrain des smartphones AR, n’a pas dit son dernier mot avec sa technologie Tango.

Tango : introduction à son fonctionnement technique

google-project-tango-tablette

Si vous lisez régulièrement les colonnes de GoGlasses, vous savez que Tango est une technologie qui a déjà quelques années et sur laquelle Google communique activement auprès des développeurs. Née dans les locaux de Google X pour passer ensuite dans la division Daydream menée par Johnny Lee et Clay Bavor, Tango a pour objectif de développer la réalité augmentée sur les smartphones Android. Mais comme vous allez le voir, malgré certaines faiblesses, la technologie possède de véritables atouts pour donner une impulsion à la réalité augmentée sur les smartphones et aux expériences de réalité mixte avec Daydream.

tango-google-guide-magasin-realite-augmentee-970x546

Comme l’explique Google, la technologie Tango consiste en « une plateforme qui utilise la vision par ordinateur et qui donne la possibilité à comprendre leur position relative dans le monde ». Cette technologie est construite autour de trois piliers : le Motion Tacking, l’Aera Learning et la Depth Perception. Faisons le point sur ces trois technologies pour mieux comprendre les spécificités de Tango.

Le Motion Tracking

A l’instar d’ARKit, c’est aussi un système VIO qui est utilisé pour le Motion Tracking de Tango. Comme le souligne Google, Tango est considéré comme un système logiciel temps réel. Cette technologie récupère la position et l’orientation du smartphone sur les « 6 degrés de libertés » (le fameux 6DOF). Cette combinaison de position (x, y, z) et d’orientation (rotation autour de x, y, z) est nommée « Pose ». Mais ce n’est pas suffisant pour calculer une position. Tango prend également un autre paramètre appelé « Image de référence » (Frame of Reference). Le principe est le suivant : pour savoir où se trouve exactement le device, il ne suffit pas de connaître uniquement sa position et son orientation, il faut aussi savoir à partir de quelle référence il doit mesurer. Exemple : « la voiture est à 3 mètres » ne nous donne pas vraiment d’indication si vous ne fournissez pas la référence de l’objet à partir duquel vous allez mesurer. Si nous disons « la voiture est à 3 mètres de la Tour Eiffel », alors vous avez un objet de référence. Pour votre application Tango, il sera donc important de choisir une base de référence à partir de laquelle vous pouvez calculer.

En complément du gyroscope et des accéléromètres, Tango utilise une lentille grand angle (appelé parfois fisheye) qui permet de se repérer plus facilement dans un environnement 3D étant donné que la caméra peut percevoir plus d’éléments dans la pièce. En l’espèce, c’est une différence avec ARKit qui n’utilise pas ce principe-là. En outre, il faut bien comprendre que si Tango fournit une position du smartphone de l’utilisateur dans l’espace, il ne fournit pas une position globale via un GPS par exemple. Il peut seulement tracker une position relative dans un environnement ou une zone précise grâce à ses capteurs. Cependant, il est toutefois possible de le coupler avec les coordonnées (longitude et latitude) d’un environnement afin de connaître sa position précise par rapport à un référentiel terrestre.

Quelques limitations du motion tracking

Toutefois, Google note quelques limitations pour le motion tracking :

  • Le smartphone ne peut comprendre l’environnement dans lequel il est. Pour ARKit, cette fonction n’est pas intégrée et ARKit ne peut pas comprendre son environnement.
  • Autre point important : avec le motion tracking, le smartphone ne peut pas se « souvenir » de la session précédente. En d’autres termes, à chaque fois que vous relancez une nouvelle session de motion tracking, il recommence à tracker sa position à partir de l’image de référence qu’on lui donne à nouveau. Imaginons que vous souhaitez par exemple laisser un mot/objet sur un mur sur une position bien spécifique, et que vous choisissez d’éteindre l’application. Lorsque vous allez relancer le téléphone, et si vous avez changé de place, le mot ne sera plus au même endroit car le device va recommencer à tracker à partir de l’endroit où vous êtes. Tango va fonctionner différemment (grâce à d’autres technologies dont nous allons parler ci-dessous) : il est capable d’enregistrer la position de votre mot/objet. A ce moment-là, le téléphone enregistre la position et est capable de replacer l’objet au même endroit même si vous avez éteint l’application. Chose qui n’est pas possible avec ARKit (pour l’heure tout du moins).

L’Area Learning

Comme nous l’avons vu précédemment, le motion tracking permet de se localiser et de se repérer dans un environnement. Néanmoins, il va lui manquer une partie « souvenir ». Imaginez que vous vous localisiez dans une pièce, que vous créiez des éléments en réalité augmentée à l’intérieur de celle-ci, mais que vous choisissiez d’éteindre l’application. Dans ce cas-là, si vous deviez reprendre là où vous en êtes, dans la même pièce, vous devriez tout recommencer étant donné que vous n’avez pas pu enregistrer votre environnement. C’est tout l’objectif de l’Area Learning : vous permettre d’enregistrer votre environnement pour continuer vos expériences en réalité augmentée. C’est une étape de « compréhension » de l’environnement puisqu’il met en regard l’environnement connu avec celui qu’il observe actuellement.

Comme le dit Google :

« Le device [avec l’area learning] a la capacité de voir et de se souvenir des caractéristiques principales de l’espace – les bords, les coins ou d’autres caractéristiques uniques – ce qui lui permettra de reconnaître l’environnement plus tard. Pour ce faire, il stocke une description mathématique des caractéristiques visuelles identifiée dans un index, à partir duquel il sera possible de chercher cette description sur un device. Cela permet donc au device de rapidement matcher ce qu’il voit actuellement en rapport avec ce qu’il a enregistré sans avoir besoin d’utiliser un système cloud ».

Ce procédé à donc plusieurs avantages que n’a actuellement pas ARKit.

Enregistrer son environnement pour une meilleure compréhension

Tout d’abord, il est capable d’enregistrer des informations sur un environnement en 3D et de les matcher ensuite avec l’environnement actuel pour les resservir à l’utilisateur. Un point particulièrement intéressant. Cela signifie que vous pouvez attacher à un environnement des objets/notes sans avoir besoin de marqueur (1) (type QR Code ou autre, appelé aussi markerless), sans pour autant recréer l’expérience (2). Chaque objet étant identifié mathématiquement (taille, localisation, orientation…) puis indexé sur le device, il suffit de rallumer l’application pour voir vos expériences.

Réduire les marges d’erreur du motion tracking

Ensuite, l’autre intérêt est de venir en complément du motion tracking. En effet, comme nous l’avons vu, le motion tracking peut être sur le long terme source d’erreurs. Pour réduire cette marge d’erreur, l’area learning lui vient en aide. Le but est de lui permettre de corriger ses erreurs comme le montre le dessin ci-dessous proposé par Google.

aera-learning-drift-correction-550x275

En rouge, vous avez la trajectoire estimée par Tango et en vert, la trajectoire réelle. Au départ, comme vous pouvez le constater, le trajets en vert et rouge sont superposés : le motion tracking fonctionne donc bien. Mais de calcul en calcul, le motion tracking commence à réaliser des erreurs sur son environnement (ce qu’on appelle les « drifts »). Il convient donc de les corriger si l’on veut éviter par la suite d’avoir un véritable écart entre le chemin vert et le chemin rouge. C’est à cela que va servir l’area learning : il va effectuer des corrections sur ces erreurs (« drift correction »). Dès que le device est retourné à l’origine, il se rend compte qu’il y a des erreurs de trajectoire et corrige donc ces erreurs pour que le chemin vert et rouge soient les plus proches possibles de la réalité. Mais pour effectuer ces corrections, il faut toutefois retourner à son point d’origine. Par conséquent, avec Tango, vous pouvez stocker une description d’un environnement dans un fichier nommé ADF (Area Description File), ce qui permettra aux utilisateurs d’avoir une expérience bien supérieure et surtout de réduire les marges d’erreurs créés par le motion tracking seul.

Quelques astuces par Google pour améliorer l’area learning

Google note que :

  1. Il est difficile d’obtenir une bonne localisation dans un environnement totalement vide ou de différencier des environnements qui se ressemblent fortement (par exemple :  des chambres d’hôpital ou d’hôtel). Cela peut fonctionner, mais il est clair que dans ce type d’environnement, il serait plus adéquat de donner au device plus d’informations afin qu’il puisse se localiser de manière plus précise.
  2. Le principe de l’area learning fonctionne sur un environnement connu. Mais cet environnement est susceptible de changer (un objet qui bouge, un lieu plus éclairé que d’ordinaire…), ou bien il se peut que l’environnement soit différent selon l’angle observé. Pour une meilleure localisation, Google conseille donc de réaliser les expériences dans les mêmes conditions que celles du fichier ADF. On notera ici une faiblesse de l’area learning. En effet, cela peut sembler complexe de devoir toujours se retrouver dans la même situation que celle qui est prévue. Cela ne laisse pas tellement de place à la flexibilité. Difficile par exemple d’attendre de son client/utilisateur qu’il soit exactement dans la même position que celle d’origine, ou qu’un autre joueur soit exactement à l’angle donné pour commencer à jouer. Toutefois, il est possible d’enregistrer différents ADF puis de les resservir aux utilisateurs en fonction de leur situation (par exemple, on pourrait avoir un ADF d’une pièce pendant le jour, d’un autre pendant la nuit, d’un autre autre avec quelques lumières allumées). Cela permettra de faciliter grandement la localisation du device, et améliorerait par conséquent l’expérience.

La Depth Perception

La Depth Perception (perception de la profondeur, en Français) est une autre étape du SLAM (que ne possède pas ARKit également). C’est une étape que l’on pourrait qualifier « d’appréhension », c’est-à-dire une étape permettant au device de comprendre le réel et son environnement. Plus concrètement, la depth perception est la capacité pour le device à connaître et mesurer les distances des objets dans le monde réel. Dans le cas de Tango, c’est le capteur infrarouge qui se charge de la depth perception.

Le capteur infrarouge fourni par Tango fonctionne de manière optimale en intérieur et capte relativement bien les objets entre 0,5m et 4m maximum. On est donc sur un frein technologique, mais qui sera probablement réglé dans les années à venir afin d’améliorer ces mesures. A l’heure actuelle, le capteur infrarouge fonctionne à l’aide de l’appareil photo, pouvant rendre la perception de la profondeur et des distances complexes notamment dans des zones très lumineuses (d’où l’intérêt d’une utilisation en intérieur pour l’instant), ou bien lorsque l’appareil photo se heurte à des objets qui ne peuvent pas renvoyer de l’infrarouge.


ARKit ou Tango : quelle est la meilleure technologie pour réaliser une application en réalité augmentée ?

C’est une question que beaucoup posent et qu’on pourrait peut-être se poser avec ce bref exposé technique. Cela étant dit, la question n’a finalement que peu de sens. Elle est plutôt double : « Quel est le type d’application que je souhaite réaliser ? Pour le faire, ai-je besoin de la technologie ARKit ou Tango ? ». Comme vous pouvez le constater plus haut, les technologies utilisent différentes méthodes et capteurs pour parvenir à créer des expériences en réalité augmentée.

En pratique, il  faut bien voir qu’ARKit va prendre un avantage conséquent par rapport à la technologie Tango étant donné qu’elle sera présente sur 500 millions de smartphones d’ici la fin de l’année 2017, alors que Tango (qui est pourtant plus complet d’un point de vue technologique) nécessite l’achat d’un hardware spécifique qui sont pour l’heure extrêmement peu nombreux.

Google doit-il sortir « son ARKit like » ?

C’est une question qui nous est souvent posée et à laquelle il n’est pas forcément évident de répondre. Dans un premier temps, nous serions tentés de dire que Google doit proposer une version plus « light » de Tango qui fonctionnerait comme ARKit pour rester dans la compétition. Cela lui donnerait une possibilité de concurrencer Apple qui, dans un premier temps, va clairement dominer le marché. Mais comme toujours, la problématique d’Android est l’éclatement de ses hardwares et softwares. En effet, il existe des centaines de marques de portables qui utilisent Android et dont la plupart sont  des versions d’Android différentes, voire modifiées. Google n’a aucun contrôle sur ces derniers et doit adapter au fur et à mesure ses versions. Il ne peut pas à l’heure actuelle avoir la flexibilité que possède Apple qui contrôle à la fois le hardware et le software. Par conséquent, sortir une version ARKit sur Android pourrait être en l’espèce possible, mais complexe. Google compte plutôt sur la capacité des constructeurs à intégrer Tango et ses capteurs dans les prochains mois/années pour rendre possible des expériences en réalité augmentée.

Tango a – comme on l’a vu – d’un point de vue technique plus de possibilités qui pourront rendre des expériences AR plus impressionnantes et plus « réelles ». Pour aller aussi loin que Google avec Tango, Apple devra également faire évoluer son hardware s’il veut rester dans la course. On pourrait dire que Google a pris un bon départ avec Tango, mais que la première manche a été remportée par Apple. Il est bien moins évident de se prononcer sur la seconde manche qui sera déterminée par le hardware (1), un software plus riche (2) et les usages qui en auront été faits lors de la première manche (3) et qui donneront un bon aperçu de la bonne (ou mauvaise) réception de la réalité augmentée auprès du grand public et des professionnels. Tango est donc toujours dans la course, mais devra être suivi par les constructeurs (dont notamment Samsung) pour pouvoir espérer avoir la renommée et l’utilisation d’ARKit.

A propos de Milan Boisgard

Fondateur du site GoGlasses.fr, je cherche à comprendre et à analyser le phénomène de réalité virtuelle et augmentée pour en tirer des usages concrets et développer le domaine.