quarta-feira, 22 de março de 2017

Missão primária: Detetar a presença de tripulação no módulo Columbus

No desafio Astro Pi, são propostas duas missões: uma primária, sugerida pela ESA, e uma secundária, proposta pela própria equipa.

A missão primária para o Astro Pi Challenge 2017 foi encontrar uma forma de detetar a presença de tripulação no módulo Columbus. As equipas foram ainda informadas que:
  • O recurso à matriz de LED era obrigatório;
  • Os dados teriam de ser guardados em ficheiro para posterior análise na Terra;
  • O código teria de ser escrito em Python 3.4 ou 2.7;
  • O tempo de execução de ambas as missões (primária e secundária) não podia exceder as 3 horas;
  • Não seria possível a interação entre os astronautas e o Astro Pi  (através do joystick, por exemplo):
  • O recurso às câmaras disponibilizadas no kit Astro Pi não seria permitido;
  • O Astro Pi não podia ser movido dentro da ISS.

E pronto...com tanto constrangimento, a questão complicou-se.

Não sabemos se foi intenção da ESA, mas esta foi uma missão, do nosso ponto de vista, bastante difícil de resolver. Ainda mais se as câmaras não podiam ser usadas. Tirando as câmaras da equação, restam-nos os sensores que temos no Astro Pi para resolver este problema. Analisando o documento Astro Pi flight data analysis, torna-se evidente que os melhores indicadores para detetar a presença de tripulantes no módulo Columbus são o aumento de temperatura (porque os corpos irradiam calor), e de humidade (devido à respiração e transpiração).

Os primeiros ensaios com o sense HAT demonstraram que a monitorização da temperatura seria pouco eficiente uma vez que o calor emitido pelo processador é detetado pelos sensores do sense HAT, não permitindo uma medida correta nem da temperatura ambiente, nem de uma eventual pequena alteração desse valor.

Concentrámo-nos por isso na medida da humidade relativa. O documento referido atrás, faz uma breve análise da variação da humidade ao longo de 24h, indicando, nesse intervalo de tempo, três episódios de entrada/saída de tripulação:

A análise parece-nos pouca. O que aconteceu às 18h30? E porque é que a humidade começa a aumentar a partir das 23h? Mas enfim, é o que temos...

A ESA disponibiliza ainda um ficheiro com a temperatura registada das referidas 24h. Apesar de ser possível verificar maior flutuação nas temperaturas enquanto há tripulação a trabalhar na Columbus, essas flutuações são inferiores a 1ºC. É a própria ESA que considera que a temperatura é uma variável menos fiável que a humidade para detetar presença de tripulação no módulo Columbus.


Passámos então à análise do ficheiro csv disponibilizado pela Fundação Raspberry Pi com duas semana de leituras realizadas no módulo Columbus e que pode ser descarregado a partir do documento supra citado. A evolução da humidade ao longo dessas duas semanas pode ser representada graficamente:


E o que podemos concluir? Sem termos a indicação concreta de entrada e saída de tripulantes, muito pouco...ainda assim, e porque temos de seguir uma estratégia, podemos avançar para a hipótese de que um aumento sustentado da humidade significa a presença de tripulação no módulo Columbus, e que uma diminuição sustentada da humidade significa que a Columbus está sem tripulação.

O termo "sustentada" usado no parágrafo anterior é crucial para o coração do programa e foi a razão pela seleção do nosso programa para correr a bordo da ISS.

Na verdade, chegados a este ponto, percebemos que as flutuações da humidade são tantas que seria impossível decidir a entrada / saída de tripulação a partir da comparação de pontos próximos ou através de simples médias aritméticas e chegámos a um verdadeiro impasse no trabalho...pelo que tivemos de pedir ajuda!

No início do nosso projeto, cientes que a nossa maior fragilidade era a programação, pedimos ao Eng. Nuno Nunes, programador na Densare Lda., que apadrinhasse a nossa equipa. Para nos ajudar na programação, esteve presente numa sessão inicial do desafio Astro Pi e criou um fórum para esclarecer dúvidas que nos surgissem. Quando a questão sobre como, a partir dos dados da humidade, interpretar um "aumento sustentado" e uma "diminuição sustentada" dos valores surgiu, justificou-se nova reunião presencial. A solução passava por usar médias móveis exponenciais, uma ferramenta vulgarmente usada em aplicações financeiras, para decidir a compra ou a venda de ações. A média móvel exponencial difere da média aritmética na medida em que os resultados mais recentes possuem um maior peso que os resultados mais antigos. Possui também a vantagem de apenas necessitarmos do resultado anterior e não de todos os resultados de todos os períodos.

O Eng. Nuno Nunes a explicar-nos o conceito de "média móvel exponencial"

Tentando explicar de forma simples: A ideia é comparar uma média de valores em que o peso do últimos valores é maior (rápida) com outra em que os valores mais antigos são mais levados em conta (lenta). Quando a média rápida ultrapassa a lenta por determinado valor (usámos 1%), assumimos que existe tripulação no módulo - e aparece a indicação "I" (In) a verde na matriz de LED; quando a média rápida fica abaixo da média lenta, assumimos que não existem tripulantes no módulo - e surge a indicação "O" (Out) na matriz de LED.

Matematicamente:Vm = Vma + A * ( Vr – Vma )

Vm - Valor médio actual
Vma - Valor médio anterior (do último período)
A -Índice calculado por meio da fórmula A = 2 / (NPeriodos + 1)
Vr - Último valor real obtido
NPeriodos- Número de períodos para fazer a média

A expressão apresentada serve para o cálculo da média lenta para o cálculo da média rápida. A diferença entre as duas está na constante NPeriodo. Quanto maior for esse valor, menor será o valor A e maior será a influência dos valores anteriores (média lenta); por outro lado, valores baixos de Nperiodos resultarão em valores elevados de A e os valores mais recentes terão mais peso (média rápida). O que fizemos foi experimentar vários valores de NPeriodo e aplicar a fórmula aos valores da humidade de duas semanas fornecidos pela ESA e perceber quais os que melhor se adequavam ao algoritmo que tínhamos criado - quais os que resultavam em indicações de entrada e saída com mais lógica. No nosso programa em concreto usámos como valor de NPeriodos 5 e 250 para a média rápida e para a média lenta, respetivamente.

A nossa pesquisa alertou-nos para o facto de, com um intervalo de cerca de 6 semanas, ser necessário substituir uma peça do permutador de calor da ISS, responsável por manter a temperatura no seu interior. Quando tal substituição é realizada, a temperatura diminui o suficiente para que tal variação seja detetável pelo Astro Pi. Como a humidade relativa está relacionada com a temperatura ambiente, esta diminuição de temperatura resultará num aumento de humidade relativa. No documento sobre análise de dados do Astro Pi, esse acontecimento é ilustrado graficamente:



Ora em situação normal, o nosso programa interpretaria uma subida tão significativa da humidade como a entrada de tripulação. Para evitarmos esse bug, a par com a humidade, medidos a temperatura. Recorremos também à média móvel exponencial. Caso a média rápida da temperatura fosse inferior a 2ºC à média lenta, assumimos que o permutador de calor da ISS estava a ser sujeito a manutenção, indicando esse facto com um "M" (Maintenance) amarelo na matriz de LED.



Sem comentários:

Enviar um comentário