Développement du logiciel sol - OUFTI-1 - Université de Liège

Développement du logiciel sol - OUFTI-1 - Université de Liège Développement du logiciel sol - OUFTI-1 - Université de Liège

leodium.ulg.ac.be
from leodium.ulg.ac.be More from this publisher
12.07.2015 Views

UNIVERSITÉ DE LIÈGEFaculté des Sciences AppliquéesDépartement d’Électricité, Électronique et InformatiqueProjet de nanosatellite OUFTI-1 :Développement du logiciel solNgoc An NguyenPromoteur :Professeur Bernard BoigelotMémoire présenté en vue del’obtention du grade deLicencié en Sciences InformatiquesAnnée académique 2009 - 2010

UNIVERSITÉ DE LIÈGEFaculté <strong>de</strong>s Sciences AppliquéesDépartement d’Électricité, Électronique et InformatiqueProjet <strong>de</strong> nanosatellite <strong>OUFTI</strong>-1 :Développement <strong>du</strong> <strong>logiciel</strong> <strong>sol</strong>Ngoc An NguyenPromoteur :Professeur Bernard BoigelotMémoire présenté en vue <strong>de</strong>l’obtention <strong>du</strong> gra<strong>de</strong> <strong>de</strong>Licencié en Sciences InformatiquesAnnée académique 2009 - 2010


RemerciementsJe remercie tout d’abord le Professeur Bernard Boigelot pour son encadrementlors <strong>de</strong> ce travail <strong>de</strong> fin d’étu<strong>de</strong>s, ainsi que ses conseils portant sur le contenu <strong>du</strong>travail.J’exprime toute ma reconnaissance au Professeur Jacques G. Verly et au ProfesseurGaëtan Kerschen <strong>de</strong> m’avoir permis d’intégrer l’équipe <strong>OUFTI</strong>-1 et <strong>de</strong> m’avoirproposé un travail <strong>de</strong> fin d’étu<strong>de</strong>s original et très intéressant.J’ai eu le plaisir et la chance <strong>de</strong> travailler dans une équipe motivée et sympathique.Je remercie tous les membres <strong>de</strong> l’équipe pour les nombreuses discussionstechniques au cours <strong>de</strong> l’année.Je remercie également toute l’équipe système pour la gestion <strong>du</strong> projet, les activitéset les réunions organisées dans le cadre <strong>du</strong> projet ; à savoir : Amandine Denis,Jonathan Pisane, Laurent Chiarello, Laurent Rainaut et Jérôme Wertz. Plus particulièrement,je remercie Laurent Chiarello pour nos nombreuses discussions surle développement <strong>de</strong> la station <strong>sol</strong>.Je tiens également à remercier Florian George <strong>de</strong> l’équipe SwissCube pour seséclairages techniques au niveau <strong>de</strong> la station <strong>sol</strong>.Une reconnaissance toute particulière à ma famille qui m’a soutenu et encouragétout au long <strong>de</strong> mes étu<strong>de</strong>s.Enfin, un grand merci aussi à toutes les personnes qui ont contribué <strong>de</strong> loin ou<strong>de</strong> près à la réussite <strong>de</strong> ce travail.Nguyen Ngoc Ani


Table <strong>de</strong>s matières1 Intro<strong>du</strong>ction 11.1 Sujet et objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Plan <strong>du</strong> document . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Projet nanosatellite <strong>OUFTI</strong>-1 42.1 Contexte <strong>du</strong> projet . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2 Le concept CubeSat . . . . . . . . . . . . . . . . . . . . . . . . . . 52.3 Radioamateur, AX.25 et D-STAR . . . . . . . . . . . . . . . . . . . 62.3.1 Radioamateur . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3.2 Protocole AX.25 . . . . . . . . . . . . . . . . . . . . . . . . 72.3.3 Protocole D-STAR . . . . . . . . . . . . . . . . . . . . . . . 72.3.4 Avantages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.4 Objectifs <strong>de</strong> la mission . . . . . . . . . . . . . . . . . . . . . . . . . 82.5 Opérations spécifiques <strong>de</strong> <strong>OUFTI</strong>-1 . . . . . . . . . . . . . . . . . . 92.5.1 Canal <strong>de</strong> comman<strong>de</strong>ment . . . . . . . . . . . . . . . . . . . . 92.5.2 Canal D-STAR . . . . . . . . . . . . . . . . . . . . . . . . . 102.5.3 Mesures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.5.4 Beacon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Station <strong>sol</strong> 123.1 Description générale <strong>de</strong> la station <strong>sol</strong> . . . . . . . . . . . . . . . . . 123.2 Ground Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.2.1 Equipement RF . . . . . . . . . . . . . . . . . . . . . . . . . 133.2.2 Antennes et système <strong>de</strong> tracking . . . . . . . . . . . . . . . . 133.2.3 Architecture <strong>du</strong> GS . . . . . . . . . . . . . . . . . . . . . . . 133.3 Mission Control Center . . . . . . . . . . . . . . . . . . . . . . . . . 153.3.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.3.2 Contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.3.3 Architecture <strong>du</strong> MCC . . . . . . . . . . . . . . . . . . . . . 184 Automatisation <strong>du</strong> Mission Control Center 204.1 Besoins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204.2 Planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204.2.1 Représentation d’un planning . . . . . . . . . . . . . . . . . 214.3 Langage <strong>de</strong> développement . . . . . . . . . . . . . . . . . . . . . . . 26ii


TABLE DES MATIÈRESiii4.4 Sche<strong>du</strong>ler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.4.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.4.2 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . 274.4.3 Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.5 Outil <strong>de</strong> planification . . . . . . . . . . . . . . . . . . . . . . . . . . 304.5.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.5.2 Les mo<strong>du</strong>les <strong>de</strong> l’outil planification . . . . . . . . . . . . . . 314.5.3 Mo<strong>du</strong>le planning . . . . . . . . . . . . . . . . . . . . . . . . 314.5.4 Mo<strong>du</strong>le générateur <strong>de</strong> co<strong>de</strong> . . . . . . . . . . . . . . . . . . . 324.5.5 Mo<strong>du</strong>le parser . . . . . . . . . . . . . . . . . . . . . . . . . . 344.5.6 Mo<strong>du</strong>le afficheur <strong>de</strong> plannings . . . . . . . . . . . . . . . . . 354.5.7 Mo<strong>du</strong>le interface graphique . . . . . . . . . . . . . . . . . . 354.5.8 Communication entre scripts Python et MCS . . . . . . . . 374.5.9 Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 Développement <strong>du</strong> Mission Control Center 405.1 Architecture <strong>du</strong> MCC . . . . . . . . . . . . . . . . . . . . . . . . . . 405.2 Communication clients et MCS . . . . . . . . . . . . . . . . . . . . 425.2.1 Java Remote Method Invocation . . . . . . . . . . . . . . . . 425.3 Mission Control Software . . . . . . . . . . . . . . . . . . . . . . . . 455.3.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 455.3.2 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . 465.4 Outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong>s . . . . . . . . . . . . . . . . 475.4.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 475.4.2 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . 475.5 Mission Data Viewer . . . . . . . . . . . . . . . . . . . . . . . . . . 505.5.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 505.5.2 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . 516 Base <strong>de</strong> données <strong>de</strong> mission 556.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556.1.1 Système <strong>de</strong> gestion <strong>de</strong> base <strong>de</strong> données . . . . . . . . . . . . 566.2 Structure <strong>de</strong> la base <strong>de</strong> données <strong>de</strong> mission . . . . . . . . . . . . . . 567 Protocoles <strong>de</strong> communication 607.1 Protocoles utilisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607.2 Protocole PUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617.3 Service <strong>de</strong> vérification <strong>de</strong> télécomman<strong>de</strong>s . . . . . . . . . . . . . . . 627.3.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 627.3.2 Sous-types <strong>du</strong> service 1 . . . . . . . . . . . . . . . . . . . . . 637.4 Service <strong>de</strong> génération <strong>de</strong> rapports <strong>de</strong> données . . . . . . . . . . . . . 637.4.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 637.4.2 Sous-types <strong>du</strong> service 3 . . . . . . . . . . . . . . . . . . . . . 647.5 Service <strong>de</strong> gestion <strong>de</strong> fonctions . . . . . . . . . . . . . . . . . . . . . 647.5.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 64


TABLE DES MATIÈRESiv7.5.2 Sous-types <strong>du</strong> service 8 . . . . . . . . . . . . . . . . . . . . . 657.6 Service d’ordonnancement à bord . . . . . . . . . . . . . . . . . . . 657.6.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 657.6.2 Sous-types <strong>du</strong> service 11 . . . . . . . . . . . . . . . . . . . . 657.7 Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668 Activités <strong>du</strong> projet <strong>OUFTI</strong>-1 688.1 Interface Technical Review . . . . . . . . . . . . . . . . . . . . . . . 688.2 Présentations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689 Conclusion et développements futurs 699.1 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699.2 Idées pour les futurs développements . . . . . . . . . . . . . . . . . 70Bibliographie 71Appendices 73A Liste <strong>de</strong>s mesures à bord <strong>de</strong> <strong>OUFTI</strong>-1 74B Diagramme <strong>logiciel</strong> statique 76B.1 Sche<strong>du</strong>ler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76B.2 Outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong>s . . . . . . . . . . . . . . . . 77B.3 Outil <strong>de</strong> planification . . . . . . . . . . . . . . . . . . . . . . . . . . 78B.4 Mission Data Viewer . . . . . . . . . . . . . . . . . . . . . . . . . . 79C Co<strong>de</strong> source 80


Chapitre 1Intro<strong>du</strong>ction<strong>OUFTI</strong>-1 est le premier nanosatellite développé à l’Université <strong>de</strong> Liège et enBelgique. <strong>OUFTI</strong>-1 a été récompensé d’une place sur le vol inaugural VettoreEuropeo di Generazione Avanzata (VEGA) après une défense <strong>du</strong> projet au CentreEuropéen <strong>de</strong> Recherche et <strong>de</strong> Technologie Spatiale (ESTEC) aux Pays-Bas.La particularité principale <strong>de</strong> <strong>OUFTI</strong>-1 est l’implémentation <strong>du</strong> protocole DigitalSmart Technologies for Amateur Radio (D-STAR) dans l’une <strong>de</strong> ses chargesutiles. D-STAR est un protocole radioamateur innovant développé par l’association<strong>de</strong>s radioamateurs japonais (JARL), complètement numérique, permettant<strong>de</strong>s transferts simultanés <strong>de</strong> la voix et <strong>de</strong> données. Le protocole D-STAR <strong>de</strong>vient<strong>de</strong> plus en plus populaire dans le mon<strong>de</strong> mais il n’a jamais été utilisé dans le cadrespatial. Cette caractéristique spécifique <strong>du</strong> projet suscite un intérêt chez le publicmais également renforce notre envie <strong>de</strong> développer quelque chose d’unique.Le projet est en développement à l’Université <strong>de</strong> Liège <strong>de</strong>puis <strong>de</strong>ux ans. Chaqueannée, un groupe d’étudiants participent au développement <strong>du</strong> projet lors <strong>de</strong> leur<strong>de</strong>rnière année d’étu<strong>de</strong>s, où chacun <strong>de</strong>s étudiants est responsable d’un sous-système<strong>du</strong> projet. L’équipe participant au projet <strong>OUFTI</strong>-1 lors cette année académique estconstituée <strong>de</strong> quatorze étudiants, tous travaillant sur leur travail <strong>de</strong> fin d’étu<strong>de</strong>s.Le document présent fait partie <strong>de</strong>s travaux <strong>de</strong> fin d’étu<strong>de</strong>s contribuant à l’avancement<strong>du</strong> projet unique <strong>OUFTI</strong>-1.1.1 Sujet et objectifsLors d’une mission spatiale, il est important d’avoir un endroit d’où on peutcontrôler et surveiller le satellite en orbite. Cet endroit est appelé la station <strong>sol</strong>. Lastation <strong>sol</strong> peut être divisée en <strong>de</strong>ux parties. La première partie, appelée GroundStation (GS), est constituée <strong>de</strong> tout l’équipement matériel permettant la communicationavec le satellite, c’est-à-dire les antennes, les émetteurs-récepteurs, etc. Lasecon<strong>de</strong> partie, appelée Mission Control Center (MCC), est composée en gran<strong>de</strong>partie <strong>de</strong> <strong>logiciel</strong>s qui sont utilisés par les opérateurs dans l’objectif <strong>de</strong> contrôler lesatellite par l’envoi <strong>de</strong> télécomman<strong>de</strong>s et la réception <strong>de</strong> télémétries. Le travail <strong>de</strong>fin d’étu<strong>de</strong>s présent porte sur le MCC.1


CHAPITRE 1. INTRODUCTION 2L’objectif <strong>de</strong> ce travail <strong>de</strong> fin d’étu<strong>de</strong>s est le développement <strong>du</strong> centre <strong>de</strong> contrôle<strong>de</strong> mission d’où les opérateurs pourront contrôler le satellite.Le projet <strong>OUFTI</strong>-1 est à sa troisième année <strong>de</strong> développement, il a été doncnécessaire <strong>de</strong> voir ce qui a été développé lors <strong>de</strong>s années précé<strong>de</strong>ntes par rapport àla station <strong>sol</strong> et ensuite <strong>de</strong> déterminer les objectifs spécifiques <strong>de</strong> ce mémoire. Lestravaux <strong>de</strong> fin d’étu<strong>de</strong>s <strong>de</strong>s années précé<strong>de</strong>ntes ont permis <strong>de</strong> voir l’état d’avancement<strong>du</strong> projet et ont également servi <strong>de</strong> base à la réalisation <strong>du</strong> travail <strong>de</strong> find’étu<strong>de</strong>s présent. Bien que le titre <strong>de</strong> [8] est similaire au travail <strong>de</strong> fin d’étu<strong>de</strong>s présent,le travail est différent. En effet dans [8], le travail a porté sur les protocoles <strong>de</strong>communication utilisées dans la mission <strong>OUFTI</strong>-1, la conception <strong>de</strong> haut niveau<strong>du</strong> Mission Control Software (MCS) qui est un élément <strong>du</strong> MCC et l’architecture<strong>du</strong> GS.La station <strong>sol</strong> <strong>du</strong> satellite joue un rôle important et son développement requiertune organisation rigoureuse et soignée.Voici les objectifs qui ont été définis et qui sont atteints tout au long <strong>du</strong> parcours<strong>du</strong> document.1. I<strong>de</strong>ntifier les éléments nécessaires à l’automatisation <strong>du</strong> MCC.2. Définir l’architecture <strong>du</strong> MCC et les mo<strong>du</strong>les basiques qui en font partie.3. Définir, avec certains sous-systèmes, <strong>de</strong>s interfaces <strong>de</strong> communication.4. Développer et optimiser les <strong>logiciel</strong>s faisant partie <strong>du</strong> MCC.Des efforts ont été fournis afin d’avoir <strong>de</strong>s <strong>logiciel</strong>s mo<strong>du</strong>laires, génériques et commentésqui permettront une meilleure et rapi<strong>de</strong> compréhension <strong>de</strong>s <strong>logiciel</strong>s etégalement d’adapter ceux-ci ultérieurement si cela s’avère nécessaire.Dans les chapitres suivants, les <strong>logiciel</strong>s développés dans le cadre <strong>de</strong> ce mémoiresont décrits <strong>de</strong> la manière la plus claire possible dans l’objectif <strong>de</strong> faire comprendreaux lecteurs leurs fonctionnements. Cela permettra également aux étudiants <strong>de</strong>l’année suivante <strong>de</strong> gagner <strong>du</strong> temps.1.2 Plan <strong>du</strong> documentAprès cette brève intro<strong>du</strong>ction, le chapitre 2 présente le contexte et les motivations<strong>du</strong> projet.Le chapitre 3 donne un aperçu global <strong>de</strong> la station <strong>sol</strong>, incluant le matériel et les<strong>logiciel</strong>s utilisés dans la station <strong>sol</strong>.Le chapitre 4 explique les mécanismes mis en place permettant l’automatisation<strong>du</strong> MCC. Ensuite, le chapitre 5 abor<strong>de</strong>ra la structure <strong>du</strong> MCC et le développement<strong>de</strong>s unités en faisant partie.Ensuite, le chapitre 6 présente la base <strong>de</strong> données <strong>de</strong> la mission, son interactionavec les éléments <strong>du</strong> MCC et son contenu.


CHAPITRE 1. INTRODUCTION 3Le chapitre 7 décrit brièvement les protocoles <strong>de</strong> communication et les services<strong>du</strong> protocole Packet Utilization Standard (PUS) utilisés dans le cadre <strong>de</strong> la mission<strong>OUFTI</strong>-1.Finalement, les chapitres 8 et 9 abor<strong>de</strong>nt les activités relatives au projet, lesdéveloppements qui pourront être réalisés dans le futur, et enfin la conclusion.


Chapitre 2Projet nanosatellite <strong>OUFTI</strong>-1Ce chapitre présente le contexte dans lequel le projet est apparu, sa <strong>de</strong>scriptionet ses objectifs <strong>de</strong> base.2.1 Contexte <strong>du</strong> projetDepuis <strong>de</strong>s années, l’Université <strong>de</strong> Liège (ULg) a un rêve qui est <strong>de</strong> développer<strong>de</strong>s satellites dans un cadre é<strong>du</strong>catif. L’initiative nanosatellite a été lancée en 2004,avec comme nom Leodium qui a pour signification “Lancement En Orbite <strong>de</strong> DémonstrationsInnovantes d’une Université Multidisciplinaire” et qui est égalementle nom latin <strong>de</strong> Liège. L’objectif <strong>de</strong> cette initiative est <strong>de</strong> créer une série <strong>de</strong> nanosatellitesdéveloppés par <strong>de</strong>s équipes d’étudiants venant <strong>de</strong> différentes branchesen sciences appliquées (par exemple, ingénieur civil en aérospatiale, licencié ensciences informatiques, ingénieur in<strong>du</strong>striel, etc.).Le projet d’un nanosatellite complètement belge, idée proposée par Luc Halbach,directeur commercial <strong>de</strong> Spacebel, est <strong>de</strong>venu officiellement une réalité en2007. Son développement commença en 2008 incluant quatorze étudiants venant<strong>de</strong> l’Université <strong>de</strong> Liège, l’institut HELMo Gramme et l’Haute École <strong>de</strong> la Province<strong>de</strong> Liège ISIL. Les étudiants travaillaient sur les différents sous-systèmes <strong>du</strong> satelliteselon leur domaine <strong>de</strong> formation. Ce projet est également en développementlors <strong>de</strong> cette année académique.<strong>OUFTI</strong>-1 est un nanosatellite construit respectant le format CubeSat. Ce formatest décrit dans la section suivante.Son lancement était initialement programmé lors <strong>du</strong> lancement <strong>du</strong> vol inauguralVEGA en novembre 2009 mais, étant reporté, la nouvelle date <strong>de</strong> lancement n’estpas connue pour l’instant. Le lanceur VEGA est réalisé par l’agence spatiale européenne(ESA) et l’agence spatiale italienne (ASI). La particularité <strong>de</strong> ce lanceurest son faible coût par l’exploitation matérielle et technologique déjà existante.4


CHAPITRE 2. PROJET NANOSATELLITE <strong>OUFTI</strong>-1 52.2 Le concept CubeSatUn CubeSat désigne une famille <strong>de</strong> petit satellites respectant un format particulier(voir [19]). Le format CubeSat a été défini par l’Université polytechnique<strong>de</strong> Californie (CalPoly) et les laboratoires <strong>de</strong>s systèmes spatiaux <strong>de</strong> l’UniversitéStanford (SSDL).TypePicosatelliteNanosatelliteMicrosatelliteMinisatelliteMasseMoins d’1 kg1 à 10 kg100 à 500 kg100 à 500 kgTable 2.1 – Classification <strong>de</strong>s familles <strong>de</strong> petits satellitesUn CubeSat est un cube <strong>de</strong> 10 cm avec une masse maximale <strong>de</strong> 1 kg.Un tableau reprenant les différents types <strong>de</strong> familles <strong>de</strong> petits satellites est représentéà la table 2.1. En plus <strong>de</strong>s dimensions, le format CubeSat décrit égalementune interface spécifique avec le lanceur, facilitant l’intégration <strong>de</strong>s CubeSats commecharges utiles secondaires.La plupart <strong>de</strong>s CubeSats envoyés sont fabriqués par <strong>de</strong>s universités car ces <strong>de</strong>rnièresveulent en faire un projet é<strong>du</strong>catif idéal. C’est un projet réaliste mais cela<strong>de</strong>man<strong>de</strong> également beaucoup d’ambition et <strong>de</strong> motivation. En effet, le budget requisn’est pas si élevé comparé au développement <strong>de</strong> satellites <strong>de</strong> taille normale etle temps <strong>de</strong> développement est raisonnable.Grâce à ce projet, les étudiants ont la possibilité <strong>de</strong> travailler sur toutes les phases<strong>de</strong> conception d’un satellite, <strong>de</strong> la définition <strong>de</strong> la mission à la communication D-STAR avec le satellite en orbite. Ces satellites n’offrent pas que <strong>de</strong>s opportunitésé<strong>du</strong>catives mais également <strong>de</strong>s opportunités scientifiques. Des scientifiques aurontla possibilité <strong>de</strong> pouvoir effectuer <strong>de</strong>s expériences scientifiques dans l’espace etensuite <strong>de</strong> consulter les données stockées relatives à ces expériences dans la base<strong>de</strong> données <strong>de</strong> mission.Les CubeSats sont généralement lancés comme charges utiles secondaires d’unlanceur. Les lanceurs amènent généralement les CubeSats dans l’orbite terrestrebasse (LEO).Le système <strong>de</strong> déploiement standard est appelé Poly Picosatellite Orbital Deployer(P-POD). Ce système est constitué d’un container avec une porte pouvantcontenir trois CubeSats et un mécanisme <strong>de</strong> ressort (voir figure 2.2). Il assureégalement la communication entre les CubeSats et le lanceur lors <strong>de</strong>s opérationsd’éjection <strong>de</strong>s CubeSats en orbite.La structure <strong>de</strong> chaque CubeSat doit inclure <strong>de</strong>s petit ressorts, appelés separationsprings, à sa base pour s’assurer que les CubeSats seront séparés après leur éjection<strong>du</strong> container.Les CubeSats ne doivent pas être allumés lors <strong>du</strong> décollage pour <strong>de</strong>s raisons <strong>de</strong>sécurité. Par conséquent, un mécanisme a été mis en place afin d’activer l’électro-


CHAPITRE 2. PROJET NANOSATELLITE <strong>OUFTI</strong>-1 6Figure 2.1 – CubeSat typique en orbite (source : AAU CubeSat site web officiel)nique sur chaque CubeSat après son éjection <strong>du</strong> P-POD. Ce mécanisme est réaliséà l’ai<strong>de</strong> <strong>de</strong> <strong>de</strong>ployment switches ou launch switches à la base <strong>de</strong>s CubeSats (Figure2.3). Ces <strong>de</strong>ployment switches sont ouverts électriquement <strong>du</strong>rant le lancement etlors <strong>de</strong> l’éjection, les interrupteurs se ferment, allumant ainsi l’électronique sur leCubeSat venant <strong>de</strong> sortir.L’ESA offre parfois <strong>de</strong>s opportunités <strong>de</strong> places sur un lanceur aux CubeSats etle nanosatellite <strong>OUFTI</strong>-1 a été sélectionné avec huit autres CubeSats pour fairepartie <strong>du</strong> vol inaugural <strong>du</strong> lanceur VEGA.Figure 2.2 – Poly Picosatellite Orbital Deployer (source : [19])2.3 Radioamateur, AX.25 et D-STAR2.3.1 RadioamateurLe radioamateurisme est un passe-temps relatif aux communications radio. Lesradioamateurs sont familiarisés avec les signaux RF (Radio Frequency) et l’électro-


CHAPITRE 2. PROJET NANOSATELLITE <strong>OUFTI</strong>-1 7nique. Le principal objectif <strong>de</strong>s radioamateurs, souvent appelés ham, est d’établirun lien avec d’autres radioamateurs dans le mon<strong>de</strong>. Ils possè<strong>de</strong>nt les équipementsnécessaires pour émettre et recevoir <strong>de</strong>s on<strong>de</strong>s radio. Dans notre cas, il faudraque les radioamateurs possè<strong>de</strong>nt <strong>de</strong>s équipements supportant le D-STAR s’ils souhaitentcommuniquer via le satellite.La communauté <strong>de</strong>s radioamateurs ont <strong>de</strong> l’expérience dans les systèmes <strong>de</strong> communicationanalogique et numérique qui va être profitable pour le projet <strong>OUFTI</strong>-1.2.3.2 Protocole AX.25Le mo<strong>de</strong> <strong>de</strong> communication numérique le plus populaire est le radio packet quiest réalisé à partir <strong>du</strong> protocole AX.25 et <strong>du</strong> Frequency-Shift Keying (FSK). Leprotocole AX.25 a été conçu et développé par la communauté <strong>de</strong>s radioamateursafin <strong>de</strong> fournir un mécanisme fiable <strong>de</strong> transport <strong>de</strong> données entre <strong>de</strong>ux terminaux.Ce protocole est conforme au standard International Standard Organization (ISO)et couvre les <strong>de</strong>ux couches les plus basses <strong>du</strong> modèle Open Systems Interconnection(OSI) c’est-à-dire la couche physique et la couche liaison.Ce protocole est utilisé dans le cadre <strong>de</strong> la mission pour l’envoi <strong>de</strong> télécomman<strong>de</strong>set la réception <strong>de</strong> télémétries.Voir [34] pour plus d’informations sur le protocole AX.25.2.3.3 Protocole D-STARUn autre mo<strong>de</strong> <strong>de</strong> communication numérique, connu sous le nom <strong>de</strong> D-STAR,<strong>de</strong>vient également populaire. Il est basé sur le Gaussian Minimum Shift KeyingFigure 2.3 – Dessin <strong>du</strong> CubeSat avec ses interrupteurs <strong>de</strong> déploiement et lesressorts <strong>de</strong> séparation (source : [19])


