Construire Lodestar : comment un moniteur d'intégrité de navigation hors de l'estimateur passe à RED et déclenche le retour au point de départ au lieu de bluffer un fix dans une bulle de brouillage privée de GPS.
DronesRoboticsAutonomy

Mon drone tient 0,9 % de dérive à travers une bulle de brouillage GPS. Le code dont je suis fier est la ligne qui refuse de voler.

Ashutosh SinghalAshutosh Singhal3 juillet 202613 min

Je ne m'attendais pas à ce que la partie la plus importante de ce projet soit celle qui abandonne.

J'avais passé le meilleur d'un après-midi à scruter la relecture d'un vol synthétique. Un drone traverse une mission de 80 secondes sur un parcours de 245,3 m. Le GPS tient pendant les 18 premières secondes, puis meurt quand l'appareil pénètre dans une bulle de guerre électronique simulée. À l'écran, trois traces s'écartent en éventail à partir de cet instant. L'une d'elles, une ligne rose vif, dévie vers le coin de la carte et continue, confiante et complètement fausse, tandis qu'un petit indicateur à côté affirme que tout va bien.

Cette ligne rose, c'est l'odométrie visuelle-inertielle standard, et la regarder me mentir a changé toute la forme de ce que je construisais. J'avais présumé que le problème difficile de la navigation privée de GPS était de rester précis. Ce n'est pas le cas. Le problème difficile, c'est de savoir, au moment précis où cela compte, que vous ne l'êtes pas.

Dans un espace aérien privé de GPS, une position confiante mais fausse est plus dangereuse qu'un honnête « je ne sais pas ».

Voici l'histoire de la construction de Lodestar, notre moteur d'intégrité de navigation, et de la semaine que j'ai passée à résoudre le mauvais problème avant de comprendre le bon.

J'ai poursuivi la précision pendant une semaine avant de comprendre le vrai problème

J'ai commencé là où la plupart des gens commencent, c'est-à-dire par l'estimateur. La guerre électronique a rendu le GPS peu fiable exactement là où les drones autonomes comptent désormais : espace aérien contesté, fosses minières, tunnels, canyons urbains. Le brouillage et l'usurpation en espace aérien contesté sont désormais largement rapportés, assez courants pour que la navigation privée de GPS ait cessé d'être une curiosité de recherche et soit devenue une exigence impérative. Le correctif évident consiste à greffer une odométrie visuelle-inertielle, fusionner la caméra avec les capteurs inertiels, et espérer que la dérive reste faible.

J'ai donc construit un vrai EKF VIO étroitement couplé et passé ma première semaine à le rendre précis. Même filtre, trois configurations honnêtes : une baseline IMU en navigation à l'estime sans aucune vision, une VIO standard qui fusionne chaque caractéristique visuelle qu'elle voit, et une version sensible à l'intégrité qui est plus prudente quant aux caractéristiques auxquelles elle croit. Je les ai toutes confrontées à une vérité terrain que le simulateur génère indépendamment de chaque estimateur, afin que rien ne puisse noter son propre devoir. Toute la mission est ensemencée, reproductible octet par octet, ce qui importait plus que je ne le réalisais à l'époque.

Les chiffres de précision étaient vraiment bons. À travers la bulle de brouillage, l'estimateur sensible à l'intégrité maintient 0,92 % de dérive, 2,26 m d'erreur finale sur ce parcours de 245,3 m. La navigation à l'estime, par comparaison, explose à 30,95 % de dérive et 75,92 m d'erreur finale, ce qui est la différence entre atterrir sur la plateforme et atterrir dans le comté d'à côté. Je me suis félicité pendant environ un jour.

Puis j'ai lancé le convoi.

Ce qu'une bulle de brouillage fait à un drone qui se fie à ses propres yeux

Je veux être honnête sur l'apparence ordinaire de la bascule GPS, parce que c'est la partie qui fonctionne. Quand le GPS tombe à t=18 s, le filtre réattribue les poids à la source visuelle-inertielle sans changement de mode, sans alarme, sans rupture visible pour l'opérateur. L'estimation reste simplement continue. Si vous voliez la mission, vous ne sentiriez pas le sol disparaître.

Tableau de bord Lodestar à t=21 s, quelques instants après la perte du GPS à l'intérieur de la bulle de guerre électronique simulée de type R-330Zh : l'intégrité indique GREEN, dérive 0,41 m, 358 caractéristiques visuelles utilisables, et la trace estimée repose sur la vérité terrain.
La bascule GPS à t=21 s. L'intégrité reste GREEN, la dérive est de 0,41 m par rapport à la vérité terrain, et 358 caractéristiques utilisables alimentent l'estimateur. C'est la partie facile, et c'est celle que tout le monde démontre.

