Radar à synthèse d’ouverture
Former une image radar focalisée à partir des échos bruts — le chirp et la compression d’impulsion, le flou brut de l’historique de phase, la focalisation par rétroprojection qui surpasse la largeur de faisceau de l’antenne réelle, l’autofocus, puis le noyau de focalisation émis en Rust sûr en mémoire et compilé de manière croisée pour de l’ARM grand public.

- gain de focalisation en azimut
- >500×gain de focalisation en azimut
- résolution en distance (vs c/2B = 1,0 m)
- 0,875 mrésolution en distance (vs c/2B = 1,0 m)
- Erreur SIL Rust vs modèle (f32)
- 5e-11Erreur SIL Rust vs modèle (f32)
- noyau compilé de manière croisée et attesté
- aarch64noyau compilé de manière croisée et attesté
- notebooks de conception
- 10notebooks de conception
- exigences RÉUSSIES
- 5 / 5exigences RÉUSSIES
Construire l’image — puis livrer l’imageur sur une carte à 50 $.
Le radar à synthèse d’ouverture transforme une petite antenne montée sur une plateforme mobile en une antenne virtuelle longue de plusieurs kilomètres : parcourir une trace, tirer des impulsions chirpées, et le mouvement synthétise une ouverture qui résout le sol bien plus finement que l’antenne réelle ne le pourrait jamais. Les échos bruts sont un flou non focalisé ; la focalisation est ce qui les transforme en image. Ce programme construit toute cette chaîne — puis fait la partie pour laquelle MATLAB a besoin d’une seconde boîte à outils : il émet le noyau de focalisation en Rust sûr en mémoire et le compile de manière croisée pour un processeur ARM grand public, équivalent bit à bit au modèle.
La résolution vient du chirp, pas de la durée d’impulsion.
La résolution en distance d’un radar exigerait normalement une impulsion d’une brièveté impossible. Le SAR triche avec un long chirp à modulation de fréquence linéaire et la compression d’impulsion : un filtrage adapté de l’écho par rapport au chirp émis fait qu’une impulsion longue et de faible puissance s’effondre en un pic net dont la largeur est fixée par la bande passante, c/(2·B) — ici 0,875 m pour un chirp de 150 MHz. Les lobes secondaires de ce pic compressé se situent à −13 dB, et le fenêtrage les fait descendre à −42 dB au prix d’un lobe principal légèrement plus large.

Un point au sol est un flou dans l’image brute.
Lorsque la plateforme survole une cible, la distance aller-retour trace une hyperbole — un point brillant unique s’étale donc sur de nombreuses impulsions et de nombreuses cases de distance. L’historique de phase brut est un flou texturé dans lequel rien n’est reconnaissable. Toute l’information est présente ; elle n’est simplement pas focalisée. Le traitement par ouverture synthétique est ce qui ramène la signature hyperbolique de chaque cible à un point.



Une erreur de phase inconnue la brouille — l’autofocus la trouve.
La focalisation suppose que vous connaissiez exactement la trace de la plateforme. Le mouvement réel comporte des erreurs, et une erreur de phase inconnue à travers l’ouverture défocalise l’image, tout comme un appareil photo mal mis au point. L’autofocus la retrouve à partir des données elles-mêmes : rechercher la correction de phase qui maximise la netteté de l’image, l’appliquer, et le pic flou revient d’un coup à sa largeur focalisée — sans qu’aucune mesure externe de l’erreur ne soit nécessaire.

Le noyau de focalisation devient du Rust sûr en mémoire sur de l’ARM grand public.
Former l’image n’est que la moitié de l’histoire ; déployer l’imageur en est l’autre moitié. Le noyau de rétroprojection déterministe par pixel est émis en Rust `#![no_std]` portable, vérifié bit à bit par rapport à la référence Julia en logiciel-dans-la-boucle (une erreur relative de 5×10⁻¹¹ en f32), compilé de manière croisée pour `aarch64-unknown-none` — l’ARM de classe Raspberry Pi, le processeur 64 bits le plus largement déployé au monde — et lié à une attestation in-toto pour la provenance de la chaîne d’approvisionnement. C’est l’histoire pilote automatique → firmware Rust (Rust sûr en mémoire, pas C, la réponse à Embedded Coder) un cran de calcul plus haut : d’une boucle de commande de microcontrôleur à un noyau d’imagerie en calcul de périphérie.
Chaque chiffre redérivé à la validation.
Le notebook de V&V reconstruit la chaîne depuis zéro et redérive chaque exigence, affichant un tableau RÉUSSI/ÉCHEC.
Résultat
- Résolution en distance vs c/2B : 0,875 m (12,5 %)
- Gain de focalisation en azimut : >500×
- Lobes secondaires (rect / Hamming) : −13,5 / −42 dB
- SIL Rust vs Julia (f32) : 5e-11
- Compilation croisée + attestation : aarch64 + in-toto
Exigence
- Résolution en distance vs c/2B : R-01 < 15 %
- Gain de focalisation en azimut : R-02 ≥ 15×
- Lobes secondaires (rect / Hamming) : R-03 ≤ −13 dB
- SIL Rust vs Julia (f32) : R-04 ≤ 1e-6
- Compilation croisée + attestation : R-05
Historique de phase simulé, un noyau réellement déployable.
Les données brutes sont un historique de phase simulé de cibles ponctuelles et de scène, et non de véritables échos aéroportés ou satellitaires ; la géométrie est en fauchée (stripmap) et le focaliseur est la rétroprojection (l’étalon-or et la cible naturelle pour la génération de code — pas les pipelines RDA/ω-k d’un processeur de production). Le dérisquage a mis au jour la leçon centrale du programme de façon honnête : en bande C, l’ouverture sous-échantillonnait la phase en azimut et projetait une ambiguïté hors cible, si bien que le programme fonctionne en bande L, où l’échantillonnage est non ambigu. La génération de code est le noyau no_std émis à la main, avec vérification logiciel-dans-la-boucle et compilation croisée aarch64 — pas l’émetteur de blocs de signaux GIR, qui cible les boucles de commande en flux continu, pas l’imagerie par lots ; l’exécution sur une carte spécifique nécessite un HAL (hors périmètre, même réserve que pour le pilote automatique). Ce qui est réel et réexécutable : la chaîne de focalisation complète, le gain de plus de 500×, le budget de lobes secondaires, le SIL exact au bit près, et la crate de noyau aarch64 attestée.
Continuer à explorer




