Définitions
Dans cet article sont présentés les SDK actuellement disponibles ainsi que les technologies qui gravitent autour du développement d'applications mobiles de réalité augmentée.
Qu'est-ce qu'un SDK ?
SDK est l'acronyme de Software Development Kit. Un SDK est un ensemble d'outils qui encadrent et facilitent le développement d'une application. Le contenu d'un SDK est très variable : il peut être très complet jusqu'à proposer des interfaces graphiques, mais il peut également se limiter à quelques fonctionnalités. Quoi qu'il en soit, un SDK contient en principe une ou plusieurs API.
Qu'est-ce qu'une API ?
API est l'acronyme de Application Programming Interface. Il s'agit d'un ensemble de règles qui permettent d'établir un dialogue entre programmes. Via une API, on peut donc accéder aux fonctionnalités proposées par les auteurs du SDK.
Dans le cas des SDK dédiés au développement d'applications de réalité augmentée, les fonctionnalités suivantes sont implémentées quasi-systématiquement :
- reconnaissance d'images (pour détecter les marqueurs entre autres) ;
- tracking 2D/3D (pour suivre les marqueurs ou établir des correspondances entre images successives dans le cas de méthodes sans marqueur) ;
- calibration (pour estimer la matrice de projection) ;
- rendu graphique 2D/3D (pour visualiser les modèles virtuels).
Technologies supports
Les technologies standards
Les technologies pour le développement d'applications mobiles en général se sont plus ou moins standardisées. En particulier, en ce qui concerne le développement d'applications web, le trio que forment HTML(5) pour la partie statique, CSS(3) pour l'habillage et Javascript (pour la partie dynamique) est désormais incontournable. Ces technologies font d'ailleurs partie des recommandations du W3C [1].

Par ailleurs, le déploiement de HTML5 permet une meilleure intégration du multimédia et des éléments graphiques au sein d'une page web, ce qui est très intéressant dans le cadre d'applications de réalité augmentée. On peut citer par exemple le standard WebRTC [2] qui permet entre autres d'accéder à la caméra de l'appareil via le navigateur ou encore les éléments <video>, <audio> et <canvas>. Et dans la mesure où les grands navigateurs (Firefox, Chrome, etc) proposent maintenant une version dédiée aux smartphones et tablettes, l'utilisation de ces technologies pour des applications mobiles est devenue une alternative de premier plan, d'autant que de telles applications sont de fait indépendantes du système d'exploitation. Le seul inconvénient reste qu'une connexion à Internet est nécessaire.

Il est toutefois toujours possible de développer des applications « natives », c'est-à-dire dédiée à un système d'exploitation (OS) en particulier. Les trois OS majeurs que sont Android, iOS et Windows Phone offrent autant de possibilités que les technologies liées aux applications web, à l'exception de leur portabilité qui reste limitée. A chaque OS est lié un ou plusieurs SDK qui permettent un développement relativement simple et encadré [3,4,5].
Application mobile et 3D
Pour tout ce qui a trait au rendu graphique de modèles 2D ou 3D, l'API OpenGL ES [6] proposée par le groupe Khronos tend fortement à s'imposer sur les systèmes embarqués. Elle est d'ailleurs intégrée aux systèmes d'exploitation Android et iOS. OpenGL ES est en fait une version simplifée d'OpenGL, allégée en termes de fonctionnalités car destinée aux applications embarquées. Il s'agit d'une bibliothèque libre de droit permettant d'exploiter l'accélération graphique matérielle des appareils mobiles. OpenGL ES 2.0, qui donne en autres la possibilité de manipuler des shaders, est actuellement la version la plus répandue. OpenGL ES 3.0 est en cours de déploiement.

