Sequoia Satellite Software

From Stanford SSI Wiki
Jump to navigation Jump to search

The software on the Sequoia satellite is designed to control the satellite and run machine learning models.

On Boarding Projects

Wondering how to start getting involved? You came to the right spot!

Caption text
Choose a Project! Background Difficulty Skills/Knowledge Involved
Connect sensors to flight computer Example Medium Example
Practice using GitHub Example Easy Example
Experiment with existing code base The current setup includes the Raspberry Pi as well as our PyCubed flight controller. This task is about looking at our existing software, actually running it on our hardware and playing around with it to get a better sense of what direction you want to take this project. This task will involve lots of close contact with the existing team members, who will help you get set up and explain any open questions. Medium Python, CircuitPython, Redis, Microservices, PyCharm, SSH, Terminal
ML project tbd Example Difficult Example
Create simulated sensors for testing and development Since the creation of the hardware of our satellite takes time, we need to develop software for hardware that does not even exist yet. To make this task easier, a critical and helpful tool are small pieces of code that can simulate the behavior of an actual sensor or other device. For example, you could model a thermometer by investigating how the temperature of the satellite should change in a simplified scenario and then use that information to code a simple class that our main software can interact with to get simulated temperature readings. Medium Python, MicroPython, Object Oriented Programming, PyCharm, Terminal, Physics

Sequoia Software Technical Overview

Sequoia's software systems are logically split into two areas. There is a flight computer, the PyCubed, which controls all the low-level flight control functionality, including receiving commands from the ground, downlinking telemetry, running most GNC algorithms, controlling the power systems, and supervising our payload. The payload is a Raspberry Pi SoC that is equipped with two cameras and S-Band radio. It collects images, processes them using ML models specific to a given research objective, and downlinks the results and images over its high-bandwidth radio.


PyCubed (Flight Controller)

The PyCubed is essentially the brain of the satellite. It is a circuit board specially made (at Stanford!) for use with satellites. It is responsible for controlling things like the radio used to command the satellite and has sensors on the board to detect the satellite orientation (with the IMU) and the position (with GPS). It is written in CircuitPython, a variant of python written for use with microcontrollers. We have a board that we can use for development as well as other microcontrollers that are compatible with Circuit Python, so everyone can get their hands dirty!

Keywords & Projects:

  • State Machine
  • Radio protocol
  • GNC Integration
  • Sensor integration

Raspberry Pi (Payload)

The RaspberryPi is the payload computer: it helps us fulfill the science and technical goals we have. It is not critical to flying the satellite, but it is what makes the satellite interesting. This is where all the code relating to AI is housed, and also has the radio that sends large packets (like images) to the ground. What is even more exciting is that we implement functionality to upload new models to the satellite once it is already in orbit, making it the first truly software-defined CubeSat. The Raspberry Pi Code is mostly written in Python and follows a microservice architecture that borrows heavily from traditional robotics frameworks.

Keywords & Projects:

  • Microservice Architecture
  • Camera drivers
  • Radio driver/comms protocol
  • Image processing
  • Train AI models
  • Performance optimization
  • Containerizing