Active stabilization is currently trying to create a controls system for the Karman line rocket. Data collection and processing will eventually be handled on the new avionics board, however that will not be ready in time for active's preliminary tests. This repository contains the short term avionics system for active's tests and potentially their proof of concept flight. Eventually the top half of this code will hopefully be ported directly to the new avionics board. For this reason, the code should be written in c for compatiblity purposes and abstraction away from the hardware is essential.
Our current MCU is a Teensy 3.6 running from Arduino. We are using a 10 DoF IMU to recieve flight data, and solenoids will be actuated to control the flow through the cold gas thrusters
If you do not have Arduino installed, start there. I'm not going to include a link because the assumption that everyone working on this project already has some Arduino experience seems safe.
Then download Teensyduino from here: https://www.pjrc.com/teensy/td_download.html
Then clone this repository and open the code in Arduino
Before compiling and loading the board, select the Teensy 3.6 as your board
- located under Tools->Board->Teensy 3.6
Then you should be able to upload as if the Teensy were an Arduino board
Naming conventions:
To keep everything consistent and readable, some naming conventions should be used. We can discuss these if you think they're terrible, but for some basic guidelines:
-
filenames should start with a capital letter, and try to have everything else be lowercase. The only caracters that should be used are A-Z, 0-9, and underscore. Avod dash or em-dash, or any other special characters.
-
every .c file MUST have an accompanying header file (.h). In the header you will declare every function that's in your .c file.
-
make sure everything in the body of your header files is within the "include guards". These ensure that the body of the header file is only included once. This makes the compiler much happier.
-
also include
#ifdef __cplusplus extern "C" { #endifat the beginning of your header and#ifdef __cplusplus } #endifat the end of your header to avoid issues with Arduino linking our c headers to a c++ (.ino) file -
use camelCase for variables and snake_case for functions (that's what avionics is doing, so things will mess nicely later)
Github practices:
- use at least one other person as a reviewer on your merges, preferably include me as one
- when you have merged a branch to master and are done with it, delete it to keep things clean
- create a branch to make a change then merge back with master in a reasonable amount of time, having branches out for long periods of time causes them to fall behind and leads to unnecessary merge conflicts
I'll have someone (Doug) revise and add to this since I am in no way a github expert