Difference between revisions of "Sequoia Satellite Software"

From Stanford SSI Wiki
Jump to navigation Jump to search
(Update ML Project on wiki)
(Redirected page to Category:Satellites)
Line 1: Line 1:
The software on the Sequoia satellite is designed to control the satellite and run machine learning models.
+
#REDIRECT [[Category:Satellites]]
 
 
== 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!
 
 
 
{| class="wikitable"
 
|-
 
! 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. [https://docs.google.com/document/d/1bawH8VaoFZkZedc3kNZm_UkIKtb_4Xcg0Ybp6E0nt1s 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
 

Revision as of 18:52, 13 September 2020