<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://ssi-wiki.stanford.edu/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Moritzstephan</id>
	<title>Stanford SSI Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://ssi-wiki.stanford.edu/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Moritzstephan"/>
	<link rel="alternate" type="text/html" href="https://ssi-wiki.stanford.edu/Special:Contributions/Moritzstephan"/>
	<updated>2026-04-15T07:02:16Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://ssi-wiki.stanford.edu/w/index.php?title=Satellite_Software&amp;diff=4119</id>
		<title>Satellite Software</title>
		<link rel="alternate" type="text/html" href="https://ssi-wiki.stanford.edu/w/index.php?title=Satellite_Software&amp;diff=4119"/>
		<updated>2020-10-01T17:09:39Z</updated>

		<summary type="html">&lt;p&gt;Moritzstephan: /* Basics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Satellites software is responsible for writing the code to operate our satellite-related projects. Currently, the team is working on writing the flight software and payload code for Sequoia (see [[Sequoia Software]]). &lt;br /&gt;
&lt;br /&gt;
==Onboarding==&lt;br /&gt;
===Basics===&lt;br /&gt;
1. Join the SSI slack, and the #satellites and #satellites-software channels. Joining #satellites-systems is optional, if you want to receive info on systems-level discussions. &lt;br /&gt;
&lt;br /&gt;
2. Come to meetings Thursdays at 10:00 am PST. &lt;br /&gt;
&lt;br /&gt;
3. Create a github account (www.github.com) and DM @langston and @moritz (the software co-leads) your username&lt;br /&gt;
&lt;br /&gt;
4. Also message @langston and @moritz your Stanford email, so you can get added to the Google Drive. &lt;br /&gt;
&lt;br /&gt;
5. Read [[Sequoia Software]] to get a broad understanding of our systems. Also, skim at [https://docs.google.com/presentation/d/1DwoCL9TMRcKcJKjmmA1fXvl3jTsyAJqPgZrezuWSQag/edit?usp=sharing the slides] from our preliminary design review to see the current state of our subsystems. &lt;br /&gt;
&lt;br /&gt;
6. Take a look at the projects below, and see which ones interest you. Message @langston and @moritz which one you want to do, or if you have any questions.&lt;br /&gt;
&lt;br /&gt;
7. Setup your workspace (see below). Some tools are only required for certain projects, but some are required for almost everything, like Git and Pycharm.&lt;br /&gt;
&lt;br /&gt;
== Onboarding Projects ==&lt;br /&gt;
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!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Choose a Project! || Background || Difficulty || Skills/Knowledge Involved || Link to Spec&lt;br /&gt;
|-&lt;br /&gt;
| 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. || [https://docs.google.com/document/d/1GLyWKa5z4wZ9yhaHbm1K3uFvyfgPFTOyxtOsDbUnrvE Specification]&lt;br /&gt;
|-&lt;br /&gt;
| 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 || [https://docs.google.com/document/d/1ZWL9MvW_2tVnGzFI_tQNpB-c1mfshqX5QQEkKCeFUYI Specification] &lt;br /&gt;
|-&lt;br /&gt;
| 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 || [https://docs.google.com/document/d/1VB5gb-bnp_UFKpjpO19iZd7fr1wIAzVZ1ZSG1nAKx44 Specification]&lt;br /&gt;
|-&lt;br /&gt;
| Define Radio Message-Passing Format || We have a working radio, but we still need to the format of the data we send and the commands we receive. This will also involve researching existing satellites and protocols. || Medium ||  Circuitpython, PyCharm, Radio, LoRa|| [https://docs.google.com/document/d/1vPeG-qkxTSYBcFwMqxWHhPL9Y8wMy-m9YjU5WEven1A Specification]&lt;br /&gt;
|-&lt;br /&gt;
| 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 || TBA&lt;br /&gt;
|-&lt;br /&gt;
| 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.  || Difficult || Python, Data Science, Image Processing, Machine Learning || [https://docs.google.com/document/d/1bawH8VaoFZkZedc3kNZm_UkIKtb_4Xcg0Ybp6E0nt1s Specification]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Points of Contact == &lt;br /&gt;
These are people you should talk to when you have questions about a part of the software codebase, and also request reviews from when you create a PR. &lt;br /&gt;
&lt;br /&gt;
* PyCubed (i.e. flight_computer/): Langston Nashold (@lgnashold on Github)&lt;br /&gt;
* Raspberry Pi (i.e. Payload/): Moritz (@austrian_code_wizard)&lt;br /&gt;
* Radio Telemetry on PyCubed: Zach Witzel (@zachwitz)&lt;br /&gt;
* Modeling (sequoia-modeling repo): Langston Nashold, Rayan Krishnan (@rayank)&lt;br /&gt;
&lt;br /&gt;
== Workspace Setup == &lt;br /&gt;
=== Git(Hub) ===&lt;br /&gt;
Git is a tool for tracking revisions to a codebase, and GitHub is a central place to store these revisions. It&#039;s the most common version control system used in software development. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Setup Steps&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Create a Github account (http://www.github.com)&lt;br /&gt;
&lt;br /&gt;
2. Message @moritz or @langston with your github username and ask to be added to the Github Team&lt;br /&gt;
&lt;br /&gt;
3. Install either git on the command line, if you are comfortable with the terminal, or github desktop, if you prefer a GUI. These steps focus on using git from the terminal. &lt;br /&gt;
* Instructions to install Git: https://www.atlassian.com/git/tutorials/install-git &lt;br /&gt;
* Instructions to install the desktop GUI: https://desktop.github.com/ &lt;br /&gt;
&lt;br /&gt;
4. Try checking out the codebase! Go [https://github.com/stanford-ssi/sequoia-software the repository] and press clone. In the terminal, run the following command (if you are using the CLI)&lt;br /&gt;
git clone https://github.com/stanford-ssi/sequoia-software.git  &lt;br /&gt;
&lt;br /&gt;
5.  You should see the codebase downloaded to a local folder. &lt;br /&gt;
&lt;br /&gt;
If you&#039;ve never used git before, check out [https://www.atlassian.com/git/tutorials this tutorial] for an introduction.&lt;br /&gt;
&lt;br /&gt;
=== PyCharm ===&lt;br /&gt;
PyCharm is an IDE that makes it easy to edit Python files. This will be used for development on both the PyCubed and RaspberryPi. You can download it from [https://www.jetbrains.com/pycharm/ here].&lt;br /&gt;
&lt;br /&gt;
=== Dataplicity ===&lt;br /&gt;
Dataplicity is a tool we use to access the PyCubed remotely. It lets us login to a RaspberryPi that has the PyCubed mounted as a drive. You can copy files to the PyCubed and view the PyCubed output. &lt;br /&gt;
&lt;br /&gt;
1. Create an account on dataplicity.com&lt;br /&gt;
&lt;br /&gt;
2. Message @flynn (Sats lead) the email you used to sign up with, saying you need access to dataplicity&lt;br /&gt;
&lt;br /&gt;
3. You should see two Raspberry Pi&#039;s. One of them has the PyCubed. &lt;br /&gt;
&lt;br /&gt;
4. Dataplicity is basically like ssh, so you can access the command line of the Raspberry Pis from your browser.&lt;br /&gt;
 &lt;br /&gt;
5. The PyCubed files are stored at /mount/PYCUBED. Copy code to and from this to change what the PyCubed runs. &lt;br /&gt;
&lt;br /&gt;
6. To see the PyCubed REPL, run the command &lt;br /&gt;
* screen /devices/ttyACM0&lt;br /&gt;
&lt;br /&gt;
7. Since dataplicity is slow, it&#039;s easier to edit files locally, push to a github branch, pull the github branch onto dataplicity, and copy them onto PyCubed if necessary&lt;/div&gt;</summary>
		<author><name>Moritzstephan</name></author>
	</entry>
	<entry>
		<id>https://ssi-wiki.stanford.edu/w/index.php?title=Sequoia_Satellite_Software&amp;diff=3930</id>
		<title>Sequoia Satellite Software</title>
		<link rel="alternate" type="text/html" href="https://ssi-wiki.stanford.edu/w/index.php?title=Sequoia_Satellite_Software&amp;diff=3930"/>
		<updated>2020-08-29T20:50:07Z</updated>

		<summary type="html">&lt;p&gt;Moritzstephan: /* On Boarding Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The software on the Sequoia satellite is designed to control the satellite and run machine learning models.&lt;br /&gt;
&lt;br /&gt;
== On Boarding Projects ==&lt;br /&gt;
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!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Choose a Project! || Background || Difficulty || Skills/Knowledge Involved&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| 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. &lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| ML project tbd || Example || Difficult || Example&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sequoia Software Technical Overview ==&lt;br /&gt;
&lt;br /&gt;
Sequoia&#039;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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PyCubed (Flight Controller) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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!&lt;br /&gt;
&lt;br /&gt;
Keywords &amp;amp; Projects:&lt;br /&gt;
* State Machine&lt;br /&gt;
* Radio protocol&lt;br /&gt;
* GNC Integration&lt;br /&gt;
* Sensor integration&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi (Payload) ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keywords &amp;amp; Projects:&lt;br /&gt;
* Microservice Architecture&lt;br /&gt;
* Camera drivers&lt;br /&gt;
* Radio driver/comms protocol&lt;br /&gt;
* Image processing&lt;br /&gt;
* Train AI models&lt;br /&gt;
* Performance optimization&lt;br /&gt;
* Containerizing&lt;/div&gt;</summary>
		<author><name>Moritzstephan</name></author>
	</entry>
	<entry>
		<id>https://ssi-wiki.stanford.edu/w/index.php?title=Sequoia_Satellite_Software&amp;diff=3894</id>
		<title>Sequoia Satellite Software</title>
		<link rel="alternate" type="text/html" href="https://ssi-wiki.stanford.edu/w/index.php?title=Sequoia_Satellite_Software&amp;diff=3894"/>
		<updated>2020-08-28T02:06:47Z</updated>

		<summary type="html">&lt;p&gt;Moritzstephan: /* On Boarding Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The software on the Sequoia satellite is designed to control the satellite and run machine learning models.&lt;br /&gt;
&lt;br /&gt;
== On Boarding Projects ==&lt;br /&gt;
Wondering how to start getting involved? You came to the right spot!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Caption text&lt;br /&gt;
|-&lt;br /&gt;
! Choose a Project! || Background || Difficulty || Skills/Knowledge Involved&lt;br /&gt;
|-&lt;br /&gt;
| Connect sensors to flight computer || Example || Medium || Example&lt;br /&gt;
|-&lt;br /&gt;
| Practice using GitHub || Example || Easy || Example&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| ML project tbd || Example || Difficult || Example&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sequoia Software Technical Overview ==&lt;br /&gt;
&lt;br /&gt;
Sequoia&#039;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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PyCubed (Flight Controller) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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!&lt;br /&gt;
&lt;br /&gt;
Keywords &amp;amp; Projects:&lt;br /&gt;
* State Machine&lt;br /&gt;
* Radio protocol&lt;br /&gt;
* GNC Integration&lt;br /&gt;
* Sensor integration&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi (Payload) ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keywords &amp;amp; Projects:&lt;br /&gt;
* Microservice Architecture&lt;br /&gt;
* Camera drivers&lt;br /&gt;
* Radio driver/comms protocol&lt;br /&gt;
* Image processing&lt;br /&gt;
* Train AI models&lt;br /&gt;
* Performance optimization&lt;br /&gt;
* Containerizing&lt;/div&gt;</summary>
		<author><name>Moritzstephan</name></author>
	</entry>
	<entry>
		<id>https://ssi-wiki.stanford.edu/w/index.php?title=Sequoia_Satellite_Software&amp;diff=3893</id>
		<title>Sequoia Satellite Software</title>
		<link rel="alternate" type="text/html" href="https://ssi-wiki.stanford.edu/w/index.php?title=Sequoia_Satellite_Software&amp;diff=3893"/>
		<updated>2020-08-28T02:05:05Z</updated>

		<summary type="html">&lt;p&gt;Moritzstephan: /* On Boarding Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The software on the Sequoia satellite is designed to control the satellite and run machine learning models.&lt;br /&gt;
&lt;br /&gt;
== On Boarding Projects ==&lt;br /&gt;
Wondering how to start getting involved? You came to the right spot!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Caption text&lt;br /&gt;
|-&lt;br /&gt;
! Chose a Project! || Background || Difficulty || Skills/Knowledge Involved&lt;br /&gt;
|-&lt;br /&gt;
| Connect sensors to flight computer || Example || Medium || Example&lt;br /&gt;
|-&lt;br /&gt;
| Practice using GitHub || Example || Easy || Example&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| ML project tbd || Example || Difficult || Example&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sequoia Software Technical Overview ==&lt;br /&gt;
&lt;br /&gt;
Sequoia&#039;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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PyCubed (Flight Controller) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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!&lt;br /&gt;
&lt;br /&gt;
Keywords &amp;amp; Projects:&lt;br /&gt;
* State Machine&lt;br /&gt;
* Radio protocol&lt;br /&gt;
* GNC Integration&lt;br /&gt;
* Sensor integration&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi (Payload) ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keywords &amp;amp; Projects:&lt;br /&gt;
* Microservice Architecture&lt;br /&gt;
* Camera drivers&lt;br /&gt;
* Radio driver/comms protocol&lt;br /&gt;
* Image processing&lt;br /&gt;
* Train AI models&lt;br /&gt;
* Performance optimization&lt;br /&gt;
* Containerizing&lt;/div&gt;</summary>
		<author><name>Moritzstephan</name></author>
	</entry>
	<entry>
		<id>https://ssi-wiki.stanford.edu/w/index.php?title=Sequoia_Satellite_Software&amp;diff=3892</id>
		<title>Sequoia Satellite Software</title>
		<link rel="alternate" type="text/html" href="https://ssi-wiki.stanford.edu/w/index.php?title=Sequoia_Satellite_Software&amp;diff=3892"/>
		<updated>2020-08-28T00:04:15Z</updated>

		<summary type="html">&lt;p&gt;Moritzstephan: /* On Boarding */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The software on the Sequoia satellite is designed to control the satellite and run machine learning models.&lt;br /&gt;