CHAPITRE 2. PROJET NANOSATELLITE <strong>OUFTI</strong>-1 8(GSMK) et utilise <strong>de</strong>s co<strong>de</strong>s <strong>de</strong> correction d’erreurs. Le protocole D-STAR est unprotocole packed-based qui couvre les communications sur les ban<strong>de</strong>s radio HF,VHF et UHF et qui définit <strong>de</strong>s interfaces pour les radios, les répéteurs, les interconnexionsInternet (Gateways) et les ordinateurs. Cela permet aux radioamateursd’être connectés à Internet et à différents réseaux.Le protocole D-STAR permet la transmission simultanée <strong>de</strong> données et <strong>de</strong> voix.Deux mo<strong>de</strong>s <strong>de</strong> communications sont définis :• Digital Voice (DV) avec une vitesse <strong>de</strong> 4.8 kbps, données et voix entremêlées,• Digital Data (DD) avec une vitesse <strong>de</strong> 128 kbps, seulement <strong>de</strong>s données.Le schéma simple d’une communication D-STAR est la communication directeentre <strong>de</strong>ux appareils supportant le D-STAR quand les <strong>de</strong>ux opérateurs sont assezproches pour établir un lien RF. Pour <strong>de</strong>s communications <strong>de</strong> longue distance, unrépéteur D-STAR peut être utilisé pour étendre ce lien, à condition que les <strong>de</strong>uxopérateurs soient dans la zone radio couverte par le répéteur. Dans le cadre <strong>de</strong> lamission <strong>OUFTI</strong>-1, le répéteur permettant d’étendre le lien entre <strong>de</strong>ux opérateursest le satellite.Voir [20] pour plus d’informations sur le protocole D-STAR.2.3.4 AvantagesLes opérateurs radio amateur <strong>du</strong> mon<strong>de</strong> entier communiquent <strong>de</strong> plus en plusavec <strong>de</strong>s équipements supportant le protocole D-STAR. Leur expérience venant<strong>de</strong> cette utilisation <strong>du</strong> protocole D-STAR et AX.25 pourra nous être bénéfique,puisque le projet <strong>OUFTI</strong>-1 utilise ces <strong>de</strong>ux protocoles.Leur expérience n’est pas le seul avantage provenant <strong>de</strong>s communautés radioamateurs.En effet, étant donné la répartition <strong>de</strong>s radioamateurs à travers le mon<strong>de</strong>,un tracking constant <strong>de</strong> notre satellite est possible. Il sera envisageable <strong>de</strong> recevoir<strong>de</strong>s nouvelles <strong>du</strong> satellite constamment, même si la station <strong>sol</strong> se trouve hors<strong>de</strong> la zone que le satellite couvre. En contrepartie, les radioamateurs pourront,par exemple, utiliser le satellite comme répéteur D-STAR pour communiquer avecquelqu’un avec qui il n’aurait pas pu communiquer avec <strong>de</strong>s moyens ordinaires.Les communications satellite seront réalisées dans les ban<strong>de</strong>s Very High Frequency(VHF) et Ultra High Frequency (UHF), respectivement 145 MHz et 435MHz en termes <strong>de</strong> fréquence <strong>du</strong> signal, ou 2 m et 70 cm en termes <strong>de</strong> longueurd’on<strong>de</strong> <strong>du</strong> signal.2.4 Objectifs <strong>de</strong> la missionLe principal objectif <strong>du</strong> projet <strong>OUFTI</strong>-1 est é<strong>du</strong>catif. Le but est <strong>de</strong> donner lapossibilité aux étudiants d’acquérir <strong>de</strong> l’expérience sur le terrain et <strong>de</strong> leur donnerl’opportunité <strong>de</strong> travailler, <strong>du</strong> début à la fin ou partiellement, sur une mission


CHAPITRE 2. PROJET NANOSATELLITE <strong>OUFTI</strong>-1 9spatiale réelle. Par conséquent, toutes les tâches possibles doivent être réalisées parles étudiants impliquant donc la conception, les tests, le lancement et la gestiond’un nanosatellite. Tout cela se résulte par le développement complet <strong>du</strong> système<strong>du</strong> nanosatellite et <strong>de</strong> la station <strong>sol</strong>. Lorsque le nanosatellite sera en orbite et qu’ilsera possible <strong>de</strong> communiquer avec à partir <strong>de</strong> la station <strong>sol</strong>, l’objectif principalpourra être considéré comme rempli avec succès.Les objectifs secondaires <strong>de</strong> la mission est d’utiliser le satellite pour tester <strong>de</strong>snouvelles technologies dans l’espace. Voici les objectifs secondaires <strong>du</strong> projet.• Utiliser <strong>OUFTI</strong>-1 comme un répéteur spatial D-STAR.• Tester une alimentation électrique expérimentale.• Tester un nouveau type <strong>de</strong> cellules <strong>sol</strong>aires à ren<strong>de</strong>ment élevé.Le premier objectif permet les communications longue distance entre <strong>de</strong>ux opérateursqui utilisent <strong>de</strong>s équipements supportant le D-STAR et qui se servent <strong>du</strong>satellite comme répéteur.Le second objectif permet <strong>de</strong> tester une alimentation électrique expérimentaledans l’espace. Il est clair que le satellite dispose d’un autre système d’alimentationélectrique. L’alimentation électrique expérimentale ne sera pas toujours active etles données en rapport seront téléchargées au <strong>sol</strong> pour être analysées par les scientifiques.Le <strong>de</strong>rnier objectif permet <strong>de</strong> mettre à épreuve un nouveau type <strong>de</strong> cellules<strong>sol</strong>aires dont le traitement est similaire à l’objectif <strong>de</strong>ux. En effet, plusieurs capteursont été placés sur les cellules <strong>sol</strong>aires dans l’objectif <strong>de</strong> pouvoir analyser leurscomportements dans l’espace.2.5 Opérations spécifiques <strong>de</strong> <strong>OUFTI</strong>-1Cette section présente les quatre communications type entre le satellite et lesopérateurs au <strong>sol</strong>.2.5.1 Canal <strong>de</strong> comman<strong>de</strong>mentIl est nécessaire d’avoir un système <strong>de</strong> communication dédié à la surveillanceet au contrôle <strong>du</strong> satellite. Ce système <strong>de</strong>vra constamment tourner même <strong>du</strong>rantles communications D-STAR. Ce système utilise le protocole AX.25 afin <strong>de</strong> transmettre<strong>de</strong>s télécomman<strong>de</strong>s au satellite et <strong>de</strong> recevoir <strong>de</strong>s télémétries venant <strong>de</strong> ce<strong>de</strong>rnier. Ce canal <strong>de</strong> comman<strong>de</strong> <strong>du</strong> satellite permet <strong>de</strong> s’assurer que le satellitereste toujours sous contrôle <strong>de</strong> la station <strong>sol</strong> et que ce <strong>de</strong>rnier peut <strong>de</strong>man<strong>de</strong>r ausatellite ce qu’il veut <strong>du</strong>rant une passe <strong>du</strong> satellite (une passe <strong>du</strong> satellite est unepério<strong>de</strong> <strong>de</strong> temps <strong>du</strong>rant laquelle la station <strong>sol</strong> peut communiquer avec le satellite).


CHAPITRE 2. PROJET NANOSATELLITE <strong>OUFTI</strong>-1 102.5.2 Canal D-STARL’intégration <strong>du</strong> D-STAR dans le satellite permet aux radioamateurs <strong>de</strong> l’utilisercomme répéteur vers n’importe quel radioamateur, à condition que les <strong>de</strong>ux setrouvent dans la zone couverte par le satellite et qu’ils aient <strong>de</strong>s équipementssupportant le protocole D-STAR. Ce mo<strong>de</strong> D-STAR <strong>du</strong> satellite n’est actif qu’aprèsavoir reçu via le canal <strong>de</strong> comman<strong>de</strong>ment l’ordre d’activer ce mo<strong>de</strong>. Contrairementau canal <strong>de</strong> comman<strong>de</strong>ment, le canal D-STAR n’est pas constamment actif.Un problème lié à ce genre <strong>de</strong> communication est le changement <strong>de</strong> fréquencein<strong>du</strong>it par l’effet Doppler. En effet, l’effet Doppler est présent en raison <strong>de</strong> la vitesserelative <strong>du</strong> satellite par rapport aux opérateurs. Les équipements supportant le D-STAR ne sont pas capables <strong>de</strong> gérer l’effet Doppler. Par conséquent, le problèmesera ré<strong>sol</strong>u à bord afin que le satellite soit accessible à beaucoup <strong>de</strong> personnes.Lors <strong>de</strong>s communications D-STAR, cette correction <strong>de</strong> changement <strong>de</strong> fréquenceest calculée au <strong>sol</strong> et est transmise au satellite afin qu’il compense l’effet Doppleren changeant les fréquences <strong>de</strong> transmission.Cette intégration <strong>du</strong> protocole D-STAR dans le satellite permet d’étendre laportée <strong>de</strong>s communications. Le plus long lien D-STAR qui pourrait être mis enplace est le cas où il y a <strong>de</strong>ux intermédiaires entre <strong>de</strong>ux radioamateurs. Le premierest le satellite <strong>OUFTI</strong>-1 jouant le rôle <strong>de</strong> répéteur et le second est le répéteur(ON0ULG) mis en place à l’Université <strong>de</strong> Liège.2.5.3 MesuresL’opération régulière qu’effectue le satellite est le prélèvement régulier <strong>de</strong> différentesmesures telles que la température d’une face <strong>du</strong> satellite, la tension <strong>de</strong>sbatteries, etc. Il n’est intéressant <strong>de</strong> prendre ces mesures que si l’on peut les stockeren attendant que la station <strong>sol</strong> soit dans la zone couverte par le satellite. C’estla raison pour laquelle l’ordinateur <strong>de</strong> bord est doté d’une capacité <strong>de</strong> stockageadaptée pour la mission. La fréquence <strong>de</strong> prises <strong>de</strong> mesures et d’envoi <strong>de</strong>s donnéesau <strong>sol</strong> sont prédéfinies. Ces prises <strong>de</strong> mesures seront téléchargées à la station <strong>sol</strong>et permettra d’étudier les charges secondaires <strong>du</strong> projet en environnement spatial.Un ensemble <strong>de</strong> listes <strong>de</strong> mesures est défini avant la mission. Ces listes <strong>de</strong> mesuressont chacune différentes et ont un objectif particulier, si bien qu’une liste<strong>de</strong> mesures reprend toutes les mesures propres à l’alimentation expérimentale, uneautre liste reprend les mesures propres à l’ordinateur <strong>de</strong> bord, etc. Chacune <strong>de</strong>ces listes est représentée par un i<strong>de</strong>ntifiant. La définition <strong>de</strong> ces listes <strong>de</strong> mesurespermet le filtrage <strong>de</strong>s données téléchargées <strong>du</strong> satellite. Par exemple, si on est intéresséque par les mesures propres à l’ordinateur <strong>de</strong> bord, on enverra une requêtequi est l’activation d’envoi <strong>de</strong>s valeurs <strong>de</strong>s paramètres apparaissant dans la listeregroupant les paramètres <strong>de</strong> l’ordinateur <strong>de</strong> bord.Toutes les valeurs <strong>de</strong>s paramètres ne sont pas constamment stockées. En effet,celles-ci ne sont stockées et envoyées que si le satellite reçoit l’ordre <strong>de</strong> la station<strong>sol</strong>. Toutefois, une série <strong>de</strong> paramètres sera toujours prise et transmise pour <strong>de</strong>scas d’urgence.


CHAPITRE 2. PROJET NANOSATELLITE <strong>OUFTI</strong>-1 112.5.4 BeaconEn plus <strong>de</strong>s moyens <strong>de</strong> communication décrits ci-<strong>de</strong>ssus, un mo<strong>du</strong>le indépendant,appelé la beacon, se trouve sur le satellite.Ce mo<strong>du</strong>le indépendant est un émetteur qui sera toujours actif et sa seule tâcheest <strong>de</strong> prendre <strong>de</strong>s mesures critiques à bord <strong>du</strong> satellite et <strong>de</strong> les envoyer viaun canal <strong>de</strong> communication basique pouvant être considéré comme un canal <strong>de</strong>secours.Il est important que cette balise soit indépendante <strong>de</strong> tous les autres soussystèmes<strong>du</strong> satellite afin qu’elle ne soit pas affectée par les autres sous-systèmes, si<strong>de</strong>s problèmes surviennent sur le satellite. Ce signal est très utile dans les momentsoù le satellite et ses sous-systèmes sont défectueux. Les mesures spécialement choisiessont reçues par la station au <strong>sol</strong> et ce <strong>de</strong>rnier pourra se servir <strong>de</strong> ces mesurespour déterminer l’origine <strong>du</strong> dysfonctionnement. Une liste <strong>de</strong>s mesures définitivesprises par la beacon n’a pas encore été définie.


Chapitre 3Station <strong>sol</strong>Dans ce chapitre, la station <strong>sol</strong> <strong>du</strong> projet <strong>OUFTI</strong>-1 est décrite généralement.La section 3.1 présente une vue globale <strong>de</strong> la station <strong>sol</strong>. Les sections 3.2 et 3.3décrivent les <strong>de</strong>ux principales parties constituant la station <strong>sol</strong>, le Ground Stationet le Mission Control Center.3.1 Description générale <strong>de</strong> la station <strong>sol</strong>La vue <strong>de</strong> la station <strong>sol</strong> <strong>OUFTI</strong>-1 peut être divisée selon les <strong>de</strong>ux unités suivantes :• le Ground Station (GS), emplacement où se trouve tout le matériel RF avecles antennes ainsi que le système <strong>de</strong> tracking lié à ces antennes.• le Mission Control Center (MCC), emplacement d’où les opérateurs <strong>de</strong> la mission<strong>OUFTI</strong>-1 contrôlent le satellite. Les <strong>logiciel</strong>s faisant partie <strong>du</strong> MCC permettentaux opérateurs <strong>de</strong> surveiller et <strong>de</strong> contrôler le satellite. Par exemple,les opérateurs auront à leur disposition un <strong>logiciel</strong> permettant d’envoyer manuellement<strong>de</strong>s télécomman<strong>de</strong>s au satellite, un <strong>logiciel</strong> permettant <strong>de</strong> visualiserles données reçues <strong>du</strong> satellite, etc.Cette vue est représentée à la figure 3.1. Le travail <strong>de</strong> fin d’étu<strong>de</strong>s porte particulièrementsur la conception et l’implémentation <strong>du</strong> MCC mais une <strong>de</strong>scription <strong>du</strong>GS est quand même écrite afin d’avoir une bonne compréhension et vue globale<strong>de</strong> la station <strong>sol</strong>.3.2 Ground StationLa GS est l’unité en communication directe avec le satellite. Les <strong>de</strong>ux sectionssuivantes portent sur le chemin et le traitement <strong>de</strong>s données passant par la GS.Ces données sont les télécomman<strong>de</strong>s envoyées et les télémétries reçues. Le cheminet le traitement <strong>de</strong>s données peuvent être divisés selon les <strong>de</strong>ux gran<strong>de</strong>s partiesconstituant la GS.12


CHAPITRE 3. STATION SOL 13Figure 3.1 – Vue générale <strong>de</strong> la station <strong>sol</strong>3.2.1 Equipement RFTous les appareils appartenant à cette partie interviennent dans le processus <strong>de</strong>conversion <strong>de</strong>s données en série (télécomman<strong>de</strong>s sous forme numérique) vers unsignal RF (analogue) assez puissant pour être envoyé au satellite et, inversement,d’un signal RF (télémétries) <strong>du</strong> satellite vers <strong>de</strong>s données en série. Cette conversionest effectuée en plusieurs étapes (décrite plus en détails dans [27]).3.2.2 Antennes et système <strong>de</strong> trackingLe signal RF est envoyé et reçu par les antennes. Les antennes doivent pointervers le satellite, la position <strong>de</strong>s antennes est sous la responsabilité <strong>du</strong> système <strong>de</strong>tracking. Le rôle <strong>de</strong> ce <strong>de</strong>rnier est <strong>de</strong> poursuivre le satellite en mouvement <strong>du</strong>rantchaque passe.3.2.3 Architecture <strong>du</strong> GSL’architecture <strong>du</strong> GS est représentée à la figure 3.2. Les éléments sur le schémaont été groupés selon leurs fonctions :• les dispositifs <strong>du</strong> système <strong>de</strong> tracking constitués <strong>de</strong>s rotateurs, <strong>du</strong> contrôleur<strong>de</strong>s rotateurs et <strong>de</strong> la carte <strong>de</strong> tracking sont colorés en rouge ;• les éléments <strong>de</strong> contrôle d’émission et <strong>de</strong> réception, utilisés majoritairementpour ajuster les fréquences afin <strong>de</strong> compenser l’effet Doppler, sont colorés envert ;


CHAPITRE 3. STATION SOL 14Figure 3.2 – Architecture <strong>du</strong> GS (source [8]).• la chaîne complète Receive/Transmit (Rx/Tx), <strong>de</strong>puis les appareils <strong>de</strong> mo<strong>du</strong>lationaux antennes, est représentée en bleu.Le matériel faisant partie <strong>du</strong> GS est détaillé dans le document [8]. Après unebrève présentation <strong>du</strong> matériel <strong>du</strong> GS, voici la liste <strong>de</strong>s <strong>logiciel</strong>s pilotant les élémentsmatériel <strong>du</strong> GS :OrbitronIl est utilisé pour le tracking <strong>du</strong> satellite. Connaissant les positions géographique<strong>de</strong>s antennes et <strong>du</strong> satellite, il envoie <strong>de</strong>s informations à la carte <strong>de</strong>tracking qui va corriger la position vers laquelle les antennes pointent ;


CHAPITRE 3. STATION SOL 15ARSWINIl pilote la carte <strong>de</strong> tracking à partir d’un ordinateur via une ligne parallèle ;WispDDEIl est utilisé pour interconnecter Orbitron avec ARSWIN. Orbitron enverrales informations à propos <strong>de</strong> la position que doit avoir ARSWIN et ce <strong>de</strong>rniercommuniquera ces données à la carte <strong>de</strong> tracking pour contrôler les antennes ;TNC SoftwareCe <strong>logiciel</strong> permet <strong>de</strong> piloter le Terminal No<strong>de</strong> Controller (TNC). Le TNC estun appareil qui se connecte par port USB sur un ordinateur et permet l’envoiet la réception <strong>de</strong> paquets <strong>de</strong> type AX.25. Le TNC Software agit commeun serveur TCP auquel le MCC se connecte pour communiquer toutes lestélécomman<strong>de</strong>s/télémétries (TC/TM).Les <strong>logiciel</strong>s énoncés ci-<strong>de</strong>ssus permettent l’automatisation <strong>du</strong> GS. La majorité<strong>de</strong> ces <strong>logiciel</strong>s sont <strong>de</strong>s <strong>logiciel</strong>s gratuits développés par et pour la communauté<strong>de</strong>s radioamateurs. Tous ces programmes tournent sous Windows XP. Ces <strong>logiciel</strong>spermettent principalement le tracking automatique <strong>du</strong> satellite, la correctionautomatique <strong>de</strong> l’effet Doppler et la communication avec le TNC.Le <strong>logiciel</strong> Orbitron aura également un autre rôle mais indirect avec le MCC.En effet, étant donné qu’il calcule les prévisions <strong>de</strong>s passes <strong>du</strong> satellite, il seraégalement nécessaire d’interagir avec lui afin <strong>de</strong> stocker ces prévisions dans la base<strong>de</strong> données <strong>de</strong> mission. Ces informations sur les prévisions <strong>de</strong>s passes <strong>du</strong> satellitesont nécessaires à l’automatisation <strong>du</strong> MCC.Des captures d’écran <strong>de</strong>s <strong>logiciel</strong>s énoncés ci-<strong>de</strong>ssus sont présentées à la figure 3.3.3.3 Mission Control Center3.3.1 DescriptionLe MCC est l’endroit où les opérateurs communiquent avec le satellite. Les opérationseffectuées lors <strong>de</strong>s communications avec le satellite sont, par exemple, lavérification <strong>de</strong>s paramètres <strong>de</strong> santé <strong>du</strong> satellite, l’activation <strong>de</strong> la fonctionnalitéD-STAR, la transition vers un mo<strong>de</strong> <strong>du</strong> satellite, la réalisation <strong>de</strong> manœuvres,l’activation <strong>de</strong> l’alimentation expérimentale, etc.Le MCC stocke également toutes les données relatives à la mission (toutes les télécomman<strong>de</strong>set les télémétries). Rappelons que le satelite a été développé dans unbut é<strong>du</strong>catif mais également afin <strong>de</strong> pouvoir mener <strong>de</strong>s expériences dans l’espace.En effet, les données relatives aux charges utiles seront traitées par <strong>de</strong>s scientifiquesmais le reste <strong>de</strong>s données sera utilisé par les opérateurs <strong>de</strong> la mission. Parexemple, si l’on souhaite vérifier que l’activation <strong>de</strong> l’alimentation expérimentale aété effectuée avec succès, il suffit <strong>de</strong> consulter les données correspondant au courant<strong>de</strong>s cellules <strong>sol</strong>aires stockées dans la base <strong>de</strong> données <strong>de</strong> mission.


CHAPITRE 3. STATION SOL 16Figure 3.3 – Captures d’écran <strong>de</strong> Orbitron, WispDDE et ARSWIN3.3.2 Contraintes3.3.2.1 Contraintes <strong>de</strong> l’orbitePour les petites missions avec un CubeSat, il est intéressant d’avoir une station<strong>sol</strong> totalement automatisée. Les CubeSats sont presque toujours embarqués sur<strong>de</strong>s dispositifs <strong>de</strong> lancement comme charges secondaires. Par conséquent, ils onttendance à <strong>de</strong>voir s’adapter avec l’orbite choisie pour la charge utile principale<strong>du</strong> dispositif <strong>de</strong> lancement. Dans notre cas, le CubeSat sera situé dans une orbiteterrestre basse excentrique avec les paramètres suivants :• altitu<strong>de</strong> périgée : 354 km ;• altitu<strong>de</strong> apogée : 1447 km ;• inclinaison : 71 ◦ .Avec ces paramètres, la pério<strong>de</strong> orbitale <strong>du</strong> satellite est <strong>de</strong> 103 minutes, ce quiveut dire que le satellite fait approximativement 14 révolutions par jour, comprenant3 à 5 passes au-<strong>de</strong>ssus <strong>de</strong> Liège en moyenne. Des simulations ont été réaliséespour estimer la <strong>du</strong>rée moyenne d’accès <strong>de</strong> la station au <strong>sol</strong> (voir [4]), montrant


CHAPITRE 3. STATION SOL 17que le satellite sera visible en moyenne 47 minutes par jour, chacune <strong>de</strong> ces passesayant une <strong>du</strong>rée moyenne <strong>de</strong> 14,33 minutes. La <strong>du</strong>rée minimale d’une passe est <strong>de</strong>7,42 minutes et la <strong>du</strong>rée maximale est <strong>de</strong> 20,35 minutes. Les <strong>du</strong>rées courtes <strong>de</strong>spasses et leur répartition dans le temps ont pour conséquences :• les décisions lors d’une passe <strong>du</strong> satellite doivent être prises rapi<strong>de</strong>ment afind’échanger le maximum <strong>de</strong> données,• les opérateurs ne peuvent pas être présents à toutes les passes <strong>du</strong> satelliteCes problèmes seraient ré<strong>sol</strong>us par l’automatisation complète <strong>de</strong> la station <strong>sol</strong>.Figure 3.4 – Traces <strong>de</strong> l’orbite <strong>OUFTI</strong>-1 <strong>du</strong>rant 12 heures (source :[12])La courte <strong>du</strong>rée <strong>de</strong>s sessions <strong>de</strong> communication avec le satellite vont influencerfortement la conception <strong>du</strong> MCC et se tra<strong>du</strong>it par le besoin d’un <strong>logiciel</strong> <strong>de</strong>contrôle au <strong>sol</strong> automatisé. Cette automatisation permet d’envoyer et <strong>de</strong> recevoir<strong>de</strong>s données à n’importe quelle heure mais également d’augmenter la quantité d’informationéchangée en éliminant le besoin d’interventions humaine.3.3.2.2 Contraintes <strong>du</strong> satelliteD’autres facteurs sont à prendre compte lors <strong>de</strong> la réalisation <strong>de</strong> la station <strong>sol</strong>comme les contraintes <strong>du</strong> satellite. Les contraintes sur le satellite sont beaucoupplus contraignantes que les contraintes applicables au <strong>sol</strong>. Par exemple, le satellitene dispose pas d’une puissance <strong>de</strong> calcul équivalente à celle au <strong>sol</strong>.Les services supportés par le On-Board Software (OBSW) influenceront égalementla station <strong>sol</strong>, puisque ce <strong>de</strong>rnier <strong>de</strong>vra également les supporter et s’adapterà leurs capacités. Voici une liste <strong>de</strong>s mo<strong>du</strong>les et une <strong>de</strong>scription brève <strong>de</strong> ceux-ci :• Le mo<strong>du</strong>le Measurement est responsable <strong>de</strong> la prise <strong>de</strong>s housekeeping mesureset d’autres mesures sur le satellite.• Le mo<strong>du</strong>le Log s’occupe <strong>du</strong> stockage <strong>de</strong>s données reprises par le mo<strong>du</strong>le Measurement.• Le mo<strong>du</strong>le Sche<strong>du</strong>ler programme <strong>de</strong>s actions à effectuer ultérieurement. Ilest essentiel d’avoir un tel mo<strong>du</strong>le dans le cadre d’une mission comme celled’<strong>OUFTI</strong>-1 où le temps <strong>de</strong> visibilité <strong>du</strong> satellite par jour est faible.


CHAPITRE 3. STATION SOL 18• Le mo<strong>du</strong>le Monitor prend en charge les fonctions critiques à exécuter indépendamment,tels que le changement <strong>de</strong> mo<strong>de</strong>s <strong>de</strong> comportement <strong>du</strong> satellite,l’activation <strong>du</strong> mo<strong>de</strong> D-STAR, etc.• Le mo<strong>du</strong>le Clock représente une référence <strong>de</strong> temps à bord <strong>du</strong> satellite. Cemo<strong>du</strong>le est utilisé comme référence pour exécuter les opérations planifiées.Cette référence <strong>de</strong> temps sera téléchargée à toutes les passes <strong>du</strong> satellite, afinque la station <strong>sol</strong> puisse faire la corrélation entre le temps à bord et le tempssur terre.• Le mo<strong>du</strong>le Beacon Interface donne les ordres à la beacon d’envoyer les donnéescritiques.• Le mo<strong>du</strong>le Communication s’occupe <strong>de</strong>s émetteurs-récepteurs et traite lestrames <strong>de</strong> communication. Il supporte le décodage <strong>de</strong>s trames D-STAR etAX.25.• Le mo<strong>du</strong>le Reprogramming est un mo<strong>du</strong>le optionnel qui n’est pas implémenté.Il permet la reprogrammation <strong>du</strong> OBSW. Par exemple, la station <strong>sol</strong>pourra mettre à jour le OSBW en mettant un fichier dans sa mémoire.3.3.3 Architecture <strong>du</strong> MCCL’architecture <strong>du</strong> MCC doit être conçue en tenant compte <strong>de</strong>s contraintes relativesau satellite, les services qui sont implémentés à bord, etc.Afin <strong>de</strong> répondre au besoin d’un MCC automatisé, <strong>de</strong>ux <strong>logiciel</strong>s sont développés.Le premier est un sche<strong>du</strong>ler dont le rôle est d’exécuter un ensemble d’opérationslors d’une passe <strong>du</strong> satellite. Il connaît toutes les passes à venir <strong>du</strong> satellite etpropose donc à l’utilisateur s’il souhaite exécuter un planning constitué d’un ensembled’opérations lors d’une passe. Le second outil est un outil <strong>de</strong> planificationdont le rôle est <strong>de</strong> permettre à l’utilisateur <strong>de</strong> définir un ensemble d’opérationsreprésentant un planning sous forme <strong>de</strong> fichiers script. La relation entre les <strong>de</strong>uxoutils est que le sche<strong>du</strong>ler exécute un fichier script généré par l’outil <strong>de</strong> planificationlors d’une passe, à condition que l’opérateur ait assigner ce script à une passe<strong>du</strong> satellite par le biais <strong>du</strong> sche<strong>du</strong>ler.Il faut également une alternative à cette communication automatisée avec le satellite.En effet, un outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong>s est développé dont lebut est <strong>de</strong> permettre aux opérateurs, s’ils le souhaitent, d’envoyer <strong>de</strong>s télécomman<strong>de</strong>sau satellite lorsque le sche<strong>du</strong>ler est désactivé ou alors qu’aucun planningn’est associé à une passe.Un élément important <strong>du</strong> MCC est le Mission Control Software (MCS) qui s’occupe<strong>de</strong> la création et l’envoi <strong>de</strong> télécomman<strong>de</strong>s. En effet, les clients envoientune requête au MCS lorsqu’il souhaite envoyer une télécomman<strong>de</strong>. Un autre rôle<strong>du</strong> MCS est le stockage <strong>de</strong>s télécomman<strong>de</strong>s et <strong>de</strong>s télémétries passant en sonpoint dans la base <strong>de</strong> données <strong>de</strong> mission mais également l’extraction <strong>de</strong>s donnéescontenues dans les télémétries. La base <strong>de</strong> données <strong>de</strong> mission contient toutes lesinformations relatives à la mission.


