Prise en charge des capteurs dans Windows 8

Conception de Windows 8

Vision en coulisses de l'équipe d'ingénierie Windows

Prise en charge des capteurs dans Windows 8

  • Comments 0

Les récentes avancées dans le domaine des technologies de capteur jouent véritablement un rôle de catalyseur dans l'accélération et l'évolution des expériences utilisateur sur PC. Les détecteurs de lumière ambiante, de mouvement, de présence ou de déplacement sont de plus en plus utilisés dans le monde informatique et deviennent peu à peu indispensables. Même certaines fonctionnalités très simples (capteur de lumière ambiante permettant l'ajustement de la luminosité d'un écran, par exemple) sont envisageables sur les PC de bureau. Bien évidemment, nous souhaitons également vous permettre de piloter entièrement ces dispositifs, car nous savons que certains capteurs ouvrent la porte à différents risques et abus, un inconvénient pour bon nombre d'utilisateurs. Dans ce billet rédigé par Gavin Gear, chef de projet au sein de l'équipe Connectivité des périphériques, nous examinons en détail comment les capteurs sont pris en charge dans Windows 8.
--Steven


Nous avons commencé par déterminer comment les capteurs devraient être utilisés par Windows 8 au niveau système, l'objectif étant de permettre au PC de s'adapter à l'environnement tout en préservant l'autonomie.

Luminosité adaptative

La première fonctionnalité système mise en œuvre fut le contrôle automatique de la luminosité de l'écran : la « luminosité adaptative ». Nous avons introduit cette fonctionnalité dans Windows 7. S'adressant avant tout aux appareils mobiles (tablettes, PC convertibles, ordinateurs portables), elle exploite les capteurs de luminosité ambiante. Les écrans actuels prenant en charge des niveaux de luminosité deux fois supérieurs à ceux des écrans fabriqués il y a à peine deux ans, cette fonctionnalité est plus importante que jamais. En contrôlant de façon dynamique la luminosité de l'écran en fonction de la lumière ambiante, nous pouvons optimiser le confort de lecture et économiser la batterie lorsque la luminosité de l'écran est atténuée, dans les environnements sombres.

Quelques reflets sont visibles sur l'écran, mais celui-ci reste lisible L'écran devient presque illisible, à cause des reflets présents sur la surface de l'écran

Tablet PC dans des conditions de luminosité extérieure difficiles, avec luminosité adaptative (à gauche) et sans luminosité adaptative (à droite)

Comme vous pouvez le constater, la luminosité adaptative permet de voir plus clairement les informations affichées à l'écran, car la luminosité de ce dernier augmente automatiquement avec la luminosité ambiante. Ceux d'entre vous qui utilisent un PC de bureau dans une pièce très lumineuse ont certainement constaté que ce phénomène peut se produire à différentes heures de la journée, selon les saisons.

Rotation automatique de l'écran

