Fermer

janvier 9, 2022

Les ingénieurs logiciels sont l'épine dorsale de la technologie spatiale – c'est ce qu'ils font



Lorsque nous pensons à l'exploration spatiale, nous avons tendance à penser aux astronautes, aux fusées ou à la Station spatiale internationale. Peut-être pensons-nous aussi à une équipe d'experts assis dans le bureau d'une agence spatiale chinoise ou américaineéclatant de joie alors qu'ils réussissent à faire atterrir un nouveau rover sur Mars.[19659002]Ce que nous avons tendance à manquer, ce sont toutes les personnes qui écrivent le logiciel qui maintient les satellites en orbite et les fusées sur la bonne voie. Un grand nombre de personnes passent au crible les données des capteurs satellites ou simulent des lancements de fusées avant qu'ils n'aient lieu. Eux aussi font de la science des fusées. Mais il est moins intuitif de les considérer comme tels.

De nombreuses images que nous voyons dans les médias montrent des équipes d'experts se félicitant ou des rovers et des fusées cool croisant dans l'espace extra-atmosphérique. Ils satisfont notre curiosité humaine et notre soif éternelle de franchir de nouvelles frontières et d'élargir nos horizons. En même temps, ces types d'histoires rendent les choses assez simples. Tout le monde peut apprécier le fait que l'humanité a posé quelques rovers sur Mars. D'un autre côté, il faut beaucoup d'expertise pour comprendre comment ce rover est construit, ce qu'il faut pour le diriger et quelles technologies le rendent apte à la vie sur Mars.

Beaucoup de gens veulent en savoir plus sur l'espace. Ils veulent savoir à quoi cela ressemble et ce que l'humanité fait pour l'explorer. Mais sans connaissances détaillées, il est difficile de comprendre comment fonctionne réellement la technologie spatiale.

C'est là qu'être ingénieur logiciel aide. Même si vous n'en savez pas trop sur la physique ou sur les matériaux des fusées, les codeurs peuvent comprendre quels types de technologies logicielles sont utilisées dans l'espace et pourquoi.

Bien que la NASA rende une grande partie de son code public. , il est difficile de trouver des détails sur les activités quotidiennes d'un ingénieur logiciel pour la technologie spatiale. Quelques histoires sont cependant disponibles sur les projets d'Elon Musk. Considérant que travailler chez SpaceX ou Starlink est le rêve de beaucoup d'un ingénieur, ce sera mon objectif ici.

Starlink, où les satellites calculent leurs propres routes

En 1945, lorsque l'écrivain de science-fiction Arthur C. Clarke fut proposé la télévision par satellitecela ressemblait à une chimère. Même si cela a pris trois décennies, cette technologie est finalement devenue réalité. De nos jours, beaucoup de gens ont des récepteurs satellites sur leurs toits et n'y pensent pas. Le principal avantage des satellites par rapport au câble est qu'ils peuvent atteindre les zones rurales, ce qui ne serait pas rentable avec des câbles très longs.

De la même manière, Internet par satellite ressemble toujours à une chimère pour beaucoup de gens. Mais la demande est là : Un Américain rural sur quatre pense que son manque d'accès à Internet haut débit est un problème majeur. Un accès Internet irrégulier est également un problème pour les objets en mouvement comme les trains, les jets et les navires. Quiconque a essayé d'utiliser le WiFi lors d'un voyage peut en témoigner.

Ces problèmes pourraient cependant être résolus bientôt. Starlink, une spin-off du pionnier des fusées du secteur privé SpaceX, jette les bases d'un accès Internet plus étendu. Annoncé pour la première fois en 2015, Starlink Internet est déjà disponible dans de nombreuses régions des États-Unis aujourd'hui.

Pour s'assurer qu'Internet n'est pas trop lent, les satellites doivent être assez proches de la Terre. Pour cette raison, ils ne restent au-dessus que quelques minutes à la fois. Ainsi, les antennes au sol avec lesquelles ils communiquent doivent changer très souvent de satellite avec lequel ils parlent. Et le réseau satellitaire doit être suffisamment dense pour fournir aux antennes un signal à un instant donné.

Le réseau se compose de centaines de satellites ; de nouveaux sont constamment ajoutés et les anciens remplacés. En conséquence, le responsable du logiciel Starlink Andy Bohn dit que l'équipe n'a pas le temps de placer chaque satellite sur sa propre orbite désignée. Au lieu de cela, chaque satellite Starlink navigue lui-même. Pour gérer les conditions de trafic intense, le réseau côté Terre donne à chaque satellite un endroit où être, et le satellite se dirige lui-même vers sa place.

Ce processus nécessite un énorme effort de calcul. Premièrement, les satellites ne risquent pas seulement de se heurter. Ils peuvent également entrer en collision avec des avions et autres satellites en orbite basse. Les satellites Starlink sont déjà impliqués dans la moitié des quasi-collisions dans l'espace où deux objets se rapprochent à moins d'un kilomètre (0,6 mille) l'un de l'autre, ce risque est donc réel.

