Onde eu começo a aprender sobre programação Avionics? [fechadas]

26

Eu sou um estudante em seu último semestre indo para um B.S. em Ciência da Computação. Eu gostaria de fazer a transição para a indústria de exploração espacial (NASA, SpaceX, Boeing, Lockheed Martin, etc). Eu não sei nada sobre aviônica e gostaria de aprender mais sobre o assunto, especificamente o lado do software. Eu encontrei pouca informação online. Por favor, me dê material de referência (livros, sites, etc.) para aprender sobre esta área. Seu ponto de vista e informações adicionais são muito bem-vindos.

    
por user2369869 04.12.2014 / 10:22

8 respostas

Ok, eu estava postando isso como um comentário, mas estava ficando ridiculamente longo ...

Eu trabalhei durante a maior parte da minha vida profissional em campos que são de alguma forma relacionados. Eu posso ver que existem três áreas de estudo que irão ajudá-lo muito aqui.

Primeiro: linguagens de programação. Conhecer uma linguagem usada na indústria é uma vantagem. Agora estou trabalhando na indústria automotiva / de transporte; Eu não estou trabalhando em material crítico de segurança, então apenas usamos C / C ++ padrão. Mesmo nesse nível, um bom conhecimento de programação e software de baixo nível (como escrever um driver simples, como interagir com um dispositivo usando ioctl, etc.) é muito útil.

Antes disso, trabalhei em um campo relacionado a linguagens de programação e compiladores, especialmente na simulação e análise de código concorrente. Entre os outros, eu interagi brevemente com pessoas que trabalham para a Airbus (professores que estão na academia, mas ajudam a construir software real). Eles ainda veem e usam muita Ada por aí, então ... sabendo que é bom :) Eu também sei que Java também é usado, junto com ferramentas especiais para verificação do código.

O que nos leva ao segundo: tudo relacionado à verificação de software , tanto do ponto de vista teórico quanto prático, irá ajudá-lo imensamente nessa indústria. Estude e pratique com monitores de tempo de execução e verificadores de modelos, pelo menos. Aprenda sobre várias técnicas de análise estática, como interpretação abstrata. Tome aulas sobre isso, se você puder na sua escola.

E terceiro: estude e pratique com sistemas embarcados e com os sistemas operacionais (mais raros) em tempo real e como eles funcionam (e como você os programa). Arranja um arduino ou um netduino (não um PI de framboesa - muito alto nível, muitos recursos lá!) E pratique com eles. Lear sobre o uboot.

    
04.12.2014 / 17:23

Suspeito que a única resposta seja "no trabalho".

Aprenda C e C ++ e alguma programação incorporada e tente candidatar-se a qualquer cargo júnior em empresas que fazem aviônicos.

Os telefones celulares não podem mais ser considerados incorporados, mas você deve ser capaz de encontrar um curso de robótica ou cibernética (controladores industriais) ou um estágio envolvendo esses. Um estágio fazendo produtos eletrônicos de consumo poderia ajudar também.

E não se esqueça de que os fabricantes de aeronaves não fazem aviônicos, mas também compram módulos padrão de fornecedores como Garmin ou Honeywell ou subcontratam-no para muitas empresas de consultoria. E essas empresas também costumam fazer outros tipos de produtos incorporados (automotivo, industrial, etc.).

Notas: Eu conheço remotamente alguém que fez aviônicos e não acho que ele tenha visado especificamente por isso; ele era apenas bom programador C e se candidatou a um emprego. Eu mesmo fiz alguns produtos automotivos, mais uma vez apenas solicitei (junior; foi logo após a graduação) trabalho em C / C ++ em uma empresa de consultoria que era originalmente móvel e foi transferida para o setor automotivo porque o projeto original realmente não funcionou.

    
04.12.2014 / 11:58

Para aviônica, o seguinte será essencial apenas para que seu currículo seja considerado: -

  • Boas habilidades com C
  • Teoria de controle, especialmente espaço de estado e além
  • Relacionado à teoria do controle, uma base sólida em matemática
  • Experiência com processamento em tempo real
  • Experiência de trabalhar com padrões de codificação
  • Familiaridade com os processos de revisão

O seguinte também seria útil: -

  • Experiência de Ada e, possivelmente, C ++
  • Algum conhecimento de procedimentos relacionados à segurança (DO-178B, MISRA, etc.)
  • Conhecimento do desenvolvimento orientado a testes
  • Experiência de RTOS comuns, como o VxWorks
  • Experiência de programação de baixo nível em microcontroladores

Com um BS (não BEng) em Ciência da Computação (não em engenharia eletrônica), então você pode estar em desvantagem em parte disso. Você DEVE escolher seus projetos para obter a experiência certa que deseja levar aos empregadores.

