Douglas Hurley e Bob Behnken na cápsula Endeavor
SpaceX está desenvolvendo rapidamente projetos em várias direções. O primeiro estágio do foguete Falcon 9, depois de lançar a carga útil ao espaço, retorna à Terra para reutilização, semelhante ao teste de protótipos de nave estelar. O navio Crew Dragon está entregando a tripulação à ISS, a segunda geração de caminhões Dragon está sendo preparada. Um enxame de satélites de comunicação Starlink está produzindo mais de cem megabits por segundo para usuários reais do teste beta aberto.
Todos esses projetos requerem um alto grau de automação, que é de responsabilidade da equipe de desenvolvimento de software. Os especialistas da SpaceX falam sobre isso com prazer: não é apenas importante para atrair candidatos para vagas em aberto, mas também interessante para todos os demais.
Complexidade do espaço
Em 14 de dezembro de 1966, em um teste de lançamento não tripulado do Soyuz, a espaçonave 7K-OK No. 1 pousou na plataforma de lançamento: o isqueiro de um dos motores não funcionou. A automação interrompeu a sequência de lançamento antes que o foguete pudesse se separar da superfície da plataforma de lançamento. O pessoal se aproximou do foguete para inspecioná-lo e avaliar a possibilidade de relançamento. O sistema de resgate de emergência (SAS) da Soyuz disparou repentinamente. Seus motores a pólvora transportaram cuidadosamente o veículo de descida a uma altitude de 700 metros e o colocaram sob a força de paraquedas, mas também acenderam o líquido inflamável derramado do sistema de controle térmico do compartimento de instrumentos, que permaneceu na Terra. O topo do foguete se iluminou. Como Chertok lembra , a memória do desastre de Nedelinforçou as pessoas a deixarem a rampa de lançamento correndo. Uma pessoa morreu.
A elucidação dos motivos da ativação do SAS em foguete estacionário começou antes mesmo da extinção da plataforma de lançamento. Durante o vôo, o foguete compara constantemente os desvios do sistema de referência inercial em relação à trajetória calculada. Se a diferença for muito grande, o SAS será acionado. O foguete na plataforma de lançamento ainda se move: ele gira com a Terra e os giroscópios são "amarrados" às estrelas. Ao projetar sistemas de emergência, a Terra foi considerada estacionária. Em 27 minutos , cerca de 8 graus " funcionou ", e o sinal de ignição foi recebido em 32 cargas pirotécnicas SAS.
Esse "bug" foi esquecido mesmo sem as complexidades dos computadores modernos. Todos os sistemas críticos de qualquer espaçonave agora são controlados por eletrônicos. Este não é nem mesmo "o hífen mais caro da história " da sonda Mariner 1 de 1962: em sistemas modernos, o espaço para erros é de dezenas, centenas de milhares de linhas de código. Qualquer falha de software perceptível degrada a qualidade do trabalho ou mesmo leva à perda do dispositivo.
Parece que a maturidade da direção e a própria cultura do desenvolvimento aeroespacial negaram quaisquer erros "infantis". Mas este não é o caso Até agora, foguetes explodem com erro de conversão variável , rovers pendem com inversão de prioridade e sondas orbitaiscair devido a um valor no sistema de medição errado . Até o Starliner, um concorrente direto do Crew Dragon, não conseguiu chegar à ISS devido à qualidade do software.
A SpaceX postou este vídeo com amor por sua cultura de tentativa e erro
. O exemplo da SpaceX é curioso neste cenário. Esta empresa relativamente jovem com realizações notáveis não teria acontecido sem um software que pequenas equipes desenvolvem e testam rapidamente.
Falcon em x86
Não é apenas a confiabilidade do código que causa problemas - o espaço é hostil até mesmo para o hardware. Na Terra, estamos protegidos da radiação pelo campo magnético e pela atmosfera. No espaço, um fluxo de partículas de alta energia facilmente transforma um em zero em uma célula de memória, ou mesmo desativa componentes completamente. A microeletrônica espacial pelo menos requer certificação especial e, às vezes, recorre a microcircuitos especiais, por exemplo, tecnologias de semicondutores de silício sobre safira .
SpaceX está ignorando a atitude melindrosa estabelecida em relação ao equipamento espacial. Desde o início , a empresa se destacou por seu amor por componentes relativamente baratos. Por exemplo, em 2005, jornalistas relataram que os computadores em um foguete Falcon 1 se comunicavam por um cabo Ethernet comum.
Como os engenheiros da SpaceX disseram ( 1 , 2 ) na conferência GDC 2015, no foguete Falcon 9, três computadores dual-core de arquitetura x86 são instalados em cada estágio. Em cada computador, em cada um dos dois núcleos, um sistema operacional com software de vôo é executado independentemente um do outro. O foguete também contém microcontroladores PowerPC. Eles controlam vários atuadores: motores, lemes treliçados e assim por diante.
Todo esse equipamento está integrado ao sistema ator-juiz.
- Quase tudo se expressa na forma de um loop de controle, o que é tradicional para TAU: muitas vezes um segundo dado é recebido dos sensores, uma decisão é feita sobre eles e os estados anteriores do sistema, o computador emite sinais para os dispositivos.
- . . , .
- . , , . , .
- Falcon 9 .
Essa arquitetura simplifica os testes na Terra e fornece o nível necessário de resistência à radiação. Não há necessidade de microcircuitos especiais caros, que, além disso, podem ter uma arquitetura familiar a apenas um pequeno número de desenvolvedores no mercado de trabalho.
Os computadores de controle são testados na chamada bancada de foguete de mesa, "um foguete sobre uma mesa". Os "cérebros" do Falcon 9 são dispostos em uma superfície plana e conectados enquanto funcionam em um foguete real. Em seguida, os especialistas lançam um vôo simulado completo, monitoram o comportamento do sistema, seu desempenho e possíveis falhas. Durante a simulação, um dos computadores de vôo pode ser desligado para entender como o foguete responderá a isso.
Além disso, todo o sistema de controle é capaz de virtualizar uma estação de trabalho, o que possibilita testes automatizados em massa e verificação de código para voos em apenas um dia.
Um sistema triplo redundante semelhante está instalado na espaçonave Dragon, foi dito no GDC 2015. Nas respostas de 2020, os funcionários vagamente sugeriram que a espaçonave Crew Dragon é controlada por um processador quad-core separado, comparável em poder de processamento a um smartphone há cinco anos.
Em geral, o SpaceX não relata modelos de processador exatos. Possivelmente, os controladores PowerPC são RAD750 resistentes à radiaçãocomprovado em rovers e sondas, e os processadores x86 são soluções industriais embarcadas com baixa geração de calor e desempenho modesto.
Mas o espaço não é muito necessário. A própria ISS é controlada por um processador Intel 80386SX-20 com um coprocessador matemático 80387. Mesmo na época do lançamento da estação, era um produto de dez anos atrás.
Para o espaço em um navegador
Em 30 de maio, a SpaceX lançou humanos em órbita pela primeira vez. Finalmente, uma segunda opção para entregar a tripulação à Estação Espacial Internacional apareceu. Desde 2011, a única solução para isso é a russa Soyuz.
O público da transmissão online notou o quanto a nave Crew Dragon parecia maior do que a cápsula Soyuz de três lugares. Com um volume interno semelhante, a espaçonave SpaceX tem 4 metros de diâmetro contra 2,2 metros da União. A SpaceX inicialmente anunciou a espaçonave como uma nave de sete lugares, mas a NASA lançará quatro astronautas nos Dragões tripulados.
Além das diferenças físicas, o mais perceptível era a forma como as pessoas operavam o navio. "Soyuz" não se desvia das tradições da engenharia aeroespacial: a tripulação pressiona os interruptores e teclas, e os painéis de sinalização exibem informações. Cru Dragon faz tudo à sua maneira. Para uma nave espacial futurística SpaceX, o elemento principal é a tela sensível ao toque.
As telas do Crew Dragon são movidas pelo motor do navegador Chromium, ou seja, as interfaces são construídas em HTML usando componentes da web, JavaScript e CSS. Escrevemos nossa própria biblioteca reativa internamente. O desenvolvimento de interfaces segue a metodologia Agile com alto padrão de cobertura com testes unitários.
Captura de tela do simulador de encaixe do navegador.
Antes do primeiro lançamento tripulado, a SpaceX publicousimulador baseado em navegador do Crew Dragon acoplado à ISS. O simulador começou como um hobby para dois desenvolvedores da empresa. Então, eles decidiram terminá-lo e publicá-lo para o público em geral.
O simulador continua sendo um simulador: não tem nada a ver com o código real. Embora ambos os produtos tenham sido escritos pela mesma equipe, são dois projetos completamente diferentes.
Tudo isso não significa que a nave voe em JavaScript. O Chromium no navio é usado apenas como uma ferramenta de renderização para elementos da IU. A interface do software de vôo tem toda a redundância necessária e fica fora dos monitores, dizem os funcionários da SpaceX. O backend é escrito em C / C ++.
Um motor de navegador regular em uma nave espacial é uma decisão ousada. Nas respostas, os funcionários da SpaceX garantiramque, independentemente da pilha tecnológica, os padrões de desenvolvimento são os mesmos, os princípios de escrita de software confiável e eficiente não mudam e, para entender possíveis erros, o teste ocorre em várias condições. Em caso de rejeições, existem notificações e procedimentos adequados. Finalmente, centenas de horas de treinamento de astronautas em simuladores de vôo na Terra são adicionadas aos testes.
Para garantir a segurança, as teclas físicas estão localizadas sob as telas sensíveis ao toque. Eles são projetados para situações críticas, como incêndio na cabine de um navio. Existem também botões físicos "iniciar" e "abortar" para a maioria das operações que podem ser chamadas a partir dos visores. A NASA desenvolveu requisitos específicos para as próprias telas, e a solução da SpaceX combina com eles .
Funcionários da SpaceX também explicaramcomo eles chegaram a uma solução aparentemente não convencional para a indústria aeroespacial. O projeto começou como um protótipo para mostrar um design de amostra para a NASA. Em seguida, o protótipo foi lançado com sucesso em um hardware de vôo real. Os desenvolvedores gostaram dos recursos modernos que estavam presentes no mecanismo do navegador, e há desenvolvedores suficientes para isso no mercado.
O diagrama mostra como o código JavaScript é isolado dos principais sistemas de controle do Telescópio James Webb.
Além da experiência SpaceX, não há nada de ultrajante em escolher JavaScript para o espaço. No caso do Telescópio Espacial James Webb, o código JS será executado diretamente no veículo. Não controlará diretamente, por exemplo, motores, apenas chamará outros programas.
Por que não há som no espaço?
Porque o foguete voa no Linux.
O software Falcon 9 é atualizado regularmente. Quase todo lançamento de foguete voa com um código ligeiramente atualizado. Embora as atualizações sejam tão frequentes, a "base" para cada lançamento específico não é especificamente adaptada. Isso é feito por outros departamentos da SpaceX, que fazem seus próprios ajustes nas configurações de voo: eles definem as variáveis de vento no dia do lançamento, alteram os limites de tolerância a falhas e assim por diante.
Crew Dragon é controlado pelo sistema operacional Linux com o patch PREEMPT_RT para operação em tempo real. SpaceX não usaalguma distribuição padrão de terceiros. A empresa construiu seu próprio kernel e utilitários relacionados. Durante os anos de desenvolvimento, o kernel quase não foi modificado. Houve apenas pequenas alterações e alguns drivers especializados para trabalhar com o hardware.
Entre os projetos de código aberto usados estão o carregador do sistema operacional Das U-Boot , o sistema de construção de distribuição Buildroot , a biblioteca padrão C ++ e a biblioteca C Musl . Mas, em geral, a SpaceX não usa tanto software escrito fora da empresa e escolhe projetos de código aberto apenas com a mais alta qualidade possível.
No SpaceX, os testes são escritos em Python, testados em LabVIEW, e eles voamem C ++. Ao escrever em C ++, eles usam as técnicas orientadas a objetos da linguagem, embora prefiram manter tudo o mais simples possível.
O SpaceX no nível do código fornece a possibilidade de operação normal com a perda de sustentador ou motores de manobra com algoritmo de compensação. Todos os tipos de emergências estão embutidos em máquinas de estado finito. Por exemplo, a máquina de estado da nave "Dragon" colocou transição autônoma de mais perto da estação para cuidar se houver algumas falhas.
Funcionários da SpaceX dizem que não há "IA" no Dragon (provavelmente significa algoritmos de rede neural), embora algum tipo de visão de máquina seja usada para navegação. Os desenvolvedores explicaramisso não exclui o uso de programas de aprendizado de máquina em algum momento no futuro.
Starlink
O Starlink Satellite Internet Project é ainda mais computadores. Em cada lançamento, o foguete Falcon 9 lança 60 satélites em órbita, que contêm mais de 4.000 computadores Linux. SpaceX colocou dezenas de milhares de nós Linux e mais de mil microcontroladores em órbita baixa da Terra.
A animação mostra como o painel solar do satélite está sendo
implantado. Seis meses atrás, o Starlink gerava cerca de 5 TB de telemetria por dia, e a constelação só ficou maior. O número de satélites está crescendo e um trabalho está em andamento para reduzir a quantidade de dados enviados. Para reduzir a quantidade de dados armazenados a bordo e enviados para a Terra, alguns dos problemas são diagnosticados no próprio dispositivo.
Cada um dos satélites Starlink é alimentado por um motor de efeito Hall. Com isso, o satélite assume a posição desejada no enxame e evita colisão com detritos espaciais. Mas essas manobras ainda precisam ser feitas corretamente, e o departamento de comando da maior constelação de satélites é minúsculo.
Portanto, os programadores ficaram confusoscomo evitar colisões e controlar a posição dos satélites automaticamente. No sistema desenvolvido, os satélites são questionados em qual janela entrar - e eles vão independentemente para lá. Além disso, várias vezes ao dia os satélites recebem dados da Terra sobre abordagens de outros objetos em órbita. Então, os satélites calculam independentemente as manobras necessárias e se afastam dos detritos espaciais.
A duplicação de sistemas internos, no caso do satélite Starlink, é realizada apenas até um determinado limite. Devido ao número total de companheiros, a equipe não perceberá a perda de um soldado. Se um nó falhar, o usuário na Terra se conectará a outro satélite visível no céu.
Durante o desenvolvimento e os testes, cada um dos satélites da flotilha Starlink não é considerado um satélite separado, mas um servidor no data center. Algumas das tarefas são críticas: gerenciamento, atualizações de software, energia e segurança. Testes separados são escritos para esses aplicativos. Muitos outros recursos permitem uma abordagem mais flexível, semelhante ao desenvolvimento de serviços da web. Portanto, a equipe está implantando uma construção de teste em um pequeno número de satélites e comparando como eles se comportam em comparação com o resto da constelação. Além disso, se surgirem problemas, o software é melhorado ou revertido para a versão anterior.
Este processo de teste é necessário para melhorar rapidamente o sistema. Os desenvolvedores da SpaceX afirmam que muitas vezes foi possível encontrar e consertar falhas impossíveis de prever na Terra.
O satélite Starlink vaza dados do usuário através dele e um hack de computador ameaça ser explorado. SpaceX forneceu para isso e adicionou criptografia ponta a ponta. Além disso, cada um dos componentes - satélites, gateways e terminais de usuário - executa apenas o código assinado, de forma que o invasor não se registre no sistema por um longo tempo.
Cultura de desenvolvimento
A maioria dos engenheiros de software da SpaceX trabalha em Seattle, Washington e Hawthorne, Califórnia, e alguns em escritórios no Texas.
Equipe de desenvolvimento de software da SpaceX, 2013 A
indústria aeroespacial tradicional está sobrecarregada tanto pela velocidade de desenvolvimento quanto pelo tamanho das divisões da SpaceX. Como em 2019 ( podcast , marca 44:00), o Chief Software Officer da Força Aérea dos Estados Unidos, Nicholas Chillan, disse que onde as agências governamentais precisariam de pelo menos 2,5 mil programadores, a SpaceX está contratando 50. Ao mesmo tempo, a equipe de desenvolvimento escreve software para nove máquinas diferentes e verifica o código em 24 horas.
A SpaceX está tentando atrair desenvolvedores da indústria de jogos. No GDC 2015, representantes da empresa disseram que aqueles com um diploma de ciência da computação não tinham habilidades de gerenciamento de memória. Inesperadamente, o ritmo de trabalho e os métodos de otimização dos desenvolvedores de jogos são adequados para o espaço. Como diz Elon Musk, em comparação com um MMO, atracar dois navios é bastante simples.
Como parte do AMA no Reddit em 2013, os funcionários falaram sobre a estrutura dos departamentos de desenvolvimento de software.
- 7 35 . : Falcon 9, Grasshopper Dragon. , , . .
- SpaceX. — - . , , , . , SpaceX . — - : C#, MVC4, EF, SQL; Javascript, Knockout, Handlebars, LESS; REST API, «super sexy».
- 2013 9 , . , . .
- . . — .
A empresa contrata constantemente desenvolvedores e engenheiros, e nem todos os cargos exigem educação especial. Não são muitos sotaques diferentes em escritórios SpaceX , incluindo a partir do espaço da ex-URSS. A empresa pode contratar não apenas o titular de passaporte americano, embora haja restrições ao regime de controle de exportação de tecnologias militares . Para ser contratado, o estrangeiro precisará de uma autorização de residência - um green card dos EUA. Levará vários anos para começar do zero. Se já existe um “verde”, então a questão está apenas na capacidade de mostrar o nível de qualificação na entrevista.
O CEO e CTO da SpaceX Elon Musk é conhecido por não gostar de semanas de trabalho de 40 horas. Ele afirmou repetidamenteque funciona de 80 a 120 horas por semana. Qual é o pop, então é a paróquia. Uma reclamação comum sobre o Glassdoor em relação ao SpaceX é o fraco equilíbrio entre vida e trabalho. Em depoimentos anônimos, funcionários e estagiários falam sobre o desgaste frequente e o turno de 12 horas, agora comum .