&lt;br /&gt;
== On Boarding Projects ==&lt;br /&gt;
Wondering how to start getting involved? You came to the right spot!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Caption text&lt;br /&gt;
|-&lt;br /&gt;
! Chose a Project! || Background || Difficulty || Skills/Knowledge Involved&lt;br /&gt;
|-&lt;br /&gt;
| Connect sensors to flight computer || Example || Medium || Example&lt;br /&gt;
|-&lt;br /&gt;
| Practice using GitHub || Example || Easy || Example&lt;br /&gt;
|-&lt;br /&gt;
| 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 || Pyton, CircuitPython, Redis, Microservices, PyCharm, SSH, Terminal&lt;br /&gt;
|-&lt;br /&gt;
| ML project tbd || Example || Difficult || Example&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sequoia Software Technical Overview ==&lt;br /&gt;
&lt;br /&gt;
Sequoia&#039;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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PyCubed (Flight Controller) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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!&lt;br /&gt;
&lt;br /&gt;
Keywords &amp;amp; Projects:&lt;br /&gt;
* State Machine&lt;br /&gt;
* Radio protocol&lt;br /&gt;
* GNC Integration&lt;br /&gt;
* Sensor integration&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi (Payload) ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keywords &amp;amp; Projects:&lt;br /&gt;
* Microservice Architecture&lt;br /&gt;
* Camera drivers&lt;br /&gt;
* Radio driver/comms protocol&lt;br /&gt;
* Image processing&lt;br /&gt;
* Train AI models&lt;br /&gt;
* Performance optimization&lt;br /&gt;
* Containerizing&lt;/div&gt;</summary>
		<author><name>Moritzstephan</name></author>
	</entry>
	<entry>
		<id>https://ssi-wiki.stanford.edu/w/index.php?title=Sequoia_Satellite_Software&amp;diff=3887</id>
		<title>Sequoia Satellite Software</title>
		<link rel="alternate" type="text/html" href="https://ssi-wiki.stanford.edu/w/index.php?title=Sequoia_Satellite_Software&amp;diff=3887"/>
		<updated>2020-08-22T19:45:17Z</updated>

		<summary type="html">&lt;p&gt;Moritzstephan: /* Raspberry Pi (Payload) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The software on the Sequoia satellite is designed to control the satellite and run machine learning models.&lt;br /&gt;
&lt;br /&gt;
== On Boarding ==&lt;br /&gt;
Help us modify our satellite to complete our mission!&lt;br /&gt;
&lt;br /&gt;
== Sequoia Software Technical Overview ==&lt;br /&gt;
&lt;br /&gt;
Sequoia&#039;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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PyCubed (Flight Controller) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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!&lt;br /&gt;
&lt;br /&gt;
Keywords &amp;amp; Projects:&lt;br /&gt;
* State Machine&lt;br /&gt;
* Radio protocol&lt;br /&gt;
* GNC Integration&lt;br /&gt;
* Sensor integration&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi (Payload) ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keywords &amp;amp; Projects:&lt;br /&gt;
* Microservice Architecture&lt;br /&gt;
* Camera drivers&lt;br /&gt;
* Radio driver/comms protocol&lt;br /&gt;
* Image processing&lt;br /&gt;
* Train AI models&lt;br /&gt;
* Performance optimization&lt;br /&gt;
* Containerizing&lt;/div&gt;</summary>
		<author><name>Moritzstephan</name></author>
	</entry>
	<entry>
		<id>https://ssi-wiki.stanford.edu/w/index.php?title=Sequoia_Satellite_Software&amp;diff=3886</id>
		<title>Sequoia Satellite Software</title>
		<link rel="alternate" type="text/html" href="https://ssi-wiki.stanford.edu/w/index.php?title=Sequoia_Satellite_Software&amp;diff=3886"/>
		<updated>2020-08-22T19:45:02Z</updated>

		<summary type="html">&lt;p&gt;Moritzstephan: /* PyCubed (Flight Controller) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The software on the Sequoia satellite is designed to control the satellite and run machine learning models.&lt;br /&gt;
&lt;br /&gt;
== On Boarding ==&lt;br /&gt;
Help us modify our satellite to complete our mission!&lt;br /&gt;
&lt;br /&gt;
== Sequoia Software Technical Overview ==&lt;br /&gt;
&lt;br /&gt;
Sequoia&#039;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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PyCubed (Flight Controller) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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!&lt;br /&gt;
&lt;br /&gt;
Keywords &amp;amp; Projects:&lt;br /&gt;
* State Machine&lt;br /&gt;
* Radio protocol&lt;br /&gt;
* GNC Integration&lt;br /&gt;
* Sensor integration&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi (Payload) ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keywords &amp;amp; Projects:&lt;br /&gt;
- Microservice Architecture&lt;br /&gt;
- Camera drivers&lt;br /&gt;
- Radio driver/comms protocol&lt;br /&gt;
- Image processing&lt;br /&gt;
- Train AI models&lt;br /&gt;
- Performance optimization&lt;br /&gt;
- Containerizing&lt;/div&gt;</summary>
		<author><name>Moritzstephan</name></author>
	</entry>
	<entry>
		<id>https://ssi-wiki.stanford.edu/w/index.php?title=Sequoia_Satellite_Software&amp;diff=3885</id>
		<title>Sequoia Satellite Software</title>
		<link rel="alternate" type="text/html" href="https://ssi-wiki.stanford.edu/w/index.php?title=Sequoia_Satellite_Software&amp;diff=3885"/>
		<updated>2020-08-22T19:44:23Z</updated>

		<summary type="html">&lt;p&gt;Moritzstephan: /* Sequoia Software Technical Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The software on the Sequoia satellite is designed to control the satellite and run machine learning models.&lt;br /&gt;
&lt;br /&gt;
== On Boarding ==&lt;br /&gt;
Help us modify our satellite to complete our mission!&lt;br /&gt;
&lt;br /&gt;
== Sequoia Software Technical Overview ==&lt;br /&gt;
&lt;br /&gt;
Sequoia&#039;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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PyCubed (Flight Controller) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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!&lt;br /&gt;
&lt;br /&gt;
Keywords &amp;amp; Projects:&lt;br /&gt;
- State Machine&lt;br /&gt;
- Radio protocol&lt;br /&gt;
- GNC Integration&lt;br /&gt;
- Sensor integration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi (Payload) ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Keywords &amp;amp; Projects:&lt;br /&gt;
- Microservice Architecture&lt;br /&gt;
- Camera drivers&lt;br /&gt;
- Radio driver/comms protocol&lt;br /&gt;
- Image processing&lt;br /&gt;
- Train AI models&lt;br /&gt;
- Performance optimization&lt;br /&gt;
- Containerizing&lt;/div&gt;</summary>
		<author><name>Moritzstephan</name></author>
	</entry>
	<entry>
		<id>https://ssi-wiki.stanford.edu/w/index.php?title=Sequoia_Satellite_Software&amp;diff=3836</id>
		<title>Sequoia Satellite Software</title>
		<link rel="alternate" type="text/html" href="https://ssi-wiki.stanford.edu/w/index.php?title=Sequoia_Satellite_Software&amp;diff=3836"/>
		<updated>2020-08-15T19:46:44Z</updated>

		<summary type="html">&lt;p&gt;Moritzstephan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The software on the Sequoia satellite is designed to control the satellite and run machine learning models.&lt;br /&gt;
&lt;br /&gt;
== On Boarding ==&lt;br /&gt;
Help us modify our satellite to complete our mission!&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
[[Design Objectives]]&lt;/div&gt;</summary>
		<author><name>Moritzstephan</name></author>
	</entry>
</feed>