É claro que você está apenas no início de sua vida profissional. Um diploma é apenas o começo, e qualquer empregador que contratar graduados saberá que você precisa se formar. Um bom empregador vai parecer mais em geral como você parece ser brilhante e como eles acham que você pode aprender novas habilidades. Se você está jogando com tecnologia no seu tempo livre, isso é provavelmente uma boa coisa para trazer para as entrevistas também.

    
04.12.2014 / 19:07

Eu tenho um amigo que trabalha no software Avionics. Incluindo projetos espaciais.

Ele conseguiu um emprego em empresas que trabalham nesse campo ou similar, antes disso ele não tinha nenhum treinamento ou experiência em aviônicos especiais.

O trabalho de aviônicos tende a fazer mais uso das linguagens de programação que não são mainstream. Eu acho que há um monte de C embutido (habilidades C em geral podem ser úteis), mas também assembly e linguagens específicas de processador como Ada (talvez mais para aviônicos de defesa).

É muito provável que você esteja segmentando um sistema operacional em tempo real (RTOS) ou um microcontrolador. Então, o conhecimento destes pode ser uma vantagem. Pode ser necessário gravar drivers de dispositivo e portá-los para novas plataformas (por exemplo, de um microprocessador para outro). Pode ser necessário programar microcontroladores (por exemplo, 8051) na montagem ou C.

É provável que você encontre um rigor muito maior em termos de escrita e / ou uso de testes unitários, testes, ferramentas de cobertura, testes de integração e documentação formal meticulosa e revisão de tudo.

    
04.12.2014 / 17:56

Eu não trabalho com aviônicos, mas trabalhei com sensoriamento remoto no contexto das Ciências da Terra.

Eu acho que esses materiais poderiam ser de alguma ajuda além do que outros sugeriram, esp. se você estiver interessado nos aspectos da ciência (desculpe, a resposta pode ser um pouco fora do assunto, se você não for).

  • Programação

    Além de C, Fortran ainda é muito usado para implementar várias algoritmos e modelos. Para tarefas menores e visualização, as pessoas costumam usar o Python ( numpy , < a href="http://www.scipy.org/"> scipy , pandas , matplotlib ) e R (R é uma excelente linguagem de programação estatística, algo que você usaria em vez do Excel para coisas sérias).

    Com relação a C, ninguém parece mencionar que a codificação segura é realmente necessário para tais aplicações de alta participação. Seacord, 2013 é um ótimo livro para este fim.

    • Chapman, Stephen J. Fortran 95/2003 para cientistas e engenheiros. McGraw-Hill, 2008.

    • Seacord, Robert. Codificação Segura em C e C ++ (2ª Edição) (Série SEI em Engenharia de Software). Addison-Wesley Professional, 2013.

    • Matloff, Norman. Art of R Programming. No Starch Press, 2011.

  • Física

    Bons fundamentos da física são certamente vitais na exploração espacial.

    Muitas medições feitas no espaço têm a ver com radiação, então estou adicionando uma referência a isso.

  • Matemática

    Cálculo é provavelmente a coisa mais importante, então álgebra linear.

    Muitos problemas em design e física têm a ver com estatísticas e otimização.

  • Unix / Linux

    Sistemas operacionais Unix são muito usados em ciências aplicadas, sistemas e supercomputadores.

    • Kerrisk, M. A interface de programação Linux: um manual de programação do sistema Linux e UNIX. No Starch Press, 2010.

    • Lucas, MW. Absolute FreeBSD: O Guia Completo do FreeBSD. No Starch Press, 2007.

    • muitos outros livros, por exemplo aqueles publicados por O'Reilly

Algumas leituras diárias: phys.org/space-news/ (-;

    
05.12.2014 / 21:27

O aprendizado C e o C ++ já foram sugeridos, e eu também adicionaria o Ada linguagem de programação para essa lista. Muitos softwares aviônicos são escritos nessas três linguagens de programação.

Enquanto aprende C / C ++, aprender a codificar adequadamente de acordo com os padrões de codificação para software de aviação também pode ser útil.

Eu recomendo a leitura:

Se você gostaria de brincar com a programação aviônica atual, você pode estar interessado em obter um quadrocopter open source (como o de AeroQuad ) como um brinquedo e experimentando com seu software.

    
04.12.2014 / 17:11

Eu sugiro que você procure em um curso de análise de software e aprenda um sistema de testes como o PVS. Eu voltei para a pós-graduação depois de 14 anos em várias indústrias de software, e o curso de análise de software que eu fiz foi facilmente a abertura para os olhos. Não faria muito sentido quando eu estivesse na escola, mas depois de trabalhar por muitos anos, o material clicou. Nunca foi um assunto que eu gostaria de curtir, e pode ser um pouco seco, mas uma vez que você consegue, você nunca vai procurar programar da mesma maneira,

    
06.12.2014 / 02:53
07.01.2016 / 17:54