CHAPITRE 3. STATION SOL 19Il est nécessaire <strong>de</strong> développer un outil permettant la visualisation <strong>de</strong>s donnéesdans la base <strong>de</strong> données. Cet outil est appelé Mission Data Viewer (MDV).Le lien entre le MCC et le GS se fait par une connexion entre le MCS et unserveur tournant dans le GS. Les télécomman<strong>de</strong>s et les télémétries sont transmispar ce lien.L’architecture <strong>du</strong> MCC sera développée <strong>de</strong> manière plus approfondie dans lechapitre 5.


Chapitre 4Automatisation <strong>du</strong> MissionControl CenterCe chapitre présente aux sections 4.1 et 4.2 les besoins d’un MCC automatisé,les représentations possibles d’un planning et le raisonnement sur le choix <strong>de</strong> lareprésentation d’un planning. La section 4.3 abor<strong>de</strong> le cadre <strong>de</strong> développement <strong>de</strong>sapplications. Les sections 4.4 et 4.5 présentent les outils développés permettantl’automatisation <strong>du</strong> MCC, leurs responsabilités et leurs fonctionnements.4.1 BesoinsComme mentionné précé<strong>de</strong>mment au point 3.3.2, les contraintes <strong>de</strong> l’orbite <strong>du</strong>satellite ont pour effet que les passes <strong>de</strong> ce <strong>de</strong>rnier soient <strong>de</strong> courte <strong>du</strong>rée. Dans l’objectif<strong>de</strong> maximiser la quantité d’information échangée lors d’une passe <strong>du</strong> satelliteet d’éviter qu’un opérateur ne doive être présent à chaque passe, l’automatisation<strong>du</strong> MCC est nécessaire.4.2 PlanningÉtant donné la courte <strong>du</strong>rée <strong>de</strong>s passes, il est intéressant que les actions qu’onsouhaite exécuter lors d’une passe soient planifiées à l’avance. L’automatisation apour effet l’intro<strong>du</strong>ction <strong>du</strong> concept <strong>de</strong> planning.Un planning est une série d’actions que l’on souhaite exécuter lors d’une passe<strong>du</strong> satellite. Une action représente l’envoi d’une télécomman<strong>de</strong> au satellite. Dansun planning, les actions sont reliées entre elles par <strong>de</strong>s liens. Ces liens relient <strong>de</strong>uxactions et sont constitués <strong>de</strong> conditions <strong>de</strong> transition qui sont vérifiées après l’exécution<strong>de</strong> l’action source d’un lien. L’action <strong>de</strong>stinataire d’un lien sera exécutéeseulement si les conditions <strong>de</strong> transition sont vérifiées et ainsi <strong>de</strong> suite. Il est égalementpossible qu’il y ait plusieurs transitions possible. On considère que la transitionse fera sur le premier lien dont les conditions <strong>de</strong> transition sont respectées. Unplanning peut être une suite d’actions sans aucune condition <strong>de</strong> transition entre20


CHAPITRE 4. AUTOMATISATION DU MISSION CONTROL CENTER 21elles, ou alors un scénario complexe où l’exécution <strong>de</strong> chaque action est conditionnéepar <strong>de</strong>s opérations telles que la vérification <strong>de</strong> l’état d’exécution d’une autreaction, la comparaison <strong>de</strong> la valeur d’une mesure à bord <strong>du</strong> satellite récupérée etstockée dans la base <strong>de</strong> données <strong>de</strong> mission avec une certaine valeur, etc.La figure 4.1 représente un schéma d’un planning <strong>de</strong> façon conceptuelle.Figure 4.1 – Schéma conceptuel d’un planningEn pratique, un planning pourrait être la suite d’opérations suivantes. La premièreaction serait <strong>de</strong> <strong>de</strong>man<strong>de</strong>r au satellite l’envoi <strong>de</strong> mesures dans l’objectif <strong>de</strong>déterminer son état <strong>de</strong> santé. Des conditions <strong>de</strong> transition vers une autre actionpeuvent être la comparaison <strong>de</strong>s valeurs reçues à <strong>de</strong>s seuils. Si les conditions sontvérifiées, l’action suivante sera d’activer l’alimentation électrique expérimentale.Après l’exécution <strong>de</strong> cette action, on peut vérifier si les valeurs <strong>de</strong>s mesures relativesà l’alimentation électrique expérimentale sont normales. Si elles ne le sontpas, une action se chargera <strong>de</strong> désactiver l’alimentation électrique expérimentale.Si elles le sont, on peut laisser le satellite s’alimenter avec l’alimentation électriqueexpérimentale. La transition entre <strong>de</strong>ux actions peut être constituée d’aucunesconditions <strong>de</strong> transition. Ensuite, une action qui peut être exécutée est l’activation<strong>du</strong> mo<strong>de</strong> D-STAR dans l’objectif <strong>de</strong> préparer une communication entre <strong>de</strong>uxradioamateurs. Après la communication D-STAR, une action sera <strong>de</strong> changer lemo<strong>de</strong> <strong>de</strong> comportement <strong>du</strong> satellite avant que celui-ci soit hors <strong>de</strong> portée <strong>de</strong> lastation <strong>sol</strong>.4.2.1 Représentation d’un planningUn problème s’est présenté lors <strong>du</strong> choix <strong>de</strong> la représentation d’un planning. Eneffet, le choix <strong>de</strong> sa représentation aura un impact sur toute l’implémentation <strong>de</strong>soutils intervenant dans l’automatisation <strong>du</strong> MCC, ces outils sont décrits plus tarddans le chapitre.


CHAPITRE 4. AUTOMATISATION DU MISSION CONTROL CENTER 22Deux <strong>sol</strong>utions <strong>de</strong> base ont été considérées. La première <strong>sol</strong>ution consiste à l’utilisationd’un langage <strong>de</strong> script permettant l’automatisation <strong>de</strong> tâches. La secon<strong>de</strong>serait d’utiliser un langage standard permettant facilement le transfert d’information.Il est également préférable que les langages utilisés dans ces <strong>sol</strong>utions soientfortement utilisés pour la portabilité, l’apprentissage <strong>du</strong> langage par les opérateurs,la documentation et les outils à disposition pour travailler avec.Un planning à exécuter lors d’une passe peut être représenté par :• Un script Python ;• Un fichier eXtensible Markup Language (XML).Comme mentionné ci-<strong>de</strong>ssus, un planning peut être un scénario complexe d’opérationsà effectuer. C’est pourquoi il est intéressant d’analyser ces <strong>de</strong>ux <strong>sol</strong>utionsafin <strong>de</strong> déterminer celle qui permettra <strong>de</strong> définir les plannings les plus flexiblestout en essayant <strong>de</strong> gar<strong>de</strong>r un aspect “user-friendly”. Malheureusement ces <strong>de</strong>uxcaractéristiques sont généralement concurrentes, il faut choisir ou adapter une <strong>de</strong>s<strong>de</strong>ux <strong>sol</strong>utions afin qu’elle soit un compromis entre ces <strong>de</strong>ux caractéristiques. Dansles sections suivantes, une analyse <strong>de</strong>s <strong>de</strong>ux représentations d’un planning va êtreprésentée. Cette analyse regroupera les avantages et les inconvénients <strong>de</strong>s <strong>sol</strong>utions.4.2.1.1 Script PythonLa première <strong>sol</strong>ution serait qu’un planning soit défini par un script Python. Lelangage Python est un langage <strong>de</strong> programmation interprété <strong>de</strong> plus en plus utilisé,il est même utilisé comme langage d’apprentissage à la programmation à l’Université<strong>de</strong> Liège. Il peut être utilisé comme un langage <strong>de</strong> script afin d’automatiser<strong>de</strong>s tâches.Avantages. L’avantage d’utiliser un planning représenté par un script Pythonest qu’elle permet une flexibilité considérable aux niveaux <strong>de</strong>s actions d’un planninget <strong>de</strong>s transitions entre ces actions. Typiquement, une action d’un planningreprésente l’envoi d’une télécomman<strong>de</strong> et une transition, un ensemble <strong>de</strong> conditionsà vérifier afin <strong>de</strong> pouvoir transiter vers une nouvelle action. Dans le cas <strong>de</strong>la <strong>sol</strong>ution envisagée ici, l’utilisateur aurait la possibilité <strong>de</strong> définir <strong>de</strong>s scénarioscomplexes incluant <strong>de</strong>s conditions complexes pour le déclenchement d’une certaineaction telle que le nombre d’essais <strong>de</strong> l’envoi d’une télécomman<strong>de</strong> avant <strong>de</strong> passerà une autre action, la comparaison <strong>de</strong> la valeur d’une mesure par rapport à uncertain seuil, etc.Un autre avantage est que l’utilisation <strong>de</strong> cette <strong>sol</strong>ution rendra l’implémentation<strong>du</strong> sche<strong>du</strong>ler simple. Le sche<strong>du</strong>ler est l’élément essentiel à l’automatisation <strong>du</strong>MCC. Son rôle est d’exécuter les plannings définis par les opérateurs aux passes <strong>du</strong>satellite. Puisque les opérations complexes et la logique d’exécution <strong>du</strong> planningsont contenues dans le script, la tâche principale <strong>du</strong> sche<strong>du</strong>ler sera « juste » <strong>de</strong>lancer ces scripts aux bons moments. Des interfaces jouant le rôle <strong>de</strong> librairies


CHAPITRE 4. AUTOMATISATION DU MISSION CONTROL CENTER 23pour les scripts Python sont définies selon les télécomman<strong>de</strong>s et les télémétriesque les opérateurs peuvent envoyer ou recevoir.Inconvénients. En contrepartie, les utilisateurs <strong>de</strong>vront écrire un fichier scripten Python et donc avoir une connaissance <strong>du</strong> langage Python. La flexibilité dansla conception <strong>de</strong>s plannings a pour effet <strong>de</strong> rendre le système moins “user-friendly”.Un autre inconvénient est qu’une telle flexibilité lors <strong>de</strong> la conception <strong>de</strong> planningspeut ne pas être nécessaire. En effet, les courtes <strong>du</strong>rées <strong>de</strong>s passes ne permettentpeut-être pas aux opérateurs d’élaborer <strong>de</strong>s scénarios complexes. Ces scénariosseront fortement similaires commençant par l’essai d’établir le contact avecle satellite et le téléchargement <strong>de</strong> certaines mesures <strong>du</strong> satellite afin <strong>de</strong> vérifierl’état <strong>du</strong> satellite. Ces étapes indispensables ré<strong>du</strong>isent le temps <strong>de</strong> communicationavec le satellite et donc diminuent le nombre d’actions possibles pour les opérateurs.Toutefois, le facteur “user-friendly” peut être atténuer en proposant <strong>de</strong>s modèles<strong>de</strong> planning à l’utilisateur afin <strong>de</strong> favoriser l’adaptation à cette <strong>sol</strong>ution.Une autre <strong>sol</strong>ution pour que la <strong>sol</strong>ution n’ait plus le défaut <strong>de</strong> ne pas fournir unaspect “user-friendly” est <strong>de</strong> développer un outil <strong>de</strong> planification. Cet outil proposeraà l’utilisateur <strong>de</strong> définir le planning qu’il souhaite. L’aspect “user-friendly”sera garanti par la possibilité <strong>de</strong> pouvoir visualiser le planning défini sous forme <strong>de</strong>graphe. L’utilisateur n’aura également pas besoin <strong>de</strong> connaître le langage Pythoncar l’outil <strong>de</strong> planification générera le co<strong>de</strong> Python à partir <strong>du</strong> planning conçu parl’utilisateur via ce <strong>logiciel</strong>.Il est toujours préférable d’avoir la possibilité <strong>de</strong> concevoir <strong>de</strong>s plannings complexes,même si cela s’avère peut-être pas nécessaire. Cette <strong>sol</strong>ution pourra êtreapplicable à un autre satellite dont les <strong>du</strong>rées <strong>de</strong>s passes sont plus longues.4.2.1.2 Fichier XMLLa secon<strong>de</strong> <strong>sol</strong>ution serait d’utiliser un fichier XML afin <strong>de</strong> représenter un planning.Pourquoi un fichier XML ? Le langage XML est un langage informatique <strong>de</strong>structuration générique <strong>de</strong>s données à l’ai<strong>de</strong> <strong>de</strong> balises. Le langage est typiquementutilisé pour stocker <strong>de</strong>s données dans une structure d’arbre. C’est un langagefortement utilisé dans le mon<strong>de</strong> et donc nous a semblé être une <strong>sol</strong>ution à envisager.Les actions et les conditions <strong>de</strong> transitions d’un planning seraient encodées dansle fichier XML pour être traitées dans le sche<strong>du</strong>ler qui s’occupera <strong>de</strong> l’exécution<strong>du</strong> planning.Avantages. Un avantage est que le langage XML est un standard fortementutilisé. Les données dans un fichier XML, structurés en champs arborescents, permettentplus facilement la visualisation <strong>du</strong> planning et l’exécution d’un planningpourrait se résumer au parcours d’un arbre <strong>de</strong> la racine vers une feuille. Les outilspermettant <strong>de</strong> traiter ce genre <strong>de</strong> fichiers ne manquent pas, tels que JDom,Dom4j, JAXP, Xerces-C++, etc. Les fichiers XML pourraient être également gé-


CHAPITRE 4. AUTOMATISATION DU MISSION CONTROL CENTER 24nérés à partir d’un outil <strong>de</strong> planification proposant une interface graphique afin <strong>de</strong>rendre le système “user-friendly”.Inconvénients. Le développement <strong>du</strong> sche<strong>du</strong>ler sera moins simple par rapportà la <strong>sol</strong>ution où un planning est représenté par un script Python. En effet, lorsd’une passe <strong>du</strong> satellite, le sche<strong>du</strong>ler <strong>de</strong>vra analyser le fichier XML et exécuter lesactions. Par conséquent, les actions et les conditions <strong>de</strong> transition d’un planningseront limitées à ce qui a été fixé à la conception <strong>du</strong> sche<strong>du</strong>ler. Par exemple, siun opérateur souhaite définir une condition <strong>de</strong> transition qui n’a pas été pris encompte lors <strong>de</strong> la conception, il n’y aura aucun moyen <strong>de</strong> supporter cette condition<strong>de</strong> transition, à moins d’aller modifier le programme. Tandis que dans le cas <strong>du</strong>script Python, c’est le script Python qui se charge <strong>de</strong> d’exécuter cette condition<strong>de</strong> transition et non le sche<strong>du</strong>ler qui n’a pas besoin <strong>de</strong> connaître l’ensemble <strong>de</strong>sconditions <strong>de</strong> transition qui peuvent être effectuées.La condition d’utilisation <strong>de</strong> cette <strong>sol</strong>ution est d’avoir une liste exhaustive <strong>de</strong>sactions et <strong>de</strong>s conditions <strong>de</strong> transition qui pourraient être planifiées lors d’unepasse <strong>du</strong> satellite.Solution hybri<strong>de</strong>. Une autre <strong>sol</strong>ution qu’on aurait pu considérer est celle utiliséepar l’équipe SwissCube <strong>de</strong> l’École Polytechnique Fédérale <strong>de</strong> Lausanne.Dans cette <strong>sol</strong>ution, un planning est représenté par un fichier XML. Une actionest un script Python qui utilise l’ensemble <strong>de</strong>s télécomman<strong>de</strong>s mises à dispositionpar le MCS et accè<strong>de</strong> au contenu d’une télémétrie en temps réel afin <strong>de</strong> connaîtrel’état d’exécution <strong>de</strong> la télécomman<strong>de</strong> envoyée. L’exécution d’une action peut êtreun succès ou un échec. Deux autres actions sont liées aux résultats <strong>de</strong> l’exécutiond’une action. La logique d’exécution <strong>de</strong>rrière les scénarios <strong>de</strong> l’équipe SwissCubeest simple et léger. Un schéma d’un planning où les actions sont conditionnées parun succès ou un échec est représenté à la figure 4.2.Un exemple d’action typique dans un <strong>de</strong> leurs plannings est la récupération <strong>de</strong>sparamètres <strong>de</strong> santé <strong>du</strong> satellite qui se tra<strong>du</strong>it par l’envoi <strong>de</strong> télécomman<strong>de</strong>s pouractiver la récupération <strong>de</strong> ces paramètres. Cette action est un succès si les valeursont bien été reçues et stockées dans la base <strong>de</strong> données et est un échec si aucunevaleur n’a été reçue. L’action pouvant suivre dans le cas d’un succès peut êtrel’activation <strong>du</strong> mo<strong>de</strong> D-STAR et dans le cas d’un échec, une nouvelle exécutionsupplémentaire <strong>de</strong> l’action.La <strong>sol</strong>ution est une <strong>sol</strong>ution hybri<strong>de</strong> basée sur les <strong>de</strong>ux <strong>sol</strong>utions décrites ci<strong>de</strong>ssus.Elle ne nous a pas semblé appropriée parce que la logique d’exécutiond’un planning doit être gérée par le sche<strong>du</strong>ler, ce qui rend son implémentationfastidieuse et il faut également avoir pris en compte tous les cas possibles lors <strong>de</strong>son développement. Les scripts contenant <strong>de</strong>s actions seraient également courts,étant donné qu’il contiendrait juste <strong>de</strong>s opérations d’accès à <strong>de</strong>s télémétries etd’envois <strong>de</strong> télécomman<strong>de</strong>s.


CHAPITRE 4. AUTOMATISATION DU MISSION CONTROL CENTER 25Figure 4.2 – Schéma planning <strong>de</strong> l’équipe SwissCube4.2.1.3 Choix représentation d’un planningL’analyse <strong>de</strong>s <strong>sol</strong>utions pèse le pour et le contre <strong>de</strong> chaque <strong>sol</strong>ution et sert <strong>de</strong>base au choix <strong>de</strong> la <strong>sol</strong>ution utilisée au final.Rappelons que l’objectif est <strong>de</strong> trouver un compromis entre la flexibilité <strong>de</strong>splannings et l’aspect “user-friendly”, cet objectif pointe vers la <strong>sol</strong>ution où lesplannings seraient représentés par <strong>de</strong>s scripts Python.La <strong>sol</strong>ution permet une gran<strong>de</strong> flexibilité dans la conception <strong>de</strong> plannings etfacilite le rôle <strong>du</strong> sche<strong>du</strong>ler. L’aspect “user-friendly” serait atteint, comme mentionnédans la section 4.2.1.1, à l’ai<strong>de</strong> d’un outil <strong>de</strong> planification qui générerait <strong>de</strong>sscripts Python et fournirait une interface graphique à l’utilisateur pour la création<strong>de</strong> plannings. La <strong>sol</strong>ution d’utiliser un script Python pour représenter un planningremplit les <strong>de</strong>ux caractéristiques tandis que l’utilisation d’un fichier XML ne lesremplirait pas. L’utilisation <strong>de</strong> fichier XML ne permettrait un tel <strong>de</strong>gré <strong>de</strong> liberté,comparé aux scripts Python.Avec la <strong>sol</strong>ution choisie et à l’ai<strong>de</strong> d’un outil <strong>de</strong> planification, les utilisateursconnaissant ou non le langage Python pourront construire <strong>de</strong>s plannings qui pourrontêtre exécutés lors <strong>de</strong>s passes <strong>du</strong> satellite.La différence est que les utilisateurs connaissant le Python pourront créer <strong>de</strong>splannings d’un niveau <strong>de</strong> complexité plus élevé que ceux utilisant l’outil <strong>de</strong> planification.En effet, ces <strong>de</strong>rniers seront limités aux actions proposées par le <strong>logiciel</strong>.Toutefois, rien n’empêche d’intégrer petit à petit les actions qui ont été oubliéesdans l’outil <strong>de</strong> planification.Il sera également possible <strong>de</strong> sauvegar<strong>de</strong>r et <strong>de</strong> réouvrir <strong>de</strong>s anciens plannings.Si un planning a été écrit par un utilisateur, le <strong>logiciel</strong> sera dans l’incapacité <strong>de</strong>reconstruire le graphe représentant le planning. Les scripts Python générés par le<strong>logiciel</strong> contiendront <strong>de</strong>s « patterns »permettant au <strong>logiciel</strong> lors l’ouverture d’unplanning généré <strong>de</strong> reconstruire l’instance <strong>du</strong> planning correspondant et donc <strong>de</strong>générer le graphe <strong>du</strong> planning.Un script Python généré pourrait également être utilisé par un utilisateur quisouhaite ajouter quelques actions en plus dans le script. Dans ce cas-là, si onsouhaite charger ce fichier, l’outil <strong>de</strong> planification générera le graphe représentant


CHAPITRE 4. AUTOMATISATION DU MISSION CONTROL CENTER 26le planning à partir <strong>de</strong>s informations qu’il a su extraire et mentionnera les lignes<strong>de</strong> co<strong>de</strong> que l’utilisateur a intro<strong>du</strong>it et dont il n’a pas été possible <strong>de</strong> traiter.Les plannings auraient pu être sauvegardés sous forme d’objets “serialisés” cependantl’ajout d’actions supplémentaires dans un planning généré aurait été impossible.4.3 Langage <strong>de</strong> développementLes <strong>logiciel</strong>s faisant partie <strong>du</strong> MCC sont développés dans le langage <strong>de</strong> programmationJava, utilisant les Application Programming Interface (API) telles queJava DataBase Connectivity (JDBC), Java Remote Method Invocation (RMI),etc. Une <strong>de</strong>s raisons <strong>de</strong> l’utilisation <strong>de</strong> ce langage est également <strong>du</strong>e au fait quecertains mo<strong>du</strong>les développés l’année passée ont été réalisés en Java. Les interfacesgraphiques <strong>de</strong>s applications développés ont été réalisées avec l’environnement <strong>de</strong>développement intégré NetBeans 6.8 et <strong>de</strong> la librairie graphique Swing.4.4 Sche<strong>du</strong>lerLa section précé<strong>de</strong>nte 4.2 a montré la nécessite d’avoir un planning pour l’automatisation.Cependant, il a été mentionné plusieurs fois l’outil sche<strong>du</strong>ler sansdécrire vraiment à quoi il sert. Le sche<strong>du</strong>ler est un un <strong>logiciel</strong> qui sert à exécuter<strong>de</strong>s plannings lors <strong>de</strong>s passes <strong>du</strong> satellite. Dans la section 4.4.1, le sche<strong>du</strong>ler seradécrit complètement ainsi que les détails <strong>de</strong> son implémentation.4.4.1 DescriptionLorsqu’un opérateur souhaite exécuter un planning lors d’une passe <strong>du</strong> satellite,il faut qu’il y ait un mo<strong>du</strong>le qui s’occupe <strong>de</strong> lancer un planning lorsque le contactpeut être établi avec le satellite. Ce mo<strong>du</strong>le porte le nom <strong>de</strong> sche<strong>du</strong>ler.Cet outil a connaissance <strong>de</strong> toutes les passes à venir <strong>du</strong> satellite grâce aux calculs<strong>du</strong> programme Orbitron décrit à la section 3.2.3. Le programme Orbitron peutpro<strong>du</strong>ire un fichier texte contenant <strong>de</strong>s informations sur les prévisions <strong>de</strong>s passes<strong>du</strong> satellite, telles que l’Acquisition of Signal (AoS), le Loss of Signal (LoS), ladistance <strong>du</strong> satellite, l’élévation <strong>du</strong> satellite, etc. Ce fichier sera analysé et lesdonnées extraites relatives aux passes <strong>du</strong> satellite seront stockées dans la base <strong>de</strong>données <strong>de</strong> mission.Le sche<strong>du</strong>ler est un programme qui fonctionnera en permanence en arrière-plan ;ce type <strong>de</strong> programme est appelé daemon ou démon. Son rôle principal est <strong>de</strong> lancerles scripts représentant les plannings d’actions que l’utilisateur souhaite exécuterlors <strong>de</strong>s passes <strong>du</strong> satellite.L’utilisateur a à sa disposition une interface graphique pour interagir avec ledémon. Cette interface graphique affiche à l’utilisateur l’ensemble <strong>de</strong>s passes àvenir et ceux qui sont déjà effectuées.


CHAPITRE 4. AUTOMATISATION DU MISSION CONTROL CENTER 27Le programme propose à l’utilisateur les actions suivantes :• Assigner un planning à exécuter à une certaine passe ;• Consulter un rapport d’exécution d’un planning d’une ancienne passe ;• Rafraîchir les <strong>de</strong>ux listes, celle <strong>de</strong>s passes à venir et celle <strong>de</strong>s anciennes passes.Le <strong>logiciel</strong> affichera à l’utilisateur les passes à venir dans une limite raisonnableet rafraîchira la liste <strong>de</strong>s passes à venir au fil <strong>du</strong> temps.Si aucun script Python n’est associé à une passe, aucune opération est effectuée.Dans le cas où aucun planning n’est associé une passe, cela peut vouloir dire quel’utilisateur souhaite envoyer les télécomman<strong>de</strong>s manuellement. L’utilisateur peutégalement couper le sche<strong>du</strong>ler et le redémarrer ensuite s’il le souhaite.La fonctionnalité <strong>de</strong> pouvoir consulter un rapport d’exécution d’un planning associéà une ancienne passe permet à l’utilisateur <strong>de</strong> connaître le chemin d’exécutionque le planning a effectué.Par défaut, le rafraîchissement <strong>de</strong>s tables contenant les passes se font à intervallesréguliers mais l’option <strong>de</strong> rafraîchissement manuel est également proposée.4.4.2 ImplémentationL’implémentation <strong>du</strong> sche<strong>du</strong>ler est basée partiellement sur <strong>de</strong>ux classes <strong>de</strong> l’ApplicationProgramming Interface (API) Java, les classes Timer et TimerTask.La classe Timer permet aux threads <strong>de</strong> planifier <strong>de</strong>s tâches à exécuter ultérieurement.Elle permet la planification <strong>de</strong> tâches à exécution à intervalles réguliers ouà exécution unique. L’instance <strong>de</strong> Timer est un thread tournant en arrière-plan quiattend d’avoir <strong>de</strong>s tâches à exécuter et exécute ces tâches aux heures spécifiées lors<strong>de</strong> leurs insertions. Les tâches sont exécutées <strong>de</strong> manière séquentielle. Donc, si lestâches se chevauchent, alors la secon<strong>de</strong> tâche ne sera pas exécutée tant que la premièren’a pas fini son exécution. Cela ne posera sans doute pas <strong>de</strong> problèmes dansle cadre <strong>de</strong> la mission <strong>OUFTI</strong>-1, vu que l’espace entre <strong>de</strong>ux passes successives estassez important. Mais il est également possible également d’insérer un mécanismequi s’occupera <strong>de</strong> couper une tâche planifiée en cours d’exécution afin que la tâcheplanifié suivante ne soit pas en retard sur son exécution. Le thread <strong>de</strong> l’instanceTimer peut être configuré pour tourner en tant que démon. Celui-ci ne se couperapas tant que le processus principal tourne. Cette classe correspond parfaitement àce qu’on désire effectuer dans le cas <strong>du</strong> développement <strong>du</strong> sche<strong>du</strong>ler.La classe TimerTask permet <strong>de</strong> créer <strong>de</strong>s objets représentant <strong>de</strong>s tâches quiseront exécutées une fois ou à plusieurs reprises. Les instances <strong>de</strong> cette classe sontassociées à une instance <strong>de</strong> Timer. L’instance Timer se chargera <strong>de</strong> lancer les objetsTimerTask à la date spécifiée lors <strong>de</strong> leurs insertions.


