Software Engineer – On Board Computer

Software Engineer – On Board Computer


Position Description
Subsystem Summary:

The On-Board Computer or On-Board Data Handling subsystem is responsible for designing and implementing the hardware and software for microcontrollers that control all basic functions of the satellite. This includes communication with all other subsystems, implementation of space standards, and data storage.

As a software engineer, you will be responsible for writing code for the satellite, testing it in multiple environments, and programming & developing low-level embedded software using microcontrollers. You will learn how to program reliable real-time applications, how to use a low-level operating system, and how to use modern microcontrollers in an efficient manner.

Position Description:
  • Satellite software development in C/C++
  • Firmware development for microcontrollers using FreeRTOS
  • Code and design reviews
  • Development of test procedures and test execution at subsystem level, end-to-end tests with the spacecraft
  • Identification and troubleshooting of issues with the satellite subsystem, and work with the Systems Engineering team for resolution
Preferred Skills and Education:

Any of the following skills will be useful to a Software Engineer for Embedded Systems:

  • Ability to work and program collaboratively in a multi-disciplinary team
  • Experience with programming in C
  • Experience with programming in modern C++
  • Experience with microcontrollers (e.g. based on ARM, AVR, PIC, or Arduino)
  • Experience with communication protocols (UART, I2C, SPI, CAN), electronic testing equipment
  • Familiarity with digital design, digital interface ICs, or FPGAs
Optional Joint Position (with Science Unit):

This position can be extended as a joint position with the Science Unit, which is responsible for designing and implementing the on-board experiment, probing the dynamic response of eukaryotic cells’ molecular behavior in the conditions of Low Earth Orbit. During this collaboration, you will work closely with members of both subsystems for additional activities such as:

  • Payload software development, with a focus on automating experimental procedures in C/C/++
  • Compression software development, for on-board compression of the science image data
  • Post-experiment data-handling on Earth, with a focus on automated image analysis
  • Development of test procedures and test execution at subsystem level during an end-to-end experimental run
  • (Optional) Pre-experiment analysis, such as employing bioinformatics’ pipelines for gene selection

Note: The Software Engineer and Hardware Engineer positions are neither mutually exclusive nor destined for only one recruit each! Rather, they represent the different types of work performed in the subsystem.

APPLY FOR POSITION