En outre, il existe la spécification WebGL [7], qui permet d'utiliser OpenGL ES au sein même d'une page web et donc d'un navigateur. Cette spécification est intégrée à HTML5 à travers l'objet <canvas>, qui permet pour la génération de graphiques à la volée via un script, en principe Javascript.
SDK
La liste exhaustive des SDK pour le développement d'applications mobiles de réalité augmentée à proprement parler est relativement longue ; une liste très complète peut être consultée ici. Aussi, on se concentrera sur les SDK les plus visibles, permettant le développement d'applications Web et Android.
Les SDK open source
La première catégorie est celle des SDK open source, qui sont en général d'abord des applications autonomes, mais personnalisables et modifiables à volonté, sous réserve de respecter les conditions imposées par la licence de publication.
ARToolkit
ARToolkit est la boîte à outils « historique » pour le développement d'applications de réalité augmentée, qui a largement été utilisée, notamment dans le domaine de la recherche, et qui l'est encore. De nombreux articles scientifiques font en effet référence à cette bibliothèque multi-plateformes (Windows, Linux, Mac OS X, SGI) qui permet le développement d'applications en C, JAVA ou Matlab.
Plus d'informations ici.
JSARToolkit
Comme son nom l'indique, JSARToolkit est une déclinaison indirecte d'ARToolkit. Il s'agit d'une bibliothèque Javascript, construite sur FLARToolkit, une bibliothèque Flash (ActionScript3), elle-même construite sur ARToolkit. Ce SDK est donc particulièrement indiqué pour le développement d'applications Web.
Plus d'informations ici.
awe.js (BuildAR)
BuildAR a récemment (mi-janvier 2014) publié un plugin jQuery relativement simple d'utilisation, qui se base sur JSARToolkit, ainsi que three.js [8], une API Javascript pour l'affichage de modèles 3D. Bien que peu documenté pour le moment, ce plugin semble prometteur ; un article y sera d'ailleurs consacré sur ce site.
Plus d'informations ici.
AndAR
AndAR est une application Android publiée sous licence GNU GPL, construite à partir d'ARToolkit et d'OpenGL ES. Cette application est spécifiquement orientée « marker-based » et peut être utilisée comme framework pour développer ses propres applications.
Plus d'informations ici.
DroidAR
Dans la même lignée que AndAR, DroidAR est une application Android qui se définit comme un framework pour le développement d'applications de réalité augmentée aussi bien de type visualiseur (basé marqueur) que de type navigateur (basé localisation).
Plus d'informations ici.
Mixare
Enfin, une dernière application Android : mixare. Il s'agit encore d'un framework, mais spécifiquement dédié au développement d'applications de RA de type navigateur et « location-based ». Allant de la simple personnalisation des bases de points d'intérêts utilisées à la modification des classes déjà implémentées, ce SDK aura un article dédié sur ce site.
Plus d'informations ici.
Les SDK propriétaires
La seconde catégorie de SDK est celle qui regroupe les SDK propriétaires, qui sont bien plus fournis que les SDK open source. Ils bénéficient en outre chacun d'une large communauté de développeurs qui partagent leurs expériences. Aussi, de tels SDK sont en principe bien plus abordables. En contrepartie, ils proposent plusieurs versions de leur SDK dont les plus abouties sont payantes. Mais leur version gratuite, bien que bridée, ouvre déjà un large champ des possibles.
Metaio
Acteur majeur de la réalité augmentée, Metaio propose un SDK très complet permettant le développement d'applications Android, iOS, Windows Phone, ainsi que d'applications Web grâce à son application XML appelée AREL. Tous les types d'applications de RA (visualiseurs, navigateurs, marker-based, markerless, location-based) sont supportés. De nombreux tutoriaux et documents sont accessibles sur leur portail développeur. Par ailleurs, il est possible de développer des applications, destinées à être utiliser au sein de Junaio (l'application de Metaio), « sans coder » via le logiciel Metaio Creator. Un article sur la prise en main d'AREL sera publié sur ce site.
Plus d'informations ici.
Wikitude
Dans la même lignée que Metaio, Wikitude est un SDK très abouti, fondamentalement orienté « applications Web », qui permet quand même de programmer « en natif » dans une moindre mesure. Ce SDK bénéficie également d'une solide documentation et de divers tutoriaux pour bien commencer.
Plus d'informations ici.
D'Fusion (Total Immersion)
Au même titre que Metaio ou Wikitude, le SDK de Total Immersion, D'Fusion Mobile, permet le développement d'applications Android ou iOS, de type visualiseur ou navigateur. De nombreuses vidéos-tutoriel sont en ligne pour aider à la prise en main des différentes fonctionnalités.
Plus d'informations ici.
Vuforia (Qualcomm)
Pour le développement d'applications Android ou iOS plutôt axées sur des méthodes de calibration sans marqueur, le SDK Vuforia, distribué par Qualcomm, qui propose des API en JAVA et C++ est une alternative tout aussi intéressante. Egalement très bien documenté, le site dédié aux développeurs présente de nombreux exemples et tutoriaux.
Plus d'informations ici.
Glass Developement Kit (Google)
SDK spécialement dédié pour le développement d'applications utilisant les Google Glass, le GDK de Google paraît particulièrement intéressant dans la mesure où il s'agit d'une extension du SDK pour le développement d'applications Android. L'inconvénient, et non des moindres, reste qu'il faut posséder des lunettes Google.
Plus d'informations ici.
Références
[1] W3C. Web Design and Applications. http://www.w3.org/standards/webdesign/ |
[2] WebRTC. Web Real-Time Communications. http://www.webrtc.org/ |
[3] Android. Develop | Android Developpers. http://developer.android.com/develop/index.html |
[4] Apple. Apple Developper. https://developer.apple.com/ |
[5] Windows. Windows Phone Dev Center. http://dev.windowsphone.com/en-us/develop |
[6] Khronos. OpenGL ES - The Standard for Embedded Accelerated 3D Graphics. http://www.khronos.org/opengles/ |
[7] Khronos. WebGL - OpenGL ES 2.0 for the Web. http://www.khronos.org/webgl/ |
[8] three.js. Javascript 3D Library. http://threejs.org/ |
ARToolkit. ARToolkit Home Page. http://www.hitl.washington.edu/artoolkit/ |
HTML5rocks. Writing Augmented Reality Applications using JSARToolKit. http://www.html5rocks.com/en/tutorials/webgl/jsartoolkit_webrtc/ |
BuildAR. awe.js, the jQuery for the Augmented Web. https://github.com/buildar/awe.js |
AndAR. Android Augmented Reality. http://code.google.com/p/andar/ |
DroidAR. Mobile Location-based Augmented Reality Framework for Android. https://github.com/bitstars/droidar |
Mixare. Free Open Source Augmented Reality Engine. http://www.mixare.org/ |
Metaio. Metaio Developer Portal. http://dev.metaio.com/sdk/getting-started/ |
Wikitude. Augmented Reality SDK (Wikitude) for Android, iOS, BB10. http://www.wikitude.com/products/wikitude-sdk/ |
Total Immersion. D’Fusion Mobile. http://www.t-immersion.com/products/dfusion-suite/dfusion-mobile |
Qualcomm. Vuforia Developer. https://developer.vuforia.com/ |
Google. Glass Development Kit. https://developers.google.com/glass/develop/gdk/index |
Wikipedia. Kit de développement. http://fr.wikipedia.org/wiki/Kit_de_d%C3%A9veloppement |
Wikipedia. Interface de programmation. http://fr.wikipedia.org/wiki/Interface_de_programmation |