CHAPITRE 4. AUTOMATISATION DU MISSION CONTROL CENTER 284.4.2.1 FonctionnementDans cette section, les principales opérations <strong>du</strong> sche<strong>du</strong>ler sont présentées sousforme <strong>de</strong> diagramme (figure 4.3). Le diagramme ne montre que la partie autonome<strong>du</strong> sche<strong>du</strong>ler et non la partie interaction avec l’utilisateur.Figure 4.3 – Flowchart <strong>du</strong> sche<strong>du</strong>lerLe fonctionnement <strong>du</strong> sche<strong>du</strong>ler avec l’utilisateur est le suivant. L’utilisateurpeut, à partir <strong>de</strong> l’interface graphique, associer un planning à exécuter lors d’unepasse <strong>du</strong> satellite. Lorsqu’un planning a été associé à une passe <strong>du</strong> satellite, leprogramme ajoute une tâche à effectuer à l’heure correspondante <strong>de</strong> la passe venantjuste d’être associée avec un planning dans l’instance Timer. Le thread <strong>de</strong> l’instanceTimer se chargera d’exécuter la tâche à l’heure donnée. La tâche lancera le scriptPython spécifié contenant le scénario d’actions défini par l’utilisateur. Les tâchesqui sont ajoutées à l’instance Timer sont la plupart similaires, à l’exception prèsque leurs dates d’exécution diffèrent. Rien n’empêche d’exécuter le même scriptplusieurs fois, surtout que la majorité <strong>de</strong>s scripts auront une partie commune quiest d’établir le contact et la vérification <strong>de</strong>s paramètres <strong>de</strong> santé <strong>du</strong> satellite.Les tableaux contenant les anciennes passes et à venir sont rafraichis à intervallesréguliers (constante définie dans le programme). Le nombre maximum <strong>de</strong> passesaffichées par le programme et le nombre maximal <strong>de</strong> tâches ajoutées dans la file<strong>de</strong> tâches à exécuter <strong>de</strong> l’instance Timer sont également <strong>de</strong>s constantes au sein <strong>du</strong>programme.


CHAPITRE 4. AUTOMATISATION DU MISSION CONTROL CENTER 294.4.2.2 Interface graphiqueUne capture d’écran <strong>de</strong> l’interface graphique développée pour le sche<strong>du</strong>ler estprésentée à la figure 4.4. L’interface graphique est constituée principalement <strong>de</strong><strong>de</strong>ux onglets. Chacun <strong>de</strong>s onglets affiche une table : un affiche la table <strong>de</strong>s passes àvenir et l’autre, la table <strong>de</strong>s anciennes passes. Aucun bouton visuel n’a été intégréà l’interface, tout passe par <strong>de</strong>s clics droits sur les éléments <strong>de</strong>s tableaux. Lapossibilité <strong>de</strong> voir le chemin d’exécution d’un planning n’est disponible que pourles anciennes passes.Figure 4.4 – Capture d’écran <strong>du</strong> sche<strong>du</strong>ler4.4.3 TestÉtant donné la faible complexité et le faible nombre <strong>de</strong> fonctionnalités <strong>du</strong> sche<strong>du</strong>ler,les tests ont été rapi<strong>de</strong>s. Les tests réalisés sur l’outil, tant au niveau interfacegraphique que fonctionnement, ont été réalisés avec succès. Le programme a ététesté avec <strong>de</strong>s milliers <strong>de</strong> tâches à exécuter pendant une journée entière. Ce test permetégalement <strong>de</strong> vérifier si la mémoire consommée par le programme n’augmentepas indéfiniment jusqu’à atteindre la mémoire maximale <strong>de</strong> la machine virtuelleJava. Ce type <strong>de</strong> test est essentiel pour ce genre <strong>de</strong> <strong>logiciel</strong>s car il <strong>de</strong>vra sûrementfonctionner constamment lors <strong>de</strong> la mission <strong>OUFTI</strong>-1. Au départ, les tâches planifiéesétaient <strong>de</strong>s écritures <strong>de</strong> fichiers. Après développement <strong>de</strong>s plannings sousforme <strong>de</strong> scripts Python, les tâches planifiées consistaient en l’exécution <strong>de</strong>s fichiersscript.


CHAPITRE 4. AUTOMATISATION DU MISSION CONTROL CENTER 30Un exemple <strong>de</strong> test consistait à assigner <strong>de</strong>s scripts Python à <strong>de</strong>s passes <strong>du</strong>satellite espacées <strong>de</strong> 10 secon<strong>de</strong>s. Après assignation <strong>de</strong> plannings à <strong>de</strong>s passes, onvérifiait que le sche<strong>du</strong>ler exécutait bien les scripts Python aux heures <strong>de</strong>s passesassociées à <strong>de</strong>s scripts.Un autre type <strong>de</strong> test a été également effectué afin <strong>de</strong> tester les accès aux informationssur les prévisions <strong>de</strong>s passes <strong>du</strong> satellite générées par Orbitron dans labase <strong>de</strong> données <strong>de</strong> mission. Ces tests consistaient à aller chercher les informationssur les passes <strong>du</strong> satellite dans la base <strong>de</strong> données et <strong>de</strong> remplir les tableaux <strong>de</strong>spasses à venir qui sont affichées aux opérateurs. La base <strong>de</strong> données <strong>de</strong> mission estdécrite au chapitre 6.4.5 Outil <strong>de</strong> planificationDans cette section, l’outil <strong>de</strong> planification, mentionné dans la section 4.2, estdécrit plus en détails, c’est-à-dire les fonctionnalités <strong>de</strong> ce <strong>de</strong>rnier, ses différentsmo<strong>du</strong>les et son implémentation. Le rôle <strong>de</strong> l’outil <strong>de</strong> planification est la génération<strong>de</strong> scripts Python représentant <strong>de</strong>s plannings définis par un opérateur.4.5.1 DescriptionL’outil <strong>de</strong> planification permet la génération <strong>de</strong> scripts Python. Ces scripts représentent<strong>de</strong>s planning contenant <strong>de</strong>s scénarios d’actions à exécuter. L’utilisateurn’aura plus qu’à utiliser le sche<strong>du</strong>ler pour assigner le script qu’il vient <strong>de</strong> générer àune ou plusieurs passes <strong>du</strong> satellite. Grâce à ces outils, la présence <strong>de</strong>s opérateursà toutes les passes <strong>du</strong> satellite n’est plus nécessaire et la quantité d’informationéchangée est maximale.Cet outil est constitué d’une interface graphique permettant <strong>de</strong> respecter l’aspect“user-friendly” lors <strong>de</strong> la construction d’un planning. En effet, l’utilisateur pourraafficher s’il le souhaite le graphe représentant le planning qu’il est en train <strong>de</strong>construire.L’outil <strong>de</strong> planification est également utile pour les personnes ne connaissantpas le langage en Python ou alors qui n’ont pas envie <strong>de</strong> l’apprendre. Par contre,comme mentionné à la section 4.2, les scripts Python générés sont <strong>de</strong> complexitélimitée. Toutefois, il est tout à fait possible d’écrire son propre script permettantainsi une gran<strong>de</strong> flexibilité dans la logique d’exécution <strong>de</strong>s actions d’un planning. Ilest également possible <strong>de</strong> compléter un script généré par <strong>de</strong>s lignes <strong>de</strong> co<strong>de</strong> propresà l’utilisateur. Cependant, il faut que l’utilisateur, avant d’écrire le script, prenneconnaissance <strong>de</strong>s fonctions disponibles pour communiquer avec le satellite.L’outil <strong>de</strong> planification n’est pas un processus tournant en arrière-plan. On ledémarre que lorsqu’on a besoin <strong>de</strong> créer un planning.L’utilisation typique est la suivante :1. L’utilisateur lance l’outil <strong>de</strong> planification,2. Il construit un planning,


CHAPITRE 4. AUTOMATISATION DU MISSION CONTROL CENTER 313. Ensuite, il <strong>de</strong>man<strong>de</strong> au <strong>logiciel</strong> <strong>de</strong> générer le script Python correspondant auplanning défini,4. Finalement, il ouvre le sche<strong>du</strong>ler et assigne le script Python à une ou plusieurspasses <strong>du</strong> satellite.Il est intéressant également <strong>de</strong> faire remarquer qu’il est possible <strong>de</strong> faire <strong>de</strong>s modèles<strong>de</strong> base pour les plannings car certaines opérations seront toujours exécutéeslors d’une passe <strong>du</strong> satellite (par exemple, la vérification <strong>de</strong>s paramètres <strong>de</strong> santé<strong>du</strong> satellite, etc.). Par exemple, on pourrait construire un planning <strong>de</strong> base reprenantles opérations qui sont exécutées à toutes les passes <strong>du</strong> satellite. À partir <strong>de</strong> cemodèle <strong>de</strong> base, l’utilisateur ajouterait les actions supplémentaires qu’il souhaiteeffectuer ; ainsi, il ne perdrait pas son temps à redéfinir ces actions répétitives.Il sera également possible <strong>de</strong> catégoriser les différents types <strong>de</strong> plannings selonles scénarios d’actions. Par exemple, un groupe pourrait reprendre les planningsdont le but est l’activation <strong>du</strong> mo<strong>de</strong> D-STAR, un autre serait l’activation <strong>de</strong> l’alimentationexpérimentale et l’analyse <strong>de</strong>s paramètres relatives à cette alimentation,etc.4.5.2 Les mo<strong>du</strong>les <strong>de</strong> l’outil planificationL’outil <strong>de</strong> planification peut être décomposé en cinq différents mo<strong>du</strong>les <strong>de</strong> façonconceptuel. Les cinq mo<strong>du</strong>les sont les suivants :• Planning,• Générateur <strong>de</strong> co<strong>de</strong>,• Parser,• Afficheur <strong>de</strong> plannings,• Interface graphique.Ces mo<strong>du</strong>les faisant partie <strong>de</strong> l’outil <strong>de</strong> planification sont décrits dans les sectionssuivantes.4.5.3 Mo<strong>du</strong>le planningCe mo<strong>du</strong>le représente le projet <strong>de</strong> planning en cours, c’est-à-dire le planning surlequel l’utilisateur est en train <strong>de</strong> travailler en utilisant l’outil <strong>de</strong> planification.Un planning est constitué d’un ensemble d’actions et <strong>de</strong> transitions entre cesactions.Les actions sont les télécomman<strong>de</strong>s possibles qui peuvent être envoyées par lastation <strong>sol</strong>. Les différentes télécomman<strong>de</strong>s que la station <strong>sol</strong> peut envoyer au satellitesont décrites à la section 7.2. Les opérateurs <strong>de</strong>vront bien connaître lesdifférentes télécomman<strong>de</strong>s et télémétries afin <strong>de</strong> pouvoir interagir avec le satellite.


CHAPITRE 4. AUTOMATISATION DU MISSION CONTROL CENTER 32En effet, l’ajout d’une action peut se résumer à la complétion <strong>de</strong>s différents champs<strong>du</strong> paquet dans la télécomman<strong>de</strong>.Les transitions entre les actions peuvent être représentées sous la forme <strong>de</strong> liens.Un lien entre <strong>de</strong>ux actions peut être accompagné d’un ensemble <strong>de</strong> conditions àrespecter pour pouvoir passer <strong>de</strong> l’action source à l’action <strong>de</strong>stination. Un planningpeut être vu comme un graphe. Les cycles dans un planning sont autorisés. Unlien entre <strong>de</strong>ux actions peut être dépourvu <strong>de</strong> conditions <strong>de</strong> transition. Deux liensdans le même sens reliant les mêmes actions sont interdits.Les conditions <strong>de</strong> transition sont limitées aux valeurs <strong>de</strong>s mesures à bord <strong>du</strong>satellite téléchargées dans la base <strong>de</strong> données. Un exemple d’utilisation <strong>de</strong> cesconditions serait l’activation <strong>de</strong> l’alimentation expérimentale au début d’un planninget ensuite, la vérification <strong>de</strong>s valeurs <strong>du</strong> courant <strong>de</strong> cette alimentation et siles valeurs sont mauvaises et néfastes au satellite, une action sera <strong>de</strong> désactiverl’alimentation expérimentale. Si les valeurs sont bonnes, une action en sortie sera<strong>de</strong> laisser le satellite fonctionner sur l’alimentation électrique expérimentale. Laliste <strong>de</strong>s mesures prises à bord <strong>du</strong> satellite se trouve dans l’annexe A. Les outilsdéveloppés dans le cadre <strong>de</strong> ce travail <strong>de</strong> fin d’étu<strong>de</strong>s se sont basés sur cette liste.Il est important <strong>de</strong> faire remarquer qu’un mécanisme <strong>de</strong> tentatives d’envoi <strong>de</strong>télécomman<strong>de</strong>s au satellite a été mis en place. En effet, il faut prendre en considérationqu’il soit possible d’avoir <strong>de</strong>s problèmes <strong>de</strong> communication avec le satellite,tels qu’un mauvais positionnement <strong>de</strong>s antennes à la station <strong>sol</strong>, un non acheminement<strong>de</strong>s données entre le satellite et la station <strong>sol</strong>, etc. Le mécanisme <strong>de</strong> tentatived’envoi <strong>de</strong> télécomman<strong>de</strong>s renvoie une télécomman<strong>de</strong> tant qu’il n’a pas reçu l’acquittementque celle-ci a été exécutée. Le mécanisme est configuré tel quel pourl’instant mais il est également possible d’intégrer la fonctionnalité où l’opérateuraurait la possibilité <strong>de</strong> spécifier le nombre <strong>de</strong> fois que la télécomman<strong>de</strong> doit êtreenvoyée avant <strong>de</strong> passer à une autre action. Cette configuration par défaut peutêtre problématique dans le cas où l’opération est d’incrémenter un compteur maispas dans les cas où on active un élément qui est déjà activé.4.5.4 Mo<strong>du</strong>le générateur <strong>de</strong> co<strong>de</strong>Le mo<strong>du</strong>le générateur <strong>de</strong> co<strong>de</strong> a la responsabilité <strong>de</strong> tra<strong>du</strong>ire un planning conçupar l’utilisateur en un script Python, mais pas n’importe quel type <strong>de</strong> scriptsPython. En effet, l’idée qui a voulu être développée ici est que les scripts pourraientêtre réutilisés ultérieurement. Typiquement, un script généré par un utilisateurpourra être rechargé dans le programme et être généré <strong>de</strong> nouveau avec <strong>de</strong> nouvellesmodifications si l’utilisateur en a fait. Cette possibilité <strong>de</strong> réutiliser les scriptsgénérés par l’outil <strong>de</strong> planification a pour conséquence, implicitement, <strong>de</strong> <strong>de</strong>voirmettre un mécanisme permettant <strong>de</strong> reconstruire une instance planning à partird’un script Python.4.5.4.1 Réutilisation <strong>de</strong>s plannings générésDeux mécanismes sont possibles. Une analyse <strong>de</strong>s <strong>sol</strong>utions est faite ci-<strong>de</strong>ssous.


CHAPITRE 4. AUTOMATISATION DU MISSION CONTROL CENTER 33La première <strong>sol</strong>ution est <strong>de</strong> construire un analyseur syntaxique capable <strong>de</strong> reconstruirel’instance planning en analysant le co<strong>de</strong> <strong>du</strong> script Python. Il est évi<strong>de</strong>mmenttrès fastidieux <strong>de</strong> développer un tel outil, même si la structure <strong>de</strong>s lignes <strong>de</strong> co<strong>de</strong>générés est statique. Il y aurait beaucoup <strong>de</strong> cas à prendre en compte, comme parexemple le cas où l’utilisateur changerait le script Python. La robustesse seraitdifficile à supporter.La secon<strong>de</strong> <strong>sol</strong>ution est <strong>de</strong> définir un langage qui décrirait un planning. Le planningserait défini dans ce langage et placé dans l’en-tête <strong>du</strong> fichier Python. Lastructure <strong>du</strong> fichier Python serait donc un bloc <strong>de</strong> commentaires dans lequel leplanning est défini dans le langage qu’on définit nous-mêmes et ensuite, le co<strong>de</strong><strong>du</strong> script. Le langage est simple : il permet aux utilisateurs <strong>de</strong> comprendre rapi<strong>de</strong>mentce que fait le planning et également qu’un analyseur syntaxique le traitefacilement.C’est la secon<strong>de</strong> <strong>sol</strong>ution qui a été choisie. Afin <strong>de</strong> supprimer tout souci <strong>de</strong> robustesse,une valeur <strong>de</strong> hachage sera calculée à partir <strong>de</strong> l’en-tête représentant leplanning dans le langage défini et sera ajoutée au début <strong>de</strong> cet en-tête. L’authentificationn’est pas ici l’objectif <strong>de</strong> l’utilisation d’une fonction <strong>de</strong> hachage mais <strong>de</strong>simplement <strong>de</strong> détecter si une personne a modifié l’en-tête. La fonction <strong>de</strong> hachageutilisée est le Secure Hash Algorithm 512 (SHA-512).Si une modification a eu lieu au niveau <strong>de</strong> l’en-tête, l’outil <strong>de</strong> planification refusera<strong>de</strong> travailler avec le script que l’utilisateur voulait charger au sein <strong>du</strong> programme.4.5.4.2 FonctionnementLa figure 4.5 représente les étapes générales <strong>de</strong> la génération <strong>de</strong> co<strong>de</strong>.Figure 4.5 – Flowchart <strong>de</strong> la génération <strong>de</strong> co<strong>de</strong>Le corps <strong>du</strong> script Python aura la structure suivante. En premier lieu, les importsnécessaires seront effectués (archives java propres au projet, librairie standard java,


CHAPITRE 4. AUTOMATISATION DU MISSION CONTROL CENTER 34...). Les scripts Python utilisent <strong>de</strong>s classes Java et cela grâce à l’utilisation <strong>de</strong> latechnologie Jython. Jython est décrit à la section 4.5.8.1. Ensuite, étant donné quele script Python joue le rôle d’un client dans le MCC, il faut établir une connexionavec le MCS. Cette connexion est indirecte car il y a un intermédiaire entre le scriptPython et le MCS. La raison d’un intermédiaire est expliquée à la section 4.5.8.Après l’établissement <strong>de</strong> la connexion entre le script Python et le MCS, les envois<strong>de</strong> télécomman<strong>de</strong>s dans le planning vont démarrer. Chaque action définie dans leplanning sera écrite sous forme <strong>de</strong> fonction. Les conditions <strong>de</strong> transitions entreles actions se trouvent également dans les fonctions. Ensuite, un dictionnaire estdéfinie avec <strong>de</strong>s paires dont la clé est l’i<strong>de</strong>ntifiant <strong>de</strong> l’action et la valeur, la fonctioncorrespondante. Et pour finir, une boucle se chargera <strong>de</strong> lancer le planning.Le principe est que lors <strong>de</strong> chaque appel à une fonction, un in<strong>de</strong>x est modifié etlors <strong>du</strong> début <strong>de</strong> chaque itération <strong>de</strong> la boucle, la fonction correspondante à l’in<strong>de</strong>xest exécutée.4.5.5 Mo<strong>du</strong>le parserLe mo<strong>du</strong>le parser a le rôle d’analyser les scripts Python que l’utilisateur souhaitecharger au sein <strong>du</strong> programme et <strong>de</strong> construire l’instance <strong>du</strong> planning correspondant.Comme mentionné au point précé<strong>de</strong>nt 4.5.4.2, si l’utilisateur change quoi que cesoit dans l’en-tête <strong>du</strong> fichier ou que <strong>de</strong>s lignes <strong>de</strong> co<strong>de</strong> générées ont été enlevées oumodifiées, le programme refusera <strong>de</strong> charger le planning.Étant donné le langage défini et fixé pour définir un planning, <strong>de</strong>s expressionsrégulières ont été développées en fonction <strong>du</strong> langage pour traiter l’en-tête <strong>du</strong>fichier. Une instance planning sera construite au fur et à mesure <strong>de</strong> l’analyse <strong>du</strong>fichier.Le mo<strong>du</strong>le parser est utilisé lors <strong>de</strong>s opérations <strong>de</strong> chargement d’un planning àpartir d’un fichier script Python.Les étapes essentielles qui sont effectuées sont les suivantes :1. Extraction <strong>de</strong> la valeur <strong>de</strong> hachage au début <strong>de</strong> l’en-tête, calculer la valeur<strong>de</strong> hachage <strong>de</strong> l’en-tête en enlevant la ligne contenant la valeur <strong>de</strong> hachageet comparer leurs valeurs.2. Si les valeurs ne sont pas égales, l’utilisateur sera notifié qu’il n’est pas possible<strong>de</strong> charger le fichier source.3. Si les valeurs sont égales, la construction <strong>du</strong> planning à partir <strong>de</strong> l’en-tête sedéroule.4. À partir <strong>du</strong> planning construit, on va créer un fichier temporaire contenantle co<strong>de</strong> généré correspondant au planning.5. Comparaison <strong>du</strong> fichier temporaire et <strong>du</strong> co<strong>de</strong> dans le fichier source afin<strong>de</strong> déterminer les lignes non-générées par le programme et donc venant <strong>de</strong>s


CHAPITRE 4. AUTOMATISATION DU MISSION CONTROL CENTER 35utilisateurs. Il est possible également qu’à ce sta<strong>de</strong> le programme refuse <strong>de</strong>charger le planning car l’utilisateur a supprimé ou modifié <strong>de</strong>s lignes <strong>de</strong> co<strong>de</strong>générées.La figure 4.6 montre l’exécution <strong>du</strong> mo<strong>du</strong>le parser lors d’un chargement d’unfichier.Ce mo<strong>du</strong>le est tout à fait utile pour les cas où un utilisateur, après avoir généréun planning, souhaite encore modifier ce <strong>de</strong>rnier via l’outil <strong>de</strong> planification ; parexemple, pour redéfinir une seule action <strong>de</strong> ce planning. Cela évite <strong>de</strong> reconstruireun planning en entier.C’est également un élément intervenant dans la visualisation <strong>de</strong> plannings sousforme <strong>de</strong> graphes. En effet, lorsqu’un utilisateur souhaite charger un script Python,le mo<strong>du</strong>le parser construit l’instance planning correspondant et le mo<strong>du</strong>le afficheur<strong>de</strong> plannings se base sur cette instance pour la construction <strong>du</strong> graphe. Le mo<strong>du</strong>led’affichage <strong>de</strong> plannings sera expliqué à la section suivante.Il est également possible <strong>de</strong> charger les scripts générés dont certaines lignes <strong>de</strong>co<strong>de</strong> ont été ajoutées par l’utilisateur dans l’outil <strong>de</strong> planification mais seuls leséléments reconnus seront affichés. Néanmoins, les lignes <strong>de</strong> co<strong>de</strong> intro<strong>du</strong>ites parun utilisateur seront quand même affichées par l’outil <strong>de</strong> planification dans unefenêtre spécifique.4.5.6 Mo<strong>du</strong>le afficheur <strong>de</strong> planningsLe mo<strong>du</strong>le d’affichage <strong>de</strong> plannings permet à l’utilisateur <strong>de</strong> visualiser le scénariod’exécution qu’il conçoit. Son utilité vient <strong>de</strong> la raison qu’il n’est pas évi<strong>de</strong>nt<strong>de</strong> s’y retrouver avec <strong>de</strong>s tableaux d’actions et <strong>de</strong> liens, surtout quand ceux-cisont nombreux, et également pour respecter l’aspect “user-friendly”. Néanmoins,ce mo<strong>du</strong>le n’est pas activé par défaut : l’utilisateur peut tout à fait faire sans s’ille désire.La construction <strong>du</strong> graphe se base sur le planning conçu où chaque action estreprésentée par un noeud et chaque transition par un lien. Les noeuds sont accompagnésd’un texte décrivant l’action : i<strong>de</strong>ntifiant <strong>de</strong> l’action, le type <strong>de</strong> télécomman<strong>de</strong>envoyée, etc. Les liens sont juste accompagnées <strong>de</strong> leurs i<strong>de</strong>ntifiants afin <strong>de</strong>ne pas trop surcharger le graphe. Par exemple, si un utilisateur souhaite modifierun lien, il a juste à regar<strong>de</strong>r l’i<strong>de</strong>ntifiant afin <strong>de</strong> modifier ce lien.Il existe <strong>de</strong> nombreuses librairies externes qui sont conçues pour la génération <strong>de</strong>graphes, telles que JFreeCharts, Java Universal Network/Graph (JUNG), JGraph,etc. La bibliothèque <strong>de</strong> génération d’organigrammes et <strong>de</strong> schémas, JGraph, a étésélectionnée car elle est la plus utilisée pour ce genre <strong>de</strong> développement et propose<strong>de</strong>s algorithmes d’organisation <strong>de</strong>s graphes pour une meilleure vue <strong>de</strong>s graphes.4.5.7 Mo<strong>du</strong>le interface graphiqueCe mo<strong>du</strong>le représente le programme principal puisque tous les mo<strong>du</strong>les sont reliésà celui-ci. Dans cette section, les responsabilités <strong>du</strong> mo<strong>du</strong>le vont être décrites, <strong>de</strong>s


CHAPITRE 4. AUTOMATISATION DU MISSION CONTROL CENTER 36Figure 4.6 – Flowchart <strong>du</strong> chargement d’un fichier sourcescénarios typiques d’utilisation vont être présentés avec les mo<strong>du</strong>les décrits ci<strong>de</strong>ssuset une capture d’écran <strong>du</strong> programme sera fournie.Les responsabilités <strong>du</strong> mo<strong>du</strong>le est d’interagir avec les utilisateurs et que les différentsmo<strong>du</strong>les décrits ci-<strong>de</strong>ssus se communiquent entre eux quand il le faut.La conception via l’outil <strong>de</strong> planification est basique. En effet, le <strong>logiciel</strong> propose,


CHAPITRE 4. AUTOMATISATION DU MISSION CONTROL CENTER 37pour la construction d’un planning, <strong>de</strong>ux options : l’ajout d’une action ou d’unlien.Il propose également la possibilité <strong>de</strong> voir le planning en cours <strong>de</strong> traitement sousforme <strong>de</strong> graphe. Lorsque l’utilisateur active cette fonctionnalité, le mo<strong>du</strong>le d’affichage<strong>de</strong> plannings construit le graphe sur base <strong>du</strong> planning courant en construction.À chaque ajout d’une action ou d’un lien au planning, cette fenêtre affichantle graphe est rafraîchie.La fonctionnalité essentielle est la génération <strong>de</strong> co<strong>de</strong> sur <strong>de</strong>man<strong>de</strong> <strong>de</strong> l’utilisateur.Le programme <strong>de</strong>man<strong>de</strong>ra, à chaque fois, où l’utilisateur souhaite enregistrerle script Python.Un exemple typique d’utilisation serait qu’un utilisateur conçoit un planning,<strong>de</strong>man<strong>de</strong> la génération <strong>de</strong> co<strong>de</strong> et assigne le script généré à une passe grâce ausche<strong>du</strong>ler décrit à la section 4.4. Il est fort probable que les types <strong>de</strong> planningne soient pas si nombreux. Après un certain temps <strong>de</strong> communication avec lesatellite, l’opération la plus effectuée avec l’outil <strong>de</strong> planification sera probablementle chargement <strong>de</strong> plannings dont il faut juste modifier certains paramètres <strong>de</strong>sactions car un répertoire <strong>de</strong> plannings aura été constitué.La figure 4.7 présente une capture d’écran <strong>de</strong> l’outil <strong>de</strong> planification développépour OUTFI-1.Figure 4.7 – Capture d’écran <strong>de</strong> la fenêtre principale <strong>de</strong> l’outil <strong>de</strong> planification4.5.8 Communication entre scripts Python et MCSCette section donne une <strong>de</strong>scription <strong>de</strong> Jython et son rôle dans la communicationentre les scripts Python et le MCS. Il sera également abordé l’interface <strong>de</strong> communicationentre les scripts Python et le MCS mais brièvement. La communication


