PROCÉDÉ DE CONTROLE D'UN CURSEUR PAR DES MESURES D'ATTITUDE D'UN POINTEUR ET POINTEUR METTANT EN ŒUVRE
LEDIT PROCEDE
La présente invention se rapporte à un procédé de contrôle des mouvements et de l'orientation d'un curseur, sur une surface d'affichage, par exemple plane telle qu'un écran de téléviseur, un écran de PC, ... Le contrôle du déplacement d'un curseur sur une surface d'affichage non planaire de forme quelconque est également possible par le procédé et le dispositif de l'invention. Un assemblage d'écrans plats coordonnés peut par exemple constituer une surface non plane (sphère, cylindre, ...). La surface d'affichage est dotée d'un système métrique de coordonnées. Un utilisateur muni d'un pointeur instrumenté de moyens de mesure de mouvements et de boutons de commande peut ainsi par exemple contrôler, par le biais du déplacement dans l'espace 3D du pointeur instrumenté, le déplacement, et/ou la position et/ou l'orientation d'un curseur sur une surface d'affichage qui affiche une interface graphique d'une ou plusieurs applications logicielles. Le pointeur de commande peut ainsi déclencher l'exécution de fonctions programmées choisies par la position et/ou le déplacement et/ou l'orientation du pointeur et/ou par l'utilisation de commandes prévues à cet effet sur le pointeur.
Les dispositifs de cette nature ont vocation à se substituer aux télécommandes dans lesquelles les commandes ne permettent pas de contrôler de façon continue un curseur sur la surface d'affichage et consistent en une liste de codes associés aux boutons pressés par l'utilisateur qui sont transmis à l'équipement à commander via une liaison infrarouge ou plus récemment radioélectrique.
Un des premiers dispositifs de ce type a été divulgué par le brevet US 5,440,326. Dans ce dispositif, des gyroscopes procurent deux mesures de vitesses angulaires (en pitch et yaw) qui sont converties en commandes du curseur selon deux axes de la surface d'affichage. Ce type de dispositif présente cependant des limitations dans son ergonomie, car il n'est basé que sur la vitesse de rotation du pointeur selon 2 axes, mesurés dans le repère du pointeur, et pas sur l'orientation du dispositif dans le repère
d'affichage. Par exemple, ces mesures sont sensibles à l'orientation selon laquelle le pointeur est tenu par l'utilisateur (le 3eme angle, roll ou tilt, non mesuré). En effet, lorsque l'utilisateur tient la télécommande avec un angle de torsion du poignet (appelé roulis), verra le curseur se déplacer dans une direction non désirée (voir explications de D5). Par ailleurs, la limitation à deux axes de mesure rend complexe l'utilisation de la télécommande pour des angles importants et l'ergonomie du pointage en est alors affectée. Pour lutter contre ces effets, une stabilisation des mesures peut être effectuée par des moyens mécaniques, les gyroscopes étant montés sur des cardans. Cependant, cette stabilisation mécanique est d'une part limitée à des petits angles de roll (butées mécaniques) et est imparfaite également en raison de l'inertie des cardans. En outre, une telle correction n'est pas applicable à des dispositifs miniatures.
Ces inconvénients peuvent dans une certaine mesure être surmontés par des dispositifs dans lesquels les mesures de vitesse de rotation en yaw et pitch fournies par des gyromètres miniatures sont corrigées de l'angle de roll par les mesures d'un accéléromètre en utilisant une matrice de rotation à deux dimensions. Des dispositifs de cette nature sont notamment divulgués par les brevets US 5,598,187 (Ide) et 7,158,1 18 (Liberty). Dans les dispositifs de cette nature, les différents angles doivent être effectivement calculés à partir des mesures de capteurs différents. Dans la demande internationale publiée sous le n°WO2009/156476 (Mathews) appartenant à la demanderesse de la présente demande, une correction est appliquée sans calcul préalable de l'angle de roll. La correction d'angle de roulis repose en fait sur un principe qui est fondamentalement imparfait dans la mesure ou l'accéléromètre est également sensible à l'accélération due au mouvement ce qui perturbe inévitablement l'estimation de l'angle de roulis et donne un effet imprécis sur la trajectoire du curseur sur la surface d'affichage. Enfin, certaines orientations du pointeur (proche vertical, par exemple) ne permettent plus de calculer l'angle de roulis, car celui-ci n'est plus mesuré par l'accéléromètre. La fonction de compensation de roulis introduit donc à cette occasion des défauts qui ne sont pas présents initialement dans l'ergonomie du contrôle du curseur par le mouvement.
Une manière de surmonter l'inconvénient d'une estimation séparée des angles a été divulguée par la demande internationale publiée sous le n °WO2009/156499, dont un des titulaires est le titulaire de la présente demande, dans laquelle on applique un filtre de Kalman étendu pour réaliser une estimation conjointe des variables d'état en utilisant un modèle d'état comprenant une équation différentielle du premier ordre. Cependant, la mise en oeuvre de ce filtrage est limitée à un seul mode de contrôle du mouvement du curseur en fonction du mouvement du pointeur et également gourmande en capacités de calcul.
L'invention permet de surmonter les inconvénients de cet art antérieur en proposant une procédure de calcul des déplacements d'un curseur dans la surface d'affichage (ou pointée) à partir de mesures d'attitude du pointeur.
A cet effet, l'invention procure un procédé de contrôle de premiers paramètres caractérisant un curseur sur une surface d'affichage à l'aide d'un pointeur mobile dans l'espace, lesdits premiers paramètres étant choisis dans un groupe comprenant les déplacements, la position et l'orientation dudit curseur, ledit procédé comprenant une étape de détermination d'au moins un deuxième paramètre d'un repère lié au pointeur, ledit au moins un deuxième paramètre étant choisi dans un groupe comprenant l'attitude, la position et la vitesse angulaire dudit repère, un vecteur p étant lié audit repère, ledit procédé étant caractérisé en ce qu'il comprend en outre une étape de calcul desdits premiers paramètres en utilisant une ou plusieurs intersections de la droite portée par ledit vecteur p avec une surface de projection, ladite surface de projection étant prédéterminé et distincte de la surface d'affichage ladite étape de calcul recevant en entrée au moins une partie desdits deuxièmes paramètres.
Avantageusement, au moins une partie des premiers paramètres est calculée par une étape de description de la surface de projection établie par au moins une position d'un point appartenant au plan tangent à ladite
surface au point d'intersection à cette surface au point d'intersection considéré.
Avantageusement, la description de la surface de projection varie en fonction de la translation du pointeur ou du contexte.
Avantageusement, la surface de projection appartient au groupe des surfaces planes, des surfaces cylindriques et des surfaces sphériques. Avantageusement, la surface de projection est une surface plane verticale et en ce que l'on calcule une première coordonnée, respectivement un premier déplacement, du point comme étant égal(e), à une constante multiplicative près, à la tangente de l'angle de yaw du pointeur, respectivement à la différence des tangentes des angles de yaw du pointeur à la fin et au début dudit déplacement.
Avantageusement, la surface de projection est une surface plane verticale et on calcule une deuxième coordonnée, respectivement un deuxième déplacement, du point comme étant égal(e), à une constante multiplicative près, au rapport de la tangente de l'angle de pitch au cosinus de l'angle de yaw du pointeur, respectivement à la différence des rapports de la tangente de l'angle de pitch au cosinus de l'angle de yaw du pointeur à la fin et au début dudit déplacement. Avantageusement, la surface de projection est une surface cylindrique verticale et on calcule une première coordonnée, respectivement un premier déplacement, du point comme étant égal(e) , à une constante multiplicative près, à l'angle de yaw du pointeur en un point de la surface, respectivement à la différence des angles de yaw du pointeur à la fin et au début dudit déplacement.
Avantageusement, la surface de projection est une surface cylindrique verticale et on calcule une deuxième coordonnée, respectivement un deuxième déplacement, du point comme étant égal(e) , à une constante multiplicative près, à la tangente de l'angle de pitch du pointeur en un point
de la surface, respectivement à la différence des tangentes des angles de pitch du pointeur à la fin et au début dudit déplacement.
Avantageusement, la surface de projection est une surface sphérique centrée sur le pointeur et on calcule une première coordonnée, respectivement un premier déplacement, du point comme étant égal(e), à une constante multiplicative près, à l'angle de yaw multiplié par le cosinus de l'angle de pitch du pointeur en un point de la surface, respectivement à la différence des angles de yaw du pointeur à la fin et au début dudit déplacement multipliée par le cosinus de l'angle de pitch au début du déplacement.
Avantageusement, la surface de projection est une surface sphérique centrée sur le pointeur et on calcule une deuxième coordonnée, respectivement un deuxième déplacement du point comme étant égal(e), à une constante multiplicative près, à l'angle de pitch du pointeur en un point de la surface, respectivement à la différence des angles de pitch du pointeur à la fin et au début dudit déplacement. Avantageusement, on calcule l'orientation du curseur en projetant selon p un vecteur perpendiculaire au vecteur p sur ladite suface.
Avantageusement, on calcule la rotation d'un vecteur perpendiculaire à p en projetant l'intégrale de la vitesse angulaire selon l'axe du pointeur ou à partir de son orientation.
Avantageusement, le calcul d'au moins une partie des premiers paramètres est effectué à partir de la vitesse angulaire du pointeur mesurée dans le repère du capteur et de l'attitude.
Avantageusement, le déplacement du curseur, à deux composantes, est calculé en effectuant la projection du vecteur vitesse angulaire du pointeur, dont la composante selon le vecteur p lié au pointeur est mise à zéro, et transformé dans le repère lié à la terre, sur les axes (Xe, Ye) du repère
définissant la surface élémentaire pour la position et orientation courante du pointeur, et multiplié par des facteurs de gain.
Avantageusement, le déplacement du curseur, à deux composantes, est calculé en effectuant la projection du vecteur vitesse angulaire du pointeur exprimé dans le repère terrestre, sur les axes (Xe, Ye) du repère définissant une surface élémentaire plane et prise perpendiculaire au vecteur p défini par le pointeur et multiplié par des facteurs de gain Avantageusement, le pointage est réalisé en mode absolu.
Avantageusement, le pointage est réalisé en mode relatif,
Avantageusement, le pointage est réalisé en mode relatif selon une direction et en mode absolu selon une autre direction.
L'invention procure également un système de contrôle de premiers paramètres caractérisant un curseur sur une surface d'affichage à l'aide d'un pointeur orienté dans l'espace vers ladite surface, lesdits premiers paramètres étant choisis dans un groupe comprenant les déplacements, la position et l'orientation dudit curseur, ledit système comprenant un module de détermination de deuxièmes paramètres d'un repère lié au pointeur, lesdits deuxièmes paramètres étant choisis dans un groupe comprenant l'attitude, la position et la vitesse angulaire dudit repère; un vecteur p étant lié audit repère, ledit système étant caractérisé en ce qu'il comprend en outre un module de calcul desdits premiers paramètres en utilisant une ou plusieurs intersections de la droite portée par ledit vecteur p avec une surface de projection, ladite surface de projection étant prédéterminée et distincte de la surface d'affichage ledit module de calcul recevant en entrée au moins une partie desdits deuxièmes paramètres.
Un des avantages de l'invention est de pouvoir être mise en œuvre en utilisant des dispositifs très divers qui fournissent des mesures d'attitude (ou orientation) du pointeur.
L'invention permet de s'adapter à différents principes de mesure du mouvement du pointeur (ou de la télécommande) et fournit la possibilité de proposer différents modes, pour des usages et des objectifs ergonomiques différents.
De plus, l'invention propose des variantes qui permettent de prendre en compte des dispositifs qui délivrent les paramètres de position (en translation) du pointeur dans l'espace. Les paramètres d'affichage du curseur peuvent être déterminés en position (mode absolu) ou en déplacement (mode relatif).
En outre, le pointage peut être limité ou pas à un cône de délimité par des frontières de la surface d'affichage, et donc les déplacements du curseur limités à la surface d'affichage (contrôle en mode limité/glissant). Selon l'invention, ces modes de réalisation, peuvent être combinés selon le contexte applicatif et les informations de position et d'orientation du pointeur dont on dispose.
La présente invention sera mieux comprise à l'aide de la description qui va suivre et des dessins en annexe, sur lesquels :
- La figure 1 représente un pointeur tenu par un utilisateur en vue de contrôler un curseur orienté sur une surface d'affichage qui est ici un écran plan, et une surface de projection avec les différents repères utilisés dans un mode de réalisation de l'invention ;
- les figures 2a, 2b et 2c représentent le principe de détermination des paramètres de déplacement ou de position d'un curseur à partir des angles de yaw et de pitch du vecteur directeur porté par un pointeur dans un repère de référence et en utilisant une surface de projection plane verticale, dans un mode de réalisation de l'invention;
- les figures 3a, 3b et 3c représentent le principe de détermination des paramètres de déplacement ou de position d'un curseur à partir des angles de yaw et de pitch du vecteur directeur porté par un pointeur dans un repère de référence et en utilisant une surface de projection cylindrique, dans un mode de réalisation de l'invention ;
- les figures 4a, 4b et 4c représentent le principe de détermination des paramètres de déplacement ou de position d'un curseur à partir de des angles de yaw et de pitch du vecteur directeur porté par un pointeur
dans un repère de référence et en utilisant une surface de projection sphérique dans un mode de réalisation de l'invention ;
- les figures 5a, 5b et 5c représentent le principe de détermination des paramètres de déplacement ou de position d'un curseur à partir des des angles de yaw et de pitch du vecteur directeur porté par un pointeur dans un repère de référence en utilisant une surface de projection quelconque, dans un mode de réalisation de l'invention;
- les figures 6a, 6b et 6c représentent le principe de détermination des paramètres de déplacement ou de position d'un curseur à partir des angles de yaw et de pitch du vecteur directeur porté par un pointeur dans un repère de référence en approximant une surface de projection sphérique par une surface plane, selon une application du principe de la figure 5, dans un mode de réalisation de l'invention ;
- la figure 7 représente le principe de détermination des paramètres de déplacement d'un curseur à partir de la vitesse angulaire d'un pointeur, en annulant l'effet de la vitesse de roulis du pointeur sur le déplacement du curseur, dans un mode de réalisation de l'invention ;
- la figure 8 représente le principe de détermination des paramètres de déplacement d'un curseur à partir de la vitesse angulaire d'un pointeur pour une surface de projection sphérique centrée sur l'origine du repère pointeur, dans un mode de réalisation de l'invention, ce qui annule l'effet de la vitesse de roulis sur le déplacement du curseur;
- la figure 9 représente la transformation des paramètres de déplacement d'un curseur à partir des résultats de issus d'une surface de projection sphérique de la figure 8 sur une autre surface dans un mode de réalisation de l'invention ; la surface choisie ici est un cylindre pour la composante Δχ
- les figures 10a et 10b illustrent le principe de transformation des déplacements ou de la position ou de l'orientation d'un curseur obtenu pour un premier type de surface de projection en déplacements ou position pour un second type de surface de projection dans un mode de réalisation de l'invention.
La figure 1 représente un pointeur tenu par un utilisateur en vue de contrôler le mouvement d'un curseur sur une surface d'affichage (100) qui
est ici un écran avec les différents repères utilisés dans un mode de réalisation de l'invention.
Le but de l'invention est de fournir différentes méthodes de détermination des paramètres de position ou de déplacement du curseur 101 , 102 dans un écran 100 piloté par un dispositif de pointage (ou pointeur) en position 1 1 1 ou 1 12, l'attitude (ou orientation) et/ou la position du pointeur étant connues dans un repère de référence lié à la surface d'affichage qui est généralement le repère de la terre (XEarth, YEarth, ZEarth)- Le pointeur est un outil porté par l'utilisateur qui est positionné et orienté par l'utilisateur et qui lui permet de pointer une direction, et le curseur est le marquage du pointage sur un objet/écran, ou surface d'affichage.
Pour déterminer la position et l'orientation du curseur à l'écran d'après les mouvements imprimés au pointeur par l'utilisateur, le principe de l'invention introduit une surface de projection intermédiaire, 130, du « vecteur pointage » p1 (respectivement p2) porté par le pointeur, 1 1 1 (respectivement 1 12). Notons que la surface de projection 130 peut être confondue avec la surface d'affichage ou différente (comme c'est illustré sur la figure 1 ). La surface de projection est décrite et connue dans le repère de référence lié à la surface d'affichage. Comme indiqué plus loin dans la description, le choix de la surface de projection est fonction de l'application et peut être choisie pour obtenir un rendu le plus ergonomique et adapté à l'application. Elle peut également changer en fonction du contexte d'utilisation et il est également possible d'utiliser plusieurs modèles de surfaces de projection selon les composantes du curseur. Le choix de cette surface de projection dépend également des informations disponibles parmi l'orientation et/ou la position du pointeur dans le repère de référence.
L'invention exploite la donnée d'orientation et/ou de position d'un pointeur mobile donnée(s) dans un repère de référence (ou souvent repère terrestre) pour calculer la position ou le déplacement ou l'orientation d'un curseur sur un écran d'affichage. Ce procédé permet par exemple de reproduire l'effet de déplacement d'un curseur généré par un pointeur laser, tout en permettant de piloter une application, par exemple par des menus contextuels de la position ou de l'orientation du curseur sur la
surface d'affichage. Le choix de la surface de projection permet de modifier la relation entre le déplacement du pointeur mobile et le déplacement du curseur sur la surface d'affichage. Le repère de référence est lié à la surface d'affichage. La surface d'affichage étant généralement fixe dans le repère terrestre, ce repère de référence est donc généralement confondu avec le repère terrestre.
Le pointeur mobile est repéré dans le repère de référence à l'aide de moyens de mesure. Ces moyens fournissent l'orientation et/ou la position du pointeur dans ce repère. Pour une meilleure compréhension de l'invention, nous proposons de classifier les moyens de mesure en deux catégories. La première n'exploite que des moyens embarqués dans le pointeur mobile. On peut par exemple citer les capteurs de mouvement inertiels et magnétiques comme les accéléromètres, les magnétomètres, les gyromètres qui permettent, par combinaison, de fournir l'orientation, voire la position du pointeur dans le repère de référence. La seconde catégorie comprend les moyens qui nécessitent une instrumentation fixe dans le repère de référence. Par exemple, des moyens optiques, magnétiques ou électromagnétiques, des moyens sonores ou ultrasonores, des moyens radio permettent de localiser le pointeur mobile en position et/ou orientation dans le repère de référence et ils nécessitent une instrumentation du repère de référence
Le procédé peut être appliqué lorsque seules les données d'orientation du pointeur mobile sont disponibles, auquel cas, on supposera la position définie de façon arbitraire par rapport à la surface de projection. De même si seules des données de position sont connues, on pourra supposer l'orientation connue de façon arbitraire. Il est généralement plus simple et moins coûteux d'instrumenter le pointeur de façon à obtenir les mesures de son orientation, c'est ainsi un des modes préférés d'implémentation pour cette invention. La position du pointeur est alors définie de façon arbitraire.
On dote le repère du pointeur mobile par un vecteur p qui matérialise la direction du pointage. Le vecteur p de pointage est donc généralement défini fixe dans le repère du pointeur mobile de façon à ce que p soit dirigé dans la direction et le sens naturel (ergonomique) de pointage du pointeur mobile. L'orientation et/ou la position du repère du pointeur mobile dans le
repère de référence permet également de fournir une seconde donnée d'orientation du pointeur mobile par la définition d'un second vecteur appartenant au plan perpendiculaire au vecteur p (par exemple noté r1 sur la figure 1 , correspondant la position 1 1 1 du pointeur). Ce second vecteur d'orientation ri permet le cas échéant de calculer une orientation du curseur sur la surface d'affichage.
Dans un mode dit « pointage absolu », on utilise directement les coordonnées du point 121 (pour le pointeur en position 1 1 1 ) ou 122 (pour le pointeur en position 1 12) dans la surface de projection et éventuellement une transformation (150) entre la surface de projection et la surface d'affichage pour obtenir les coordonnées du curseur dans la surface d'affichage. Ainsi, à une position/orientation physique du pointeur mobile dans le repère de référence correspond une et une seule position du curseur dans la surface d'affichage. On utilisera le même procédé pour l'orientation.
Le calcul de 121 , 122 selon la donnée de la position et de l'orientation du pointeur mobile peut être réalisé analytiquement pour des modèles de surfaces simples et des hypothèses sur la position du pointeur mobile, comme il est détaillé ci-dessous. Le calcul de déplacement du curseur sur la surface d'affichage peut alors être directement mis en oeuvre par application de la formule analytique trouvée. Les calculs exposés permettent de couvrir beaucoup d'applications et d'ergonomies. Cependant on pourra également couvrir d'autres cas, avec d'autres surfaces de projections et/ou d'autres cas ou les données de positions et/ou orientation du pointeur mobile doivent être prises en compte. L'invention se généralise à ces autres cas. Si le calcul analytique est complexe ou impossible à mener, par exemple pour des surfaces complexes ou quelconques, on pourra utiliser des méthodes numériques de calcul d'intersection de droites avec des surfaces (méthodes de lancer de rayon par exemple). Le calcul numérique d'intersection du pointeur avec la surface peut alors être intégré dans le calcul de déplacement du curseur. On détaille également ci- dessous une méthode permettant de traiter les surfaces quelconques.
Les orientation/positions successives du pointeur mobile dans le temps (par exemple matérialisées par 1 1 1 et 1 12 comme des positions et orientation successives du pointeur dans le temps) sont ainsi transformées en positions/orientations du curseur à l'écran (101 correspond à 1 1 1 , et 102 correspond à 1 12). Ce mode absolu est similaire à celui qui peut être mis en œuvre par des tablettes graphiques, en mode « absolu » : à une position de la pointe du crayon sur la tablette correspond une position du curseur à l'écran. Dans un mode dit « pointage relatif », la position du curseur à l'écran est pilotée par des données de déplacements successifs qui incrémentent sa position sur la surface d'affichage. Ce type de pointage est similaire à celui très généralement répandu dans les dispositifs de pointage de type souris pour ordinateur. Dans notre invention, le pointeur mobile prend des positions/orientations successives dans le temps. La figure 1 permet d'illustrer ce principe. Soit p1 et p2 les vecteurs directeurs associés au repère du pointeur mobile pour deux instants successifs . 121 et 122 sont les points projections de ces vecteurs p1 et p2 sur la surface de projection. Ils permettent de former un vecteur différence (Δχ, Ay) (noté 131 , 132) dans le système métrique associé à la surface de projection. (Ax, Ay) sont optionnellement transformés par une transformation 150 de la surface de projection vers la surface d'affichage et le résultat (101 A, 102A) est utilisé pour contrôler le déplacement (AxA, AyA)du curseur sur la surface d'affichage.
En outre, deux modes de réalisation principaux de l'invention sont illustrés en détail dans la suite de la description:
- dans une première méthode explicitée ci dessus, on détermine la position ou le déplacement du curseur à partir de l'attitude et/ou la position du pointeur dans le repère de référence; l'attitude peut être donnée sous forme d'une matrice ou bien d'un quaternion d'attitude, ou de tout autre représentation de l'attitude du pointeur, par exemple les angles d'Euler ou des angles de cardan; la position peut être donnée par un vecteur définissant les coordonnées d'un point du pointeur dans le repère de référence ;
- dans une deuxième méthode, on détermine le déplacement du curseur à partir de la vitesse angulaire et/ou, de l'attitude du pointeur mobile; le déplacement du curseur sera une fonction de la vitesse angulaire et de l'attitude mesurée dans un repère lié à la terre ; plusieurs solutions sont exposées dans la suite de la description pour exploiter ce paramètre de vitesse angulaire dans un repère lié à la terre.
De plus, on peut contrôler l'orientation du curseur sur l'écran à l'aide des mouvements du pointeur, ce qui permet de lancer des fonctions différentes en fonction de cette orientation du curseur.
Comme illustré sur la figure 1 , la projection du vecteur r1 perpendiculaire à p1 sur la surface de projection fournit un second vecteur 141 . La direction du vecteur 141 ainsi formé dans la surface de projection (au sens de la métrique de la surface 130) permet de piloter l'orientation du curseur dans la surface d'affichage par la même transformation 150.
Le calcul de l'orientation du curseur sur l'écran peut par exemple être effectué de la manière suivante:
- le vecteur r1 est donné par exemple par la deuxième ou troisième colonne de la matrice d'attitude R du pointeur mobile (p1 étant défini par la première colonne), dont la définition est détaillée plus loin dans la description ;
- alors l'angle qui détermine l'orientation du curseur dans le repère de la surface de projection peut être calculé par :
φ= Atan( r'1 .YE/r'1 .XE) où r'1 est la projection de r1 selon la direction de p1 à la surface de projection, « . » est l'opérateur de produit scalaire,
XE, YE forment un repère sur la surface de projection comme détaillé plus bas en commentaire à la figure 5.
Le calcul d'orientation du curseur peut également être effectué par intégration de la vitesse angulaire mesurée sur un axe.
Plusieurs dispositifs physiques et types d'algorithmes peuvent être utilisés pour estimer l'attitude, la vitesse angulaire de l'attitude et/ou la position et/ou la translation du pointeur.
On peut tout d'abord utiliser des dispositifs inertiels embarqués sur le pointeur comprenant des combinaisons d'accéléromètres (A), de
gyromètres (G) et de magnétomètres (M). Les accéléromètres et les magnéto m êtres permettent de mesurer l'orientation du pointeur par rapport à un vecteur fixe, respectivement, la gravité et le champ magnétique terrestre. Ils sont cependant affectés de perturbations (accélération propre et perturbations magnétiques ambiantes, respectivement) qui doivent être corrigées. Les gyromètres mesurent la vitesse angulaire propre des mouvements du pointeur. Les gyromètres sont généralement affectés d'une dérive temporelle significative qui doit être régulièrement corrigée. Ces capteurs peuvent être des Micro Electro Mechanical Systems (MEMS), éventuellement intégrés, ou réalisés dans d'autres technologies non intégrées. Chaque type de capteur peut comporter un, deux ou trois axes. Dans certaines applications, un seul type de capteur (dans ce cas à trois axes) peut être utilisé, si les perturbations ou la dérive temporelle peuvent être considérées comme négligeables pour que la donnée finale d'orientation, nécessaire à l'invention soit suffisamment précise, ou être corrigées sans recours à un autre type de capteur. De manière prévilégiée, on utilisera cependant une combinaison d'au moins deux types de capteurs, AG, MG ou AM.
Il faut noter que ces trois types de capteurs amènent des informations complémentaires en vue d'une meilleure estimation de l'orientation, notamment :
- Le gyromètre en version tri axes fournit des mesures de vitesse angulaire selon trois DDL (Degrés De Liberté) et permet d'estimer l'attitude par intégration de la vitesse angulaire. Il permet donc de calculer une orientation en relatif par rapport à une orientation donnée. Ce principe d'estimation de l'orientation est sujette à dérive à cause de l'opération d'intégration, si le gyromètre est utilisé seul ;
- L'accéléromètre triaxes fournit 2 informations angulaires absolues par rapport à un repère terrestre (roll et pitch), mais est sujet à perturbations lorsque les mouvements sont non quasi-statiques puisqu'il mesure en même temps les paramètres d'accélération due au mouvement;
- Le magnétomètre tri axes fournit 2 degrés de liberté angulaires absolues (qui sont des combinaisons du lacet ou yaw avec les autres angles de pitch et roll) par rapport à un repère terrestre mais est sujet aux perturbations magnétiques de l'environnement.
S'agissant des gyromètres, on peut par exemple utiliser les gyromètres fournis par Analog Devices™ de référence ADXRS300™, ou l'ITG3200™ de Invensense™ ou les gyromètres fournis par STM™
S'agissant des accéléromètres, on peut utiliser par exemple des accéléromètres de référence ADXL103 d'Analog Devices, LIS302DL de STM. FreeScale™, Kionix™ fournissent également de tels capteurs S'agissant des magnétomètres, on peut par exemple utiliser les magnétomètres de référence HMC1001™ ou HMC1052 ou HMC1053 de la société Honeywell™ ™. AKM™ fournit également des micromagnétomètres (AK8973, AK8974, AK8976).
Différents algorithmes peuvent être utilisés pour corriger les perturbations et fusionner les signaux des différents types de capteurs et estimer l'attitude, par exemple ceux divulgués par la demande internationale publiée sous le n ° WO2010/007160 dont un des titulaires est le titulaire de la présente demande.
S'agissant des modules de calcul de l'orientation à partir de ces types de capteurs, on pourra se référer aux produits de la société Movea™ ou des produits de la sté XSens™, ou Intersense™ avec par exemple la famille des produits InertiaCube™.
A partir des systèmes fondés sur des capteurs inertiels embarqués dans le pointeur mobile, il est également possible d'estimer la trajectoire et donc une position relative à un point de départ arbitraire du pointeur. Le traitement des mesures d'orientation et/ou de position pour le calcul de la position du curseur est effectué dans un module de calcul. Le calcul peut être embarqué dans le pointeur mobile ou déporté sur le calculateur lié à la surface d'affichage (par exemple un PC ou une SetTopBox). On peut citer pour les microprocesseurs, par exemple un DSP Texas Instruments™ TMS320VC5509™ pour les applications les plus exigeantes en temps de calcul, ou un microcontrôleur 32 bits à cœur ARM™, par exemple un de ceux de la famille STR9™, notamment le STR9F12FAW32™ de STM. Le module de calcul comprend également de préférence une mémoire flash nécessaire au stockage du code à exécuter et des données permanentes qui lui sont nécessaires et une mémoire dynamique de travail.
Les signaux issus des capteurs ou traités à bord du pointeur mobile sont transmis à un autre microprocesseur, généralement celui qui exécute l'application et gère la surface d'affichage. L'application est commandée par le curseur dont les déplacements sont contrôlés par le pointeur. La transmission peut s'opérer par voie radiofréquence avec une forme d'onde et un protocole Bluetooth ou avec une forme d'onde et un protocole Wi-Fi (Norme 802.1 1 g) ou selon la norme RF4CE. La transmission peut également s'effectuer par voie infra-rouge. Les traitements peuvent être répartis de manière variable entre le microprocesseur de la plateforme applicative et/ou le microcontrôleur embarqué dans le pointeur.
Pour estimer la position, l'attitude ou la vitesse angulaire de l'orientation, il est également possible d'utiliser d'autres systèmes, tels que ceux cités ci- dessous :
- Systèmes optiques comprenant des Light Emitting Diodes (LED), d'autres marqueurs ou des capteurs infrarouges ; des systèmes de ce type sont commercialisés sous les marques CodaMotion™ou Vicon™; dans de tels systèmes, l'algorithmie permettant d'estimer l'attitude ou la vitesse angulaire de l'orientation peut notamment utiliser la puissance du signal détecté, l'angle d'arrivée ou sa phase ;
- Systèmes magnétiques comprenant des sources magnétiques localisées extérieures au pointeur, dans l'environnement de l'écran, ledit pointeur étant instrumenté avec un magnétomètre adapté aux sources magnétiques ;on pourra se référer aux dispositifs des sociétés Ascencion Technology™ ou Polhemus™ ;
- Systèmes à ultrasons comprenant un ou plusieurs émetteurs/récepteurs d'ultrasons, le ou les émetteurs étant embarqués sur le pointeur et le récepteur étant fixé sur l'écran ; l'algorithmie permettant d'estimer l'attitude ou la vitesse angulaire de l'orientation peut notamment utiliser une corrélation et une décorrélation des ondes sonores reçues par les récepteurs (par exemple le IS-900 System de chez Intersense);
- Systèmes à ondes radiofréquences comprenant un ou plusieurs émetteurs/récepteurs d'ondes radiofréquences, le ou les émetteurs
étant embarqués sur le pointeur et le récepteur étant fixé sur ou dans le voisinage de l'écran ou le contraire; ces émetteurs/récepteurs peuvent notamment être du type UWB (Ultra Wide Band) ; l'algorithmie permettant d'estimer l'attitude ou la vitesse angulaire de l'orientation peut notamment utiliser une fusion des signaux correspondant aux angles d'arrivée, à l'amplitude des signaux reçus et à leur temps d'arrivée ou à leur phase;
- Systèmes vidéo comprenant une ou plusieurs caméras vidéo implantées sur ou dans le voisinage de l'écran ; l'algorithmie permettant d'estimer l'attitude ou la vitesse angulaire de l'orientation peut notamment utiliser une analyse et un traitement des images de mouvement du pointeur prélevées par les caméras vidéo.
Les figures 2a, 2b et 2c représentent la transformation des angles de yaw et de pitch d'un pointeur en position ou déplacement d'un curseur, en choisissant comme surface de projection une surface plane verticale, dans un mode de réalisation de l'invention.
Sur la figure, on suppose que la position du pointeur est fixée arbitrairement. Dans le cas général elle peut néanmoins être variable dans le temps. Cette illustration correspond au cas, par exemple où l'on dispose d'une mesure d'orientation, sans la mesure de position.. Seule l'orientation du pointeur mobile est mesurée. Le principe exposé reste applicable pour une position de pointeur variable mesurée et non fixée arbitrairement.
Dans le mode illustré sur la figure 2, la position du curseur sur la surface d'affichage est calculée de la manière suivante : on calcule l'intersection de la droite portée par le vecteur p (p1 , p2 par exemple) lié au pointeur avec la surface de projection qui est ici une surface plane . Le vecteur directeur de la droite est le vecteur p1 , 21 1 (respectivement p2, 212). L'intersection de la droite avec la surface de projection est matérialisée par les points 221 et 222 pour les deux vecteurs directeurs p1 et p2 correspondant à deux orientations successives du pointeur mobile.
Soit la matrice de rotation R (ou le quaternion q) qui définit l'attitude du pointeur relativement à un repère lié à la terre, qui est pris ici comme repère de référence, « Earth Frame ». R est fournie par le dispositif de mesure d'orientation du pointeur mobile.
Soit le vecteur pointeur 3D, p = [px py pzf avec //p//=7. Par souci de simplification et par convention, on suppose ici que p est confondu avec le vecteur x du repère lié au pointeur, cette définition étant non restrictive et pouvant être remplacée par une autre définition adéquate, à la portée de l'homme de l'art. Relativement à l'Earth Frame, p est alors la première colonne de la matrice R.
Soit {Δχ,Δγ), 231 , 232, le déplacement du point d'intersection de 221 à 222 sur la surface de projection (ici un plan vertical) lorsque le pointeur est déplacé de l'orientation p1 à l'orientation p2. Par souci de simplification, sans restreindre la généralité, on prendra dans cette illustration une transformation identité entre le déplacement du curseur sur la surface d'affichage qu'on doit déterminer et le déplacement du point d'intersection sur la surface de projection. En général, Δχ est horizontal et Ay est dans un plan vertical ;
Dans le cas général (lorsque la surface de projection n'est pas plane), Δχ et Ay ne sont pas forcément des segments droits mais peuvent être des distances curviligne sur des éléments de courbe (par exemple, l'arc d'un cercle).
Soit les deux angles : φ (yaw) et Θ (pitch) qui sont liés à p
Sur les figures 2a, 2b et 2c est illustré le différentiel sur chaque surface en fonction d'un déplacement élémentaire selon le yaw (φ?-> φ2) et selon le pitch (θι~> θ2). Φ et Θ peuvent être déterminés à partir de p = [px py pzf comme indiqué ci-dessus.
On peut calculer les déplacements Δχ et Ay par les formules suivantes :
Lorsque le yaw ou le pitch se rapprochent de ±ττ/2 le déplacement du curseur augmente en absolu et tend vers l'infini.
G est une constante qui dépend de la distance entre le pointeur et le plan et est donc liée à la position arbitraire donnée au pointeur. Il permet de régler la proportion entre le déplacement angulaire du pointeur et le déplacement du curseur.
Les figures 3a, 3b et 3c représentent une étape de la transformation des angles de yaw et de pitch d'un pointeur en mouvement d'un curseur pour une surface de projection cylindrique, dans un mode de réalisation de l'invention.
Sur la figure, on suppose que la position du pointeur est fixée arbitrairement. Dans le cas général elle peut néanmoins être variable dans le temps. Cette illustration correspond par exemple au cas où l'on dispose d'une mesure d'orientation, sans la mesure de position.. Seule l'orientation du pointeur mobile est mesurée. Le principe exposé reste applicable pour une position de pointeur variable mesurée et non fixée arbitrairement.
.On supposera par souci de simplicité que la position du pointeur est arbitrairement fixée sur l'axe du cylindre. Il sera aisé de généraliser l'invention au cas d'un pointeur mobile en position, le principe restant le même. Dans les conditions exposées, il est possible de mener le calcul analytiquement.
Le déplacement du curseur selon l'horizontale Δχ, 331 est proportionnel à la rotation du pointeur mobile selon le yaw. On peut calculer les déplacements Δχ et Ay, 331 , 332, avec les formules suivantes :
Le déplacement du curseur selon la verticale Ay, 332, augmente en absolu et tend vers l'infini lorsque le pitch se rapproche de ±ττ/2.
Dans ce cas, Δχ, 331 , est bien une longueur curviligne. L'hypothèse ici est que le pointeur est placé au centre du cylindre. G est égal à la distance entre le pointeur et le cylindre, soit égal au rayon du cylindre.
Les figures 4a, 4b et 4c représentent la transformation des angles de yaw et de pitch d'un pointeur en mouvement d'un curseur pour une surface de projection sphérique dans un mode de réalisation de l'invention.
Sur la figure, on suppose que la position du pointeur est fixée arbitrairement. Dans le cas général elle peut néanmoins être variable dans le temps. Cette illustration correspond par exemple au cas où l'on dispose d'une mesure d'orientation, sans la mesure de position.. Seule l'orientation
du pointeur mobile est mesurée. Le principe exposé reste applicable pour une position de pointeur variable mesurée et non fixée arbitrairement.
On supposera par souci de simplicité que la position du pointeur est fixe, placé au centre de la sphère. Il sera aisé de généraliser l'invention au cas d'un pointeur mobile en position, le principe de calcul restant le même. Le déplacement du curseur selon l'horizontale Δχ, 431 , est proportionnel à la rotation selon le yaw et diminue et tend vers zéro lorsque le pitch se rapproche de ±ττ/2. Le déplacement du curseur selon la verticale Ay, 432, est proportionnel au pitch. On peut calculer les déplacements Δχ et Ay, 431 , 432, avec les formules suivantes :
Dans ce cas, Δχ, 431 , et ày, 432, sont toutes deux des longueurs curvilignes. L'hypothèse ici est que le pointeur est placé au centre de la sphère. G est égal à la distance entre le pointeur et la sphère, soit égal au rayon de la sphère.
Les figures 5a, 5b et 5c représentent la transformation des angles de yaw et de pitch d'un pointeur en mouvement d'un curseur pour une une surface de projection quelconque approximée par de petits éléments plans dans un mode de réalisation de l'invention.
La surface quelconque est approximée pour chaque position/orientation du pointeur par une petite surface plane pour laquelle les figures 5a, 5b et 5c présentent le principe de détermination de la position ou de déplacement du curseur.
Pour calculer la position du curseur, on calcule l'intersection d'une ligne droite portée par le vecteur p avec la surface de projection. On considère alors une surface élémentaire définie par le repère (XE ,YE), OÙ :
- XE est horizontal (càd XE // Plan(XEarth , YEarth) ) ; cela se traduit par le fait que la composante selon ZEarth est nulle, d'où XE = [cos(a) sin(a)
0]T ;
- Y
E est dans un plan vertical et perpendiculaire à X
E; cela se traduit par le fait que la composante selon (X
Earth , YEarth) est perpendiculaire à X
E , d'où Y
E = [-cos( )sin(a) cos( )cos(a) -είη(β)]
τ.
Pour avoir Y
E vers le bas il faut que
On peut calculer les déplacements Δχ et Δν, 531 , 532, avec les formules suivantes :
Où :
- Comme indiqué plus haut, pi et p2 sont les vecteurs définis aux deux orientations successives du pointeur ;
-
est le vecteur normal à la surface pointée ;
- est un point appartenant à cette surface élémentaire
-
représentent respectivement les opérateurs de produit vectoriel et de produit scalaire. On détaille ci-dessous, à titre d'exemple de réalisation du principe de surface de projection quelconque précédent, les calculs dans le cas d'une surface de projection plane verticale perpendiculaire à
On retrouve ainsi le cas illustré par les figures 2a, 2b et 2c et les mêmes formules.
On détaille également à titre d'exemple de réalisation du principe de surface de projection quelconque précédent le cas d'une surface élémentaire plane d'un cylindre vertical selon l'axe ZEarth .
l'approximation
pour le cas de petits déplacements)
Dans le cadre de l'approximation de petits déplacements
, on retrouve le cas illustré par les figures 3a, 3b et 3c.
Les figures 6a, 6b et 6c représentent la transformation des angles de yaw et de pitch d'un pointeur en mouvement d'un curseur sur une surface sphérique approximée par des surfaces planes dans un mode de réalisation de l'invention.
Pour : (on utilisera l'approximation
pour le cas de petits déplacements).
On peut calculer les déplacements Δχ et Δν, 631 , 632, avec les formules suivantes :
Dans le cadre de l'approximation de petits déplacements
, on retrouve le cas illustré par les figures 4a, 4b et 4c.
Le procédé décrit dans cette invention propose également d'exploiter la vitesse angulaire du pointeur. La figure 7 représente le calcul des mouvements d'un curseur à partir des composantes de vitesse angulaire de l'attitude d'un pointeur projetées dans une surface plane dans un mode de réalisation de l'invention.
Par exemple, la vitesse angulaire du pointeur peut être déterminée à partir de la vitesse angulaire mesurée dans le repère du capteur.
Nous utilisons la vitesse angulaire mesurée par le capteur et recalculée grâce à l'attitude dans le repère de la terre :
La vitesse angulaire du pointeur peut également être déterminée à partir de la donnée de l'attitude du pointeur, par une opération de dérivation :
L'attitude du pointeur étant fournie par un quaternion la
vitesse angulaire du pointeur est alors donnée par la formule :
où représente le produit de quaternions et est
le conjugué de q.
A partir de la vitesse angulaire du pointeur déterminée par exemple selon les principes précédents, il convient alors de déterminer le déplacement Δx,Δν, 731 , 732 de notre curseur et d'éviter tout déplacement dû à la composante . En effet, le roulis ne doit pas provoquer de
déplacement de curseur, ce qui serait contre naturel.
Une première solution, illustrée par la figure 7, est de mettre à zéro
puis d'effectuer une transformation dans le repère lié à la terre ; on calcule alors :
où Rx est la même que R en remplaçant la première colonne par des zéros.
On peut alors calculer le déplacement du curseur Δx,Δγ, 731 , 732 selon n'importe quelle surface élémentaire pointée par p par les formules :
Où Gx et Gy sont des gains qui peuvent être une fonction de p.
Une deuxième solution, illustrée par la figure 8, est de déterminer le déplacement sur une surface élémentaire (Δx,Δγ) qui est prise toujours perpendiculaire au pointeur p. Alors,
et
Ce choix permet d'éliminer l'effet d'une rotation de roulis du pointeur sur le
parce que la surface est perpendiculaire au pointeur. Cette surface élémentaire fait partie d'une sphère centrée au pointeur. On calcule alors le déplacement du curseur
831 , 832 avec les formules suivantes :
La figure 9 illustre une transformation possible du résultat précédent pour transformer les déplacements d'un curseur dans le modèle précédent sphérique en déplacements dans une autre surface dans un mode de réalisation de l'invention.
Notons que ce principe est général que le déplacement calculé Δχ,Δγ peut être par la suite transformé pour qu'il soit adapté à toute surface, par exemple pour un déplacement proportionnel à la vitesse angulaire comme illustré sur la figure 9. On utilise ainsi un modèle de surface cylindrique pour transformer Δχ calculé initialement sur la sphère. Ainsi :
Une fois que
est déterminée avec suppression de roulis on peut d'une manière équivalente transformer le déplacement sur une autre surface.
Les figures 10a et 10b illustrent des projections possibles pour transformer les positions/déplacements d'un curseur dans une surface en positions/déplacements dans une autre surface dans un mode de réalisation de l'invention.
Une fois que la position du curseur est déterminée pour une surface donnée, il est toujours possible de transformer/projeter le curseur vers une autre surface. Une transformation peut être composée d'une séquence de translations, rotations, réflexions/symétries, ou facteurs d'échelle.
Des transformations par projection perspective peuvent être également appliquées. Ces transformations permettent de projeter des surfaces de pointage en 3D sur un écran 2D de manière que la projection corresponde à la perception de l'œil humain depuis un angle de vision. Plusieurs types
de projection perspective existent, par exemple, perspective cavalière, frontale, oblique, aérienne, isométrique, géométrique descriptive, etc. Différents outils permettent de gérer efficacement ces projections graphiques comme l'OpenGL®.
L'avantage de telles projections est de pouvoir déterminer, à partir du même pointage vers une surface 3D, le déplacement/la position du curseur sur des écrans liés à différents point de vue.
La projection n'est pas forcément orthogonale et il est possible de modifier la métrique selon le besoin. Par exemple, le déplacement donné par la vitesse angulaire ne correspond à aucune surface géométrique mais c'est une projection en perspective du déplacement sur une sphère.
Le déplacement du curseur calculé à partir de l'attitude (figures 2a, 2b, 3c, 3a, 3b, 3c, 4a, 4b, 4c, 5a, 5b, 5c, 6a, 6b, 6c) ou de la vitesse angulaire du pointeur (figures 7, 8, 9) utilise dans les deux cas le déplacement et l'orientation du pointeur.
Comme présenté précédemment, ces deux paramètres peuvent être déterminés soit :
- par une observation des deux pointeurs p1 et p2 (ou plus généralement de l'attitude sous forme de matrices R1 et R2 ou bien sous forme de quaternions q1 et q2) ;
- par une observation de la vitesse angulaire ω et de l'attitude initiale R1 / q1 (ou finale R2 /q2) ;
Ces deux méthodes sont donc équivalentes. En effet, connaissant p
1 et p
2 on peut déterminer la vitesse angulaire
supposée constante:
Où Λ est le produit vectoriel et dt est l'intervalle de temps.
Inversement, étant donné
et l'attitude initiale R
1 / q
1 (resp. finale R
2 /q
2), on peut déterminer le pointeur initial p
1 (resp. final p
2). Par exemple, pour
constante pour un intervalle de temps dt, une rotation du pointeur P
1 d'un angle
autour de l'axe
(resp. p
2 d'un
on peut déterminer p
2 (resp. p-
1)
Dans tous les modes de réalisation décrits ci-dessus, le contrôle du curseur est calculé en mode relatif. Il est également possible de contrôler le curseur en mode absolu suivant les principes indiqués en commentaire à la figure 1 et détaillé ci-dessous.
Dans certains cas, il est possible de contrôler le curseur d'un écran en utilisant les coordonnés directes de l'écran. L'écran est alors repéré dans un référentiel à deux dimensions, en utilisant par exemple les coordonnés cartésiennes (OE,XE,YE), les coordonnés cylindriques (ΟΕ,ΨΕ Ε), OU les coordonnés sphériques (ΟΕ,(ΡΕ,Θε), OU d'autres systèmes de coordonnées. Le choix du système de coordonnés dépend essentiellement de la nature de la surface de l'écran pointé, de manière à faciliter le repérage du curseur.
A titre d'exemple :
- Une surface plane est en pratique repérée par un système de
coordonnées cartésiennes 2D ;
- Une surface cylindrique est en pratique repérée par un système de
coordonnés cylindriques 2D ;
- Une surface sphérique est en pratique repérée par un système de
coordonnées sphériques 2D ;
- Une surface quelconque (définie par f(x,y,z)=0, ou f(p,cp,z)=0, ou
f(r,(p,9)=0, etc.) est repéré par un système de coordonnées
(0E,Cx(m),Cy(m)) où :
o Cx(m) est une courbe paramétrée par m appartenant à f(.)=0, par exemple Cx(m)= {f(x,y,z)=0} Π { gx(x,y,z)=z=0} est l'intersection de la surface avec le plan horizontal ;
o Cy(m) est une courbe paramétrée par m appartenant à f(.)=0, par exemple Cy(m) = {f(x,y,z)=0} Π { gy(x,y,z)=x=0} est l'intersection de la surface avec un plan vertical.
On prend à titre purement illustratif le premier exemple d'un plan
quelconque. Soit un plan quelconque défini par un repère cartésien 2D
- OE appartient au plan et est invariant dans le temps ;
- XE= [cos(a) sin(a) 0]T est horizontal (XE // Plan(XEarth , YEarth) ) ;
- γΕ = [-cos(3)sin(a) cos( )cos(a) -είη(β)]τ est dans un plan vertical et perpendiculaire à XE.
Pour déterminer les coordonnés du curseur à l'écran en fonction du pointeur p=[p
x p
y p
z]
Ton utilise les formules suivantes :
Dans le cas d'un plan vertical, avec O
E= [G 0 0]
T, X
E= [0 1 0]
T, Y
E= [0 0 1 ]
T, on obtient :
On prend à titre également purement illustratif, le deuxième exemple d'un cylindre vertical. Soit un cylindre quelconque défini par un repère cylindrique 2D (ΟΕ,φΕ,ΥΕ) où
- OE est au centre du cylindre
- φΕ est l'angle dans le plan qui définit la position du curseur autour de l'axe du cylindre dans l'intervalle [0 2π] ;
- YE = [0 0 1 ]T est la direction verticale du cylindre.
Pour déterminer les coordonnés du curseur à l'écran en fonction du pointeur p=[p
x p
y p
z]
T, on calcule alors :
On prend enfin à titre également purement illustratif, le troisième exemple d'une sphère. Soit une sphère quelconque définie par un repère sphérique 2D (ΟΕ,φΕ,ΥΕ) OÙ :
- OE est au centre de la sphère
- φΕ est l'angle dans le plan qui définit la position du curseur sur la
sphère autour de son axe vertical dans l'intervalle [0 2π] ;
- Θ
Ε = [0 0 1 ]
T est l'angle entre le curseur et l'axe vertical de la sphère dans l'intervalle [-π/2 π/2] ;
Pour déterminer les coordonnés du curseur à l'écran en fonction du pointeur p=[p
x p
y p
z]
T, on calcule :
Une fois que Δχ et Ay sont déterminés, on a le choix de faire soit du pointage limité soit du pointage glissant, tels que définis ci-dessous.
Soit Ri et R2 deux repères liés à la terre dont l'origine est placée sur le pointeur. Ri reste invariant et ne subit que la translation du pointeur, alors que R2 subit la même rotation du pointeur dès que le curseur tend à sortir de l'écran.
Le pointage limité consiste à reproduire un pointage dans R-i, ainsi la région pointée ne varie pas dans l'espace.
Le pointage glissant consiste à reproduire un pointage dans R2. Avec ce pointage la région pointée glisse de façon pour qu'elle reste en face du pointeur.
Ri et R2 peuvent être à tout moment réinitialisés.
Le curseur d'un PC est généralement alimenté en entrée par le déplacement relatif. Le pointage en limité est alors possible si et seulement si on peut récupérer la position instantanée du curseur sur l'écran. Il y a deux moyens pour récupérer les coordonnées du curseur sur l'écran.
Un premier moyen est de sommer sans aucune source d'erreur l'ensemble du déplacement du curseur à l'entrée du PC, donc :
- Il faut sommer des valeurs entières ;
- Il faut interdire à un autre pointeur (par exemple une autre souris, touch pad) de déplacer le curseur.
Un deuxième moyen est de saturer le pointeur en forçant par exemple
ce qui met le curseur en haut à gauche. On replace ensuite le curseur sur le pixel désiré. Ce deuxième moyen est pratique pour réinitialiser le pointeur, mais il n'est pas pratiquement possible de l'utiliser en continu.
Avec un pointage limité, il est nécessaire d'avoir accès à l'attitude absolue du pointeur sans dérive. Le problème de dérive peut être réduit par une
réinitialisation effectuée de temps en temps. A titre d'exemple, une procédure possible consiste à :
- calculer la somme du déplacement du curseur par
l'estimation d'attitude ;
- définir la dimension de l'écran par un angle solide selon le yaw et pitch ;
- il faut remettre à zéro Δχ dès que le yaw dépasse une limite, et Ay dès que le pitch dépasse une limite ; on peut également mettre Δχ et Ay à zéro dès que l'un des angles de yaw ou de pitch sort de son intervalle limite.
- Dès que l'attitude est de nouveau dans l'intervalle de l'angle solide, soit :
■ on réinitialise le pointeur en utilisant la vitesse angulaire de l'orientation, selon l'attitude actuelle ;
■ on poursuit le pointage après avoir accumulé l'ensemble du déplacement calculé, même lorsque l'attitude (yaw et/ou pitch) est en dehors de l'intervalle limite sont calculés
indépendamment du déplacement du curseur).
Pour reproduire un pointage absolu réaliste sur une surface donnée, il faut connaître la position/dimension et l'inclinaison/orientation de cette surface par rapport au pointeur. L'ajustement de ces paramètres peut être calibré au début. Par exemple, pour définir une écran plan, on pointe les deux extrémités de la diagonale ainsi que la normale à l'écran. Cet exemple de réalisation est avantageux pour des jeux vidéos où il faut cibler/viser sans montrer le pointeur sur l'écran.
Pour réaliser un pointage glissant tel que défini précédemment, il faut simplement alimenter le pointeur par Δχ et Ay. Dans ce cas on suppose que la région pointée est affichée à l'écran. Dans le cas où le curseur sur l'écran du PC risque de déborder de l'écran, la nouvelle région pointée sera affichée à l'écran.
On peut également, dans certains cas où une dérive en yaw est présente (par exemple avec une centrale d'attitude limitée à un Accéléromètre et un
Gyromètre), réaliser un pointage semi-absolu dans lequel on effectue un pointage relatif selon le yaw (φ) et un pointage absolu selon pitch (Θ).
Différents modes de réalisation de l'invention peuvent être déterminés par la combinaison du mode de détermination des déplacements du curseur (par l'estimation de l'attitude ou par utilisation de la vitesse angulaire), du mode de pointage (en limité ou en glissant) et de la surface de déplacement du curseur (pointage vers une surface plane d'inclinaison donnée dans le repère terrestre, vers une surface cylindrique ou vers une sphère). Ces différentes combinaisons présentent des avantages ergonomiques pour certaines applications.
Ainsi, un pointage en absolu vers un plan est particulièrement adapté aux jeux vidéo. Un pointage en absolu vers un cylindre est bien adapté aux jeux d'entraînement exigeant rapidité et/ou réflexion. Un pointage en absolu vers une sphère peut être avantageux pour des applications de projection. L'utilisation d'un pointage en absolu vers des surfaces différentes peut être avantageux pour des exercices de simulation, par exemple à usage militaire ou pour simuler le pointage d'un spot laser sur une surface quelconque
Un pointage en glissant vers un cylindre dans lequel le déplacement du curseur est proportionnel à la vitesse de rotation du pointeur est particulièrement adapté à une application souris pour PC ou télécommande de téléviseur.
On combinera en règle générale l'utilisation de l'estimation de l'attitude avec un mode de pointage en limité et l'utilisation de la vitesse angulaire avec un mode de pointage en glissant.
On a décrit pour l'essentiel des modes de réalisation dans lesquels le pointeur a une position arbitraire dans le repère de référence. Cela nous a permis de mener les calculs analytiques complets. On peut facilement généraliser l'utilisation de l'invention lorsque le pointeur se déplace dans ledit repère. Il peut également être avantageux de changer de surface de projection au cours d'une même séquence d'utilisation lorsque le contexte
de celle-ci évolue. Il peut également être avantageux de choisir des surfaces de projection différentes selon l'axe à contrôler, comme cela a été illustré et décrit sur la figure 9.
Les exemples décrits ci-dessus sont donnés à titre d'illustration de modes de réalisation de l'invention. Ils ne limitent en aucune manière le champ de l'invention qui est défini par les revendications qui suivent.