Voici ce que j'ai sous-estimé. Un drone qui s'appuie sur la vision n'échoue pas en se dégradant lentement. Il échoue en se verrouillant sur la mauvaise chose et en rapportant une position nette et confiante qui n'est tout simplement que des ordures. L'estimateur ne sait pas qu'il a été trompé, parce que la machinerie qui calcule la position est la même qui devrait remarquer que la position est fausse. J'avais construit un système précis jusqu'au moment où il était catastrophiquement, silencieusement dans l'erreur, et je n'avais aucun moyen de distinguer les deux de l'intérieur.

Ce n'est pas un problème de réglage. On ne peut pas s'en sortir par le réglage face à un système confiant d'avoir tort. Il me fallait quelque chose qui se situe entièrement en dehors de l'estimateur.

Le convoi qui a appris à un bon estimateur à mentir

J'ai construit le scénario du convoi spécifiquement pour casser mon propre travail, et ça a marché. Entre t=30 et t=43, une colonne de véhicules traverse une clairière à faible texture, projetant des caractéristiques parasites qui ressemblent, pour un front-end VIO affamé, exactement aux amers stables qu'il veut suivre. C'est l'échec documenté d'ORB-SLAM3, celui où l'algorithme suit le camion et conclut que le drone est immobile.

La VIO standard est tombée dans le panneau complètement. Dans la même exécution ensemencée, elle se verrouille sur les véhicules en mouvement et s'envole, terminant à 28,79 % de dérive et 70,61 m d'erreur finale, avec un ATE de 32,95 m qui est en fait pire que de ne faire aucune vision du tout. C'était la ligne rose que j'avais regardée. Le détail laid, c'est que pendant qu'elle échouait, sa confiance interne avait l'air saine. L'estimateur était sûr de lui. Il était sûr d'une position qui dérivait vers le bord de la carte.

Lodestar à t=32 s pendant le convoi en mouvement : l'intégrité est tombée à AMBER, le compte de caractéristiques indique 2 avec 10 masquées, l'erreur de la VIO standard est montée à 11,0 m tandis que la trace sensible à l'intégrité maintient 0,42 m de dérive.
Le convoi à t=32 s. Le masquage sémantique a rejeté les véhicules en mouvement (2 caractéristiques statiques utilisées, 10 masquées), donc la trace sensible à l'intégrité se maintient à 0,42 m tandis que l'erreur de la VIO standard grimpe à 11,0 m et continue. L'intégrité rapporte honnêtement AMBER, parce qu'il y a vraiment peu de caractéristiques statiques auxquelles se fier.

L'estimateur sensible à l'intégrité survit au convoi pour une raison simple : il refuse de croire les caractéristiques qui appartiennent à des objets en mouvement. Dans l'image ci-dessus, le masquage sémantique a rejeté les 10 caractéristiques du convoi et n'a gardé que les 2 statiques, donc l'estimateur ne se verrouille jamais sur la colonne. La trajectoire tient. Mais la partie que je n'avais pas anticipée, c'est ce que mon moniteur d'intégrité a fait au même moment. Il n'a pas peint l'écran en vert et prétendu que le monde allait bien. Il est passé à AMBER, parce qu'avec les caractéristiques du convoi masquées, il ne restait vraiment qu'une poignée d'amers statiques auxquels se fier. Il était précis et il était nerveux, en même temps, et il l'a dit.

C'était la première fois que le moniteur me disait quelque chose que l'estimateur ne pouvait pas, et cela vaut plus que la précision à elle seule. Cela a aussi forcé la question que j'avais évitée.

Pourquoi l'estimateur ne peut-il pas simplement se certifier lui-même ?

J'ai passé un nombre embarrassant d'heures à essayer de répondre à cela avec les propres chiffres de l'estimateur. Mon premier contrôle d'intégrité lisait simplement l'incertitude rapportée par le filtre, son sigma de position, et conditionnait le vol à cela. Si la covariance semblait serrée, voler. Cela semblait raisonnable.

Le convoi l'a démoli. Quand la VIO standard s'est verrouillée sur le camion, son sigma rapporté est resté petit. Le filtre était confiant précisément parce qu'il avait trouvé quelque chose de cohérent à suivre. La cohérence était un mensonge, mais la covariance ne pouvait pas le savoir, parce que la covariance est une affirmation que l'estimateur fait sur lui-même. Je demandais au témoin de certifier son propre témoignage.

La confiance ne doit pas dépendre de la chose en laquelle on a confiance.