CHAPITRE 4. AUTOMATISATION DU MISSION CONTROL CENTER 38entre les clients et le MCS dans l’architecture <strong>du</strong> MCC sera expliquée en détailsdans le chapitre suivant.4.5.8.1 Description <strong>de</strong> JythonJython permet l’utilisation <strong>de</strong>s technologies Java avec le langage Python. C’estun interprète Python qui est développé en Java afin <strong>de</strong> permettre l’intégration <strong>de</strong>la machine virtuelle Java.Ses principales fonctionnalités sont les suivantes :• La compilation <strong>de</strong> co<strong>de</strong> Python en byteco<strong>de</strong> Java.• Hériter <strong>de</strong>s classes Java en Python.• Pouvoir manipuler les objets Java.• Il permet également l’inverse donc d’utiliser <strong>de</strong>s mo<strong>du</strong>les Python et la syntaxedans <strong>de</strong>s programmes Java.• Jython a été développé entièrement en Java (portabilité).4.5.8.2 Utilisation <strong>de</strong> JythonÉtant donné que le MCS est développé en Java, il nous faut un moyen <strong>de</strong> communicationentre les scripts Python et le MCS. Ce moyen <strong>de</strong> communication estla technologie Java RMI qui sera expliquée au chapitre suivant. Cependant, pourutiliser le langage Java dans le langage Python, il est nécessaire d’utiliser Jython.Il est possible d’utiliser <strong>de</strong>s classes <strong>de</strong> la librairie Java standard mais également<strong>de</strong>s classes propres au projet.Un mo<strong>du</strong>le a été développé pour faire l’intermédiaire entre le script Pythonexécuté et le MCS afin <strong>de</strong> ne pas augmenter la complexité <strong>de</strong>s scripts Python.En effet, cela permet d’avoir une certaine transparence pour la gestion <strong>de</strong> JavaRMI au niveau <strong>de</strong>s scripts Python. La <strong>de</strong>man<strong>de</strong> d’envoi <strong>de</strong> télécomman<strong>de</strong>s passerapar donc par ce mo<strong>du</strong>le qui se chargera d’acheminer ces requêtes vers le MCS. Cemo<strong>du</strong>le est en quelque sorte un client spécifique pour les plannings. La personne quivoudra écrire son propre script Python <strong>de</strong>vra être conscient <strong>de</strong>s fonctions fourniespar ce client intermédiaire et connaître l’utilisation <strong>de</strong> Jython.Comme mentionné au point 4.5.3, les conditions <strong>de</strong> transition sont limitées auxaccès à la base <strong>de</strong> données. Toutefois, il est également possible d’étendre le domaine<strong>de</strong>s conditions <strong>de</strong> transition. Il faut, par conséquent, que le client spécifique auxplannings intègre <strong>de</strong>s fonctions permettant d’aller consulter <strong>de</strong>s valeurs dans labase <strong>de</strong> données <strong>de</strong> mission. Ces fonctions ont été définies pour juste obtenir la<strong>de</strong>rnière valeur <strong>de</strong>s mesures à bord <strong>du</strong> satellite. L’API Java utilisée pour accé<strong>de</strong>rà la base <strong>de</strong> données <strong>de</strong> mission est JDBC.


CHAPITRE 4. AUTOMATISATION DU MISSION CONTROL CENTER 394.5.9 TestLes tests ont été effectués d’abord i<strong>sol</strong>ément sur les mo<strong>du</strong>les constituant l’outil<strong>de</strong> planification.Les tests sur le générateur <strong>de</strong> co<strong>de</strong> consistaient généralement à voir si les scriptsPython générés étaient vali<strong>de</strong>s.Le mo<strong>du</strong>le parser a été longuement testé pour vérifier que les expressions régulièressoient bien correctes dans l’objectif <strong>de</strong> pouvoir reconstruire l’instance planningà partir <strong>de</strong> l’en-tête et afin <strong>de</strong> tester les mécanismes <strong>de</strong> comparaison <strong>de</strong> fichiers(valeurs <strong>de</strong> hachage et détection <strong>de</strong> lignes <strong>de</strong> co<strong>de</strong> entrelacées). Un exemple <strong>de</strong> testconsistait en le chargement d’un script Python généré mais légèrement modifié parun utilisateur au sein <strong>du</strong> programme, dans l’objectif <strong>de</strong> vérifier le bon chargementd’un planning, la détection <strong>de</strong>s lignes provenant <strong>de</strong> l’utilisateur et la visualisation<strong>du</strong> graphe correspondant au planning.L’affichage <strong>de</strong> plannings a été testé avec <strong>de</strong>s graphes constitués d’un nombreimportant <strong>de</strong> noeuds et <strong>de</strong> liens. Il a été également testé après un chargementd’un script Python dans l’objectif <strong>de</strong> visualiser le graphe représentant le planningcorrespondant.Le mo<strong>du</strong>le planning est le plus important <strong>de</strong> tous car les autres mo<strong>du</strong>les se basenttous <strong>de</strong>ssus. Les tests sur ce mo<strong>du</strong>le ont été réalisé rigoureusement <strong>de</strong> telle sortequ’il n’y ait aucun problème lors <strong>de</strong> la mise en relation avec les autres mo<strong>du</strong>les.Les simulations <strong>de</strong> création <strong>de</strong> planning ont essayé <strong>de</strong> couvrir tous les cas <strong>de</strong>constructions cohérentes. Les résultats <strong>de</strong> ces tests ont été satisfaisants.Étant donné que le programme principal se base sur les mo<strong>du</strong>les ci-<strong>de</strong>ssus, lestests effectués sur l’outil <strong>de</strong> planification complet ont porté généralement sur l’interactionentre ces mo<strong>du</strong>les et ceux-ci ont été satisfaisants.Un autre test s’est avéré intéressant dans cette phase <strong>de</strong> test. Un planning utilisépar l’équipe SwissCube lors d’une passe <strong>de</strong> leur satellite nous a été fourni et nousa servi <strong>de</strong> base comme test. La création <strong>de</strong> plannings similaires à celui fourni estpossible avec l’outil <strong>de</strong> planification développé.Les <strong>de</strong>rniers tests consistaient à vérifier que les scripts Python générés s’exécutaientcorrectement. Différents plannings ont été générés afin <strong>de</strong> couvrir tous lescas cohérents. Afin <strong>de</strong> vérifier le bon fonctionnement <strong>de</strong>s scripts Python et <strong>du</strong> clientspécifique aux plannings, une version <strong>du</strong> MCS a été implémentée. Cela permet <strong>de</strong>simuler la communication entre les scripts Python et le MCS. La communicationentre les scripts Python et le MCS est abordée à la section 5.2. Il a fallu égalementfaire attention <strong>de</strong> bien intégrer la technologie Jython car les scripts Python utilisentla classe Java <strong>du</strong> client spécifique aux plannings pour communiquer avec lesatellite. Un exemple <strong>de</strong> planning généré est la création d’un planning contenanttoutes les télécomman<strong>de</strong>s qui peuvent être envoyées et <strong>de</strong> différentes conditions <strong>de</strong>transition afin <strong>de</strong> vérifier que chaque type d’action soit correctement généré sousforme <strong>de</strong> co<strong>de</strong> Python et que ces actions soient toutes bien exécutées.


Chapitre 5Développement <strong>du</strong> MissionControl CenterCe chapitre présente l’architecture <strong>du</strong> MCC et son développement. La section5.1 présente l’architecture <strong>du</strong> MCC avec un schéma. Une <strong>de</strong>scription <strong>de</strong>s élémentsconstituant le MCC est également donnée. La section 5.2 abor<strong>de</strong> les détails surla communication entre les clients et le MCS. La section 5.3 décrit le rôle <strong>du</strong>MCS dans le MCC. Les sections 5.4 et 5.5 présentent l’outil d’envoi manuel <strong>de</strong>télécomman<strong>de</strong>s, le MDV et les détails <strong>de</strong> leurs implémentations.5.1 Architecture <strong>du</strong> MCCL’architecture <strong>du</strong> MCC respecte une topologie client/serveur où le serveur est leMCS et les clients sont <strong>de</strong>s scripts Python représentant <strong>de</strong>s plannings, <strong>de</strong>s <strong>logiciel</strong>squi envoient <strong>de</strong>s télécomman<strong>de</strong>s, etc. La figure 5.1 représente l’architecture <strong>du</strong>MCC avec les éléments y faisant partie.Les éléments <strong>de</strong> la figure 5.1 sont décrits brièvement ci-<strong>de</strong>ssous.Operator :Toute personne qui interagit avec le satellite <strong>du</strong>rant la mission.Manual TC Sen<strong>de</strong>r : C’est un outil qui permet l’envoi <strong>de</strong> télécomman<strong>de</strong>s ausatellite <strong>de</strong> manière manuelle. Étant qu’un mo<strong>de</strong> <strong>de</strong> communication automatiquea été mis en place au chapitre 4, cet outil est une alternative au mo<strong>de</strong><strong>de</strong> communication automatique.Planning Tool : L’outil <strong>de</strong> planification permet la génération <strong>de</strong> plannings représentéssous forme <strong>de</strong> scripts Python. Ces <strong>de</strong>rniers pourront être exécutéslors <strong>de</strong>s passes <strong>du</strong> satellite à condition qu’un opérateur ait assigné un scriptà l’une <strong>de</strong> ces passes.Planning : Un planning représente un ensemble d’opérations à exécuter sousforme <strong>de</strong> script Python. Un planning peut être créé en utilisant l’outil <strong>de</strong>planification ou alors en écrivant soi-même le script. Le seul mo<strong>du</strong>le autoriséà exécuter un planning est le sche<strong>du</strong>ler.40


CHAPITRE 5. DÉVELOPPEMENT DU MISSION CONTROL CENTER 41Figure 5.1 – Architecture <strong>du</strong> Mission Control Center


CHAPITRE 5. DÉVELOPPEMENT DU MISSION CONTROL CENTER 42Sche<strong>du</strong>ler : Le sche<strong>du</strong>ler a connaissance <strong>de</strong> toutes les passes <strong>du</strong> satellite et offrela possibilité aux opérateurs d’exécuter un script Python à une ou plusieurs<strong>de</strong> ces passes.Mission Data Viewer : Le MDV permet aux opérateurs <strong>de</strong> visualiser les donnéesrelatives à la mission <strong>OUFTI</strong>-1, telles que les valeurs <strong>de</strong>s mesures àbord <strong>du</strong> satellite, l’état d’exécution d’une télécomman<strong>de</strong>, les télécomman<strong>de</strong>senvoyées, etc. Il est constitué <strong>de</strong> <strong>de</strong>ux mo<strong>de</strong>s d’affichage : un permettant lavisualisation <strong>de</strong>s données en temps réel et un autre permettant la visualisation<strong>de</strong> l’historique <strong>de</strong>s données <strong>de</strong>puis le début <strong>de</strong> la mission.Mission Control Software : Le MCS joue le rôle <strong>de</strong> serveur sur lequel tous lesclients se connectent pour pouvoir envoyer <strong>de</strong>s télécomman<strong>de</strong>s au satellite.Mission Database : La base <strong>de</strong> données <strong>de</strong> mission contient toutes les donnéestransmises lors <strong>de</strong> la mission, c’est-à-dire toutes les télécomman<strong>de</strong>s et lestélémétries transitant par le MCS.Mission Information Base : La MIB est un ensemble d’information structurésur les formats <strong>de</strong>s paquets <strong>de</strong>s différents services <strong>du</strong> protocole PUS utilisés,les fonctions qu’on peut faire exécuter par un processus à bord, etc. Ellecontient <strong>de</strong>s informations qui ont été définies avant le lancement <strong>du</strong> satellite.GS Server : Le MCS se connecte au serveur GS pour envoyer et recevoir <strong>de</strong>sinformations <strong>du</strong> satellite. Le serveur GS fait partie <strong>de</strong> l’unité GS représentéeà la figure 3.1.5.2 Communication clients et MCSLe moyen <strong>de</strong> communication utilisé entre les clients et le MCS est important cartous les clients <strong>de</strong>vront intégrer ce système <strong>de</strong> communication s’ils souhaitent seconnecter au MCS.Dans l’environnement Java, il est possible d’établir une connexion entre <strong>de</strong>uxprogrammes, généralement un serveur et un client, soit par l’utilisation <strong>de</strong> la communicationpar sockets ou par l’utilisation <strong>de</strong> la technologie Java RMI.Java RMI est basé sur l’utilisation <strong>de</strong> sockets mais, à la différence <strong>de</strong> la première<strong>sol</strong>ution, elle facilite le développement <strong>de</strong>s applications distribuées en rendanttransparente aux développeurs la communication entre clients et serveur. Eneffet, le choix <strong>de</strong> la première <strong>sol</strong>ution impliquerait la définition d’un protocole <strong>de</strong>communication entre les clients et le serveur. C’est pourquoi nous avons utiliséJava RMI pour développer la communication entre les clients et le MCS.5.2.1 Java Remote Method Invocation5.2.1.1 DescriptionJava RMI est un outil <strong>de</strong> haut niveau permettant aux développeurs <strong>de</strong> travaillerdirectement avec <strong>de</strong>s objets Java distants sans se soucier <strong>de</strong> l’implémentation auniveau <strong>de</strong> la communication entre ceux-ci.


CHAPITRE 5. DÉVELOPPEMENT DU MISSION CONTROL CENTER 43Un scénario typique <strong>de</strong> fonctionnement <strong>de</strong> Java RMI est qu’un serveur crée <strong>de</strong>sobjets sur la machine où il est lancé, ren<strong>de</strong> ces objets accessibles à distance etatten<strong>de</strong> que les clients <strong>de</strong>man<strong>de</strong>nt l’exécution <strong>de</strong> métho<strong>de</strong>s sur ces objets. Du côté<strong>du</strong> client, il va <strong>de</strong>man<strong>de</strong>r au serveur une ou plusieurs références vers les objets setrouvant sur le serveur et invoquer <strong>de</strong>s métho<strong>de</strong>s sur celles-ci. En effet, le client,après avoir obtenu une référence sur un objet distant, pourra travailler avec cetobjet comme s’il se trouvait sur la machine elle-même, alors qu’il se trouve surla machine où le serveur tourne. Les <strong>de</strong>ux applications peuvent fonctionner sur lamême machine, c’est juste qu’il y aura <strong>de</strong>ux machines virtuelles Java différentes.Java RMI fournit un mécanisme permettant aux objets Java <strong>de</strong> se communiquerentre eux.Par quels moyens les clients peuvent-ils obtenir les références vers ces objetsdistants ?Java RMI propose une fonctionnalité, appelée le registre RMI, qui permet <strong>de</strong> lierun objet distant avec un i<strong>de</strong>ntifiant dans un registre. Ce registre se trouve <strong>du</strong> côté<strong>du</strong> serveur. Le client obtient une référence vers un objet distant selon l’i<strong>de</strong>ntifiantqu’il intro<strong>du</strong>it dans le registre.Une autre <strong>sol</strong>ution est que l’application retourne directement <strong>de</strong>s références versces objets distants. Le développeur n’aurait pas besoin à chaque fois d’accé<strong>de</strong>r auregistre et intro<strong>du</strong>ire un i<strong>de</strong>ntifiant pour obtenir la référence vers un objet distant.La communication entre objets distants est supportée par Java RMI. Du point<strong>de</strong> vue <strong>du</strong> développeur, la communication à distance ressemble à un simple appel<strong>de</strong> fonction standard sur un objet. Toutefois, pour pouvoir utiliser ce mécanisme, ilest nécessaire <strong>de</strong> définir, dans les interfaces <strong>de</strong>s objets que l’on manipule à distance,toutes les fonctions que l’on peut invoquer sur ces objets.Java RMI offre une autre fonctionnalité qui permet aux clients <strong>de</strong> passer <strong>de</strong>sobjets en arguments aux objets distants. En effet, Java RMI fournit <strong>de</strong>s mécanismesqui transfèrent le co<strong>de</strong> <strong>de</strong>s objets passés en argument vers le serveur etleurs données.Le schéma, à la figure 5.2, représente un exemple où le serveur lie un objet distantà un i<strong>de</strong>ntifiant dans le registre RMI, et le client va chercher la référence vers cetobjet dans le registre et invoque l’exécution d’une métho<strong>de</strong> sur cet objet. Le clientdoit également connaître les détails sur l’emplacement <strong>du</strong> serveur dans l’objectif<strong>de</strong> contacter le registre RMI se trouvant sur le serveur.5.2.1.2 Utilisation <strong>de</strong> Java RMI dans le MCCEn faisant l’analogie entre l’exemple dans la section précé<strong>de</strong>nte et le MCC, leserveur est le MCS et les clients sont les scripts Python, l’outil d’envoi manuel <strong>de</strong>télécomman<strong>de</strong>s, etc.Le serveur lie un objet représentant une fabrique <strong>de</strong> télécomman<strong>de</strong>s avec uni<strong>de</strong>ntifiant dans le registre RMI. Les clients obtiennent la référence vers cette fabriquegrâce au registre RMI. La fabrique <strong>de</strong> télécomman<strong>de</strong>s, par invocation <strong>de</strong>métho<strong>de</strong>s sur elle-même, crée <strong>de</strong>s objets représentant <strong>de</strong>s télécomman<strong>de</strong>s et renvoie<strong>de</strong>s références vers ces objets aux clients. Une fois que le client est en possession


CHAPITRE 5. DÉVELOPPEMENT DU MISSION CONTROL CENTER 44Figure 5.2 – Exemple d’une application utilisant Java RMId’une référence vers une télécomman<strong>de</strong>, il remplit les informations propres à latélécomman<strong>de</strong> et <strong>de</strong>man<strong>de</strong> son envoi par le biais <strong>de</strong>s métho<strong>de</strong>s qui ont été définiescomme étant <strong>de</strong>s fonctions qu’on peut invoquer à distance sur l’objet. Le serveurse chargera <strong>de</strong> la construction <strong>du</strong> paquet contenant la télécomman<strong>de</strong> et <strong>de</strong> sonenvoi au satellite.Le rôle principal <strong>du</strong> MCS est la création et l’envoi <strong>de</strong> télécomman<strong>de</strong>s mais il aégalement d’autres rôles qui sont le stockage <strong>de</strong> toutes les informations transitanten son point (télécomman<strong>de</strong>s et télémétries) et la notification à ses clients lorsque<strong>de</strong>s nouvelles informations arrivent (la réception d’une télémétrie, l’envoi d’unetélécomman<strong>de</strong>, etc.).La notification en temps réel entre le MCS et les clients est réalisée sur base<strong>du</strong> patron <strong>de</strong> conception observateur/observable implémentée avec Java RMI. Enpratique, le MCS gar<strong>de</strong>ra en mémoire une liste <strong>de</strong> références vers <strong>de</strong>s objets distantsse trouvant chez les clients. Ensuite, par exemple, lorsqu’il y a <strong>de</strong>s télémétriesqui viennent d’être reçues, le serveur se sert <strong>de</strong> la liste contenant les référenceset appellent <strong>de</strong>s métho<strong>de</strong>s spécifiques sur ces objets distants afin que les clientssoient à jour sur les informations récemment reçues. Les objets distants chez lesclients sont responsables d’aller chercher les nouvelles informations sur le MCS àchaque notification. L’appel <strong>de</strong> métho<strong>de</strong>s sur <strong>de</strong>s objets distants se fait dans les<strong>de</strong>ux sens. En effet, le client <strong>de</strong>vient serveur et le serveur <strong>de</strong>vient client. Ce genred’appels est appelé RMI Callbacks.


CHAPITRE 5. DÉVELOPPEMENT DU MISSION CONTROL CENTER 455.3 Mission Control Software5.3.1 DescriptionLe MCS est l’élément central <strong>du</strong> MCC. En effet, toutes les données transitenten ce point et presque tous les éléments dans le MCC y sont connectés. Il estimportant d’énoncer les rôles fondamentaux <strong>du</strong> MCS :1. Création et envoi <strong>de</strong> télécomman<strong>de</strong>s,2. Sauvegar<strong>de</strong> <strong>de</strong> toutes les télécomman<strong>de</strong>s et les télémétries dans la base <strong>de</strong>données <strong>de</strong> mission,3. Extraction <strong>de</strong>s données dans les télémétries et les stocker dans la base <strong>de</strong>données <strong>de</strong> mission,4. Notification au MDV <strong>de</strong>s informations récemment envoyées ou reçues etmettre ces informations à sa disposition.Le premier rôle est la création et l’envoi <strong>de</strong> télécomman<strong>de</strong>s sur la <strong>de</strong>man<strong>de</strong> <strong>de</strong>sclients. La création <strong>de</strong>s paquets représentant les télécomman<strong>de</strong>s est réalisée par leMCS. Les paquets ont un format spécifique défini par le protocole PUS (voir [25]pour les détails sur l’implémentation <strong>du</strong> protocole PUS).Le second rôle est la sauvegar<strong>de</strong> <strong>de</strong> toutes les données transitant par le MCS. Eneffet, les informations stockées dans la base <strong>de</strong> données <strong>de</strong> mission servira au MDVpour afficher les données aux opérateurs et aux scripts Python pouvant contenir<strong>de</strong>s opérations qui sont <strong>de</strong>s accès à ces informations.Le troisième rôle est indispensable pour la visualisation <strong>de</strong>s valeurs <strong>de</strong>s paramètresà bord <strong>du</strong> satellite via le MDV. Il faudra, à un moment ou un autre, extraireles données <strong>de</strong>s télémétries mais pour le faire, il est nécessaire <strong>de</strong> connaîtrele format <strong>de</strong>s paquets. Le MCS se chargera <strong>de</strong> l’extraction <strong>de</strong>s données contenuesdans les télémétries. Par exemple, il peut extraire <strong>de</strong>s informations d’un paquet <strong>du</strong>service 1 (décrit à la section 7.3). Les informations d’un paquet <strong>du</strong> service 1 permet<strong>de</strong> suivre l’état d’évolution d’une télécomman<strong>de</strong> récemment envoyée. L’utilisateurpourra, par exemple, s’assurer que le mo<strong>de</strong> D-STAR <strong>du</strong> satellite est bien activé enregardant si la télécomman<strong>de</strong> a bien été exécutée par le MDV.Le quatrième rôle permet d’avoir les données mises à jour en temps réel dansle MDV. En effet, il est intéressant <strong>de</strong> pouvoir consulter <strong>de</strong>s données en tempsréel. Par exemple, l’évolution d’exécution d’une télécomman<strong>de</strong> pourra être suivieen direct ou alors il sera également possible <strong>de</strong> voir l’arrivée <strong>de</strong>s valeurs <strong>de</strong>s paramètresà bord en direct après activation <strong>du</strong> service <strong>de</strong> génération <strong>de</strong> rapports <strong>de</strong>données. Le service <strong>de</strong> génération <strong>de</strong> rapports <strong>de</strong> données permet aux opérateursd’activer une génération automatique <strong>de</strong> rapports contenant les valeurs <strong>de</strong> certainsparamètres à bord <strong>du</strong> satellite.


CHAPITRE 5. DÉVELOPPEMENT DU MISSION CONTROL CENTER 465.3.2 ImplémentationLe MCS assure l’envoi <strong>de</strong> télécomman<strong>de</strong>s et la notification aux clients par l’utilisation<strong>de</strong> Java RMI.Le scénario <strong>de</strong> création et d’envoi d’une télécomman<strong>de</strong> peut se résumer parl’exemple <strong>de</strong> fonctionnement suivant. Un objet distant, se trouvant sur le MCS,joue le rôle <strong>de</strong> fabrique <strong>de</strong> télécomman<strong>de</strong>s. Les clients obtiennent la référence verscet objet via le registre RMI. À partir <strong>de</strong> là, lorsqu’un client souhaite envoyerune télécomman<strong>de</strong>, il envoie une requête à la fabrique <strong>de</strong> télécomman<strong>de</strong>s et cellecirenvoie une référence vers l’objet télécomman<strong>de</strong> qu’elle vient juste <strong>de</strong> créer.Le client complétera les paramètres propres à cette télécomman<strong>de</strong> et <strong>de</strong>man<strong>de</strong>rason envoi. Ensuite, le MCS s’occupera <strong>de</strong> la construction <strong>du</strong> paquet à partir <strong>de</strong>sinformations données par le client et enverra le paquet contenant la télécomman<strong>de</strong>.Toutes les télécomman<strong>de</strong>s utilisées pour la mission et leurs paramètres sont décritsau point 7.2.Le MCS joue également le rôle <strong>de</strong> observable dans le modèle <strong>de</strong> conception observateur/observable.Les clients s’inscrivent pour être "abonnés" aux informationstransitant par le MCS. Tous les clients abonnés seront notifiés lorsque <strong>de</strong>s nouvellestélécomman<strong>de</strong>s sont envoyées ou <strong>de</strong>s nouvelles télémétries sont reçues ou que <strong>de</strong>snouvelles valeurs <strong>de</strong>s mesures à bord <strong>du</strong> satellite sont extraites <strong>de</strong>s télémétries.Le MCS contient une liste <strong>de</strong> références vers <strong>de</strong>s objets distants se trouvant surchaque client qui lui est connecté. Lorsqu’il y a <strong>du</strong> changement, le MCS utilise cesréférences pour invoquer une métho<strong>de</strong> qui a pour effet que les clients vont allerchercher l’information sur le MCS. Il est nécessaire pour cela que ces objets référencésse trouvant dans les clients possè<strong>de</strong>nt une référence permanente vers le MCS.Les données observées sont les télécomman<strong>de</strong>s, les télémétries et les paramètres àbord <strong>du</strong> satellite.La MIB contient toutes les informations sur les services <strong>du</strong> protocole PUS telsle nombre <strong>de</strong> bits pour tel champ d’un tel paquet, les valeurs possibles pour un telchamp, l’ensemble <strong>de</strong>s paramètres définis pour la mission, etc (voir 7.2). Le MCSse base sur la MIB pour construire les paquets et également pour en extraire lesdonnées.L’idée <strong>de</strong> base était que le MCS soit assez générique pour fonctionner avec n’importequelle information encodée dans la MIB, c’est-à-dire qu’il pourrait supporterun nouveau service PUS en ajoutant simplement les informations <strong>de</strong> ce service dansla MIB, mais c’est impossible. Ce genre <strong>de</strong> changements impliquerait également<strong>de</strong>s changements au niveau <strong>du</strong> co<strong>de</strong> <strong>du</strong> MCS. Toutefois, il y a quand même uncôté générique tel que l’ajout d’une nouvelle valeur possible pour un champ d’unetélécomman<strong>de</strong> ne posera aucun problème d’intégration dans le fonctionnement <strong>du</strong>MCS.En ce qui concerne les détails d’implémentation <strong>de</strong> la création et l’envoi <strong>de</strong>télécomman<strong>de</strong>, l’extraction <strong>de</strong>s données <strong>de</strong>s paquets, la conception <strong>de</strong> la MIB etle mécanisme d’interaction entre la MIB et le MCS, voir [25].


