AstroDump : la commutation de fréquence pour la radioastronomie amateur, dans SatDump
Radiotélescope de la Villette – association Dimension Parabole – radio-club F4KLO. Novembre 2026.
En bref
AstroDump est une branche du logiciel libre SatDump. SatDump est l'œuvre de son développeur principal, Alan Antoine, F4LAU, qui l'a conçu pour décoder toutes sortes d'images diffusées par les satellites, ce qu'il fait très bien. Pour les besoins du radiotélescope de la Villette, AstroDump ajoute à l'enregistreur de SatDump une fonction de « commutation de fréquence » (frequency switching), la technique classique des radioastronomes pour faire sortir une raie très faible du bruit, par exemple la raie de l'hydrogène neutre à 1420,405 MHz.
Sa particularité : quand le récepteur est distant, comme au radiotélescope où le SDR Airspy est piloté par un serveur SatDump, c'est le serveur lui-même qui fait la commutation. Le réseau ne transporte plus le flux brut du récepteur, seulement les spectres calculés : quelques dizaines de kilo-octets par seconde au lieu de plusieurs mégaoctets.
Le but
En radioastronomie, le signal recherché est souvent bien plus faible que le bruit du récepteur lui-même. La raie de l'hydrogène à 21 cm, par exemple, ne représente que quelques pour cent du bruit du système.
Une moyenne longue fait baisser le bruit aléatoire, mais elle ne fait pas disparaître la courbe de réponse du récepteur. Le filtre de fréquence intermédiaire, ses ondulations et la pente de la bande passante restent imprimés dans le spectre. Ils sont souvent plus grands que la raie elle-même, qui se retrouve noyée dans ces défauts.
Il faut donc une méthode qui corrige la courbe de réponse du récepteur sans retirer le signal reçu par l'antenne. C'est le rôle de la commutation de fréquence.
La méthode
Le principe
Le récepteur est réglé alternativement sur deux fréquences, de part et d'autre de la fréquence d'observation f0 :
- position A : f0 + D
- position B : f0 − D
D est l'écart de commutation, de quelques centaines de kilohertz.
Dans les deux positions, la courbe de réponse du récepteur reste à la même place dans le spectre : elle est liée au récepteur. La raie de l'hydrogène HI, elle, se déplace de 2D d'une position à l'autre : elle est liée au spectre de fréquence.
On moyenne séparément les spectres de puissance de chaque position, ce qui donne deux spectres moyens A et B.
Corriger la courbe de réponse du récepteur
Le rapport des deux spectres fait disparaître tout ce qui est lié au récepteur :
o1 − o2 = (A − B) / B o2 − o1 = (B − A) / A
Dans o1 − o2, la raie apparaît en positif à un endroit et en négatif à un autre, décalée de 2D. Le résultat s'exprime directement en fraction de la puissance du système : une valeur de 0,05 signifie une raie égale à 5 % du bruit total.
Le repliement
Les deux courbes contiennent la même raie, à deux endroits différents. On les recale sur l'axe des fréquences du signal, puis on en fait la moyenne :
T(f) = [ (A − B)/B décalé de −D + (B − A)/A décalé de +D ] / 2
C'est la commutation « dans la bande » (in-band frequency switching), décrite par Will Armentrout dans sa présentation « Observing Techniques » de l'observatoire de Green Bank (voir la référence en fin d'article). Toutes les observations servent au résultat, ce qui donne un gain d'environ √2 (1,4) sur le rapport signal sur bruit par rapport à une seule courbe. Chaque moitié utilise sa propre référence (B pour l'une, A pour l'autre), si bien qu'une raie forte n'est pas sous-estimée.
Il reste deux « fantômes » négatifs, de demi-amplitude, à ±2D de la raie. C'est normal et connu : il suffit de choisir D pour que les fantômes tombent hors de la zone utile.
Ce que racontent les pics
À 18 h 24 le 7 novembre, l'antenne, fixe au zénith, visait RA 20 h 40 min et Dec +48,8° (J2000), dans la constellation du Cygne, presque dans le plan de la Voie lactée (longitude galactique 87°, latitude +4°). Dans cette direction, la ligne de visée part de chez nous et traverse successivement plusieurs bras spiraux, de plus en plus loin du centre de la Galaxie. Plus le gaz est loin du centre, plus il prend de retard sur la rotation du Soleil, et plus sa vitesse radiale est négative : chaque bras donne son propre pic, à sa propre vitesse.
- 1420,45 MHz, −5 km/s : le bras local d'Orion, auquel appartient le Système solaire. C'est le pic le plus fort, car à cette longitude on regarde presque le long du bras.
- 1420,67 MHz, −53 km/s : le bras de Persée.
- 1420,79 MHz, −78 km/s : le bras extérieur (ou bras du Cygne), vers 12 kpc du centre galactique.
- 1420,96 MHz, −112 km/s : probablement le bras extérieur de l'Écu-Croix (Outer Scutum-Centaurus), aux confins du disque, vers 15 kpc du centre.
Au-delà de −120 km/s environ (1421,0 MHz), l'émission s'arrête : c'est à peu près le bord du disque d'hydrogène de la Galaxie.
Le bras extérieur est ici plus intense que le bras de Persée, pourtant plus proche. C'est un effet du gauchissement du disque galactique : dans cette région du ciel, les parties extérieures du disque se relèvent au-dessus du plan, justement du côté où pointait l'antenne (latitude +4°). À l'inverse, à 19 h 53 (première figure de l'article), le zénith était passé sous le plan (latitude −6°) : on n'y voit plus que le bras local et le bras de Persée.
Les vitesses sont lues sur les captures, à ±5 km/s près, et tiennent compte de la correction LSR pour le zénith (+3,8 km/s à cette heure). Les distances au centre galactique sont « cinématiques », déduites d'une courbe de rotation plate : elles ne sont qu'indicatives, car les bras ont leurs propres mouvements.
Les raies parasites
Les raies parasites très étroites, comme celle de 1420,000 MHz qui vient de l'horloge de l'Airspy, sont retirées des spectres moyens A et B avant le repliement. Chaque point est comparé à la médiane de ses voisins sur une dizaine de kilohertz : s'il la dépasse de plus de 6 fois le bruit, il est remplacé, avec ses deux voisins de chaque côté, par une droite tracée entre les points propres. La raie de l'hydrogène, large de plusieurs centaines de kilohertz, n'est pas touchée. Les moyennes brutes sont conservées : il suffit de décocher l'option pour les retrouver.
La ligne de base
Le repliement efface la partie de la courbe du récepteur qui reste à la même place dans les deux positions : tout ce qui suit la fréquence intermédiaire. Mais une autre partie de la réponse dépend de la fréquence radio elle-même : l'antenne et sa source, le filtre d'entrée, les réflexions dans les câbles (ondes stationnaires), le filtre de poursuite du tuner qui suit l'accord. Cette partie se déplace avec le spectre de fréquence quand on commute, se comporte comme un signal et survit au repliement : elle laisse dans le résultat une ondulation lente, bien visible sur la figure ci-dessus, de part et d'autre de la raie.
Le calcul en donne la mesure. Si le gain d'entrée ondule avec une période P (en MHz), le résultat replié garde la même période, multipliée par le facteur
1 − cos(4π D / P)
où D est l'écart de commutation. L'ondulation est maximale (facteur 2) pour D = P/4 et s'annule pour D = P/2. Au radiotélescope, la période mesurée sur le résultat est d'environ 6,6 MHz : l'écart de 1,8 MHz utilisé tombe presque sur le pire cas. Une simulation le confirme : avec une ondulation de 6,6 MHz de période, l'écart-type du fond vaut 0,108 pour D = 1,8 MHz, 0,024 pour D = 0,5 MHz, 0,009 pour D = 3 MHz et descend au niveau du bruit pour D = 3,3 MHz. La période renseigne aussi sur l'origine : une onde stationnaire entre deux points distants de L donne une période c / (2L), soit environ 15 m de câble coaxial (ou 23 m dans l'air) pour 6,6 MHz.
Ce qui reste se retire par la méthode classique des radioastronomes : un polynôme (de Legendre, d'ordre 4 par défaut) est ajusté sur le spectre replié en dehors d'une fenêtre qui contient la raie, puis retranché partout. La fenêtre se règle en km/s et se voit sur le graphique sous forme de deux traits orange que l'on déplace à la souris. Un clic droit sur le graphique (ou la case « Show line window ») les masque ou les réaffiche, sans changer le calcul. Les points qui s'écartent de plus de trois fois le bruit sont écartés de l'ajustement, et le bruit restant hors de la raie est affiché pour choisir l'ordre. Les moyennes brutes ne sont pas modifiées : il suffit de décocher l'option pour retrouver le spectre d'origine. En simulation, le fond passe d'un écart-type de 0,071 à 0,0035, le niveau du bruit.
Pour une raie faible et large, la prudence s'impose : un polynôme d'ordre trop élevé, ou une fenêtre trop étroite, peut absorber une partie des ailes de la raie. Mieux vaut d'abord réduire l'ondulation à la source, en choisissant l'écart, puis n'utiliser qu'un ordre faible.
L'échelle des vitesses et la correction LSR
Au-dessus du résultat replié, un second axe donne la vitesse radiale en km/s, selon la convention des radioastronomes :
v = c × (f_repos − f) / f_repos
avec c = 299 792,458 km/s et f_repos = 1420,405752 MHz pour l'hydrogène (la fréquence de repos est réglable, par exemple 1665,402 ou 1667,359 MHz pour les raies OH). Une vitesse positive signifie que la source s'éloigne. La galaxie d'Andromède (M31), qui s'approche à environ 300 km/s, donne ainsi sa raie vers 1421,83 MHz, soit −300 km/s sur l'axe.
La vitesse mesurée contient aussi le mouvement de l'observateur : la rotation de la Terre (moins de 0,5 km/s), sa révolution autour du Soleil (jusqu'à 30 km/s) et le mouvement du Soleil lui-même. La correction LSR ramène la vitesse au « repos local standard », le repère dans lequel les vitesses des catalogues sont publiées. AstroDump additionne les trois mouvements, projetés sur la direction de la source :
- la rotation de la Terre, à partir de la position de la station enregistrée dans SatDump et du temps sidéral local ;
- la révolution de la Terre, à partir de la longitude du Soleil (formules de Meeus, ramenées à l'équinoxe J2000) ;
- le mouvement du Soleil par rapport au repos local standard : 20 km/s vers l'apex solaire (18 h 03 min 50,3 s, +30° 00′ 17″ en J2000), la définition habituelle en radioastronomie.
La source se donne en coordonnées équatoriales J2000 (ascension droite, déclinaison) ou en coordonnées galactiques (l, b), pratiques pour un relevé du plan de la Galaxie. La correction est calculée pour l'heure courante et affichée avec le détail de ses trois termes. Au survol de la souris, le graphique indique la fréquence, la vitesse correspondante et la valeur de la courbe.
Les réglages
- Écart (Offset) : exprimé en pourcentage d'un maximum égal à 30 % de la fréquence d'échantillonnage, pour que la fréquence d'observation reste dans la partie plate du filtre. Par défaut 60 % de ce maximum, soit environ 450 kHz à 2,5 Méch/s. L'écart est arrondi à un nombre entier de raies de FFT, pour que le repliement soit exact.
- Palier (Dwell) : durée passée sur chaque position, 2 secondes par défaut.
- Stabilisation (Settle) : durée ignorée après chaque changement de fréquence, le temps que le récepteur se stabilise, 0,5 seconde par défaut.
- Lissage : moyenne glissante sur un nombre de raies voisines, pour l'affichage seulement.
- Affichage linéaire ou en dB. En dB, chaque point vaut 10·log10(1 + dP/Psys). Pour une raie faible, les deux affichages ont la même forme, à un facteur 4,34 près.
- Masque des bords : les bords de bande, où le filtre coupe, sont masqués.
- Retrait des raies parasites : seuil (6 fois le bruit) et largeur de la médiane locale (10 kHz) réglables.
- Ligne de base : ordre du polynôme et fenêtre de la raie, en km/s ; les deux traits de la fenêtre s'affichent ou se masquent par une case ou par un clic droit sur le graphique.
- Échelle des vitesses : fréquence de repos de la raie observée.
- Correction LSR : position de la source, en RA/Dec J2000 ou en l/b galactiques.
Pourquoi faire la commutation sur le serveur
Au radiotélescope de la Villette, le récepteur SDR Airspy est branché sur un ordinateur du club qui fait tourner le serveur de SatDump. Les membres l'utilisent à distance, depuis chez eux, avec l'interface de SatDump.
Dans la première version, c'était l'interface qui pilotait la commutation. L'ordre de changer de fréquence partait de chez l'utilisateur, traversait Internet, puis les échantillons revenaient avec un retard variable, parfois de plusieurs secondes. Le logiciel devait deviner à quelle position appartenait chaque morceau de signal : il mesurait ce retard au début, puis le suivait en permanence. Et tout le flux du récepteur, environ 40 Mbit/s, devait traverser une liaison Internet déjà chargée.
Dans AstroDump, c'est le serveur qui commute. Il change lui-même de fréquence, et il sait exactement quels échantillons ont été pris avant et après chaque changement. Il n'y a plus de retard à mesurer, et le temps de stabilisation est compté au nombre d'échantillons près.
Le serveur calcule aussi les spectres, avec la même FFT que l'interface. À la fin de chaque palier, il n'envoie qu'un seul spectre moyen. Le débit tombe d'environ 40 Mbit/s à environ 0,1 Mbit/s, soit 300 fois moins.
Comme le flux brut ne traverse plus le réseau, le récepteur peut travailler à 10 millions d'échantillons par seconde. La bande observée s'élargit d'autant, ce qui sera précieux pour une radiosource comme M31, dont le décalage Doppler est important.
L'interface additionne ces spectres en A et B, fait le repliement et l'affiche. Tous les réglages d'affichage restent donc dans l'interface, sans rien changer sur le serveur.
Si le serveur n'est pas une version AstroDump, l'interface s'en aperçoit au bout de trois secondes et affiche un message : la commutation de fréquence demande un serveur AstroDump. Avec un récepteur branché directement sur l'ordinateur, AstroDump fait lui-même la commutation.
Ce que l'on enregistre
AstroDump propose trois sortes de fichiers, pour le post-traitement.
- Le résultat final (fichier CSV, sur le poste de l'utilisateur). Bouton « Save CSV » : pour chaque raie de la FFT, la fréquence, les spectres moyens A et B, la différence relative (A − B)/B, la valeur repliée, deux colonnes qui signalent les points parasites retirés, la vitesse radiale et, si la correction est active, la vitesse LSR (avec la correction appliquée dans l'en-tête du fichier), et enfin la valeur repliée après retrait de la ligne de base.
- Un spectre replié par cycle (fichier CSV, sur le poste de l'utilisateur). Option « Save each folded cycle » : une ligne par cycle (un palier A suivi d'un palier B), avec l'heure UTC, le nombre de trames, puis les valeurs repliées sur tout le spectre de fréquence. On peut ensuite moyenner autant de cycles que l'on veut, suivre une dérive au cours de la nuit, ou écarter les cycles abîmés par un parasite. Le volume est d'environ 100 Mo par heure.
- Le signal brut (fichier IQ, sur le serveur). Option « Save IQ on the server » : les échantillons bruts du récepteur, en 8, 16 ou 32 bits, avec un fichier d'événements qui donne la position exacte de chaque changement de fréquence et de chaque palier. Il permet de tout refaire après coup : autre résolution de FFT, autre durée de stabilisation. C'est volumineux, de 20 à 90 Go par heure, et le serveur s'arrête de lui-même d'enregistrer si le disque se remplit.
Exemple de lecture du fichier par cycle en Python :
import numpy as np f = "fswitch_cycles_1420405000Hz_....csv" freq = np.loadtxt(f, delimiter=",", comments="#", max_rows=1, dtype=str)[5:].astype(float) data = np.genfromtxt(f, delimiter=",", comments="#", skip_header=5)[:, 5:] moyenne = np.nanmean(data, axis=0)
Les essais
La méthode a été vérifiée par étapes.
- En simulation, une raie de 5 % placée sur un filtre très marqué ressort à exactement 0,0500, à la bonne fréquence, et la forme du filtre disparaît.
- Avec un récepteur RTL-SDR, une station FM connue ressort en positif à sa vraie fréquence : les deux positions sont bien étiquetées.
- Avec une charge de 50 ohms à l'entrée, donc sans aucun signal, le bruit restant après repliement est très proche du bruit théorique. La première et la seconde moitié de chaque palier sont identiques : aucune trace du changement de fréquence ne subsiste après la stabilisation. Un changement de fréquence du RTL-SDR prend environ 34 millisecondes.
- Sur le SDR Airspy du radiotélescope, à 1420,4 MHz, aucun échantillon brut ne traverse le réseau pendant la commutation, et le fond replié est au niveau du bruit théorique.
- En simulation, une raie parasite trois fois plus forte que le bruit du système tombe au niveau du bruit une fois retirée, sans modifier une raie de l'hydrogène de 5 %.
- La correction LSR a été comparée à la bibliothèque astronomique de référence astropy, pour quatre sources (M31, centre galactique, l = 120°, Cygnus) et cinq dates entre 2026 et 2030 : l'écart ne dépasse pas 0,02 km/s.
Mode d'emploi
- Dans l'enregistreur, choisir le serveur distant du radiotélescope comme source.
- Régler le gain du récepteur en fixe, sans contrôle automatique de gain, et laisser la décimation à 1.
- Régler la fréquence d'observation, par exemple 1420,405 MHz pour l'hydrogène.
- Cliquer sur « Start » pour lancer l'acquisition.
- Ouvrir le panneau « Frequency switching (experimental) » : les sections inutiles (traitement, enregistrement, suivi, VFOs, Debug) disparaissent pour faire de la place, et le panneau descend de lui-même tout en bas : tous les réglages de la commutation sont visibles d'emblée. Régler l'écart, le palier et la stabilisation.
- Si besoin, choisir la fréquence de repos de la raie, cocher la correction LSR et donner la position de la source, et cocher le retrait de la ligne de base en plaçant la fenêtre de part et d'autre de la raie.
- Cocher, si besoin, l'enregistrement par cycle et l'IQ brut sur le serveur.
- Cliquer sur « Start switching ». La zone principale affiche le résultat replié, qui s'affine au fil des cycles.
- Cliquer sur « Stop switching », ou sur « folded » dans la légende, pour revenir au spectre normal. Les moyennes sont conservées : « Resume switching » reprend la mesure là où elle s'était arrêtée, tant que la fréquence, l'échantillonnage, la taille de FFT et l'écart n'ont pas changé. « Start switching » repart de zéro.
Précautions
- La commutation est faite pour des signaux très stables : raies et continuum en radioastronomie. Elle ne convient pas aux satellites, dont la fréquence bouge.
- L'enregistrement normal, le traitement et le suivi doivent être arrêtés pendant la commutation.
- Le serveur n'accepte qu'un utilisateur à la fois : penser à réserver le créneau dans l'agenda du radiotélescope.
- La fonction est expérimentale : les retours d'expérience sont les bienvenus.
Le logiciel
AstroDump est une branche de SatDump, logiciel libre de réception et de décodage de satellites, sous licence GPL version 3. Le code se trouve sur GitHub, dans le dépôt f6bvp/SatDump, branche « astrodump ».
Le dépôt garde aussi, à part, le SatDump d'origine avec nos seules corrections de défauts. Ces corrections ont été proposées au projet SatDump. La commutation de fréquence, plus spécialisée, reste pour l'instant dans la branche AstroDump.
Le protocole entre l'interface et le serveur reste compatible : une ancienne interface fonctionne avec un serveur AstroDump, et une interface AstroDump fonctionne avec un ancien serveur pour la réception normale. La commutation de fréquence, elle, demande un serveur AstroDump.
Référence
Will Armentrout, avec l'aide de David Frayer et Larry Morgan, « Observing Techniques », Green Bank Observatory, mai 2020 (planche 30 : « In-band Frequency Switching ») : présentation en PDF.
Remerciements
À l'équipe de SatDump, pour un logiciel remarquable et ouvert.
À l'équipe du radiotélescope de la Villette et de l'association Dimension Parabole.
À François-Xavier Hugot, qui nous a fait connaître la présentation de Will Armentrout.
À l'outil d'IA Claude (Claude Opus 5.5, Anthropic), pour l'aide au développement.