Software

Overview

The Software team is responsible for the design, development, testing, and maintenance of the software that runs on the rocket’s electronic subsystems, both on-board and ground-based.

We develop the on-board software that runs the control algorithms which allow our rockets to fly, the ground equipment software that performs refueling and ignition, and the ground station software to receive telemetry and send remote commands to both the rocket and the ground equipment. We also develop the software supporting our design and production phase, such as for parachute and guided parafoil testing, static fire testing of our hybrid motor, and aerodynamic testing in the wind tunnel.

We place a strong emphasis on rigorous testing to ensure our software performs reliably during all operations, developing our own hardware-in-the-loop framework to recreate flight conditions and verify correct behavior.

On-Board Software

The on-board software is built from the ground up, starting with platform-specific peripheral and sensor drivers and extending to reusable high-level components that manage all flight phases. It runs on Miosix, a custom real-time operating system developed at Politecnico di Milano. Additionally, we implement the algorithms developed by the Guidance, Navigation, and Control IPT to ensure accurate and reliable flight performance.

During flight, the main tasks of our rockets’ on-board software are:

  • Engine ignition and shutdown control
  • Precise apogee control through the air brakes
  • Apogee detection
  • Drogue and parachute deployment
  • Logging the data from all on-board sensors
  • Receiving commands and sending telemetry to the ground station

Testing

During the development phase of our projects, all subsystems and individual components are tested to ensure correct operation. For example, when flight computers are first produced, we run a suite of benchmarks to verify that every peripheral functions properly. We also develop our own hardware-in-the-loop testing framework to recreate flight conditions and validate software behavior. Furthermore, all our members gain hands-on experience by preparing and executing field tests, including aerodynamic testing in the wind tunnel to verify air brakes and parachute drag coefficients, telemetry testing to ensure proper functioning of the radio link, and static fire testing of our hybrid motor.

Ground Station

The Ground Station is responsible for monitoring the state of the rocket and all its subsystems throughout all phases of the mission. It receives telemetry data and displays it in real time, providing continuous feedback to the team. In addition to monitoring, the Ground Station enables remote control of the rocket and ground equipment, such as the RIG system for refueling and ignition, by sending commands to perform integrity checks before launch, manage pre-flight operations, and interact with on-board systems as needed during the mission.

Requirements

Base

  • Ability to work independently and proactively
  • Availability for in-person work in Milan
  • Proficiency in the C language (including pointers, memory management, and bitwise operations)
  • Understanding of object-oriented programming concepts
  • Solid knowledge of computer architecture fundamentals
  • Experience with developing graphical interfaces or web applications

Advanced

  • Proficiency in C++ and/or Rust
  • Knowledge of software engineering principles and design patterns
  • Basic understanding of embedded systems
  • Previous experience with platforms such as Arduino, Raspberry Pi, ESP32, STM32, or similar
  • Understanding of operating systems and concurrency concepts
  • Basic experience with Git and collaborative development workflows