CHAPITRE 5. DÉVELOPPEMENT DU MISSION CONTROL CENTER 475.4 Outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong>s5.4.1 DescriptionL’outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong>s permet l’envoi direct <strong>de</strong> télécomman<strong>de</strong>sau satellite. L’opérateur a, à sa disposition, une interface graphique lui proposantla création d’un ensemble <strong>de</strong> télécomman<strong>de</strong>s qui peuvent être utilisées dans lecadre <strong>de</strong> la mission <strong>OUFTI</strong>-1 (voir section 7.2 pour connaître l’ensemble <strong>de</strong>s télécomman<strong>de</strong>sdisponibles). Lors <strong>de</strong> la création d’une télécomman<strong>de</strong>, l’opérateur<strong>de</strong>vra spécifier les paramètres <strong>de</strong> la télécomman<strong>de</strong>.Pour chaque télécomman<strong>de</strong> envoyée, l’opérateur a un retour l’informant si latélécomman<strong>de</strong> a été acceptée ou non par le satellite. Cette acceptation correspondà une télémétrie <strong>du</strong> service 1 <strong>du</strong> PUS. Le service 1 permet <strong>de</strong> suivre l’évolutiond’exécution d’une télécomman<strong>de</strong> à bord <strong>du</strong> satellite.L’outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong> informe juste l’opérateur si la télécomman<strong>de</strong>a été acceptée ou non par le satellite, tandis que le MDV affiche les différentesphases d’exécution <strong>de</strong> la télécomman<strong>de</strong>. Elle permet donc un suivi complet<strong>de</strong> la télécomman<strong>de</strong>.À la section 4.5, un mo<strong>de</strong> <strong>de</strong> communication automatique a été réalisé mais grâceà l’outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong>s, un autre système <strong>de</strong> communication aété également réalisé, un mo<strong>de</strong> <strong>de</strong> communication manuel.Les opérateurs ont la possibilité <strong>de</strong> se passer <strong>de</strong>s outils permettant l’automatisation<strong>du</strong> MCC pour interagir manuellement avec le satellite. Toutefois, il estévi<strong>de</strong>nt que la quantité d’information échangée ne sera pas maximale et qu’il seranécessaire d’avoir un opérateur présent à toutes les passes <strong>du</strong> satellite pour vérifierl’état <strong>de</strong> santé <strong>du</strong> satellite.Ainsi, <strong>de</strong>ux mo<strong>de</strong>s <strong>de</strong> communication sont disponibles, automatique et manuel.5.4.2 ImplémentationL’implémentation <strong>de</strong> l’outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong>s est basée partiellementsur l’utilisation Java RMI. L’outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong>s est unclient qui se connecte sur le MCS. La création et l’envoi <strong>de</strong> télécomman<strong>de</strong>s se fontà distance sur le MCS.Il est important que le sous-système Telemetry/Telecommand (TC/TM) et quele sous-système Ground (GND), dont je suis responsable, se mettent d’accord surles interfaces <strong>de</strong>s objets qui sont utilisés à distance, afin <strong>de</strong> faciliter la mise encommunication entre le MCS et les clients, tel que l’outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong>s.Le sous-système TC/TM est responsable <strong>du</strong> développement <strong>du</strong> MCSet <strong>de</strong>s protocoles <strong>de</strong> communication dans le cadre <strong>de</strong> la mission <strong>OUFTI</strong>-1. Les interfaces<strong>de</strong>s objets définissent les métho<strong>de</strong>s qui peuvent être exécutées à distance.Par exemple, l’interface <strong>de</strong> l’objet représentant la fabrique <strong>de</strong> télécomman<strong>de</strong>s seramajoritairement constituée <strong>de</strong> fonctions <strong>de</strong> création <strong>de</strong> télécomman<strong>de</strong>s. Ces fonctionsretournent aux clients <strong>de</strong>s références vers les objets télécomman<strong>de</strong>s venantjuste d’être créés par le MCS.


CHAPITRE 5. DÉVELOPPEMENT DU MISSION CONTROL CENTER 48L’implémentation <strong>du</strong> MCS ne fait pas partie <strong>du</strong> travail <strong>de</strong> fin d’étu<strong>de</strong>s présentmais y est étroitement liée pour le développement futur <strong>du</strong> projet. De nombreusesréunions ont eu lieu pour définir toutes les interfaces <strong>de</strong>s objets qui sont manipulésà distance c’est-à-dire les différents types <strong>de</strong> télécomman<strong>de</strong>s, la fabrique <strong>de</strong>télécomman<strong>de</strong>s, etc.Il aurait été intéressant <strong>de</strong> pouvoir tester le comportement <strong>de</strong> l’outil d’envoimanuel <strong>de</strong> télécomman<strong>de</strong>s connecté au MCS dans sa version finale mais, faute<strong>de</strong> temps, cela n’a pas été possible. Toutefois, afin <strong>de</strong> pouvoir tester l’outil, uneimplémentation légère <strong>du</strong> MCS a été réalisée. Bien qu’elle soit incomplète, cetteversion <strong>du</strong> MCS implémente les fonctions utilisées à distance par l’outil d’envoimanuel <strong>de</strong> télécomman<strong>de</strong>s afin <strong>de</strong> tester toutes ces fonctionnalités.Une amélioration possible <strong>de</strong> cet outil est l’ajout d’un mo<strong>du</strong>le qui irait chercherles heures <strong>de</strong>s prévisions <strong>de</strong>s passes <strong>du</strong> satellite, permettant ainsi la désactivation<strong>de</strong> l’envoi <strong>de</strong> télécomman<strong>de</strong>s lorsque la station <strong>sol</strong> est hors <strong>de</strong> la zone couverte parle satellite. Cette amélioration n’est peut-être pas nécessaire car, <strong>de</strong> toute façon,même si l’on envoie une télécomman<strong>de</strong> en étant hors <strong>de</strong> la zone couverte par lesatellite, ce <strong>de</strong>rnier ne répondra pas.5.4.2.1 FonctionnementLe schéma à la figure 5.3 décrit le fonctionnement <strong>de</strong> l’outil d’envoi manuel <strong>de</strong>télécomman<strong>de</strong>s.Dans ce schéma, on peut voir que l’outil, avant toute création et envoi <strong>de</strong> télécomman<strong>de</strong>s,se connecte au MCS pour prendre <strong>de</strong>s informations qui seront utiles pourla création <strong>de</strong> télécomman<strong>de</strong>s. Par exemple, il est intéressant, pour les opérateurs,d’avoir la liste et la <strong>de</strong>scription <strong>de</strong>s fonctions supportées par les processus à bordainsi que leurs paramètres. Grâce à ces informations, l’application proposera lesvaleurs possibles pour certains paramètres, au lieu <strong>de</strong> laisser les opérateurs spécifierces valeurs augmentant ainsi le risque <strong>de</strong> refus d’exécution d’une télécomman<strong>de</strong>pour <strong>de</strong>s raisons d’arguments invali<strong>de</strong>s.La suite <strong>du</strong> schéma montre une boucle constituée <strong>de</strong> la création et l’envoi d’unetélécomman<strong>de</strong>, et si cette <strong>de</strong>rnière a été acceptée ou non par le satellite.5.4.2.2 Interface graphiqueUne capture d’écran <strong>de</strong> l’outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong> est présentée àla figure 5.4. La fenêtre principale permet d’accé<strong>de</strong>r à la création <strong>de</strong>s différentestélécomman<strong>de</strong>s utilisées dans la mission. Pour chaque type <strong>de</strong> télécomman<strong>de</strong> quel’opérateur souhaite envoyer, il y a une fenêtre dédiée à la spécification <strong>de</strong>s paramètres<strong>de</strong> ce type <strong>de</strong> télécomman<strong>de</strong>.Toutes les télécomman<strong>de</strong>s envoyées avec cet outil sont notées dans une zoneappropriée ainsi que le retour <strong>de</strong> ses télécomman<strong>de</strong>s, c’est-à-dire si elles ont étéacceptées ou non par le satellite.


CHAPITRE 5. DÉVELOPPEMENT DU MISSION CONTROL CENTER 49Figure 5.3 – Flowchart <strong>de</strong> l’outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong>s5.4.2.3 TestEn premier lieu, les tests ont été effectués sans connexion avec le MCS. Ces testsont surtout porté sur l’interface graphique afin <strong>de</strong> déceler <strong>de</strong>s dysfonctionnements.Par la suite, une implémentation simple et très légère <strong>du</strong> MCS a été réalisée afin<strong>de</strong> pouvoir développer le co<strong>de</strong> adéquat pour une future imbrication et <strong>de</strong> simulerla connexion entre le MCS et l’outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong>s. Les testsconsistaient en la création et l’envoi <strong>de</strong> chaque type <strong>de</strong> télécomman<strong>de</strong> possible.La liste <strong>de</strong> télécomman<strong>de</strong>s qu’il est possible d’utiliser dans la mission <strong>OUFTI</strong>-1est décrite à la section 7.2. En effet, ces tests permettent <strong>de</strong> vérifier qu’aucunargument <strong>de</strong>s télécomman<strong>de</strong>s n’a été oublié lors <strong>de</strong> l’implémentation <strong>de</strong> l’outilet lors <strong>de</strong>s définitions <strong>de</strong>s interfaces avec le sous-système TC/TM. Cela permetégalement <strong>de</strong> tester la communication Java RMI avec le MCS.Un exemple <strong>de</strong> test consistait en la création d’une télécomman<strong>de</strong> qui active lagénération automatique <strong>de</strong> rapports <strong>de</strong> données sur certaines mesures à bord <strong>du</strong>satellite. Il a fallu vérifier que le MCS renvoie une référence vers l’objet télécomman<strong>de</strong>distant, après une <strong>de</strong>man<strong>de</strong> <strong>de</strong> création <strong>de</strong> télécomman<strong>de</strong> provenant <strong>de</strong>l’outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong>s. Ensuite, on doit spécifier les arguments<strong>de</strong> la télécomman<strong>de</strong> via les métho<strong>de</strong>s qu’on peut invoquer à distance sur l’objet.Après chaque spécification d’un argument à la télécomman<strong>de</strong>, on vérifie <strong>du</strong> côté


CHAPITRE 5. DÉVELOPPEMENT DU MISSION CONTROL CENTER 50Figure 5.4 – Capture d’écran <strong>de</strong> l’outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong>s<strong>du</strong> MCS que l’objet a bien été mis à jour afin <strong>de</strong> vérifier que la connexion entrel’outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong>s et le MCS fonctionne bien. Finalement,on vérifie que la métho<strong>de</strong> <strong>de</strong>mandant l’envoi <strong>de</strong> la télécomman<strong>de</strong> par l’outil a bienété reçue par le MCS.Les tests effectués avec cette version <strong>du</strong> MCS ont été réalisés avec succès.L’implémentation <strong>du</strong> MCS ne fait pas partie <strong>du</strong> travail <strong>de</strong> développement <strong>de</strong> cemémoire et les détails <strong>de</strong> son développement se trouvent dans [25].En attente <strong>du</strong> développement complet <strong>du</strong> MCS, le co<strong>de</strong> relatif à la connexionentre l’outil et le MCS a été placé en commentaires. Ce co<strong>de</strong> a été développé enrespectant les interfaces <strong>de</strong> communication définies entre le MCS et l’outil d’envoimanuel <strong>de</strong> télécomman<strong>de</strong>s.5.5 Mission Data Viewer5.5.1 DescriptionLe Mission Data Viewer est un outil qui permet la visualisation <strong>de</strong>s données relativesà la mission, telles que les télécomman<strong>de</strong>s, les télémétries, etc. Au cours <strong>de</strong> lamission, les opérateurs auront la possibilité <strong>de</strong> visualiser <strong>de</strong>ux types d’informationsavec cet outil. Les informations historiques et en temps réel.Ces <strong>de</strong>ux catégories se différencient par l’absence <strong>de</strong> mises à jour automatiques<strong>de</strong>s données affichées. En effet, prenons par exemple, un scientifique qui souhaite


CHAPITRE 5. DÉVELOPPEMENT DU MISSION CONTROL CENTER 51consulter les valeurs <strong>de</strong> paramètres relatifs à l’alimentation électrique expérimentale,il ne voudra sûrement pas être dérangé par les mises à jour automatiquesqui provoqueront <strong>de</strong>s décalages dans les tableaux <strong>de</strong> données. Par contre, le mo<strong>de</strong>temps réel sera utile lorsqu’un opérateur souhaite, par exemple, voir l’état d’évolutiond’exécution d’une télécomman<strong>de</strong> qu’il vient d’envoyer.Une autre différence est que les données en temps réel se limitent aux cinquante<strong>de</strong>rnières télécomman<strong>de</strong>s, cinquante <strong>de</strong>rnières valeurs d’un paramètre à bord, etc.Tandis que le mo<strong>de</strong> historique affiche toutes les données <strong>de</strong>puis le début <strong>de</strong> lamission. Si l’on souhaite modifier la limite fixée pour les données en temps réel, ilfaut changer une constante dans le programme.La façon d’afficher les données est importante. En effet, il serait difficile pourun opérateur <strong>de</strong> regar<strong>de</strong>r toutes les télémétries <strong>de</strong>puis le début <strong>de</strong> la mission dansun seul tableau et <strong>de</strong> s’y retrouver. C’est pourquoi le MDV intègre un systèmed’affichage où l’utilisateur sélectionne le nombre d’éléments qu’il souhaite afficherpar page (5, 20, 50, ...). Dans le cas <strong>de</strong>s données en temps réel, cet argument estlimité à 50.Le mo<strong>de</strong> historique implique que le MDV soit relié à la base <strong>de</strong> données <strong>de</strong> mission.Le MDV ira chercher les informations dans la base <strong>de</strong> données <strong>de</strong> missionselon les requêtes <strong>de</strong> l’utilisateur. Le mo<strong>de</strong> historique n’est pas dépourvu <strong>de</strong> fonctions<strong>de</strong> mises à jour : il y a un bouton permettant à l’utilisateur <strong>de</strong> mettre à jourles données historiques affichées.Afin <strong>de</strong> pouvoir supporter la fonctionnalité d’avoir les données en temps réel,le MDV est connecté au MCS. En effet, il s’inscrit auprès <strong>du</strong> serveur, comme uninternaute s’abonnant à un flux RSS, pour être averti <strong>de</strong> toutes nouvelles informationstransitant par le MCS. Les informations qui sont disponibles en temps réeldans le MDV sont les télécomman<strong>de</strong>s, les télémétries et les valeurs <strong>de</strong> toutes lesmesures à bord <strong>du</strong> satellite.Une fonctionnalité supplémentaire qui aurait pu être intégrée au MDV est unsystème <strong>de</strong> messages venant <strong>du</strong> MCS. Cette fonctionnalité peut être intéressantesi l’on souhaite que le MDV informe le client <strong>de</strong> l’état <strong>du</strong> serveur. Par exemple,informer les opérateurs que le serveur va redémarrer à telle heure ou que les informationsen temps réel ne sont plus disponibles à cause d’un problème sur leserveur. Une autre idée serait d’utiliser ce canal <strong>de</strong> communication pour afficher lelog <strong>du</strong> MCS mais <strong>du</strong> côté MDV. Le MDV serait au courant en temps réel <strong>de</strong> tousles traitements se passant dans le MCS.5.5.2 ImplémentationPour accé<strong>de</strong>r aux informations se trouvant dans la base <strong>de</strong> données <strong>de</strong> mission,l’API JDBC est utilisée. Cette bibliothèque permet d’effectuer <strong>de</strong>s opérations avecles bases <strong>de</strong> données relationnelle les plus connues. Ces opérations sont l’insertion<strong>de</strong> données, la consultation <strong>de</strong> données dans la base <strong>de</strong> données, etc.Bien que dans [8], le choix s’était fixé à utiliser le framework open source JavaHibernate permettant le mapping objet-relationnel. Java Hibernate, en bref, permetle stockage d’objets Java dans une base <strong>de</strong> données. Ce choix a été revu et


CHAPITRE 5. DÉVELOPPEMENT DU MISSION CONTROL CENTER 52s’est porté sur l’utilisation <strong>de</strong> l’API JDBC, un outil <strong>de</strong> plus bas niveau que Hibernate.L’utilisation <strong>de</strong> Java Hibernate évitait d’avoir à utiliser le Structured QueryLanguage (SQL) dans le co<strong>de</strong>. Cependant, étant la faible complexité <strong>de</strong>s requêtesSQL et sa faible présence dans le co<strong>de</strong>, il ne nous a pas semblé nécessaire d’utiliserJava Hibernate, mais le programme pourrait tout à fait intégrer dans le futurcette librairie <strong>de</strong> mapping objet-relationnel dans l’objectif que le programme soitportable vers d’autres bases <strong>de</strong> données.Une autre alternative, si l’on veut minimiser la présence <strong>de</strong> co<strong>de</strong> SQL, est <strong>de</strong>stocker <strong>de</strong>s procé<strong>du</strong>res dans la base <strong>de</strong> données. Une procé<strong>du</strong>re est un ensembled’instructions SQL pré-compilées. Dans le co<strong>de</strong> <strong>de</strong> développement <strong>de</strong> l’application,on fait appel à cette procé<strong>du</strong>re au lieu d’écrire toutes les instructions SQL faisantexactement la même chose. Cela permet d’éviter la redondance importante <strong>de</strong> co<strong>de</strong>SQL.Dans l’objectif que le MDV soit informé en temps réel <strong>de</strong>s nouvelles télécomman<strong>de</strong>senvoyées, <strong>de</strong>s nouvelles télémétries reçues et <strong>de</strong>s nouvelles valeurs <strong>de</strong>sparamètres à bord <strong>du</strong> satellite, le modèle <strong>de</strong> conception observateur/observablea été appliqué. Le MCS possè<strong>de</strong> une référence vers un objet se trouvant dans leMDV et invoquera une métho<strong>de</strong> sur cet objet lorsqu’il y a <strong>de</strong>s changements. Lamétho<strong>de</strong> <strong>de</strong> l’objet consiste, par exemple, à aller chercher sur le MCS un tableau<strong>de</strong>s 50 <strong>de</strong>rnières valeurs d’une mesure. Il y a une fonction <strong>de</strong> mise à jour spécifiquepour chaque type <strong>de</strong> données. La relation client/serveur se fait dans les <strong>de</strong>ux sens.En effet, le MCS et le MDV possè<strong>de</strong> chacun une référence vers un objet se trouvantchez l’autre.Des interfaces ont dû être définies pour permettre l’implémentation <strong>de</strong> ce mécanisme.Il a fallu définir une interface pour l’objet qui se trouve dans le MCS dontles fonctions seraient l’inscription et la désinscription <strong>de</strong> clients aux notificationsvenant <strong>du</strong> serveur. Une autre interface a dû également être définie pour l’objet setrouvant chez les clients dont les fonctions sont <strong>de</strong>s fonctions <strong>de</strong> mises à jour <strong>de</strong>sdonnées auprès <strong>du</strong> serveur.Il est clair que le nombre <strong>de</strong> notifications sera très important lors <strong>de</strong>s passes <strong>du</strong>satellite et le reste <strong>du</strong> temps, il sera nul.5.5.2.1 FonctionnementUn schéma <strong>de</strong> fonctionnement <strong>de</strong> l’outil est présenté à la figure 5.5. On peut voirque le fonctionnement <strong>du</strong> MDV peut être divisé <strong>de</strong>ux parties. La première s’occuped’afficher les informations historiques en fonction <strong>de</strong> ce que l’utilisateur choisit <strong>de</strong>voir avec le MDV, et la secon<strong>de</strong> s’occupe d’afficher les données récentes mises àjour en temps réel. La secon<strong>de</strong> partie n’est active que si l’utilisateur a ouvert unefenêtre affichant <strong>de</strong>s données en temps réel. L’étape « requêtes utilisateurs » dansle schéma reflète les sélections <strong>de</strong> données que l’utilisateur souhaite voir dans leMDV.Si une <strong>de</strong>s <strong>de</strong>ux phases <strong>de</strong> connexion (base <strong>de</strong> données <strong>de</strong> mission et MCS)échoue, le programme en informe l’utilisateur et se ferme.


CHAPITRE 5. DÉVELOPPEMENT DU MISSION CONTROL CENTER 53Figure 5.5 – Flowchart <strong>du</strong> Mission Data Viewer5.5.2.2 Interface graphiqueUne capture d’écran <strong>du</strong> Mission Data Viewer développé dans le cadre <strong>de</strong> lamission <strong>OUFTI</strong>-1 est présentée à la figure 5.6.La fenêtre principale propose six rubriques permettant la visualisation <strong>de</strong>s télécomman<strong>de</strong>s,<strong>de</strong>s télémétries et <strong>de</strong>s mesures à bord <strong>du</strong> satellite.5.5.2.3 TestIl y a <strong>de</strong>ux choses importantes à tester : la communication avec la base <strong>de</strong> donnéeset le mécanisme <strong>de</strong> notification.Les tests ont été effectués avec une base <strong>de</strong> données <strong>de</strong> type PostgreSQL. Lechoix <strong>de</strong> l’utilisation d’une base <strong>de</strong> données <strong>de</strong> ce type est expliqué au chapitresuivant.Des données fictives ont été insérées dans la base <strong>de</strong> données <strong>de</strong> mission afin <strong>de</strong>pouvoir tester le programme.Les tests se sont révélés satisfaisants tant bien au niveau <strong>de</strong>s requêtes SQL qu’auniveau <strong>de</strong> l’affichage <strong>de</strong>s données. Il est important que le MDV connaisse la struc-


CHAPITRE 5. DÉVELOPPEMENT DU MISSION CONTROL CENTER 54Figure 5.6 – Capture d’écran <strong>du</strong> Mission Data Viewerture <strong>de</strong>s tables se trouvant dans la base <strong>de</strong> données, afin <strong>de</strong> pouvoir faire lesrequêtes SQL adéquates. Les tests consistaient en la vérification que l’applicationallait bien chercher les informations dans la base <strong>de</strong> données selon les sélections<strong>de</strong>s utilisateurs. Elles portaient également sur la vérification <strong>du</strong> bon affichage <strong>de</strong>ces informations dans l’interface graphique. Toutes les informations qui peuventêtre visualisées avec le MDV ont été effectuées.Un exemple <strong>de</strong> test consistait en la visualisation <strong>de</strong>s télécomman<strong>de</strong>s stockéesdans la base <strong>de</strong> données <strong>de</strong> mission. On lance le programme, on vérifie que l’applications’est bien connectée à la base <strong>de</strong> données et s’est bien inscrite auprès<strong>du</strong> MCS. Ensuite, on clique sur la rubrique “Telecommands History” et on choisitque le nombre maximum d’éléments affiché par page est <strong>de</strong> 5. On vérifie que lesinformations affichées sont bien 5 éléments par page et qu’elles correspon<strong>de</strong>nt bienaux télécomman<strong>de</strong>s stockées dans la base <strong>de</strong> données. Afin <strong>de</strong> vérifier la correspondance<strong>de</strong>s données, on utilise l’outil pgAdmin qui permet également la visualisation<strong>de</strong>s données dans la base <strong>de</strong> données. La mise en place <strong>de</strong> la base <strong>de</strong> données <strong>de</strong>mission est abordée au chapitre 6.Il a fallu également tester le mécanisme <strong>de</strong> notification en temps réel. Pour cela, ila fallu encore implémenter une version légère MCS dont le seul rôle était <strong>de</strong> notifierle MDV, lorsqu’il y avait <strong>de</strong>s nouvelles informations transitant en son point.Les simulations consistaient en une notification à fréquence régulière au MDVet la vérification que ce <strong>de</strong>rnier allait bien chercher les données sur le MCS aprèschaque notification.Un exemple <strong>de</strong> simulation était l’envoi d’une notification toutes les cinq secon<strong>de</strong>sau MDV <strong>de</strong> la part <strong>du</strong> MCS. Toutes les cinq secon<strong>de</strong>s, le MCS ajoute uneinformation dans les tableaux reprenant les <strong>de</strong>rnières télécomman<strong>de</strong>s, les <strong>de</strong>rnièrestélémétries, etc. Afin <strong>de</strong> vérifier que le MDV se mette bien à jour, on affiche àchaque notification les tableaux <strong>de</strong>s données observées. Les tests vérifiant le bonfonctionnement et la robustesse <strong>de</strong> ce mécanisme ont été un succès.En attente <strong>du</strong> développement complet <strong>du</strong> MCS, le co<strong>de</strong> relatif à la connexionentre ce <strong>de</strong>rnier et le MDV a été placé en commentaires. Ce co<strong>de</strong> a été développéen respectant les interfaces <strong>de</strong> communication définies entre ces <strong>de</strong>ux applications.


Chapitre 6Base <strong>de</strong> données <strong>de</strong> missionCe chapitre donnera une <strong>de</strong>scription <strong>du</strong> rôle la base <strong>de</strong> données <strong>de</strong> mission dansle MCC à la section 6.1 et sa mise en place à la section 6.2.6.1 DescriptionDans le cadre d’un projet spatial tel que <strong>OUFTI</strong>-1, il est important d’avoir unsystème qui enregistre toutes les données relatives à la mission, c’est-à-dire toutesles télémétries reçues <strong>du</strong> satellite et toutes les télécomman<strong>de</strong>s envoyées par lesopérateurs.Tous les <strong>logiciel</strong>s qui doivent stocker <strong>de</strong>s informations ont un besoin communqui est la persistance <strong>de</strong>s données. Sans une persistance <strong>de</strong>s données, toutes applicationsdont les informations sont stockées dans la mémoire <strong>de</strong> ces programmessont sujettes à une perte <strong>de</strong> ces données lorsque ces applications sont coupées.Généralement, pour répondre à ce besoin, on utilise une base <strong>de</strong> données où lesinformations manipulées par les applications seront stockées. Par exemple, si uneapplication est coupée et puis relancée, elle consultera, lors <strong>de</strong> son démarrage, labase <strong>de</strong> données permettant ainsi <strong>de</strong> reprendre où elle en était avant sa coupure.Les bases <strong>de</strong> données sont également conçues pour contenir une gran<strong>de</strong> quantitéd’information.Dans le cadre <strong>du</strong> projet <strong>OUFTI</strong>-1, on utilise une base <strong>de</strong> données, appelée base<strong>de</strong> données <strong>de</strong> mission, qui contient toutes les informations propres à la mission.La base <strong>de</strong> données <strong>de</strong> mission est reliée à plusieurs éléments <strong>du</strong> MCC. En premierlieu, elle est reliée au MCS car rappelons que l’un <strong>de</strong>s rôles <strong>de</strong> ce <strong>de</strong>rnier est<strong>de</strong> stocker toutes les informations transitant en son point, les télécomman<strong>de</strong>s etles télémétries. Il est également chargé d’extraire les données contenues dans <strong>de</strong>stélémétries et les stocker dans la base <strong>de</strong> données <strong>de</strong> mission. Un exemple d’extraction<strong>de</strong> données est l’extraction <strong>de</strong>s valeurs <strong>de</strong>s paramètres à bord contenuesdans une télémétrie.Un autre lien se trouve entre le <strong>logiciel</strong> Orbitron, décrit au point 3.2.3, et labase <strong>de</strong> données. En pratique, Orbitron peut fournir les prévisions <strong>de</strong>s passes <strong>du</strong>satellite dans un fichier texte. Un mo<strong>du</strong>le développé l’an passé permet d’extraire55