Cette phrase est devenue le design. Le Moniteur d'intégrité de navigation vit en dehors de l'estimateur à dessein, comme un code séparé qui répond à une question différente. Pas « quelle est ma position », à laquelle l'EKF répond, mais « cette position est-elle digne de confiance en ce moment », à laquelle l'EKF est structurellement incapable de répondre sur lui-même. Le moniteur fusionne trois signaux en un état GREEN, AMBER ou RED avec des seuils durs : nombre de caractéristiques utilisables (GREEN à 8 ou plus, RED en dessous de 1), sigma de position (GREEN sous 0,6 m, RED au-dessus de 1,5 m), et NIS vision, la cohérence d'innovation du khi-deux qui capture exactement le cas où l'estimateur est confiant et faux (GREEN sous 7,0, RED au-dessus de 30,0). Aucun chiffre unique ne peut être manipulé par l'estimateur, parce que deux des trois ne proviennent pas du tout de l'auto-évaluation de l'estimateur.

C'est ce en quoi je crois désormais le plus fortement à propos de l'autonomie à sécurité critique. Une meilleure VIO ne corrige pas l'échec confiant-mais-faux, parce que « est-ce digne de confiance » est une question différente de « qu'est-ce que c'est, » et vous ne pouvez pas répondre à la première avec la machinerie qui a produit la seconde. L'industrie continue de courir pour rendre l'estimateur plus intelligent. L'architecture durable n'est pas un estimateur plus intelligent. C'est un moniteur prêt à le contredire.

La ligne de code qui refuse de voler

Le moment où j'ai vraiment compris mon propre produit, c'était le tunnel, et je m'en souviens parce que c'est le moment où le système en fait le moins.

Entre t=52 et t=66, la mission entre dans un tunnel sombre et les caractéristiques visuelles utilisables s'effondrent à essentiellement zéro. Il n'y a rien à voir. Aucun estimateur, aussi bien réglé soit-il, ne peut fabriquer une position digne de confiance à partir d'une scène qu'il ne peut pas observer. Ce n'est pas un échec à corriger. C'est un fait à respecter. La VIO standard, qui continue d'essayer, s'éloigne en inertie vers une position qu'elle n'a aucun droit de revendiquer.

Lodestar fait autre chose. Les caractéristiques meurent, l'incertitude de position franchit le seuil, et après 0,5 seconde de RED soutenu le moniteur enclenche le failsafe et commande le retour au point de départ à t=52,5 s. Il ne bluffe pas une position. Il déclare l'estimation indigne de confiance et rend le contrôle à un comportement sûr, et il le fait de façon déterministe, sans aucun modèle dans la boucle qui décide quoi que ce soit.

Lodestar à t=54,5 s dans le tunnel sombre : l'intégrité indique RED, « Position NON digne de confiance », compte de caractéristiques 0, erreur de la VIO standard 35,2 m alors que sa trace s'envole hors du haut de la carte, et la chronologie montre le retour au point de départ déclenché à t=52,5 s.
Le tunnel à t=54,5 s. Les caractéristiques se sont effondrées à 0, l'intégrité est RED (« Position NON digne de confiance »), et le retour au point de départ a déjà été déclenché à t=52,5 s. La VIO standard, toujours confiante, s'est envolée jusqu'à 35,2 m d'erreur. C'est tout le sens du produit : l'abstention honnête, pas le fix confiant.

Je veux être prudent sur les chiffres ici, parce que l'honnêteté est tout l'argumentaire. Sur cette seule mission ensemencée, le moniteur signale le tunnel réellement inobservable 100 % du temps et déclenche de fausses alarmes sur le tronçon privé de GPS en bonne santé environ 0,1 % du temps, maintenant GREEN sur 56,3 % du vol privé de GPS. Ce sont les résultats de cette mission, une preuve fidèle à la physique du mécanisme, pas une garantie d'essai en vol en monde ouvert. La revendication durable, c'est la structure : confiance calculée en dehors de l'estimateur, RED soutenu jusqu'à un retour au point de départ enclenché, abstention honnête sur une scène que personne ne pourrait naviguer. Les mètres exacts appartiennent à cette exécution. L'architecture appartient à chaque exécution.

La ligne de code la plus précieuse d'une pile d'autonomie est celle qui refuse de voler.

Ce que j'ai mis dans le rapport pour que personne n'ait à me croire sur parole

Je ne voulais pas que quiconque doive faire confiance à mes captures d'écran, donc la dernière chose que j'ai construite est le reçu. Un clic exporte un Rapport d'intégrité de vol, JSON plus HTML imprimable, avec le tableau de score, les métriques phares, la justesse de l'abstention, le moment du failsafe, la chronologie des événements, et, la partie qui m'importe le plus, une divulgation explicite de périmètre de ce qui est stubbé versus différé.