Deuxièmement, la possibilité de l'interférence contribue aux exigences de calcul massives. Lorsque les signaux de deux satellites se chevauchent, ils peuvent se déformer, voire s'annuler. Pour éviter les interférences, il faut placer les signaux dans des bandes de fréquences légèrement différentes. Mais ce n'est pas aussi facile qu'il y paraît, et un nombre fini de bandes de fréquences possibles. Par conséquent, deux satellites avec des bandes trop similaires ne peuvent pas être trop proches l'un de l'autre. Cette exigence complique encore la navigation des satellites.

Vous pourriez vous demander pourquoi les positions des satellites doivent être calculées sur Terre et non directement à bord des satellites. D'une part, si quelque chose ne va pas à l'intérieur d'un satellite, il est beaucoup plus difficile d'y aller et de le réparer. De plus, les choses tournent mal plus souvent dans l'espace que sur Terre. Les bits, les unités de codage zéro ou un de tous les ordinateurs, peuvent corrompre des programmes logiciels entiers lorsqu'ils inversent leur valeur. Pour éviter que cela ne perturbe la trajectoire d'un satellite, différentes machines partagent un logiciel, et une copie correcte de celui-ci peut être rechargée en cas de corruption.

Le logiciel de Starlink est écrit dans des langages de programmation bien connus. En raison de sa fiabilité et de sa capacité de programmation sans système d'exploitation, Starlink utilise C++ pour la plupart du code de ses satellites. La société utilise également Python pour certains prototypages, car il est généralement plus rapide à intégrer. Cela reflète ce que les développeurs utilisent dans la technologie des véhicules autonomes .

Internet par satellite est un projet très ambitieux, et il comporte de nombreux défis difficiles. . Starlink est sans aucun doute le pionnier de ce domaine, mais d'autres entreprises et agences spatiales ne tardent pas à suivre. Dans une décennie ou deux, cela pourrait être aussi standard que la télévision par satellite l'est aujourd'hui.

SpaceX, ou essayer de ne pas échouer

SpaceX, dont Starlink est une émanation, est tout aussi ambitieux. Lancer des fusées dans l'espace, s'arrimer à l'ISS ou viser Mars requiert une quasi-perfection en ingénierie matérielle et logicielle. Les tests peuvent échouer, bien sûr. Mais dans la mission finale, rien n'est permis de mal tourner. Et si une partie du système de fusée ne fonctionne pas correctement, toutes les autres parties doivent compenser cette défaillance.

Tous les logiciels de vol pour les fusées SpaceX sont construits autour de cycles de contrôle . Tout d'abord, toutes les entrées sont lues, telles que les données des capteurs ou les commandes du sol. Ensuite, ces données sont traitées et des éléments importants sont calculés, tels que la position de la fusée ou l'état du système de survie. Ensuite, le programme se met en veille pendant une fraction de seconde, pour économiser la puissance de calcul, après quoi tout le cycle recommence.

Différents sous-systèmes contrôlent différentes parties de la fusée. Afin d'éviter de grandes catastrophes, celles-ci doivent être isolées les unes des autres. Si, par exemple, quelque chose ne va pas dans le système de guidage qui dirige l'avion, le système de survie n'a pas non plus besoin de se détraquer. Si quelque chose ne va pas, le spectacle doit continuer.

Cette configuration diffère de celle de nombreuses autres entreprises technologiques. Prenez Google, par exemple. Ils enregistrent tous les échecssélectionnent ceux qui leur semblent les plus importants et essaient d'en tirer des leçons pour l'avenir. En d'autres termes, Google laisse les échecs se produire et essaie d'en tirer des leçons par la suite.

Pour Google, cette approche fonctionne parfaitement. Mais une machine de recherche (et un traducteur, un éditeur de documents, un fournisseur de services cloud, etc.) fonctionne un peu différemment d'une fusée. Si un processus dans Google échoue, une requête de recherche renverra peut-être des résultats étranges. Si une fusée habitée se dirige dans la mauvaise direction, cependant, des vies humaines sont en danger.

En raison de la nature à enjeux élevés des problèmes qu'elle aborde, SpaceX fait de son mieux pour ne jamais échouer. Bien que les ingénieurs de l'entreprise acceptent l'échec pour les tests de fusées, dans ces cas, ils laissent presque délibérément le projet échouer afin d'apprendre pour l'avenir. Cependant, lorsque la fusée démarre pour une mission réelle, tout doit fonctionner. Cela signifie que la fusée doit rester intacte même si une partie de celle-ci échoue.

Tester, tester et tester le code

Le logiciel de Rocket doit être aussi fiable que possible. Il n'est donc pas surprenant que les exigences de qualité soient élevées à la NASA et à SpaceX, en particulier par rapport aux applications commerciales classiques. Des systèmes élaborés sont en place pour garantir que personne ne casse le code en fusionnant quelque chose de défectueux avec la branche master. Cela étant dit, aucun des outils de SpaceX liés aux tests n'est inconnu ailleurs dans le développement de logiciels.