CHAPITRE 6. BASE DE DONNÉES DE MISSION 56<strong>de</strong> ce fichier les informations sur les passes à venir <strong>du</strong> satellite et <strong>de</strong> les stockerdans la base <strong>de</strong> données <strong>de</strong> mission.Les informations sur les passes <strong>du</strong> satellite sont utilisées par le sche<strong>du</strong>ler pour, parexemple, afficher aux utilisateurs les informations <strong>de</strong>s passes à venir ou pour avoirle Acquisition Of Signal (AOS) d’une passe pour l’exécution d’un planning. Lesinformations sur les passes ne sont utilisées que par le sche<strong>du</strong>ler pour le momentmais il est fort probable que d’autres mo<strong>du</strong>les utiliseront ces informations. Parexemple, on pourrait développer un mo<strong>du</strong>le interdisant la communication <strong>de</strong> lastation <strong>sol</strong> vers le satellite tant que l’on ne se trouve pas dans l’une <strong>de</strong> ces passes.Le MDV et la base <strong>de</strong> données <strong>de</strong> mission sont également reliés. Le rôle principal<strong>du</strong> MDV est <strong>de</strong> permettre la visualisation aux opérateurs <strong>de</strong>s informationsstockées dans la base <strong>de</strong> données <strong>de</strong> mission. Plusieurs MDV peuvent égalementêtre connectés à la base <strong>de</strong> données.Grâce à cette base <strong>de</strong> données centralisée et à <strong>de</strong>s interfaces définies avec unepensée pour les futurs développements <strong>du</strong> projet, il sera possible <strong>de</strong> développer plusaisément <strong>de</strong>s clients web qui partageraient les mêmes fonctionnalités que le MDV.Les opérateurs pourront consulter les données relatives à la mission <strong>OUFTI</strong>-1 viaInternet.6.1.1 Système <strong>de</strong> gestion <strong>de</strong> base <strong>de</strong> donnéesIl y a plusieurs Systèmes <strong>de</strong> Gestion <strong>de</strong> Base <strong>de</strong> Données (SGBD) dont on pourraitse servir pour le projet, tels que MySQL, Oracle, PostgreSQL, SQL Server,... Étant donné les simples opérations utilisées sur la base <strong>de</strong> données lors <strong>de</strong> lamission, tous ces SGBD peuvent être utilisés. Toutefois, on a préféré également un<strong>logiciel</strong> libre, ce qui a pour effet <strong>de</strong> restreindre la liste <strong>de</strong>s SGBD qui pourraientêtre utilisés.Notre choix comme SGDB dans le cadre <strong>du</strong> projet est PostgreSQL 8.4. Il fournitun outil, nommé pgAdmin III, qui permet d’effectuer <strong>de</strong>s opérations sur les bases<strong>de</strong> données telles que l’ajout <strong>de</strong> tables, l’insertion <strong>de</strong> données, la consultation <strong>de</strong>données, etc.Il est également important que Java JDBC ait un driver lui permettant <strong>de</strong> travailleravec une base <strong>de</strong> données <strong>de</strong> type PostgreSQL ; sinon, il n’aurait pas étépossible <strong>de</strong> développer une application Java communiquant avec ce type <strong>de</strong> base<strong>de</strong> données.6.2 Structure <strong>de</strong> la base <strong>de</strong> données <strong>de</strong> missionLa structure <strong>de</strong> la base <strong>de</strong> données <strong>de</strong> mission doit être connue <strong>de</strong> tous ceux quisont en relation avec, mais tout d’abord il faut définir cette structure.Une base <strong>de</strong> données relationnelle est composée d’un ensemble <strong>de</strong> tables et <strong>de</strong>sliens entre ces tables sont possibles.Dans le cadre <strong>du</strong> projet, la structure <strong>de</strong> l’ensemble <strong>de</strong>s tables dans la base <strong>de</strong>données est simple. Il y a <strong>de</strong>ux tables pour les télécomman<strong>de</strong>s : la première stocke


CHAPITRE 6. BASE DE DONNÉES DE MISSION 57les télécomman<strong>de</strong>s <strong>de</strong> manière binaire et encodées dans leur format ConsultativeCommittee on Space Data System (CCSDS), et la secon<strong>de</strong> stocke les donnéescontenues dans les télécomman<strong>de</strong>s sous une forme où il est possible <strong>de</strong> spécifier<strong>de</strong>s critères <strong>de</strong> sélection pour retrouver une télécomman<strong>de</strong> dans la table.Pour les télémétries, il y a également <strong>de</strong>ux tables <strong>du</strong> même type que pour lestélécomman<strong>de</strong>s.Pour les mesures à bord <strong>du</strong> satellite, il y a une table pour chaque mesure. L’ensemble<strong>de</strong>s mesures se trouvant dans la base <strong>de</strong> données est basé sur la liste setrouvant dans l’annexe A.Afin <strong>de</strong> passer <strong>de</strong>s télémétries sous forme binaire à <strong>de</strong>s données qui seront, parexemple, utilisées par le MDV, le MCS traite les paquets et remplit les tables avecles données se trouvant les paquets.Par exemple, le MCS reçoit une télémétrie, décortique le paquet, trouve <strong>de</strong>svaleurs sur les mesures à bord <strong>du</strong> satellite et met à jour les tables <strong>de</strong>s mesurescorrespondantes avec les valeurs venant d’être extraites <strong>du</strong> paquet. Il sauvegar<strong>de</strong>également les informations relatives à la télémétrie dans les <strong>de</strong>ux tables qui luisont spécifiques.Un autre concept important en base <strong>de</strong> données est le concept <strong>de</strong> clé. Lors <strong>de</strong> ladéfinition d’une table, le développeur peut spécifier une clé primaire. Dans le cas<strong>de</strong>s tables <strong>de</strong>s télécomman<strong>de</strong>s et <strong>de</strong>s télémétries, la clé primaire est un i<strong>de</strong>ntifiantentier permettant d’éviter les doublons dans les tables et peut être utilisée commecritère <strong>de</strong> recherche. Chaque entrée dans les tables est associée à un i<strong>de</strong>ntifiantunique.Les valeurs <strong>de</strong>s paramètres à bord <strong>du</strong> satellite se trouvaient à l’origine dans <strong>de</strong>stélémétries. Or, il est intéressant <strong>de</strong> pouvoir connaître <strong>de</strong> quelle télémétrie provienttelle valeur pour telle mesure. Le concept <strong>de</strong> clé étrangère permet <strong>de</strong> satisfaire cebesoin. Lors <strong>de</strong> la création d’une table, une ou plusieurs colonnes d’une tablepeuvent référencer une ou plusieurs colonnes d’une autre table. Dans notre cas,il y aura une colonne dans chaque table <strong>de</strong>s mesures qui référence la colonne <strong>de</strong>si<strong>de</strong>ntifiants <strong>de</strong>s télémétries, permettant ainsi d’établir un lien entre les télémétrieset les mesures.Cette relation est utilisée lors <strong>de</strong> l’affichage <strong>de</strong>s mesures dans le MDV permettantainsi <strong>de</strong> savoir l’heure à laquelle les valeurs d’une mesure sont arrivées, puisqueque l’heure d’arrivée <strong>de</strong>s valeurs est liée à l’heure d’arrivée <strong>de</strong>s télémétries.La structure <strong>de</strong> la base <strong>de</strong> données <strong>de</strong> mission est représentée à la figure 6.1.Comme on peut le voir, la clé primaire <strong>de</strong> la table TC, ID Token, est utiliséecomme clé étrangère dans la table TC Raw. En effet, une entrée dans la table TCest un ensemble d’information constituant une télécomman<strong>de</strong> stockée dans la tableTC Raw.La table TC dans le schéma possè<strong>de</strong> différentes colonnes contenant <strong>de</strong>s informationsà propos <strong>de</strong>s télécomman<strong>de</strong>s envoyées. Ces colonnes représentent l’heured’envoi d’une télécomman<strong>de</strong>, à quelle application à bord elle s’adresse, à quel serviceelle appartient, à quel sous-service elle correspond, son évolution d’exécutionà bord <strong>du</strong> satellite, un co<strong>de</strong> d’erreur si son exécution à bord a été un échec et sesdonnées. La table TM possè<strong>de</strong> <strong>de</strong>s colonnes similaires à la table TC.


CHAPITRE 6. BASE DE DONNÉES DE MISSION 58Les tables TC Raw et TM Raw sont utilisées pour former un historique mais égalementpour <strong>de</strong>s raisons telles qu’il est possible d’avoir besoin d’autres informationsqu’on n’a pas nécessairement extraite la première fois.Chacune <strong>de</strong>s tables représentant une mesure possè<strong>de</strong> une clé étrangère qui faitréférence à la colonne <strong>de</strong>s i<strong>de</strong>ntifiants <strong>de</strong> la table TM. En effet, chaque valeurextraite pour une mesure provient d’une télémétrie. Cette relation permet donc <strong>de</strong>lier les valeurs d’une mesure avec les informations <strong>de</strong>s télémétries qui contiennentces valeurs.Il y a également une table Pass qui contient toutes les prévisions sur les passes<strong>du</strong> satellite. Celle-ci est remplie par un mo<strong>du</strong>le qui est chargé <strong>de</strong> traiter les donnéesfournies par le programme Orbitron. Orbitron génère les prévisions <strong>de</strong>s passes <strong>du</strong>satellite. Les données stockées dans cette table est la Acquisition of Signal (AoS) etla Loss of Signal (LoS) <strong>de</strong> chaque passe. Ces données sont utilisées par le sche<strong>du</strong>lerpour afficher aux opérateurs l’heure <strong>de</strong>s passes <strong>du</strong> satellite et pour exécuter lesscripts Python.


CHAPITRE 6. BASE DE DONNÉES DE MISSION 59Figure 6.1 – Structure <strong>de</strong> la base <strong>de</strong> données <strong>de</strong> mission


Chapitre 7Protocoles <strong>de</strong> communicationCe chapitre abor<strong>de</strong> les protocoles <strong>de</strong> communication utilisés entre la station <strong>sol</strong>et le satellite. La section 7.1 fait un rappel <strong>de</strong>s protocoles utilisés dans le cadre<strong>de</strong> la mission selon le modèle OSI. La section 7.2 décrit l’ensemble <strong>de</strong>s servicessélectionnés <strong>du</strong> protocole PUS pour la mission <strong>OUFTI</strong>-1.7.1 Protocoles utilisésLes protocoles utilisés dans la mission sont présentés dans le cadre <strong>du</strong> modèleOSI. Le modèle OSI est un modèle <strong>de</strong> communication standard entre les ordinateurs.Il est composé <strong>de</strong> sept couches : Application, Présentation, Session, Transport,Réseau, Liaison et Physique. Ce modèle est présenté à la table 7.1.Modèle OSIApplicationPrésentationSessionTransportRéseauLiaisonPhysiqueTable 7.1 – Modèle OSILes couches Présentation et Session peuvent être omises car les fonctionnalitésqu’elles fournissent aux applications, tels que le déchiffrage, la compression,la récupération <strong>de</strong> données, ... peuvent être implémentées dans la couche applicationou alors ne sont pas nécessaires pour la mission <strong>OUFTI</strong>-1. Le modèle OSI,ôté <strong>de</strong>s couches Présentation et Session, correspond au modèle Internet, connusous le nom <strong>de</strong> modèle TCP/IP, composé <strong>de</strong> cinq couches. Afin que les lecteursaient une idée à quelle couche appartiennent les protocoles les plus connus, <strong>de</strong>sexemples vont être donnés. Les protocoles File Transfer Protocol (FTP), Post OfficeProtocol (POP) et HyperText Transfer Protocol (HTTP) font partie <strong>de</strong> la60


CHAPITRE 7. PROTOCOLES DE COMMUNICATION 61couche Application. Les protocoles Transmission Control Protocol (TCP) et UserDatagram protocol (UDP) se trouvent à la couche Transport. Le protocole le plusconnu au niveau Réseau est le protocole Internet Protocol (IP). Les protocolesPoint-to-Point Protocol (PPP) et Ethernet font partie <strong>de</strong> la couche Liaison.Dans le cadre <strong>du</strong> projet, le modèle TCP/IP n’est pas applicable et une variante<strong>de</strong> ce modèle est utilisée. Ce modèle est composé <strong>de</strong> quatre couches : Application,Transport, Liaison et Physique. La couche Réseau est omise parce que la communicationse passe entre <strong>de</strong>ux hôtes uniquement, la station <strong>sol</strong> et le satellite ; etdonc, il n’y a pas besoin d’une couche s’occupant <strong>de</strong> la transmission <strong>de</strong> données àtravers un réseau. Cette communication entre <strong>de</strong>ux hôtes uniquement est appeléeune liaison point à point. Le modèle et les protocoles utilisés dans le cadre <strong>de</strong> lamission sont présentés à la figure 7.2.Modèle <strong>OUFTI</strong>-1ApplicationTransportLiaisonPhysiqueProtocolePacket Utilisation Standard (PUS)Space Packet Protocol (SPP)AX.25Lien RF avec le satelliteTable 7.2 – Protocoles utilisés dans le projet <strong>OUFTI</strong>-1Les choix et les <strong>de</strong>scriptions <strong>de</strong> ces protocoles se trouvent dans <strong>de</strong>s travaux <strong>de</strong>sannées précé<strong>de</strong>ntes (voir [15] et [8]).Après la brève présentation <strong>du</strong> modèle intervenant dans la communication entrela station <strong>sol</strong> et le satellite, la section suivante donnera une <strong>de</strong>scription complète<strong>de</strong>s services <strong>du</strong> protocole PUS à disposition <strong>de</strong>s opérateurs.7.2 Protocole PUSLe protocole PUS définit une interface au niveau <strong>de</strong> la couche application pourcontrôler et surveiller le satellite à partir <strong>de</strong> la station <strong>sol</strong>. Il propose un largeensemble <strong>de</strong> services afin <strong>de</strong> pouvoir satisfaire les besoins <strong>de</strong> tout type <strong>de</strong> missionspatiale. Un service est constitué d’un ensemble <strong>de</strong> télécomman<strong>de</strong>s et/ou <strong>de</strong> télémétries.Chaque service a une fonction particulière. Par exemple, un service estdédié à la gestion <strong>de</strong> la mémoire à bord <strong>du</strong> satellite, un autre à la génération <strong>de</strong>rapports contenant les valeurs <strong>de</strong>s mesures extraites à bord <strong>du</strong> satellite, etc.Bien enten<strong>du</strong>, il n’est pas nécessaire d’utiliser tous les services proposés parle protocole PUS dans le cas <strong>de</strong> la mission <strong>OUFTI</strong>-1. Le protocole PUS spécifieles règles et les structures aux utilisateurs afin que ces <strong>de</strong>rniers puissent utiliserles services <strong>du</strong> protocole dont le but est <strong>de</strong> répondre aux besoins <strong>de</strong> la mission.Les sections suivantes vont décrire généralement les services <strong>du</strong> protocole PUSsélectionnés pour la mission <strong>OUFTI</strong>-1. Ces services <strong>de</strong>vront être connus par lesopérateurs s’ils souhaitent pouvoir communiquer avec le satellite. Pour plus d’informationsur le choix <strong>de</strong>s services sélectionnés <strong>du</strong> protocole <strong>du</strong> PUS et <strong>de</strong> son


CHAPITRE 7. PROTOCOLES DE COMMUNICATION 62implémentation, voir [8] et [25]. Ces services sont les suivants :• Service <strong>de</strong> vérification <strong>de</strong> télécomman<strong>de</strong>s,• Service <strong>de</strong> génération <strong>de</strong> rapports <strong>de</strong> données,• Service <strong>de</strong> gestion <strong>de</strong> fonctions,• Service d’ordonnancement à bord <strong>du</strong> satellite.7.3 Service <strong>de</strong> vérification <strong>de</strong> télécomman<strong>de</strong>s7.3.1 DescriptionLe service <strong>de</strong> vérification <strong>de</strong> télécomman<strong>de</strong>s, appelé également service 1, permetaux opérateurs à la station <strong>sol</strong> <strong>de</strong> suivre l’évolution d’exécution d’une télécomman<strong>de</strong>,<strong>de</strong> son acceptation à bord à son exécution complète. C’est un service fondamentalà toutes les missions spatiales. Toutefois, la notification <strong>de</strong> l’évolutiond’exécution <strong>de</strong>s télécomman<strong>de</strong>s peut être désactivée. Le parcours d’une télécomman<strong>de</strong>est divisé en quatre étapes :• Acceptation : à cette étape, le processus recevant la télécomman<strong>de</strong>, effectuetoutes les vérifications sur la télécomman<strong>de</strong> avant son exécution. Les vérificationssont, par exemple, la vérification <strong>du</strong> checksum <strong>du</strong> paquet, la vérificationque le processus auquel s’adresse la télécomman<strong>de</strong> existe bel et bien, etc.• Démarrage : cette étape marque le départ <strong>de</strong> l’exécution d’une télécomman<strong>de</strong>.Généralement, cette étape s’exécute directement après la phase d’acceptation.Cependant, elle peut être retardée, à cause <strong>de</strong> vérifications, telles que la vérificationque les paramètres <strong>de</strong> la télécomman<strong>de</strong>s sont bien encodés, les valeurs<strong>de</strong>s paramètres se trouvent dans <strong>de</strong>s limites, etc.• En cours : cette étape peut être utile dans le cas <strong>de</strong> télécomman<strong>de</strong>s dont letemps d’exécution est long. Les opérateurs peuvent alors suivre l’exécution <strong>de</strong>la télécomman<strong>de</strong> via <strong>de</strong>s rapports qui sont générés et envoyés aux différentesétapes d’exécution.• Fin : exécution <strong>de</strong> la télécomman<strong>de</strong> finie.Dans le cas où l’une <strong>de</strong>s étapes est un échec, un rapport sera généré afin d’informerl’opérateur sur l’origine <strong>du</strong> problème. Les rapports d’échec sont automatiquementgénérés. Par contre, les rapports caractérisant le succès d’une étape ne sontgénérés que si l’opérateur l’a défini lors <strong>de</strong> la construction <strong>de</strong> la télécomman<strong>de</strong>.Ce service n’est constitué que <strong>de</strong> télémétries informant les opérateurs sur l’étatd’exécution <strong>de</strong>s télécomman<strong>de</strong>s reçues par le satellite. Toutefois, ces télémétriespeuvent être divisées selon les étapes d’exécution et les résultats <strong>de</strong> ces étapes ;


CHAPITRE 7. PROTOCOLES DE COMMUNICATION 63<strong>de</strong>s sous-services ont été définis afin <strong>de</strong> caractériser ces différentes télémétries.7.3.2 Sous-types <strong>du</strong> service 1Il n’y a pas télécomman<strong>de</strong>s pour ce service mais uniquement <strong>de</strong>s télémétries.Chaque sous-type d’un service représente une télécomman<strong>de</strong> ou une télémétrieaccompagnée <strong>de</strong> paramètres ou non.Liste <strong>de</strong>s sous-types <strong>du</strong> service 1 :1. Rapport d’acceptation d’une télécomman<strong>de</strong> - Succès (1, 1),2. Rapport d’acceptation d’une télécomman<strong>de</strong> - Échec (1, 2),3. Rapport <strong>de</strong> démarrage d’une télécomman<strong>de</strong> - Succès (1, 3),4. Rapport <strong>de</strong> démarrage d’une télécomman<strong>de</strong> - Échec (1, 4),5. Rapport <strong>de</strong> progression d’une télécomman<strong>de</strong> - Succès (1, 5),6. Rapport <strong>de</strong> progression d’une télécomman<strong>de</strong> - Échec (1, 6),7. Rapport <strong>de</strong> fin d’exécution d’une télécomman<strong>de</strong> - Succès (1, 7),8. Rapport <strong>de</strong> fin d’exécution d’une télécomman<strong>de</strong> - Échec (1, 8).La paire se trouvant à la fin <strong>de</strong> chaque ligne ci-<strong>de</strong>ssus représente, par son premierchiffre, le service auquel la télémétrie appartient et son second, le sous-type <strong>du</strong>service.L’ensemble <strong>de</strong> ces télémétries sont accompagnées <strong>de</strong> différents paramètres selonleur type.Toutes les télémétries, énoncées ci-<strong>de</strong>ssus, sont accompagnées <strong>de</strong> champs permettantd’i<strong>de</strong>ntifier la télécomman<strong>de</strong> en cours <strong>de</strong> traitement.Dans le cas d’un rapport d’échec, <strong>de</strong>s champs dans le paquet fournissent un co<strong>de</strong>d’erreur permettant ainsi d’i<strong>de</strong>ntifier le type <strong>de</strong> problème. Par exemple, un rapportd’échec peut signaler à l’opérateur au <strong>sol</strong> qu’il a intro<strong>du</strong>it un argument invali<strong>de</strong>dans la télécomman<strong>de</strong>.Un champ additionnel est utilisé pour informer l’opérateur <strong>de</strong> la progression <strong>de</strong>l’exécution <strong>de</strong> la télécomman<strong>de</strong> (champ indiquant à quelle étape d’exécution estla télécomman<strong>de</strong>).7.4 Service <strong>de</strong> génération <strong>de</strong> rapports <strong>de</strong> données7.4.1 DescriptionCe service, appelé également service 3, permet <strong>de</strong> collecter <strong>de</strong>s données sur l’ensemble<strong>de</strong>s paramètres à bord <strong>du</strong> satellite.Les ensembles <strong>de</strong> paramètres à mesurer sont représentés par <strong>de</strong>s définitions stockéesà bord. Ces définitions sont i<strong>de</strong>ntifiées par un Structure IDentification (SID).


CHAPITRE 7. PROTOCOLES DE COMMUNICATION 64La définition d’un SID contient donc l’ensemble <strong>de</strong>s paramètres à échantillonner, lafréquence <strong>de</strong> génération <strong>de</strong>s rapports et les fréquences d’échantillonnage <strong>de</strong> chaqueparamètre.Les rapports générés contiennent d’abord le SID suivi d’une liste <strong>de</strong> valeurs,respectant l’ordre <strong>de</strong>s paramètres se trouvant dans la définition SID. Chaque paramètrea été échantillonné selon sa fréquence d’échantillonnage contenue dans ladéfinition <strong>du</strong> SID.Tous les sous-types <strong>de</strong> ce service ne sont pas utilisés mais pourront être utilisésen cas <strong>de</strong> nécessité. Les sous-types qui ne sont pas utilisés sont, par exemple, <strong>de</strong>stélécomman<strong>de</strong>s permettant <strong>de</strong> définir, modifier et <strong>de</strong> supprimer <strong>de</strong>s SIDs <strong>du</strong>rantla mission.Dans le cas <strong>de</strong> la mission <strong>OUFTI</strong>-1, tous les SIDs et leurs définitions serontconstruits avant la mission et chargés à bord. Ces <strong>de</strong>rniers pourront être activésou désactivés <strong>du</strong>rant la mission. Il est idéal que chaque liste <strong>de</strong> paramètres dénotéepar un SID ait chacun un objectif particulier. Par exemple, il faudra définir uneliste <strong>de</strong> paramètres <strong>de</strong>stinée à surveiller l’alimentation électrique expérimentale.7.4.2 Sous-types <strong>du</strong> service 3Liste <strong>de</strong>s sous-types <strong>du</strong> service 3 :1. Activation <strong>de</strong> la génération <strong>de</strong> rapports <strong>de</strong> données (3, 5),2. Désactivation <strong>de</strong> la génération <strong>de</strong> rapports <strong>de</strong> données (3, 6),3. Rapport <strong>de</strong> données (3, 25).Les sous-types 5 et 6 ont pour paramètres une liste <strong>de</strong> SIDs à activer ou désactiver.Le sous-type 25 est une télémétrie contenant un champ SID qui permet auxopérateurs, à partir <strong>de</strong> la définition correspondant à cet SID, <strong>de</strong> déterminer quelssont les paramètres dans le paquet et un autre champ contenant la liste <strong>de</strong>s valeurs<strong>de</strong>s paramètres.7.5 Service <strong>de</strong> gestion <strong>de</strong> fonctions7.5.1 DescriptionLe service <strong>de</strong> gestion <strong>de</strong> fonctions, appelé également service 8, est utilisé pour<strong>de</strong>man<strong>de</strong>r l’exécution d’une fonction supportée par un processus à bord. Il fournitaux opérateurs un ensemble <strong>de</strong> fonctions spécifiques à la mission qui peuvent êtreexécutées par l’ensemble <strong>de</strong>s processus à bord <strong>du</strong> satellite.Un exemple <strong>de</strong> fonction est une fonction qui permet l’activation <strong>du</strong> mo<strong>de</strong> D-STAR <strong>du</strong> satellite, l’activation <strong>du</strong> système d’alimentation expérimentale, etc.Chaque fonction relative à un processus à bord possè<strong>de</strong> un i<strong>de</strong>ntifiant unique,Function ID. À partir <strong>de</strong> cet i<strong>de</strong>ntifiant, une <strong>de</strong>scription <strong>de</strong> la fonction et <strong>de</strong> sesparamètres peuvent être obtenues.


CHAPITRE 7. PROTOCOLES DE COMMUNICATION 657.5.2 Sous-types <strong>du</strong> service 8Il n’y a qu’un sous-type <strong>du</strong> service qui est utilisé :1. Exécution d’une fonction (8, 1).Cette télécomman<strong>de</strong> prend en paramètres, un i<strong>de</strong>ntifiant <strong>de</strong> fonction et les paramètresrelatifs à la fonction correspondant à cet i<strong>de</strong>ntifiant.7.6 Service d’ordonnancement à bord7.6.1 DescriptionLe service d’ordonnancement à bord, appelé également service 11, permet <strong>de</strong>planifier <strong>de</strong>s opérations à exécuter à <strong>de</strong>s moments spécifiques à bord <strong>du</strong> satellite.Cela est possible grâce à un sche<strong>du</strong>ler développé à bord contenant <strong>de</strong>s télécomman<strong>de</strong>squi seront exécutées à une date ultérieure. Ce service est très utile puisque,la majorité <strong>du</strong> temps, la station <strong>sol</strong> ne se trouvera pas dans la zone couverte parsatellite.Le service supporte différents types <strong>de</strong> télécomman<strong>de</strong>s permettant d’interagiravec le sche<strong>du</strong>ler à bord. Par exemple, l’activation <strong>du</strong> sche<strong>du</strong>ler ou sa désactivation,l’ajout et la suppression <strong>de</strong> télécomman<strong>de</strong>s planifiées, la réinitialisation <strong>du</strong>sche<strong>du</strong>ler, etc.7.6.2 Sous-types <strong>du</strong> service 11Liste <strong>de</strong>s sous-types <strong>du</strong> service 11 :1. Activation <strong>du</strong> sche<strong>du</strong>ler (11, 1),2. Désactivation <strong>du</strong> sche<strong>du</strong>ler (11, 2),3. Réinitialisation <strong>du</strong> sche<strong>du</strong>ler (11, 3),4. Insertion <strong>de</strong> télécomman<strong>de</strong>s (11, 4),5. Suppression <strong>de</strong> télécomman<strong>de</strong>s (11, 5),6. Suppression <strong>de</strong> télécomman<strong>de</strong>s sur une pério<strong>de</strong> <strong>de</strong> temps (11, 6),7. Rapport reprenant les télécomman<strong>de</strong>s planifiées à bord (11, 13),8. Deman<strong>de</strong> <strong>de</strong> rapport reprenant les télécomman<strong>de</strong>s planifiées à bord (11, 17).Les télécomman<strong>de</strong>s <strong>de</strong> type 1, 2 et 3 n’ont aucun paramètre.Les télécomman<strong>de</strong>s <strong>de</strong> type 4, à la base, permettait l’insertion d’un ensemble <strong>de</strong>télécomman<strong>de</strong>s à exécuter à bord. Cependant, ce sous-type a été modifié à cause<strong>de</strong> contraintes techniques au niveau <strong>du</strong> sche<strong>du</strong>ler à bord <strong>du</strong> satellite et ne permetfinalement que d’insérer une télécomman<strong>de</strong> à la fois.


