Re: Horizon artificiel Android
Publié : 09 oct. 2023, 18:04
Suite de mon message précédent
Pour ceux que cela intéresse je vais vous décrire l’aventure de la genèse de l’appli, qui est née d’une application entièrement et uniquement basé sur le GPS, et qui se révèle aujourd’hui avoir été un véritable défi.
L’exploitation exclusive du GPS fonctionnait bien avec de gros avantages, l’horizon était insensible à tout mouvement du smartphone, une sorte d’antinomie pour un horizon justement sensé détecter les mouvements car l’application calculait l’attitude en fonction de la trajectoire GPS et non de l’orientation du smartphone, génial !
Malheureusement il présentait des défauts, le premier est dû à la fréquence d’actualisation du GPS des smartphones courants de l’ordre de une seconde et à la faible précision du positionnement, cela donnant un temps de retard conséquent et un comportement « sautillant » .
Le deuxième inconvénient étant la perte inopinée du signal GPS qui n’est pas rare avec pour conséquence l’arrêt de l’application.
A ceci j’avais ajouté un compas GPS, une carte défilante simple avec tous les aérodromes et toutes les bases ULM de France, les points personnels et la possibilité de faire des « aller vers » avec la route initiale, la route depuis la position actuelle, le vecteur direction avec les graduations en minutes et les indications habituelles complémentaires d’une application de navigation.
Cette réalisation et l’expérience que j’en ai retirée m’a incité à essayer une source plus fiable et plus réactive que le GPS, en l’occurrence les gyromètres du smartphone faussement appelés « gyroscope » par les fabricants, c’est à ce moment que j’ai mis le doigt dans l’engrenage.
Dès le premier test élémentaire le résultat fut stupéfiant avec des mouvements fluides et fidèles en temps réel, mais les difficultés ne faisaient que commencer et je ne me doutais pas de leur étendue.
Tout d’abord l’implémentation des taux de rotations simultanés sur les 3 axes en degrés par seconde fournis par des gyromètres m’était inconnue, je n’ai rien trouvé sur internet car apparemment les spécialistes gardent pour eux leurs petits secrets (et je fais de même), sauf Euler et les quaternions qui ne m’ont été d’aucun secours.
Je me suis donc lancé dans l’écriture des formules de calculs sans toutefois parvenir au résultat escompté dans un premier temps malgré tout le soin et le temps apporté à leur étude, à savoir qu’une suite de mouvements aléatoires devait toujours se traduire par l’affichage de la bonne attitude en temps réel, j’avais toujours un glissement lors des mouvements complexes.
Heureusement, alors que j’allais renoncer définitivement j’ai trouvé comment amender mes formules pour qu’elles fonctionnent enfin, eurêka !
Le mouvement c’était génial mais il fallait aussi calculer l’attitude en exploitant la gravité grâce aux accéléromètres pour l’initialisation et la correction de la dérive de l’horizon (érecteur), en clair un simple inclinomètre, facile !
Mais je voulais par nécessité pour un appareil mobile que l’appli fonctionne sur un support quelconque incliné en tangage et en roulis, cela m’a paru très simple de prime abord mais c’est révélé en réalité assez difficile à implémenter dans un algorithme assez complexe, ajout d’un calage initial pour compenser l’inclinaison du smartphone et surtout modification des calculs d’attitude.
Plus tard j’ai ajouté dans l’algorithme le calcul du cap en temps réel en fonction des rotations sur les 3 axes et là aussi il a fallu retravailler les formules, mais cela m’a permis de transformer le compas GPS en conservateur de cap, il faut dire que j’ai écarté la boussole interne de l’appareil qui n’est pas fiable selon la position de l’appareil ou son environnement.
Enfin dernièrement j’ai intégré les données du GPS complémentairement pour améliorer l’indicateur malgré il faut l’avouer une légère oscillation en tangage, le but étant d’éliminer le glissement de l’horizon (sauf dans les cas extrêmes), option désactivable par l’utilisateur s’il le souhaite.
Au chapitre des imperfections je dois avouer à mon grand désespoir n’avoir pas encore (et peut-être jamais) entièrement résolu le problème du passage des verticales (retournement de la maquette), c’est une sorte d’impasse, un nœud mathématique qui génère un glissement de l’horizon plus ou moins marqué et je me suis toujours refusé à tricher en utilisant un artifice trompeur.
Au début du développement j’optimisais l’application pour mon appareil mais j’ai ensuite appliqué des solutions logicielles « auto-adaptatives » afin qu’elle puisse tourner sur toutes sortes d’appareils y compris en partage d’écran avec une autre appli ce qui m’a permis de pouvoir en faire profiter d’autres amateurs sur Goole Play et l’App Store d’Amazon.
Cordialement
Pour ceux que cela intéresse je vais vous décrire l’aventure de la genèse de l’appli, qui est née d’une application entièrement et uniquement basé sur le GPS, et qui se révèle aujourd’hui avoir été un véritable défi.
L’exploitation exclusive du GPS fonctionnait bien avec de gros avantages, l’horizon était insensible à tout mouvement du smartphone, une sorte d’antinomie pour un horizon justement sensé détecter les mouvements car l’application calculait l’attitude en fonction de la trajectoire GPS et non de l’orientation du smartphone, génial !
Malheureusement il présentait des défauts, le premier est dû à la fréquence d’actualisation du GPS des smartphones courants de l’ordre de une seconde et à la faible précision du positionnement, cela donnant un temps de retard conséquent et un comportement « sautillant » .
Le deuxième inconvénient étant la perte inopinée du signal GPS qui n’est pas rare avec pour conséquence l’arrêt de l’application.
A ceci j’avais ajouté un compas GPS, une carte défilante simple avec tous les aérodromes et toutes les bases ULM de France, les points personnels et la possibilité de faire des « aller vers » avec la route initiale, la route depuis la position actuelle, le vecteur direction avec les graduations en minutes et les indications habituelles complémentaires d’une application de navigation.
Cette réalisation et l’expérience que j’en ai retirée m’a incité à essayer une source plus fiable et plus réactive que le GPS, en l’occurrence les gyromètres du smartphone faussement appelés « gyroscope » par les fabricants, c’est à ce moment que j’ai mis le doigt dans l’engrenage.
Dès le premier test élémentaire le résultat fut stupéfiant avec des mouvements fluides et fidèles en temps réel, mais les difficultés ne faisaient que commencer et je ne me doutais pas de leur étendue.
Tout d’abord l’implémentation des taux de rotations simultanés sur les 3 axes en degrés par seconde fournis par des gyromètres m’était inconnue, je n’ai rien trouvé sur internet car apparemment les spécialistes gardent pour eux leurs petits secrets (et je fais de même), sauf Euler et les quaternions qui ne m’ont été d’aucun secours.
Je me suis donc lancé dans l’écriture des formules de calculs sans toutefois parvenir au résultat escompté dans un premier temps malgré tout le soin et le temps apporté à leur étude, à savoir qu’une suite de mouvements aléatoires devait toujours se traduire par l’affichage de la bonne attitude en temps réel, j’avais toujours un glissement lors des mouvements complexes.
Heureusement, alors que j’allais renoncer définitivement j’ai trouvé comment amender mes formules pour qu’elles fonctionnent enfin, eurêka !
Le mouvement c’était génial mais il fallait aussi calculer l’attitude en exploitant la gravité grâce aux accéléromètres pour l’initialisation et la correction de la dérive de l’horizon (érecteur), en clair un simple inclinomètre, facile !
Mais je voulais par nécessité pour un appareil mobile que l’appli fonctionne sur un support quelconque incliné en tangage et en roulis, cela m’a paru très simple de prime abord mais c’est révélé en réalité assez difficile à implémenter dans un algorithme assez complexe, ajout d’un calage initial pour compenser l’inclinaison du smartphone et surtout modification des calculs d’attitude.
Plus tard j’ai ajouté dans l’algorithme le calcul du cap en temps réel en fonction des rotations sur les 3 axes et là aussi il a fallu retravailler les formules, mais cela m’a permis de transformer le compas GPS en conservateur de cap, il faut dire que j’ai écarté la boussole interne de l’appareil qui n’est pas fiable selon la position de l’appareil ou son environnement.
Enfin dernièrement j’ai intégré les données du GPS complémentairement pour améliorer l’indicateur malgré il faut l’avouer une légère oscillation en tangage, le but étant d’éliminer le glissement de l’horizon (sauf dans les cas extrêmes), option désactivable par l’utilisateur s’il le souhaite.
Au chapitre des imperfections je dois avouer à mon grand désespoir n’avoir pas encore (et peut-être jamais) entièrement résolu le problème du passage des verticales (retournement de la maquette), c’est une sorte d’impasse, un nœud mathématique qui génère un glissement de l’horizon plus ou moins marqué et je me suis toujours refusé à tricher en utilisant un artifice trompeur.
Au début du développement j’optimisais l’application pour mon appareil mais j’ai ensuite appliqué des solutions logicielles « auto-adaptatives » afin qu’elle puisse tourner sur toutes sortes d’appareils y compris en partage d’écran avec une autre appli ce qui m’a permis de pouvoir en faire profiter d’autres amateurs sur Goole Play et l’App Store d’Amazon.
Cordialement