Avant qu'un développeur puisse faire une demande d'extraction, il doit répondre à un ensemble de critères élaborés. Avant la fusion, le code est testé deux fois, et il est à nouveau testé après la fusion réelle.

L'environnement d'intégration continue de SpaceXt est largement basé sur HTCondor et ses métadonnées sont gérées avec PostgreSQL. En outre, l'entreprise utilise Python pour l'exécution des tests backend, l'orchestration des builds et les services Web. Pour le front-end de ces services Web, il utilise Angular, JavaScript et certains TypeScript. En termes de conteneurisation, SpaceX utilise Dockers, avec un peu de Kubernetes.

Le choix des outils et des langages est donc très similaire à ce que l'on attend d'une entreprise terrestre. Cependant, répondre aux exigences de qualité et fusionner est beaucoup plus rigoureux. . Ce type aide à amener une fusée sur la plate-forme et à la préparer au lancement et implique des domaines tels que la chaîne d'approvisionnement, la fabrication, les finances, les stocks, etc.

Suite à la tendance dans de nombreuses industries, Le logiciel d'application de SpaceX a changé d'une architecture monolithique aux microservices, en particulier d'AngularJS, C# et MySQL vers Angular, PostgreSQL et la conteneurisation. L'avantage est en grande partie le même que pour tous les autres systèmes de SpaceX : si une pièce est cassée ou en attente de réparation, ce délai n'affecte pas beaucoup les autres pièces.

Ce qui distingue la division des logiciels d'application de SpaceX de ses équivalents. dans d'autres entreprises, c'est qu'elles ont quatre projets très différents à soutenir : Falcon, qui livre du fret dans l'espace, Dragon, qui se concentre sur les vols spatiaux habités, Starship, qui se concentrera sur le transport interplanétaire, et Starlink, pour l'Internet par satellite. Cette portée de projets la distingue même de la NASA.

Comme dans d'autres domaines, la technologie spatiale utilise en grande partie les mêmes outils et suit les mêmes tendances que les autres, mais la portée et la variété des projets sont beaucoup plus élevées que dans la plupart des applications terrestres. entreprises.

En d'autres termes, si vous êtes un développeur de logiciels chevronné et que vous envisagez de travailler à la NASA, SpaceX ou Starlink, vous n'aurez pas besoin de vous renseigner sur de nombreux autres outils et frameworks. Mais vous devriez vous préparer à des tâches plus variées, à des exigences de qualité plus élevées et à une journée de travail plus intense. nous ne pouvons même pas gérer correctement nos problèmes sur Terre. Au milieu d'une pandémie en cours, d'inégalités raciales et sociétales, d'inondations et d'incendies de forêt, ainsi que de tous les petits problèmes de la vie, ne devrions-nous pas quitter le ciel une minute ?

Non. Il est vrai que chaque lancement de fusée brûle une quantité horrible de carburant. Il est vrai que chaque développeur de logiciels travaillant sur des vaisseaux spatiaux est celui qui ne travaille pas sur une application pour vaincre une pandémie ou sur un processeur de paiement pour les communautés défavorisées. Il est vrai que chaque dollar investi dans l'espace n'est pas investi dans un logement équitable, une meilleure éducation ou la préservation de la faune.

Ces lancements de fusées, ces travailleurs et ces dollars reviennent par d'autres moyens. Un logiciel open source de la NASApar exemple, est disponible pour aider à minimiser les émissions des avions, calculer la taille et les besoins en énergie d'un système d'énergie solaire ou optimiser l'efficacité des éoliennes. Par conséquent, en écrivant du code pour l'espace, certains développeurs pourraient simplement contribuer à rendre d'autres secteurs plus verts.

De plus, l'essor des entreprises privées dans l'espace n'est pas nécessairement une mauvaise chose. Si un petit groupe de personnes riches perd une partie de leur argent en se jetant littéralement sur la lune et au-delà, qu'il en soit ainsi.

En élaborant des réglementations intelligentes, nous devons nous assurer que ces personnes ne colonisent pas l'espace et ne se répètent pas. l'histoire. Ces réglementations existent et garantissent qu'aucun pays n'appelle l'espace son propre territoire, que chaque nation est libre de l'explorer, qu'aucune entité n'est autorisée à causer des dommages à l'espace ou à l'environnement, etc. Tant que nous veillons à ce que ces règles soient respectées, nous ne risquons pas l'avenir d'humains moins riches, nous ne gaspillons pas l'argent des impôts, nous pouvons profiter des avantages du code open source et nous pouvons satisfaire notre curiosité humaine. pour de nouvelles frontières. Cela ressemble à un gagnant-gagnant-gagnant pour moi.

Cet article est écrit par Ari Joury et publié à l'origine sur Builtin. Vous pouvez le lire ici.




Source link