En bref : Précédemment, nous avons représenté le moteur de navigation sous la forme d’un ensemble de modules : modélisation des mesures, modélisation de la dynamique, estimateur, détermination de la position RTK. Cet article se penche sur le module de l’estimateur. Le véritable rôle de l’estimateur n’est pas de se fier à un seul capteur, mais d’évaluer chaque mesure à la lumière des informations dont il dispose déjà, puis de les combiner toutes en un seul état de filtre, tout en évaluant son niveau de confiance dans le résultat.
À ce stade, les mesures sont de bonne qualité. La synchronisation temporelle a permis d'établir une base de temps commune pour l'ensemble des données. Le prétraitement a permis de nettoyer les flux bruts. Le moteur de navigation a modélisé les valeurs que chaque capteur devait fournir, et le positionnement RTK a permis d'affiner les mesures GNSS au centimètre près.
Au cœur de tout cela se trouve l'estimateur. C'est la partie du système qui prend des mesures distinctes, parfois à peine liées entre elles, mais qui fournissent toutes des informations sur l'état du monde, et qui les transforme en une seule réponse.
Cet article explique ce qui se passe réellement à l'intérieur de la boîte de l'estimateur.
Le vecteur d'état : ce que l'estimateur estime réellement
L'état du filtre, ou vecteur d'état, est l'ensemble de valeurs que l'estimateur tente de déterminer. La position, la vitesse et l'orientation en sont les plus évidentes. Mais l'état comporte généralement aussi des grandeurs moins évidentes : des corrections pour les capteurs présentant des erreurs sous-jacentes, ainsi que d'autres valeurs que le système n'estime qu'à titre accessoire, car il en a besoin pour obtenir une position correcte.
Certaines mesures vous renseignent directement sur un élément de ce vecteur d'état. Une mesure de position est le cas le plus simple : on vous indique simplement une position. D'autres mesures sont indirectes. La vitesse des roues vous indique à quelle vitesse vous vous déplacez, mais pas où vous vous trouvez. La distance par rapport à un satellite vous donne des informations sur votre position, mais uniquement lorsqu'elle est combinée à de nombreuses autres distances.
Le rôle de l'estimateur est de prendre toutes ces données, directes et indirectes, et de les traiter pour obtenir une mise à jour de ce qui vous intéresse réellement. Cela ne se fait pas en une seule fois. Il apprend à cerner l'état au fil du temps, en l'affinant à chaque nouvelle mesure reçue.
Pondération : confiance contre erreur attendue
La tâche la plus importante de l'estimateur consiste à pondérer chaque mesure.
Chaque mesure comporte une certaine marge d'erreur, une erreur attendue. L'estimateur compare cette marge à son niveau de confiance actuel dans son estimation. Dans quelle mesure est-ce que je pense connaître ma position en ce moment ? Mon orientation ? Une mesure bruyante ou qui n'est que vaguement liée à l'état a moins de poids qu'une mesure précise et fiable.
Cet équilibre évolue au fil du temps. Lorsque vous allumez un appareil pour la toute première fois, l'estimateur ne dispose pratiquement d'aucune information. Position, orientation, erreurs des capteurs : tout est incertain. Dans cet état, même une mesure bruyante est précieuse, car mieux vaut cela que rien du tout, et le système s'appuie sur les données reçues pour apprendre.
Une fois que le système est opérationnel et qu'il est sûr de sa position, la relation s'inverse. Supposons que vous disposiez d'un positionnement RTK et que vous connaissiez très bien votre position, puis qu'une mesure GNSS erronée arrive, perturbée par un bâtiment ou une autre source d'erreur. L’estimateur peut comparer cette mesure, ainsi que l’erreur qu’elle devrait normalement comporter, à ce qu’il estime déjà savoir. Si la mesure s’écarte considérablement de l’erreur attendue, l’estimateur peut réduire son poids, voire la rejeter purement et simplement. (La partie 3 traite plus en détail de ce traitement des valeurs aberrantes.)
Capteurs complémentaires : le meilleur des deux mondes
Le fait de rejeter une mesure GNSS erronée ne signifie pas pour autant que l'on se retrouve à l'aveugle. Les autres capteurs continuent de fournir des données.
C’est là toute la force de la fusion multicapteurs : les capteurs sont complémentaires. Les vitesses des roues ne savent rien du grand immeuble situé au bout de la rue, et cela leur est égal. Les mesures GNSS peuvent être altérées par cet immeuble, mais lorsqu’elles ne le sont pas, elles peuvent être excellentes. L’IMU (unité de mesure inertielle) fonctionne rapidement, plus vite que les mises à jour du GNSS, comblant ainsi les lacunes entre les deux. Les vitesses des roues peuvent être transmises à un rythme plus lent, parfois même moins souvent que le GNSS. Au fil du temps, elles se complètent toutes. En les combinant, chacune compense la faiblesse de l’autre : la précision absolue du GNSS lorsqu’il fonctionne correctement, et une perception stable du mouvement lorsqu’il ne fonctionne pas.
Deux familles : INS contre GNSS seul
Avant que l'estimateur ne puisse prédire l'évolution de l'état entre deux mesures, il doit savoir sur quel type de système il s'exécute. Il existe ici une distinction très nette, qui se résume à la présence d'un seul capteur.
Un système de navigation inertielle (INS) dispose d'une unité de mesure inertielle (IMU). Ce n'est pas le cas d'un système fonctionnant uniquement avec le GNSS. Cette distinction est plus importante que presque tout le reste dans le moteur.
Une IMU mesure avec une grande précision les accélérations et les vitesses de rotation. En intégrant ces données dans le temps, on obtient une image directe de l'évolution de la position et de la vitesse. L'IMU permet de suivre l'évolution de l'état au fur et à mesure que la plateforme se déplace, en complément des mesures absolues telles que celles fournies par le GNSS ou la vision par ordinateur, qui renseignent sur le monde extérieur à l'appareil. La qualité de l'IMU, qui dépend du coût, de la consommation d'énergie et d'autres facteurs, détermine le niveau de précision que l'on peut atteindre.
Sans l'IMU, vous vous retrouvez dans une situation bien plus délicate. Imaginez que vous roulez sur une autoroute et que vous entrez dans un tunnel. Avant d'y entrer, le GNSS fonctionnait correctement et tout allait bien. À l'intérieur, le GNSS n'est plus disponible. Avec une IMU (ou des capteurs de vitesse des roues, ou d'autres capteurs de mouvement relatif), vous pouvez continuer à naviguer à l'estime pendant cette interruption. Sans rien, vous pouvez faire des estimations pendant quelques secondes, mais après cela, vous vous trompez tout simplement.
En l’absence de ces capteurs de mouvement relatif, le mieux que l’on puisse faire est de se baser sur la manière dont ce type de véhicule se déplace habituellement. Nous avons une assez bonne idée du comportement des voitures : en général, elles ne montent pas, ne descendent pas, ne roulent pas beaucoup d’un côté à l’autre et, bien sûr, ne se renversent pas. Il en va tout autrement pour un bateau ou un avion. Ces hypothèses, sur lesquelles un système INS s'appuie beaucoup moins puisque l'IMU mesure directement le mouvement, constituent la seule base sur laquelle un système fonctionnant uniquement avec le GNSS doit s'appuyer. (Pour la dynamique propre à chaque type de support – voitures, avions et motos –, voir la partie 3.)
Cette distinction entre l'INS et le GNSS seul est au cœur de l'approche Atlas INS: associer un moteur de positionnement performant à des capteurs inertiels afin que le système continue de fournir une position exploitable lorsque le ciel n'est plus visible.
Pseudo-mesures : des données de production que vous n'avez jamais mesurées
C'est l'une des astuces les plus intéressantes dont dispose l'estimateur. Les chercheurs ont tendance à les appeler « pseudo-mesures » : il s'agit d'utiliser ce que l'on sait d'un véhicule pour limiter ce que le système est autorisé à faire et ce qui n'a tout simplement aucun sens.
La détection de l'arrêt est l'exemple le plus clair. Supposons que l'IMU indique que vous ne tournez pas, car la vitesse de rotation correspond exactement à ce qu'elle mesure, et qu'elle indique également que vous n'accélérez pas. À proprement parler, l'absence d'accélération signifie que votre vitesse ne change pas, et non qu'elle est nulle. Mais les véhicules réels ne maintiennent presque jamais une vitesse parfaitement constante ; ainsi, dans la pratique, lorsque l'IMU n'indique ni accélération ni rotation, il y a fort à parier que vous êtes à l'arrêt.
Dans la pratique, nous ne lisons pas les valeurs brutes de rotation et d’accélération pour les comparer à zéro. L’accélération n’est de toute façon jamais vraiment nulle, car la gravité est toujours présente, répartie sur les différents axes, à moins que l’appareil ne soit parfaitement à niveau. Nous observons plutôt comment ces signaux évoluent et quel est leur niveau de bruit sur une fenêtre temporelle donnée. Un véhicule véritablement à l’arrêt produit une signature distinctive et stable, et cette lecture nous permet de détecter l’arrêt tout en ignorant les biais propres au capteur.
Une fois que nous savons que le véhicule est à l’arrêt, l’astuce porte ses fruits. Une voiture à l’arrêt ne roule pas et ne tangue pas ; nous pouvons donc affirmer que la vitesse de rotation réelle est nulle et que la vitesse réelle est nulle. Nous réinjectons ces valeurs en tant que pseudo-mesures, puis nous mesurons l’écart entre celles-ci et les données des capteurs. Cet écart correspond à l’erreur du capteur, mise à nu. À partir de là, nous établissons des corrections de capteurs, sous la forme d'affirmations telles que « ce capteur particulier présente un écart de telle valeur, de telle nature », et nous les appliquons au modèle dynamique et aux mesures entrantes afin que la solution globale gagne en précision au fil du temps.
Ces corrections ne sont pas figées. Elles évoluent. La température et d'autres facteurs environnementaux les modifient, de sorte que le système ne cesse de les réajuster au fur et à mesure. Mais une fois que l'on parvient à bien les cerner, on peut obtenir une réelle précision à partir de mesures qui, en théorie, ne devraient pas être aussi fiables.
Module ou hôte : où s'exécute l'estimateur ?
Tout cela ressemble à de la mathématique pure, et c’est le cas, mais ces calculs ont un coût. La propagation de l’estimateur vers l’avant et l’exécution de la modélisation dynamique nécessitent une puissance de calcul réelle.
Tout d’abord, les deux environnements dans lesquels le calcul peut s’effectuer. Lorsque le positionnement s’exécute sur un module, l’estimateur réside sur un petit dispositif autonome doté de son propre processeur et de sa propre alimentation électrique, une carte dédiée à une seule tâche. Lorsqu’il s’exécute sur un hôte, l’estimateur tourne sur l’ordinateur principal, plus puissant, déjà embarqué dans le véhicule ou le robot, la même classe de processeur gérant la perception, la planification et le reste de l’application. Un module est compact, économe en énergie et facile à intégrer dans une conception. Un hôte dispose quant à lui de bien plus de puissance de calcul et de mémoire disponible. C’est cette différence de marge de manœuvre qui fait l’objet du reste de cette section.
Il convient ici de rappeler un peu d'histoire : une grande partie de ce que nous faisons aujourd'hui avec les estimateurs trouve son origine dans la volonté de rendre ce type de calcul suffisamment peu coûteux pour les petits ordinateurs, une tradition qui remonte à l'ordinateur de guidage du programme Apollo. Ainsi, d'une certaine manière, ce domaine a toujours consisté à adapter l'estimation à du matériel limité. Mais tout est relatif.
Sur un appareil moins performant, comme par exemple le processeur embarqué d’un module, vous risquez tout simplement de manquer de marge de manœuvre. Si vous lui transmettez les données d’une IMU à très haut débit, ou si vous exécutez des calculs ou des algorithmes particulièrement gourmands en ressources, il se peut que le système ne soit physiquement pas capable de suivre le rythme. Et les conséquences ne se limitent pas à un simple « ralentissement ». Imaginez une voiture de course soumise à une dynamique intense et à de nombreuses vibrations, où les mesures à haute fréquence fournissent précisément les détails que vous souhaitez capturer. Si le processeur ne parvient pas à suivre ce rythme, vous pourriez être contraint d’utiliser une fréquence de mesure inférieure, ce qui risquerait de masquer justement les éléments essentiels. Ou bien vous pourriez être obligé de limiter ou de désactiver des fonctionnalités du moteur de navigation sur lesquelles vous comptez habituellement, ce qui peut nuire aux performances.
Ce n'est qu'un exemple parmi tant d'autres, mais il illustre bien le principe. Certaines des techniques nécessaires pour atteindre le plus haut niveau de précision ne sont tout simplement pas adaptées à certains appareils, en raison de toutes les autres tâches que ces derniers doivent effectuer en parallèle. C'est là que se situe la frontière pratique entre un moteur performant fonctionnant sur un module et un moteur plus robuste fonctionnant sur un processeur hôte disposant d'une marge de capacité suffisante. C'est également la raison pour laquelle la bonne réponse dépend entièrement de la plateforme.
Des questions qui méritent d'être posées
Si vous développez votre propre moteur de positionnement ( stack ) ou si vous évaluez un moteur de positionnement commercial :
- Comment l'estimateur pondère-t-il une mesure en fonction de son propre niveau de confiance ? Que devient une estimation fiable lorsqu'une seule mesure GNSS erronée est reçue ?
- Le système apprend-il les corrections des capteurs en temps réel, et continue-t-il à les réapprendre à mesure que la température et les conditions changent ?
- Est-il capable d'exploiter des pseudo-mesures telles que la détection de stationnement, ou se contente-t-il d'utiliser les données des capteurs telles quelles ?
- Comment se comporte-t-il avec un capteur inertiel (IMU) par rapport à une utilisation du GNSS seul ? Quelle est la solution de secours lorsque le ciel n'est plus visible ?
- Sur quel matériel le moteur est-il destiné à fonctionner ? Le circuit à haut débit dont vous avez besoin peut-il réellement cohabiter sur votre processeur avec toutes les autres tâches qu'il exécute ?
Et maintenant ?
L'estimateur a fait son travail. Il génère un état de filtre précis plusieurs fois, voire de nombreuses fois par seconde. Mais deux problèmes subsistent. Premièrement, pour exploiter des mesures qui arrivent dans le désordre, le moteur peut être contraint de fonctionner avec un léger décalage par rapport au temps réel, ce qui signifie que sa dernière réponse est légèrement obsolète. Deuxièmement, cette réponse n'est encore que des chiffres au sein du moteur ; aucun autre élément de votre système ne peut encore l'utiliser.
Dans le prochain article, nous aborderons la dernière étape du pipeline : le propagateur de sortie qui assure la récupération en temps réel, ainsi que les services de sortie et de transport qui transforment l'état du filtre en messages que votre stack peut réellement exploiter.
Foire aux questions
Quel est le rôle exact de l'estimateur dans un moteur de positionnement ?
Il rassemble des mesures provenant de capteurs distincts, parfois sans grand rapport entre elles, et les combine en un seul état de filtre. Sa fonction principale consiste à pondérer chaque mesure en fonction de son erreur attendue et du niveau de confiance dont dispose déjà le système, puis à mettre à jour l'état en conséquence, plutôt que de se fier aveuglément à un seul capteur.
Qu'est-ce qu'un vecteur d'état ?
Le vecteur d'état est l'ensemble des valeurs que l'estimateur cherche à déterminer. Il comprend la position, la vitesse et l'orientation, ainsi que des grandeurs moins évidentes telles que les corrections à apporter aux capteurs présentant des erreurs sous-jacentes et d'autres valeurs que le système estime comme des produits dérivés lors de la recherche d'une position correcte.
Quelle est la différence entre un système INS et un système fonctionnant uniquement avec le GNSS ?
Un système de navigation inertielle (INS) comprend une unité de mesure inertielle (IMU) qui mesure l'accélération et la rotation, ce qui lui permet de suivre l'évolution de la position et de la vitesse entre deux repères absolus et de maintenir le calcul de position par estimation lors de pertes de signal, comme dans les tunnels. Un système fonctionnant uniquement avec le GNSS ne dispose pas d'un tel capteur et doit se rabattre sur des hypothèses générales concernant le déplacement du véhicule dès lors que les signaux satellites sont perdus.
Qu'est-ce qu'une pseudo-mesure dans le cadre de la fusion de capteurs ?
Les pseudo-mesures sont des contraintes dérivées des informations dont dispose le système concernant la plateforme. Par exemple, dès que le moteur détecte qu’une voiture est à l’arrêt, il peut établir que la vitesse de rotation et la vitesse réelles sont égales à zéro, réinjecter cette valeur dans le système et mesurer l’écart entre celle-ci et les mesures fournies par les capteurs. Cet écart met en évidence une erreur de capteur que le système peut ensuite corriger.
Est-ce que cela a de l'importance que le moteur de positionnement fonctionne sur un module ou sur un processeur hôte ?
Oui. Un module dispose d'une puissance de calcul et d'une consommation d'énergie limitées, et des sollicitations importantes, comme une IMU à très haute fréquence ou des algorithmes complexes, peuvent entraîner une baisse des fréquences de mesure ou la désactivation de certaines fonctionnalités. Un processeur hôte dispose d'une marge bien plus importante, ce qui permet d'utiliser des techniques qu'un module ne peut pas prendre en charge. Le choix approprié dépend de la plateforme.
Voici le cinquième volet de notre série consacrée à l'architecture des systèmes de positionnement. Le premier volet traitait de la synchronisation temporelle. Le deuxième volet abordait le prétraitement et la stratégie des capteurs. Le troisième volet portait sur le moteur de navigation. Le quatrième volet traitait de la détermination de la position par RTK.
Essayez gratuitement notre réseau RTK. Une précision mondiale à un prix abordable, sans les tracas. Commencez votre essai gratuit.