Bon nombre de smartphones et d'autres appareils mobiles partent du principe que lorsque vous faites pivoter l'appareil, l'affichage pivote également pour s'adapter à la nouvelle orientation (et à l'éventuel changement de rapport largeur-hauteur). Les données transmises par l'accéléromètre permettent à l'appareil de déterminer son orientation. Grâce à la rotation automatique de l'affichage, les utilisateurs peuvent profiter de leurs appareils (tablettes, PC convertibles, etc.) de façon plus naturelle et plus intuitive, sans devoir faire pivoter manuellement l'écran à l'aide de commandes logicielles ou de boutons physiques.

Écran Démarrer de Windows 8 sur un Tablet PC tenu à l'horizontale Écran Démarrer de Windows 8 sur un Tablet PC tenu à la verticale

Écran Démarrer de Windows 8 en modes Paysage et Portrait

Accompagnement des développeurs pour la prise en charge des capteurs

Une fois que nous avions défini les principes de base du fonctionnement des capteurs dans Windows 8, nous devions également réfléchir à la manière dont les applications allaient exploiter les capteurs. Pour identifier les scénarios à prendre en charge, nous avons étudié différents exemples d'applications exploitant des capteurs : jeux, applications commerciales, outils, utilitaires, etc.

Notre priorité numéro un était de permettre aux applications de détecter les mouvements et les rotations d'écran. Pour cela, l'appareil doit disposer d'un accéléromètre, un dispositif permettant de mesurer la force engendrée par la gravité et les déplacements de l'appareil lui-même. Cependant, dans la plupart des scénarios, il est nécessaire d'aller au-delà des simples concepts de mouvement et de gravité. Ainsi, l'orientation est un critère indispensable dans de nombreuses applications. Pour permettre à un PC de mieux déterminer l'orientation, nous devions intégrer une fonctionnalité de compas.

Cela nécessite au minimum un accéléromètre 3D (mesurant l'accélération sur trois axes) ainsi qu'un magnétomètre 3D (mesurant l'intensité des champs magnétiques sur trois axes). Cet ensemble de capteurs, appelé système de détection de mouvement et d'orientation à six axes, prend en charge un compas simple à compensation d'inclinaison, la rotation d'écran et certains jeux simples de type labyrinthe. Cependant, lors de tests et d'essais réalisés avec des prototypes, nous avons remarqué deux inconvénients majeurs : la précision du compas est irrégulière et la réactivité est insuffisante pour les jeux interactifs en 3D.

Depuis quelque temps, un nouveau type de capteur commence à être intégré à certains téléphones récents : le capteur gyroscopique. Les capteurs gyroscopiques mesurent la vitesse angulaire, en général sur trois axes. Vous pouvez également utiliser les données issues des capteurs gyroscopiques pour accroître la réactivité et la précision des systèmes de détection de mouvement 3D. Bien que très sensibles, les capteurs gyroscopiques ne possèdent aucune référence en matière d'orientation (pas de gravité ou de nord magnétique, par exemple).

Ce schéma montre comment sont représentées les données gyroscopiques, sous la forme de trois rotations le long des trois axes principaux de l'appareil :

Le lacet correspond à une rotation sur l'axe +Z, le roulis à une rotation sur l'axe +Y et le tangage à une rotation sur l'axe +X

Au départ, le besoin de recourir à de tels capteurs semblait limité à un nombre restreint d'applications, notamment certains jeux spécialisés. Cependant, à mesure que nous progressions dans l'étude des capteurs de mouvement et d'orientation 3D, nous avons réalisé que les applications sont plus immersives et séduisantes si elles réagissent aux mouvements que les humains peuvent comprendre facilement (secouer, tourner, faire pivoter dans plusieurs dimensions, etc.). Avec ce type de capteur, il serait certainement possible de créer des jeux 3D très immersifs, mais cela permettrait aussi à bien d'autres applications de réagir de façon naturelle à différents mouvements : applications de cartographie et de navigation, utilitaires de mesure, applications interactives (entre deux machines), jeux simples, etc.

Défis en matière de développement

Nous avons commencé notre étude des applications à détection de mouvement en créant des maquettes d'expériences 3D. La première difficulté était de mettre en relation l'orientation physique de l'appareil avec un environnement 3D virtuel intégré à l'application. Nous avons décidé de modéliser une expérience de réalité augmentée simple, en émulant une tablette jouant le rôle de fenêtre ouverte sur un monde virtuel. Le concept était relativement simple : lorsque vous déplacez l'appareil en regardant l'écran, l'environnement virtuel (l'intérieur d'une pièce) semble rester immobile.

Au départ, nous avons essayé d'utiliser l'accéléromètre pour faire réagir l'environnement 3D aux mouvements verticaux de l'appareil. Lorsque vous tenez l'appareil sans le bouger, la scène reste stable. Lorsque vous inclinez l'appareil vers l'avant ou l'arrière, la scène doit suivre le même mouvement. Dès le départ, un problème s'est posé : les données issues de l'accéléromètre contenaient du « bruit » (données parasites) provoquant des saccades dans les mouvements de l'environnement 3D, même lorsque l'appareil était tenu de façon stable. Nous avons pu constater clairement la présence de ce bruit en collectant les données de l'accéléromètre et en les présentant sous forme de graphique.

L'accélération sur l'axe X correspond à une ligne irrégulière dont la valeur est proche de 0 ; l'accélération sur l'axe Y correspond à une ligne irrégulière dont la valeur est proche de 0 ; l'accélération sur l'axe Z correspond à une ligne irrégulière dont la valeur est proche de -1

En l'absence de bruit, les lignes du graphique seraient parfaitement droites. La technique habituellement mise en œuvre pour supprimer ce bruit consiste à appliquer un filtre passe-bas au flux de données brutes. Après mise en place de ce dispositif dans notre prototype, le mouvement obtenu s'est avéré régulier et stable (sans saccades). En revanche, le filtre passe-bas a introduit un autre problème : l'application avait perdu en réactivité et réagissait lentement aux mouvements. Nous devions donc trouver un moyen de compenser les saccades sans mettre à mal la réactivité.

Nous avons ensuite essayé de mettre en œuvre une fonctionnalité permettant de « regarder » à gauche et à droite dans l'environnement 3D virtuel de l'application. Pour cela, nous avons utilisé un compas à six axes (accéléromètre 3D + magnétomètre 3D) pour prendre en charge ce type de mouvement. Si cette solution fonctionnait à peu près correctement, le mouvement manquait de cohérence, en raison de l'instabilité générale du compas à six axes. Il s'est également avéré difficile d'associer les mouvements verticaux (haut/bas) aux mouvements horizontaux (gauche/droite).

Au vu de nos expériences, il paraissait évident qu'une telle combinaison de capteurs n'était pas à même d'offrir la fluidité et la réactivité que nous souhaitions. L'accéléromètre ne fournissait pas de données suffisamment claires et ne pouvait pas être utilisé seul pour déterminer l'orientation de l'appareil. Peu réactif, le magnétomètre subissait quant à lui des interférences électromagnétiques (comme l'aiguille d'une boussole, qui se bloque parfois dans une certaine position). Nous devions donc réaliser des tests avec des capteurs gyroscopiques, mais ceux-ci étant uniquement capables de déterminer la vitesse de rotation, nous ne savions pas vraiment s'ils nous seraient utiles.

Créer un « capteur composite »

En réalisant d'autres tests, nous avons compris qu'en utilisant les trois capteurs simultanément, nous pourrions éventuellement résoudre nos problèmes. Il s'avère qu'utilisés ensemble, les accéléromètres, les magnétomètres et les capteurs gyroscopiques parviennent à compenser leurs propres faiblesses : les données sont plus précises et la réactivité est meilleure. En combinant ces trois types de capteurs, il est possible de créer une expérience utilisateur plus performante, plus réactive et plus fluide que ce que peuvent offrir des capteurs individuels. En associant les données issues de plusieurs capteurs dans le but d'améliorer les résultats généraux, nous créons ce que nous appelons un capteur composite.

Il s'agit d'un cas typique où le tout est bien supérieur à la somme de ses parties. Un système standard à capteurs composites exploite un accéléromètre 3D, un magnétomètre 3D, ainsi qu'un capteur gyroscopique 3D, pour créer un système de « capteur composite à neuf axes ». Pour comprendre le fonctionnement de ce système, examinons les données d'entrée et de sortie.

Matériel (accéléromètre 3D, capteur gyroscopique 3D, magnétomètre 3D) et flèches pointant vers « Transmission directe » et « Capteurs composites » ; d'autres flèches partent de ces deux derniers éléments et pointent vers les données de sortie des capteurs (accéléromètre 3D, capteur gyroscopique 3D, compas 3D, inclinomètre, orientation des appareils)
Système de capteur composite à neuf axes

Ce schéma montre deux types de données de sortie : les données de sortie de type « transmission directe » sont transmises directement par le capteur à l'application, tandis que les données de sortie du capteur composite sont synthétisées sous forme de données plus pointues.

Certaines applications peuvent utiliser directement les données de type « transmission directe ». Ces données peuvent être utilisées de façon brute dans différents scénarios. C'est notamment le cas pour les applications offrant un podomètre comptant vos pas. Le graphique ci-dessous montre les données issues d'un accéléromètre, dans le cas d'une personne qui se déplace en tenant un Tablet PC. Ce graphique montre clairement qu'il est possible de détecter chaque pas.

Accélération sur l'axe X, accélération sur l'axe Y et accélération sur l'axe Z, affichées sous formes de lignes sur le graphique, qui présente des variations régulières correspondant au mouvement de chaque pas.

 

Cependant, comme nos essais l'ont montré, bon nombre d'applications ne peuvent pas utiliser efficacement les données brutes des capteurs. Voici quelques exemples :

  • Applications de boussole
  • Application de navigation améliorée et de réalité augmentée
  • Jeux simples
  • Jeux en 3D

Voici une capture d'écran issue d'un jeu en 3D :

Jeu simple en 3D et cibles affichées dans une pièce en 3D simulée

Jeu de tir subjectif en 3D (présenté lors de la conférence //Build/)

Ces applications doivent utiliser les données du capteur composite pour que les fonctionnalités mises en œuvre puissent fonctionner. Le capteur composite a ceci de « magique » qu'il permet de combiner mathématiquement les données issues des trois capteurs pour créer un résultat plus complexe : compas à compensation d'inclinaison, inclinomètre (avec informations de lacet, de roulis et de tangage) et représentations plus sophistiquées de l'orientation de l'appareil. Avec ce type de données, des applications plus sophistiquées peuvent réagir de façon rapide, fluide et réactive aux mouvements naturels.

En intégrant un capteur composite, Windows 8 offre une solution complète répondant aux besoins d'un large éventail d'applications. Le capteur composite de Windows résout les problèmes liés aux mouvements saccadés et aux transitions brutales, tout en réduisant les problèmes d'intégrité des données et en générant des données permettant de représenter de façon transparente l'ensemble des mouvements de l'appareil dans un espace en trois dimensions (sans transitions invraisemblables).

Collaborer avec les fabricants de matériel

Pour concevoir un capteur composite pour Windows, nous devions également aider les fabricants de matériel à exploiter cette solution, en mettant très rapidement en place des partenariats. Il est relativement simple de concevoir un capteur composite pour un appareil unique. Cependant, Windows est exécuté sur de nombreux types de PC aux formats très différents, qui utilisent des composants matériels conçus par différents fabricants. Nous devions donc mettre au point une solution permettant à l'ensemble des acteurs de l'écosystème Windows de participer.

Nous devions en premier lieu définir un cahier des charges pour les capteurs susceptibles de fonctionner avec la solution de capteur composite de Windows. À travers les consignes de certification Windows, nous avons défini des spécifications de performances. Pour aider les fabricants de matériel à tester la compatibilité de leurs solutions avec Windows, nous avons conçu différents tests fournis avec le kit de certification Windows.

Il fallait également réduire le coût lié au développement et à la prise en charge des pilotes. Pour faciliter le travail des fabricants de capteurs et de PC, nous avons développé un pilote Microsoft fonctionnant avec tous les capteurs compatibles Microsoft, qu'ils soient connectés en USB ou par le biais de bus basse consommation de type I2C. Ce pilote de classe pour capteurs permet aux fabricants de matériel de proposer des capteurs innovants, tout en profitant d'une prise en charge simplifiée de leur matériel, grâce aux pilotes fournis avec le système d'exploitation Windows.

Pour accélérer l'adoption du pilote de classe, Microsoft a collaboré avec différents industriels, afin de traduire la spécification en standards publics. En juillet 2011, le standard relatif aux capteurs a été introduit dans la spécification HID (Human Interface Device) de l'USB-IF (spécification HID version 1.12, introduite par le biais de la demande de révision n° 39). Grâce à cette standardisation, les fabricants de capteurs peuvent concevoir des dispositifs compatibles avec Windows 8, en respectant les spécifications du standard public de l'USB-IF relatives à la conformité des microprogrammes. Le temps et les coûts liés à l'intégration des capteurs physiques dans les PC Windows 8 sont ainsi réduits. La standardisation réduit également les coûts de support et permet aux PC Windows 8 équipés de capteurs de profiter de fonctionnalités matérielles plus homogènes.

Au-delà de la standardisation du pilote de classe, nous souhaitions également optimiser les performances du capteur composite et limiter son incidence sur l'autonomie. Chaque capteur actif consomme de l'électricité et l'envoi des données dans la pile de traitement consomme à la fois de la mémoire et du temps processeur. Pour réduire l'impact des systèmes de capteurs composites fonctionnant sous Windows 8 sur la consommation électrique et les performances du système, deux solutions ont été mises en œuvre :

1. L'architecture des interfaces des capteurs composites de Windows 8 a été conçue de telle sorte que la majeure partie du traitement des données issues du capteur soit réalisée au niveau matériel. Ainsi, les algorithmes nécessitant une puissance de calcul importante ne sont pas traités par le processeur principal, ce qui permet de réduire la consommation et les cycles de traitement.

2. Nous avons mis en place des mécanismes de filtrage performants répondant directement aux besoins des applications exploitant des capteurs, quelle que soit la fréquence d'exécution. Grâce à ce modèle de données et d'événements à la demande, les données des capteurs sont envoyées dans la pile de traitement exactement à la vitesse requise par les applications, jamais plus rapidement que nécessaire. Le débit des données issues du capteur utilise ainsi moins de ressources processeur.

Capteurs et applications de style Metro

Pour organiser tous ces éléments, nous devions encore permettre aux développeurs d'applications de style Metro d'exploiter la puissance et les avantages des capteurs composites. Pour ce faire, nous avons conçu une API de capteur intégrée au nouvel environnement WinRT. Grâce à ces API, les développeurs peuvent exploiter toute la puissance des capteurs composites à partir de n'importe quelle application de style Metro. Extrêmement claires et simples, ces API permettent aux développeurs d'accéder à de nombreuses données, qu'ils travaillent sur de petits jeux simples ou sur des applications de réalité virtuelle. Bien évidemment, ces fonctionnalités sont mises à la disposition des développeurs de jeux ou d'applications de bureau sous forme d'API Win32.

L'extrait de code JavaScript ci-dessous montre à quel point il est facile d'accéder à l'accéléromètre et de s'abonner aux événements par le biais de Windows Runtime :

var accelerometer;
accelerometer = Windows.Devices.Sensors.Accelerometer.getDefault();
accelerometer.addEventListener("readingchanged",onAccReadingChanged);

function onAccReadingChanged(e) {
var accelX = e.reading.accelerationX;
var accelY = e.reading.accelerationY;
var accelZ = e.reading.accelerationZ;
}

Pour plus d'informations sur la prise en charge des capteurs dans Windows Runtime, visionnez cette séance //build/ consacrée à l'utilisation des données de position et des capteurs dans vos applications.

À ce stade, vous vous demandez peut-être comment essayer les capteurs composites sous Windows 8 ou écrire des applications utilisant ces nouvelles fonctionnalités. Les développeurs qui ont participé à la conférence //build/ en 2011 ont reçu la tablette Samsung dotée de Windows 8 Developer Preview, qui intègre un ensemble complet de capteurs. Seuls 4 000 exemplaires ont été confiés aux développeurs et tout le monde n'a pas eu la chance d'en profiter. Sachez cependant que le système de capteur composite à neuf axes intégré à l'appareil Windows Developer Preview est désormais disponible en ligne auprès de ST Microelectronics. La carte de développement ST Microelectronics eMotion pour Windows 8 (référence STEVAL-MKI119V1) se connecte en USB et fonctionne avec le pilote de classe HID pour capteurs inclus dans Windows 8. Si vous avez téléchargé la version Developer Preview de Windows 8 et que vous êtes impatient de tester ces capteurs, n'hésitez pas à vous procurer cette carte.

Circuit imprimé connecté à un dongle USB

Carte de développement ST Microelectronics eMotion pour Windows 8

Observons maintenant le capteur composite en action !


Téléchargez cette vidéo pour la regarder sur votre lecteur habituel :
MP4 haute qualité | MP4 faible qualité

-- Gavin

  • Loading...
Leave a Comment
  • Please add 2 and 7 and type the answer here:
  • Post