Robert Rose, hoje ex-funcionário da SpaceX, ao ser entrevistado na Embedded Linux Conference (Conferência de Linux Embarcado) em 2013, falou sobre “Lições aprendidas desenvolvendo software para veículos espaciais”. Em seu discurso, ele mostrou como a SpaceX desenvolve seu software baseado em Linux para uma ampla variedade de tarefas necessárias para colocar uma espaçonave em órbita – e, eventualmente, além. O Linux roda em todos os lugares na SpaceX; em tudo desde desktops até espaçonaves.
Rose era o líder da equipe de software de voo da SpaceX. Ele é um ex-programador de vídeo games e disse que algumas lições daquele trabalho foram valiosas em seu emprego na companhia. Ele começou no Linux em 1994 com o Slackware.
Sobre a SpaceX
A SpaceX, como empresa, acredita fortemente em transformar os humanos em uma espécie multiplanetária. Uma colônia em Marte é o objetivo, mas para chegar lá, você precisa de foguetes e espaçonaves. Atualmente é caro lançar veículos espaciais, então existe a necessidade de fazer os preços caírem para alcançar esse objetivo.
A empresa segue uma filosofia de reutilização, o que ajuda na redução de preços. Isso já foi testado até certo ponto com o programa dos ônibus espaciais, mas a SpaceX vai além. Não apenas os componentes de hardware são reutilizados entre espaçonaves diferentes; o software é compartilhado também. A empresa constrói seus foguetes do zero em sua fábrica, em vez de terceirizar diversas peças. Isso permite um olhar mais atento e uma frequente integração hardware-software.
Uma coisa que Rose achou difícil de se acostumar no começo na SpaceX foi o foco da empresa no “objetivo final”. Quando decisões são tomadas, as pessoas frequentemente mencionam: “Isso vai funcionar para uma missão à Marte?” Essa pergunta era sempre considerada quando decisões eram tomadas; Marte nem sempre ganha, mas essa preocupação era sempre examinada, segundo ele.
Desafios
Alguns dos desafios enfrentados pela empresa são extremos, porque a segurança das pessoas e propriedades está envolvida. As espaçonaves são veículos perigosos que podem causar danos sérios se seu combustível explodisse, por exemplo. Não há como desfazer, não há segunda chance para fazer as coisas certo; uma vez que o foguete é lançado não há como parar. Outro problema que ele não encontrava até ele começar a trabalhar na indústria espacial é o efeito da radiação, que pode aleatoriamente mudar bits – algo que o projeto do sistema precisa considerar.
A SpaceX começou com o foguete Falcon e posteriormente passou o código de aviônica para a espaçonave Dragon. A vantagem óbvia de compartilhar código é que falhas corrigidas em uma plataforma são automaticamente consertadas na outra. Mas há diferenças nos requisitos de software para os veículos lançadores e para as espaçonaves, a grande maioria tem a ver com os diferentes tempos de reação disponíveis. Antes que a espaçonave se aproxime da Estação Espacial Internacional (ISS, sigla em inglês), ela pode tirar um tempo para reagir a qualquer problema. Para um foguete, esse luxo não está disponível; ele deve reagir em pouco tempo.
Falsos positivos são uns dos problemas que precisam ser considerados. Rose mencionou o medidor do escudo de calor na missão Mercury 6 (o primeiro voo orbital tripulado dos Estados Unidos) que mostrou que o escudo de calor havia se separado. A NASA tentou arranjar uma maneira de fazer a reentrada sem nenhum escudo de calor, mas resolveu ir em frente. Acabou por ser um falso positivo. Mais uma vez, a quantidade de tempo disponível para reagir é diferente para veículos lançadores e espaçonaves.
Coletando dados
Citando Fred Brooks (The Mythical Man-Month), Rose disse que software é invisível. Para tornar o software mais visível, você precisa saber o que ele está fazendo, o que significa criar métricas em tudo o que você conseguir pensar. Estas métricas devem cobrir áreas como desempenho, utilização de rede, carregamento de CPU, dentre outras.
Quando um programa falha, ele deve falhar aos berros com um monitor que começa a piscar em vermelho e mandar um e-mail para todos na equipe. Quando isso acontece, alguém deve responder imediatamente para resolver o problema. Em seu time, eles têm um Justin Bieber em tamanho real recortado que fica posicionado encarando o membro da equipe que quebrou o código. Eles pensam que 100% dos engenheiros de software não gostam de Justin Bieber, e vai funcionar rapidamente para consertar o problema do programa.
Alguns detalhes técnicos
Linux é usado para tudo na SpaceX. O Falcon, a Dragon e os veículos Grasshopper usam-no para controle de voo, as estações terrestres usam Linux, bem como os desktops dos desenvolvedores. SpaceX é “Linux, Linux, Linux”, ele disse. Hoje em dia, porém, a empresa também usa o LabView, uma ferramenta gráfica de programação que roda no Windows. Ele é usado para visualizar a telemetria que chega do foguete Falcon 9 e da cápsula Dragon durante o voo.
Rose falou brevemente sobre o sistema de voo da Dragon, embora ele dissesse que não poderia dar detalhes demais. É um sistema tolerante a falhas para satisfazer requisitos da NASA para quando ela chega perto da ISS. Há regras sobre quantas falhas uma aeronave precisa ser capaz de tolerar e ainda ser permitida a aproximação da Estação. Ela usa computadores com redundância tripla para alcançar o nível necessário de tolerância a falhas.
Para navegação, a Dragon usa informação posicional que ela recebe da ISS, com dados de GPS que ela própria calcula. Conforme ela se aproxima da estação, ela usa imagens da ISS e o tamanho relativo da estação para computar a distância para a estação. Pelo fato de às vezes ter que operar na escuridão da sombra da Terra, a Dragon usa imagens térmicas já que a estação é levemente mais quente que no fundo (oposto ao sol).
Seu time não usa kernels de distribuições disponíveis no mercado. Em vez disso, eles passam muito tempo avaliando kernels para suas necessidades. Uma vez que um kernel é escolhido, eles tentam não mudá-lo.
Ficou impressionado em saber como o Linux está envolvido no lançamento e controle de foguetes e espaçonaves? Compartilhe com outros a versatilidade do Linux!
Leia também: Como a NASA está rastreando o furacão Dorian