Cette divulgation n'est pas une clause de non-responsabilité que j'enterre. C'est une fonctionnalité. Le rapport indique clairement que le front-end visuel est un substitut, que la fusion LiDAR est une contrainte de portée simulée plutôt qu'un vrai facteur LiDAR, que l'interface MAVLink et le débit Jetson ne sont pas exercés ici, et que les 30-45 FPS sur un Jetson Orin NX 16 Go sont une spécification de matériel cible, pas un résultat mesuré. Les 16 000 mises à jour de propagation EKF dans le rapport ont été mesurées sur la machine de démo. Les FPS ne l'ont pas été, et le rapport le dit en ces termes.

Le Rapport d'intégrité de vol exporté avec la fusion LiDAR engagée : 0,01 % de dérive pour l'exécution sensible à l'intégrité, 78,9 % du vol en GREEN, failsafe « n/a (LiDAR a maintenu l'intégrité) », et un tableau de score contre une vérité terrain indépendante.
Le Rapport d'intégrité de vol, exporté avec la fusion LiDAR engagée. Avec une contrainte de portée LiDAR simulée ancrant le tunnel, la scène devient observable, la dérive tombe à 0,01 %, 78,9 % du vol reste GREEN, et le moniteur ne déclenche correctement pas le failsafe. Le rapport est explicite : c'est un compromis, pas de la magie.

Cette exécution LiDAR mérite qu'on s'y attarde parce que c'est là que beaucoup de démos tricheraient. Activez le LiDAR simulé et le tunnel se rétablit : la contrainte de portée ancre la solution, l'intégrité tient, et aucun failsafe ne se déclenche, parce que la scène n'est plus inobservable. Il serait facile de ne montrer que cette exécution et de déclarer le problème résolu. Mais le rapport porte aussi le coût que la page solution assume, environ 250 à 400 g de charge utile et 8 à 12 W de puissance. Le LiDAR est un vrai compromis d'ingénierie avec une vraie facture SWaP-C, pas une victoire gratuite, et un acheteur mérite de voir la facture à côté du bénéfice.

Il n'y a exactement qu'un seul modèle à proximité de ce système, un bouton optionnel qui rédige le récit de revue technique à partir du rapport structuré. Il tourne entièrement en dehors de la boucle de vol. Il écrit de la prose. Il ne touche jamais une décision de contrôle. La garde qui décide de voler ou non est déterministe, ensemencée et hors ligne, et elle ferait l'appel identique avec le bouton de récit arraché. J'étais ferme sur cette frontière, parce que le jour où un modèle de langage obtient un vote sur la question de savoir si un drone fait confiance à sa propre position est un jour dont je ne veux pas être responsable.

Ce à quoi je reviens sans cesse

Je me suis lancé pour construire un drone qui reste précis quand le GPS meurt, et je l'ai fait, sur cette mission, à moins d'un pour cent de dérive. Ce à quoi je ne m'attendais pas, c'était de repartir convaincu que la précision était la moitié facile.

La précision est une course à laquelle n'importe qui peut s'inscrire. Tout le monde dans ce domaine rend son estimateur un peu plus serré, ses caractéristiques un peu plus denses, son backend un peu plus intelligent, et tout cela est du bon travail. Mais rien de tout cela ne répond à la question qui tue réellement un drone dans une bulle de brouillage, qui n'est pas « à quel point ai-je tort » mais « suis-je dans une situation où je ne peux pas savoir à quel point j'ai tort ». Cette question doit être posée de l'extérieur de l'estimateur, par quelque chose prêt à dire la chose peu glamour et à abandonner les commandes.

La précision est une course à laquelle n'importe qui peut s'inscrire. Un système qui sait quand il est aveugle, c'est le produit.

Vous pouvez tout exécuter vous-même et regarder la ligne rose s'envoler, puis regarder l'état RED se déclencher, sur veriprajna.com/fr/demos/lodestar-autonomie-de-drone-gps-denied-qui-sait-quand-elle-ne-peut-plus. C'est ensemencé, donc vous verrez exactement ce que j'ai vu.

Et si vous préférez le voir plutôt que de me lire le décrire, voici le tout qui tourne de bout en bout.

La question que je n'ai pas cessé de retourner est celle-ci. Si le comportement le plus précieux de votre pile d'autonomie est le refus d'agir, quelle part de votre budget d'ingénierie va à la partie qui abandonne, et quelle part à celle qui n'a jamais appris quand abandonner ?

Recherche associée

Également publié sur

Développez votre IA en toute confiance.

Collaborez avec une équipe forte d'une solide expérience dans la conception de la prochaine génération d'IA d'entreprise. Nous vous aidons à concevoir, développer et déployer une stratégie d'IA digne de confiance.

Veriprajna société de conseil en Deep Tech est spécialisée dans la conception de systèmes d'IA critiques pour la sûreté destinés aux secteurs de la santé, de la finance et de la réglementation. Nos architectures sont validées au regard de protocoles établis et accompagnées d'une documentation de conformité complète.