Le projet Javions

CS-108

1. Introduction

Afin de faciliter le contrôle aérien, les avions — et d'autres aéronefs comme les hélicoptères, ballons, etc. — diffusent en permanence des messages radio numériques nommés « messages ADS-B » (pour Automatic Dependent Surveillance — Broadcast). Ces messages communiquent de nombreuses informations au sujet de leur expéditeur, comme son identité, sa position, sa vitesse, sa direction de déplacement, etc.

Les messages ADS-B sont transmis sur la fréquence de 1090 MHz et peuvent être captés soit par un récepteur spécialisé, soit par une simple « radio logicielle » (software-defined radio ou SDR en anglais), connectée à un ordinateur sur lequel fonctionne un programme capable de décoder ces messages.

Le but du projet de cette année, nommé Javions, est justement d'écrire un programme capable de décoder les messages ADS-B reçus par une radio logicielle, et d'afficher les aéronefs les ayant émis sur une carte. La figure ci-dessous montre l'interface graphique du projet terminé.

javions;32.png
Figure 1 : Interface graphique de Javions (cliquer pour agrandir)

La radio logicielle utilisée pour Javions est la AirSpy R2, visible ci-dessous. Comme toute radio logicielle, elle doit être connectée d'une part à une antenne, et d'autre part à un ordinateur. Une fois réglée sur une fréquence donnée, elle numérise le signal radio qu'elle reçoit de l'antenne, puis le transmet à l'ordinateur.

airspy-r2.png
Figure 2 : La radio logicielle AirSpy R2

Pour qu'il soit possible de recevoir les messages ADS-B d'un aéronef, aucun obstacle important ne doit se trouver entre lui et l'antenne de réception. Il est donc important de bien positionner cette dernière, et l'image de la figure 1 a par exemple été obtenue avec une antenne placée proche du toit d'un immeuble, au centre de Lausanne.

Cela dit, même dans de bonnes conditions de réception, la courbure de la Terre implique qu'il n'est pas possible de recevoir des messages provenant d'aéronefs situés à plus de quelques centaines de kilomètres du récepteur. Javions ne pourra donc afficher que des aéronefs se trouvant aux alentours de Lausanne.

Pour couvrir une plus large zone géographique et permettre le suivi d'aéronefs sur une longue distance, il est possible de collecter, via Internet, les messages ADS-B reçus par un grand nombre de radios réparties sur Terre. C'est ce que font plusieurs sites de collecte de messages, gérés soit par des passionnés d'aviation (p.ex. ADSB.lol, adsb.fi ou ADSBHub), des chercheurs (The OpenSky Network), des activistes (Dictator Alert) ou encore des entreprises à but commercial (ADS-B Exchange, flightradar24, planefinder, FlightAware, etc.). Dans un soucis de simplicité, nous n'interagirons toutefois pas avec ces sites dans le cadre de ce projet.

2. Organisation

Le projet se fait par groupes de 2 personnes au maximum. La formation de ces groupes est libre et peut changer au cours du semestre, pour peu que les directives concernant le plagiat soient respectées. En particulier, si deux personnes ayant travaillé en commun se séparent, elles doivent se partager le code et ne peuvent chacune l'emporter en totalité de leur côté.

La mise en œuvre du projet est découpée en 12 étapes hebdomadaires, regroupées en trois parties :

  1. les étapes 1 à 6,
  2. les étapes 7 à 11,
  3. l'étape 12, qui est optionnelle.

La première partie est très guidée, afin de vous permettre de bien démarrer, tandis que la seconde l'est moins, la troisième étant (presque) totalement libre.

3. Notation

Un total de 500 points est attribué durant le semestre, répartis ainsi :

  • projet : 300 points,
  • examen intermédiaire : 75 points,
  • examen final : 125 points.

Les 300 points attribués au projet sont répartis de la manière suivante :

  • rendus testés : 90 points (18 points par rendu),
  • rendu intermédiaire : 80 points,
  • rendu final : 110 points,
  • test final : 20 points.

Un rendu testé est un rendu qui est évalué automatiquement au moyen de tests. Il y a cinq rendus de ce type au cours du semestre, un pour chacune des étapes 2 à 6. Le nombre de points obtenus à un rendu testé est proportionnel au nombre de tests passés avec succès.

Le rendu intermédiaire, qui concerne les étapes 1 à 6, et le rendu final, qui concerne les étapes 7 à 11, sont quant à eux évalués par lecture de votre code, et les points attribués en fonction de la qualité du programme. L'efficacité, la concision et l'élégance du code sont prises en compte dans cette évaluation.

Le test final consiste en un test non automatisé — contrairement au test des étapes 2 à 6 — du bon fonctionnement du projet terminé.