Sequoia Software

From Stanford SSI Wiki
Revision as of 18:52, 13 September 2020 by Flynnd (talk | contribs) (Created page with "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...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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! Take a look at the on-boarding projects here and then contact your software team leads for details. These projects are meant both as a way to learn about the technical workings of Sequoia and a fun way to get to know the team, so never hesitate to ask for help!

Choose a Project! Background Difficulty Skills/Knowledge Involved
Connect sensors to flight computer Our sensors (sun sensors, altitude sensors, etc.) are connected to the board with various hardware mechanisms (like I2C). Some of them need to be configured to be able to use them with our software. You will be writing the code to interact with these sensors. Medium Circuitpython, PyCharm, Terminal, Hardware
Practice creating a PR using GitHub Github is how we add code to our codebase. This project will practice making a small change to the codebase, then adding it to our code repository so you can get familiar with Git. Easy Git, Github, Terminal.
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
Machine Learning Model The main mission of the satellite is to run ML models while in flight. This project will have you create a basic prototype model designed to be used on the satellite. We have a tutorial and dataset for cloud detection, although other applications are allowed. Click here for specification. Difficult Python, Data Science, Image Processing, Machine Learning
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