Throughout 2017 I designed a hybrid rocket engine/solid rocket motor testing system with an emphasis on fast design iteration and maximum safety. To do this, I employed a wide array of microcontrollers and custom electronics, as well as building two totally separate software stacks for the autonomous and human control of the system.
The major challenge in building a rocket test system from the ground up was separation of concerns, and performance vs productivity. I chose to go with a three-tiered approach handling complexity:
C
on microcontrollers to set state, take sensor data; hard to write and debug, but fast, ~100-1000HzPython
to connect realtime microcontrollers to the high level UI layer, ~100Hz loopPython
UI layer to visualize state, provide 'test-conductor' control, running fast-ish, around ~40-60HzI did a decent job of documenting the work, and regardless, the software for the high-, middle-, and low-levels is all open
HDCS
(Human Digital Control Station)Written in Python
The HDCS
was the graphical user interface for 'test actuation', think of it like Mission Control screens.
It was built using PyQt5
and a lot of custom UI elements and communication protocols. Most communication protocols and existing UI software was way too slow for near-realtime operations.
This is what the interface looked like in an idle but armed state
When all states converged to 'the rocket engine should be firing now' a little fire image would ignite - both cute and crucial to tracking the state of things in real time as a test operator!
To showcase the work and gather interest around the open source code, I made a tutorial teaching how it works:
I considered abstracting this GUI software into a MATLAB/Simulink competitor, but at that point I was super burned out and needed to take a big break from both rockets and engineering, generally.
ADCS
(Autonomous Digital Control Station)Written in mostly in C++ with some Python
ADCS was a Linux microcomputer (Raspberry pi) specially configured for a few crucial tasks
Some of the hardware the ADCS communicates with can be seen in a hype-reel I made showcasing the meticulous electronics work
Overall, the Exoplanet project was abandoned in early 2018 as I chose to set my sights on what would eventually become Verse. It was the most intense hardware and software engineering task I've ever undertaken and I learned a ton about building and maintaining complex systems through this project.
Although I never successfuly burned the custom hybrid rocket engine, I did characterize solid rocket motors successfully at a higher resolution than ever before, and proved a number of critical shortcomings in the hybrid rocket I'd designed!
Here are some videos made to document the project