CHAPITRE 7. PROTOCOLES DE COMMUNICATION 66Les télécomman<strong>de</strong>s <strong>de</strong> type 5 ont en paramètre la paire (APID, Sequence Count)qui i<strong>de</strong>ntifie une télécomman<strong>de</strong> dans la file d’attente <strong>du</strong> sche<strong>du</strong>ler et un entier représentantle nombre <strong>de</strong> télécomman<strong>de</strong>s à supprimer à partir <strong>de</strong> la télécomman<strong>de</strong>i<strong>de</strong>ntifiée par la paire (APID, Sequence Count). APID a pour signification ApplicationProcess I<strong>de</strong>ntifier et correspond à un processus à bord <strong>du</strong> satellite.Les télécomman<strong>de</strong>s <strong>de</strong> type 6 permet <strong>de</strong> supprimer <strong>de</strong>s télécomman<strong>de</strong>s sur unepério<strong>de</strong> <strong>de</strong> temps. Elle prend en argument un entier, qu’on appelle “portée”, et<strong>de</strong>ux autres paramètres qui sont <strong>de</strong>s dates. Ces champs, appelons les t 1 et t 2 , sontoptionnels en fonction <strong>de</strong> la valeur <strong>du</strong> champ “portée”. Les différentes valeurs <strong>du</strong>premier argument ont les significations suivantes :• 0 = Suppression <strong>de</strong> toutes les télécomman<strong>de</strong>s contenues dans le sche<strong>du</strong>ler àbord,• 1 = Suppression <strong>de</strong>s télécomman<strong>de</strong>s dont les dates d’exécution se trouvententre t 1 et t 2 ,• 2 = Suppression <strong>de</strong>s télécomman<strong>de</strong>s dont les dates d’exécution se trouventavant t 1 ,• 3 = Suppression <strong>de</strong>s télécomman<strong>de</strong>s dont les dates d’exécution se trouventaprès t 1 .Comme on peut le constater, les champs t 1 et t 2 sont parfois optionnels selon lavaleur <strong>du</strong> champ “portée”.La télécomman<strong>de</strong> <strong>de</strong> type 17 ne prend aucun argument. La télémétrie <strong>de</strong> type 13est la réponse à la télécomman<strong>de</strong> <strong>de</strong> type 17 : elle contient le nombre <strong>de</strong> télécomman<strong>de</strong>splanifiées à bord <strong>du</strong> satellite, leurs dates d’exécution et les paires (APID,Sequence Count) les i<strong>de</strong>ntifiant.7.7 RésuméLe tableau 7.3 est un tableau récapitulatif <strong>de</strong>s télécomman<strong>de</strong>s et <strong>de</strong>s télémétriesfaisant partie <strong>de</strong>s quatre services décrits dans les sections précé<strong>de</strong>ntes. Ces quatreservices ont été sélectionnés afin <strong>de</strong> répondre à tous les besoins essentiels <strong>de</strong> lamission <strong>OUFTI</strong>-1. Si ces besoins évoluent, il faudra ajouter <strong>de</strong>s services supplémentairesafin <strong>de</strong> satisfaire ces besoins.


CHAPITRE 7. PROTOCOLES DE COMMUNICATION 67Type et Sous-Type TC/TM Nom(1, 1) TM Rapport d’acceptation d’une télécomman<strong>de</strong> - Succès(1, 2) TM Rapport d’acceptation d’une télécomman<strong>de</strong> - Échec(1, 3) TM Rapport <strong>de</strong> démarrage d’une télécomman<strong>de</strong> - Succès(1, 4) TM Rapport <strong>de</strong> démarrage d’une télécomman<strong>de</strong> - Échec(1, 5) TM Rapport <strong>de</strong> progression d’une télécomman<strong>de</strong> - Succès(1, 6) TM Rapport <strong>de</strong> progression d’une télécomman<strong>de</strong> - Échec(1, 7) TM Rapport <strong>de</strong> fin d’exécution d’une télécomman<strong>de</strong> - Succès(1, 8) TM Rapport <strong>de</strong> fin d’exécution d’une télécomman<strong>de</strong> - Échec(3, 5) TC Activation <strong>de</strong> la génération <strong>de</strong> rapports <strong>de</strong> données(3, 6) TC Désactivation <strong>de</strong> la génération <strong>de</strong> rapports <strong>de</strong> données(3, 25) TM Rapport <strong>de</strong> données(8, 1) TC Exécution d’une fonction(11, 1) TC Activation <strong>du</strong> sche<strong>du</strong>ler à bord(11, 2) TC Désactivation <strong>du</strong> sche<strong>du</strong>ler à bord(11, 3) TC Réinitialisation <strong>du</strong> sche<strong>du</strong>ler à bord(11, 4) TC Insertion <strong>de</strong> télécomman<strong>de</strong>s(11, 5) TC Suppression <strong>de</strong> télécomman<strong>de</strong>s(11, 6) TC Suppression <strong>de</strong> télécomman<strong>de</strong>s sur une pério<strong>de</strong> <strong>de</strong> temps(11, 13) TM Rapport reprenant les télécomman<strong>de</strong>s planifiées à bord(11, 17) TC Deman<strong>de</strong> <strong>de</strong> rapport <strong>de</strong>s télécomman<strong>de</strong>s planifiéesTable 7.3 – Tableau récapitulatif <strong>de</strong>s télécomman<strong>de</strong>s et télémétries <strong>de</strong> la mission <strong>OUFTI</strong>-1


Chapitre 8Activités <strong>du</strong> projet <strong>OUFTI</strong>-18.1 Interface Technical ReviewUne Interface Technical Review (ITR) est un document qui porte sur les interfacesentre les différents sous-systèmes et blocs fonctionnels d’un projet. En effet,dans <strong>de</strong>s projets <strong>de</strong> gran<strong>de</strong> envergure, tels que <strong>OUFTI</strong>-1, il est important <strong>de</strong> définirles interfaces entre les différents sous-systèmes afin <strong>de</strong> faciliter le travail futur etcela permet également <strong>de</strong> connaître le statut d’avancement global <strong>du</strong> projet.Durant cette année académique, chaque étudiant a dû élaborer un document appeléData Package qui décrit son sous-système et les différentes interfaces qu’il peutavoir avec d’autres sous-systèmes. Après avoir fourni ces documents, l’équipe système<strong>OUFTI</strong>-1 et <strong>de</strong>s personnes extérieures venant <strong>du</strong> domaine spatial ont analyséces documents pour faire ressortir les divergences entre les différentes interfaces.Durant un week-end, toute l’équipe s’est réunie à l’Eurospace Center à Re<strong>du</strong>pour résoudre toutes les divergences détectées dans les interfaces.8.2 PrésentationsDurant cette année académique, l’équipe <strong>OUFTI</strong>-1 a fait plusieurs présentationset a participé à <strong>de</strong>s conférences.Par exemple, l’équipe a participé au forum Union Radio-Scientifique Internationale(URSI) qui a eu lieu à Bruxelles au mois <strong>de</strong> mai. Cette participation a impliquéla rédaction <strong>de</strong> résumés sur une partie <strong>du</strong> sous-système dont chaque membre <strong>de</strong>l’équipe est responsable. Ensuite, ces résumés ont été lus par un jury. Après avoirété sélectionnés, <strong>de</strong>s posters ont été préparés pour cet évènement.Durant l’année académique, chaque étudiant a présenté son sous-système à toutel’équipe afin que chaque membre prenne connaissance <strong>du</strong> rôle <strong>de</strong> chaque soussystèmedans le projet et d’acquérir un peu <strong>de</strong> connaissance dans un autre domaineque leur domaine respectif.68


Chapitre 9Conclusion et développementsfuturs9.1 ConclusionCe travail <strong>de</strong> fin d’étu<strong>de</strong>s porte sur le développement <strong>du</strong> MCC <strong>de</strong> la station <strong>sol</strong><strong>du</strong> projet <strong>OUFTI</strong>-1.Une analyse <strong>de</strong>s besoins a été réalisée afin d’i<strong>de</strong>ntifier les éléments faisant partie<strong>du</strong> MCC. Ces différents éléments permettent <strong>de</strong> satisfaire <strong>de</strong>s besoins tels quel’automatisation <strong>de</strong> la station <strong>sol</strong>, la sauvegar<strong>de</strong> <strong>de</strong> toutes les données relatives à lamission, l’envoi et la réception <strong>de</strong> données au satellite, etc. Il a fallu également fixerl’architecture <strong>du</strong> MCC avec une pensée aux développements futurs. Par exemple,il sera intéressant <strong>de</strong> pouvoir développer <strong>de</strong>s clients web permettant <strong>de</strong> voir lesdonnées relatives au satellite.L’ensemble <strong>de</strong>s <strong>logiciel</strong>s développés dans le cadre <strong>de</strong> ce travail <strong>de</strong> fin d’étu<strong>de</strong>s estune base <strong>sol</strong>i<strong>de</strong> pour la suite <strong>du</strong> projet. Même si <strong>de</strong>s détails spécifiques à la missionsont encore inconnus et ont donc eu un impact sur le développement <strong>de</strong>s <strong>logiciel</strong>s,ces <strong>de</strong>rniers ont été développés <strong>de</strong> façon mo<strong>du</strong>laire afin que les changements futurspossibles seront facilement intégrés.Une autre face d’un projet comme <strong>OUFTI</strong>-1 est le travail en équipe. En effet, il afallu également penser aux interactions avec les autres sous-systèmes. Des réunionsavec d’autres personnes responsables d’autres sous-systèmes ont été nécessaires afin<strong>de</strong> prendre conscience <strong>de</strong> possibles contraintes mais principalement pour définir lesinterfaces entre ces sous-systèmes. Dans le cadre <strong>du</strong> travail <strong>de</strong> fin d’étu<strong>de</strong>s présent,il a été nécessaire <strong>de</strong> définir <strong>de</strong>s interfaces avec le sous-système TC/TM.Le nombre d’applications développées dans le cadre <strong>de</strong> ce travail <strong>de</strong> fin d’étu<strong>de</strong>sest <strong>de</strong> cinq. Le lien où sont disponibles le co<strong>de</strong> source et le nombre total <strong>de</strong> lignes<strong>de</strong> co<strong>de</strong> <strong>de</strong> ces <strong>logiciel</strong>s se trouvent dans l’annexe C.Le projet <strong>OUFTI</strong>-1 est à sa troisième année <strong>de</strong> développement avec quatorzeétudiants, chacun responsable d’un sous-système <strong>du</strong> satellite. Même si le projetn’est pas encore opérationnel, <strong>de</strong>s étudiants sont déjà intéressés <strong>de</strong> travailler surce projet dans le cadre <strong>de</strong> leur travail <strong>de</strong> fin d’étu<strong>de</strong>s.Au final, ce travail <strong>de</strong> fin d’étu<strong>de</strong>s m’a permis d’acquérir <strong>de</strong>s connaissances sur69


CHAPITRE 9. CONCLUSION ET DÉVELOPPEMENTS FUTURS 70les éléments composant une station <strong>sol</strong> dans le cadre d’une mission spatiale maiségalement d’agrandir mon expérience pratique en ré<strong>sol</strong>vant <strong>de</strong>s problèmes et enapprenant <strong>de</strong> nouvelles techniques.9.2 Idées pour les futurs développementsUne idée serait <strong>de</strong> développer <strong>de</strong>s clients web qui auraient les mêmes fonctionnalitésque le MDV. Les opérateurs pourraient donc passer par Internet pour voirles données relatives au satellite.Le projet <strong>OUFTI</strong>-1 possè<strong>de</strong> une autre station <strong>sol</strong> se trouvant à Re<strong>du</strong> qu’onappelle station backup. Il serait intéressant <strong>de</strong> mettre en place un système quigérerait ces <strong>de</strong>ux stations. Les rôles <strong>de</strong> ce système seraient les suivants :1. Assurer la coordination entre les <strong>de</strong>ux stations,2. Sécuriser les données en créant une redondance <strong>de</strong>s données dans les <strong>de</strong>uxstations.Le premier rôle serait <strong>de</strong> s’assurer que les <strong>de</strong>ux stations ne communiquent pasen même temps avec le satellite.Le second rôle serait une sécurisation <strong>de</strong>s données relatives à la mission en créantune redondance <strong>de</strong>s données dans les bases <strong>de</strong> données <strong>de</strong>s <strong>de</strong>ux stations. Parconséquent, lorsqu’une station reçoit <strong>de</strong>s informations <strong>du</strong> satellite, elle doit envoyerces informations à l’autre station. Un lien sera établi entre les <strong>de</strong>ux stations.Comme mentionné à la section précé<strong>de</strong>nte, <strong>de</strong>s données n’étaient précisémentdéfinies lors <strong>de</strong> l’écriture <strong>de</strong> ce document, telles qu’une liste exhaustive <strong>de</strong>s mesuresà bord, une liste <strong>de</strong>s SIDs pour la mission, etc. Cela aura une répercussion mineuresur la base <strong>de</strong> données <strong>de</strong> mission et également sur le MDV. En effet, il faudramettre à jour la liste <strong>de</strong>s mesures qui peuvent être consultées et les tables <strong>de</strong> labase <strong>de</strong> données <strong>de</strong> mission.Une fois les SIDs définis, on pourrait également intégrer un mo<strong>du</strong>le supplémentaire<strong>de</strong> visualisation <strong>de</strong> données en fonction <strong>de</strong>s SIDs dans le MDV.Au final, la tâche la plus importante sera la phase <strong>de</strong> test après développement<strong>de</strong> tous les éléments au niveau <strong>de</strong> la station <strong>sol</strong> et après imbrication avec les autressous-systèmes. L’objectif <strong>de</strong> cette étape est <strong>de</strong> déceler les mauvais comportements<strong>de</strong> la station <strong>sol</strong> dans différentes situations. Une énorme quantité <strong>de</strong> temps <strong>de</strong>vraêtre réservée à cette phase afin <strong>de</strong> favoriser les chances <strong>de</strong> succès <strong>du</strong> projet.


Bibliographie[1] G. Al<strong>de</strong>r. The JGraph Tutorial. JGraph Ltd, 2003.[2] T. A. Banh. Cryptographie et sécurité informatique. Université <strong>de</strong> Liège,2008.[3] M. Baron. Java pour le développement <strong>de</strong> clients lourds - Visualisation d’informations: JTree, JTable et JGraph, Janvier 2009.[4] V. Beukelaers. From Mission Analysis to Space Flight Simulation of <strong>OUFTI</strong>-1Nanosatellite. Master’s thesis, Université <strong>de</strong> Liège, Juin 2009.[5] B. Boigelot. Programmation orientée-objet. Université <strong>de</strong> Liège, 2006.[6] B. Boigelot. Ingénierie <strong>du</strong> <strong>logiciel</strong> orienté-objet. Université <strong>de</strong> Liège, 2008.[7] D. Bosanac. Job sche<strong>du</strong>ling in java. http://oreilly.com/pub/a/java/archive/quartz.html.[8] L. Chiarello. Design and implementation of the control and monitoring systemfor the ground station of nanosatellite <strong>OUFTI</strong>-1 of the University of Liège.Master’s thesis, Université <strong>de</strong> Liège, Juin 2009.[9] B. Cosandier and F. George. The TM & TC Packet Definition. Technicalreport, Ecole Polytechnique Fédérale <strong>de</strong> Lausanne (EPFL), Octobre 2008.[10] L. Danichert. Prise en main <strong>de</strong> PostgreSQL avec pgAdmin III. http://postgresql.<strong>de</strong>veloppez.com/articles/pg<strong>de</strong>butants/.[11] H. Etiévant. Expressions régulières en Java avec l’API Regex, Août 2004.[12] S. Galli. Mission Design for the CubeSat <strong>OUFTI</strong>-1. Master’s thesis, Université<strong>de</strong> Liège, Juin 2008.[13] F. George. SwissCube Ground Segment Software. Présentation à l’ESOC,Août 2008.[14] D. Grimshaw. RMI Intro<strong>du</strong>ction. http://www.ryerson.ca/~dgrimsha/courses/cps841/RMIIntro.html.[15] L. Hallbach. <strong>OUFTI</strong>-1 Mission and System <strong>de</strong>finition, Ver 2.0, Février 2009.[16] C. Jollivet and I. Calapo<strong>de</strong>scu. La FAQ JDBC. http://java.<strong>de</strong>veloppez.com/faq/jdbc/, Août 2004.[17] J. Juneau, J. Baker, V. Ng, L. Soto, and F. Wierzbicki. The Definitive Gui<strong>de</strong>to Jython. http://jythonpodcast.hostjava.net/jythonbook/en/1.0/,Mars 2010.71


BIBLIOGRAPHIE 72[18] R. Krpoun, M. Nova, and N. Schei<strong>de</strong>gger. Mission, Space and Ground SystemDescription. Technical report, Ecole Polytechnique Fédérale <strong>de</strong> Lausanne(EPFL), Juin 2006.[19] S. Lee, A. Hutputanasin, A. Toorian, W. Lan, and R. Munakata. CubesatDesign Specification, REV.11. Technical report, California Polytechnic StateUniversity, Février 2008.[20] P. Loveall. D-STAR Uncovered.[21] Sun Microsystems. Designing a Swing GUI in Netbeans IDE. http://netbeans.org/kb/docs/java/quickstart-gui.html.[22] Sun Microsystems. Java Remote Method Invocation (Java RMI). http://java.sun.com/javase/6/docs/technotes/gui<strong>de</strong>s/rmi/.[23] Sun Microsystems. The Java Tutorials. http://java.sun.com/docs/books/tutorial/.[24] Sun Microsystems. The Swing Tutorial. http://java.sun.com/docs/books/tutorial/uiswing/.[25] J.-Y. Nicolas. Implémentation <strong>du</strong> protocole PUS au <strong>sol</strong> et à bord <strong>du</strong> satellite.Master’s thesis, Université <strong>de</strong> Liège, 2009.[26] M. Noca, G. Roethlisberger, F. Jordan, N. Schei<strong>de</strong>gger, T. Choueiri,B. Consandier, F. George, M. Dumont, and R. Krpoun. Project, Mission,Space and Ground System Overview. Technical report, Ecole PolytechniqueFédérale <strong>de</strong> Lausanne (EPFL), Août 2007.[27] L. Questiaux. Design and implementation of radio frequency equipment ofstu<strong>de</strong>nt nanosatellite <strong>OUFTI</strong>-1. Master’s thesis, University of Liège, 2009.[28] A. Shah and M. Willms. Ground Station Operations. Présentation à l’ESOC,2009.[29] ECSS-E-79-41A Space engineering. Ground systems and operations - Telemetryand telecommand packet utilization. ESA, January 2003.[30] S. Stoff. Orbitron. http://www.stoff.pl.[31] G. Swinnen. Apprendre à programmer avec Python, 2005.[32] D. Teney. Design and implementation of on-board processor and softwareof stu<strong>de</strong>nt nanosatellite <strong>OUFTI</strong>-1. Master’s thesis, Université <strong>de</strong> Liège, Juin2009.[33] A. Verhey<strong>de</strong>n. PROBA 2 Ground Segment, Mars 2008.[34] Jack Taylor William A. Beech, Douglas E. Nielsen. AX.25 Link Access Protocolfor Amateur Packet Radio. Technical report, Tucson Amateur PacketRadio Coroporation, Juillet 1998.[35] P. Wolper. Bases <strong>de</strong> données (organisation générale). Université <strong>de</strong> Liège,2007.


Annexes73


Annexe AListe <strong>de</strong>s mesures à bord <strong>de</strong><strong>OUFTI</strong>-1Le tableau ci-<strong>de</strong>ssous présente la liste <strong>de</strong>s mesures à bord <strong>de</strong> <strong>OUFTI</strong>-1. Ce tableauest extrait <strong>du</strong> wiki <strong>du</strong> projet <strong>OUFTI</strong>-1.74


ANNEXE A. LISTE DES MESURES À BORD DE <strong>OUFTI</strong>-1 75I<strong>de</strong>ntifiant Nom TypeSystème alimentation électrique (EPS)I_SC1 Courant cellule <strong>sol</strong>aire 1 CourantI_SC2 Courant cellule <strong>sol</strong>aire 2 CourantI_SC3 Courant cellule <strong>sol</strong>aire 3 CourantI_SC4 Courant cellule <strong>sol</strong>aire 4 CourantI_SC5 Courant cellule <strong>sol</strong>aire 5 CourantI_SCT Courant cellule <strong>sol</strong>aire total CourantT_BAT Température batteries TempératureT_EPS Température <strong>de</strong>s transistors <strong>de</strong>s batteries CourantV_BAT1 Tension <strong>de</strong>s batteries VoltageV_BAT2 Tension <strong>de</strong>s batteries (redondance) VoltageT_7.0 Température convertisseur 7V TempératureV_3.3 Voltage <strong>du</strong> bus 3.3V VoltageV_5.0 Voltage <strong>du</strong> bus 5.0V (OBC1) VoltageV_7.2 Voltage <strong>du</strong> bus 7.2V (COM/BCN) VoltageT_F1 Température face 1 TempératureT_F2 Température face 2 TempératureT_F3 Température face 3 TempératureT_F4 Température face 4 TempératureT_F5 Température face 5 TempératureT_F6 Température face 6 TempératureSystème <strong>de</strong> télécommunication (COM)I_COM3.3 Courant 3.3V CourantI_COM7.2 Courant 7.2V (COM) CourantI_BCN7.2 Courant 7.2V (BCN) CourantT_COM7.2 Température amplificateur (COM) TempératureT_BCN7.2 Température amplification (BCN) TempératureTOS1_COM COM TOS (1) -TOS2_COM COM TOS (2) -Système alimentation électrique expérimentale (EPS2)V_OUT_EPS2 Tension convertisseur VoltageI_OUT_EPS2 Courant invertisseur CourantV_DIG_EPS2 Tension circuit digital VoltageI_DIG_EPS2 Courant circuit digital CourantT_FLY_EPS2 Température convertisseur TempératureT_DIG_EPS2 Température circuit digital TempératureI_BCN3.3 Courant 3.3V (BCN) CourantOrdinateur <strong>de</strong> bord (OBC)T_OBC Température <strong>du</strong> MSP 430 F1611 TempératureTable A.1 – Liste <strong>de</strong>s mesures à bord <strong>de</strong> <strong>OUFTI</strong>-1


Annexe BDiagramme <strong>logiciel</strong> statiqueB.1 Sche<strong>du</strong>lerFigure B.1 – Diagramme <strong>logiciel</strong> statique <strong>du</strong> sche<strong>du</strong>ler76


ANNEXE B. DIAGRAMME LOGICIEL STATIQUE 77B.2 Outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong>sFigure B.2 – Diagramme <strong>logiciel</strong> statique <strong>de</strong> l’outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong>s


ANNEXE B. DIAGRAMME LOGICIEL STATIQUE 78B.3 Outil <strong>de</strong> planificationFigure B.3 – Diagramme <strong>logiciel</strong> statique <strong>de</strong> l’outil <strong>de</strong> planification


ANNEXE B. DIAGRAMME LOGICIEL STATIQUE 79B.4 Mission Data ViewerFigure B.4 – Diagramme <strong>logiciel</strong> statique <strong>du</strong> Mission Data Viewer


Annexe CCo<strong>de</strong> sourceLe co<strong>de</strong> source développé pour ce travail <strong>de</strong> fin d’étu<strong>de</strong>s est disponible à l’adressesuivante :http://www.stu<strong>de</strong>nt.montefiore.ulg.ac.be/~nnguyen/tfe/Afin <strong>de</strong> mesurer la taille <strong>de</strong>s <strong>logiciel</strong>s développés, le nombre <strong>de</strong> lignes <strong>de</strong> co<strong>de</strong>source est utilisé. Le calcul <strong>du</strong> nombre <strong>de</strong> lignes <strong>de</strong> co<strong>de</strong> source est réalisé à l’ai<strong>de</strong><strong>du</strong> <strong>logiciel</strong> LocMetrics. Deux nombres sont donnés, le premier (non filtré) représentesimplement la somme <strong>de</strong>s lignes dans chaque fichier, tandis que le second(filtré) représente le nombre total <strong>de</strong> lignes dans chaque fichier en n’incluant pasles lignes <strong>de</strong> types suivants :• lignes vi<strong>de</strong>s,• lignes avec que <strong>de</strong>s commentaires.Les résultats sont représentés dans le tableau C.1.Totalnon filtré 22408filtré 13839Table C.1 – Nombre <strong>de</strong> lignes <strong>de</strong> co<strong>de</strong> source.80


Table <strong>de</strong>s figures2.1 CubeSat typique en orbite (source : AAU CubeSat site web officiel) 62.2 Poly Picosatellite Orbital Deployer (source : [19]) . . . . . . . . . . 62.3 Dessin <strong>du</strong> CubeSat avec ses interrupteurs <strong>de</strong> déploiement et les ressorts<strong>de</strong> séparation (source : [19]) . . . . . . . . . . . . . . . . . . . 73.1 Vue générale <strong>de</strong> la station <strong>sol</strong> . . . . . . . . . . . . . . . . . . . . . 133.2 Architecture <strong>du</strong> GS (source [8]). . . . . . . . . . . . . . . . . . . . . 143.3 Captures d’écran <strong>de</strong> Orbitron, WispDDE et ARSWIN . . . . . . . . 163.4 Traces <strong>de</strong> l’orbite <strong>OUFTI</strong>-1 <strong>du</strong>rant 12 heures (source :[12]) . . . . . 174.1 Schéma conceptuel d’un planning . . . . . . . . . . . . . . . . . . . 214.2 Schéma planning <strong>de</strong> l’équipe SwissCube . . . . . . . . . . . . . . . . 254.3 Flowchart <strong>du</strong> sche<strong>du</strong>ler . . . . . . . . . . . . . . . . . . . . . . . . . 284.4 Capture d’écran <strong>du</strong> sche<strong>du</strong>ler . . . . . . . . . . . . . . . . . . . . . 294.5 Flowchart <strong>de</strong> la génération <strong>de</strong> co<strong>de</strong> . . . . . . . . . . . . . . . . . . 334.6 Flowchart <strong>du</strong> chargement d’un fichier source . . . . . . . . . . . . . 364.7 Capture d’écran <strong>de</strong> la fenêtre principale <strong>de</strong> l’outil <strong>de</strong> planification . 375.1 Architecture <strong>du</strong> Mission Control Center . . . . . . . . . . . . . . . . 415.2 Exemple d’une application utilisant Java RMI . . . . . . . . . . . . 445.3 Flowchart <strong>de</strong> l’outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong>s . . . . . . . . 495.4 Capture d’écran <strong>de</strong> l’outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong>s . . . . 505.5 Flowchart <strong>du</strong> Mission Data Viewer . . . . . . . . . . . . . . . . . . 535.6 Capture d’écran <strong>du</strong> Mission Data Viewer . . . . . . . . . . . . . . . 546.1 Structure <strong>de</strong> la base <strong>de</strong> données <strong>de</strong> mission . . . . . . . . . . . . . . 59B.1 Diagramme <strong>logiciel</strong> statique <strong>du</strong> sche<strong>du</strong>ler . . . . . . . . . . . . . . . 76B.2 Diagramme <strong>logiciel</strong> statique <strong>de</strong> l’outil d’envoi manuel <strong>de</strong> télécomman<strong>de</strong>s. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77B.3 Diagramme <strong>logiciel</strong> statique <strong>de</strong> l’outil <strong>de</strong> planification . . . . . . . . 78B.4 Diagramme <strong>logiciel</strong> statique <strong>du</strong> Mission Data Viewer . . . . . . . . 7981


Liste <strong>de</strong>s tableaux2.1 Classification <strong>de</strong>s familles <strong>de</strong> petits satellites . . . . . . . . . . . . . 57.1 Modèle OSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607.2 Protocoles utilisés dans le projet <strong>OUFTI</strong>-1 . . . . . . . . . . . . . . 617.3 Tableau récapitulatif <strong>de</strong>s télécomman<strong>de</strong>s et télémétries <strong>de</strong> la mission<strong>OUFTI</strong>-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67A.1 Liste <strong>de</strong>s mesures à bord <strong>de</strong> <strong>OUFTI</strong>-1 . . . . . . . . . . . . . . . . . 75C.1 Nombre <strong>de</strong> lignes <strong>de</strong> co<strong>de</strong> source. . . . . . . . . . . . . . . . . . . . 8082

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!