The v01 version of the Spike flight computer is based on the Teensy 4.1 platform, a high performance micro-controller that is Arduino compatible as well as compatible with all C++ libraries. In order to facilitate more rapid prototyping the sensors were purchased on COTS breakout boards, then soldered to a custom designed PCB.
In its present state the flight computer is running a full INS, facilitated by an Extended Kalman filter I wrote using C++ and the Eigen Matrix library. It reads data from a MEMS 6-axis IMU, a 3-axis magnetometer, and a GPS. The GPS is wired to the board via terminal blocks so that there is flexibility in placement to facilitate signal reception.
The board is set up to trigger two pyro channels, and control up to 10 servos or other PWM controlled actuators.
Current bench-marking suggests it should have no problems completing control loops at 50Hz. The code can be found on my GitHub.
In MATLAB a 6-DOF simulator was written in order to simulate the arc of a rocket. The simulator is quaternion based and tracks both position and attitude. Dynamic aerodynamic coefficients are calculated and the simulation is progressed via RK4 integration.
Simulation data was generated and both Gaussian noise and bias were applied to mimic data received from the onboard sensors. This data was then supplied to the Spike flight computer, and run through the Kalman filter. These results were sent back to MATLAB to generate the graph above. The blue line is the clean simulation data, the green is the noisy data, and the red is the filtered data from the flight computer. The process and uncertainty noise values have been tweaked to more accurately detect apogee conditions, as the first test case of the flight computer will be to trigger recovery systems.
The PCB was designed in KiCAD.
When I began this project in February of 2021 I had no experience with electronics, C++, or filtering. By July of that year I had my first custom PCB with my computer components mounted and a working Kalman filter.