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 :

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].

HTML5
Logos des technologies liées à HTML5

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.

Android
Logos d'Android, iOS et Windows Phone

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.

OpenGL
Logos d'OpenGL ES et WebGL

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

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

JSAR

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

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

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

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

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

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

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)

DFusion

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)

Vuforia

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)

GDK

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