This page describes the architecture for the Guidance, Navigation, and Control (GNC) system for the Sequoia project. Since this system is primarily focused on determining and controlling attitude, we also may refer to it as ADCS.

Sequoia GNC Onboarding

No matter what background you have, you can contribute to Sequoia GNC! You can learn about the intersection between physics, CS, and engineering and especially control theory. Here's a few aspects of our system we currently need someone to work on:

Chose a Project!
Project Background Skills/Knowledge Involved
Write Script to Evaluate Kalman Filter Performance A Kalman Filter is an algorithm that takes a series of noisy measurements from multiple sources over time, adds in some physics and probability theory, and estimates the current state of the satellite, with uncertainties. Currently, we have an in-progress code that simulates the physics of the satellite's rotation and a Kalman filter that gets simulated measurements from that code and estimates the orientation of the satellite. However, we need a code that runs the Kalman filter multiple times in different scenarios and evaluates its performance. This will be needed as we progress with the Kalman Filter development to evaluate its performance and identify problems. Basic knowledge of coding (particularly Python), physics, and probability theory are helpful, but by no means necessary. We expect that this project will be a good chance to learn about these.
Write an Evaluation Pipeline for Star Tracker Algorithm A star tracker takes pictures of the sky and identifies constellations of stars in the images to determine the orientation of the camera that took the image, and, by extension, the satellite. We need a comprehensive package that helps us test the performance of the star tracker. Working on this project can involve designing and coding up plots and other diagnostics as well as testing our code on real images of the sky. Also see the below related project that involves simulating synthetic images of the sky to feed into this test system. We will explain all the plots and diagnostics necessary for star tracker development and guide you through how to use all of the image analysis packages. This is a great project to learn about how to use these tools and how the star tracker works. In addition, this project is a great way to learn about positional and photometric astronomy, image analysis, and some miscellaneous computer science and probability stuff used in astronomy, image processing, and elsewhere. Basic python familiarity helpful but not required.
Write Code to Simulate Star Images to test the Star Tracker To test our star tracker code, we need to simulate what the sky will look like to our camera. This project involves using a number of astronomy packages in python to make synthetic images of the sky as they will be seen by our camera. We will explain all packages you will be using, as well as the introductory astronomy and image processing involved.
Make special format for sending GNC messages between microcontrollers Our GNC system requires sending a bunch of small messages between the two microcontrollers onboard the satellite. To send messages as quickly and efficiently as possible, we need a short code on both microcontrollers to put the messages into standardized formats to eliminate overhead. This project will involve coming up with these formats and writing python scripts to handle the messages. Basic knowledge of binary, python coding, and linear algebra would be helpful, but if not this is a great project to learn them
Write Algorithm to Search Nearby Magnetic Field Map to Determine Location based on Measured Magnetic Field Our satellite has a magnetic field sensor onboard as well as a map of Earth's magnetic field. Putting the two together, we will be able to tell our position relative to Earth. This is a standard problem in GNC; however, we have not started our code to do this yet. This would be a more self-driven project involving some math and some basic physics and algorithms. The best way to start would likely be a literature review (as mentioned, this is a standard GNC technique) to figure out how you want to design this algorithm.
Write/improve our plotting software for satellite orbits and learn about orbital mechanics on the way! There are a number of software packages that can predict satellite orbits, as well as some code we have, or we can walk you through programming our own. Duck
Something New! We are always looking for better ideas for our sattelite! Either better ways to achieve our current aims or (potentially) adding some new feature you want to work on. We do not know what skills will be involved but we guess that churning butter will not be one of them.

If you're interested in working on the GNC components of the satellite, you can email the leads Alec Lessing (aml2023@stanford.edu) or Rodrigo Castellon (rjcaste@stanford.edu)!

Overview of Sequoia GNC Architecture

Below is a diagram of our GNC architecture for the Sequoia satellite. Our system is split between two microcontrollers (PyCubed and Raspberry Pi), with more computation-heavy algorithms running on the Raspberry Pi.