Positioning Payload



Specifications:

67 Hz Multithreaded positional polling rate

807 data values written to SD card per second

Low Voltage 3.3V, >1 Hour Battery Lifetime

≈50$ Complete functional model cost

RMS accuracy of 0.46 m for quick movements*

Positional Payload

Motivation:

A common concern of designing a rocket is correct measurement of its altitude to correctly deploy parachutes on motor ejection charge for rocket recovery. An additional concern is the actual recovery of the rocket, it is particularly easy to lose track of where it is as you can see in the video, thus why a GPS system is included too.

Previous solutions for Altimeters and Positioning failed catastrophically and proved costly in our experience. Additionally, our data proved bottlenecked by the polling rate (Around 10Hz), prompting me to embark on this project on Signal Processing, Embedded Systems, and Multithreading.

Hardware:

Identifying this as a case of the Readers-writers problem, where we can multithread reading from sensors and saving the data by writing it onto an SD card.

I chose the ESP32-WROOM-32D as a microcontroller, with Posix thread support and two cores.

I chose the IMU as either the MPU6050 or BNO055 interchangeably depending on what was available in the shop.

I wired a 9V battery through an LM2596 buck converter module for precise voltage regulation, and obtained a >1h battery life in my tests.

Positional Payload Schematic

Firmware:

IMU-only based positioning has as main weakness, noise. Exponential accumulation of drift makes certain systems useless. As such, leveraging the heavy acceleration forces inherent to a rocket’s movements, this project tries to prove the hypothesis that using heavy dampening through Low-Pass and Kalman filtering would prove to lower the drift to acceptable quantities even if using a commercial-grade IMU, and outperform a GPS.

This project also gains valuable 6-DoF, acceleration, and velocity data to be used in simulation not provided by a GPS. Future use as a backup system or sensor fusion complementing the GPS could also follow.

BNO055 IMU
Polling Rates Cost Accuracy

Results and Conclusions:

Implementing multithreading in a second readers-writers paradigm increased the polling rate from 39Hz to 67Hz, proving a great success. Multithreading while prioritizing writers to prevent buffer overflows resulting in complete program failure proved superior in a limited-memory microcontroller scenario.

This system proves a solid low-budget contender against GPS-based alternatives.

*:

Testing accuracy for this system proves particularly difficult as the main weakness of this system is drift accumulation, compensated for through a Low-pass and Kalman filtering. Thus, only quick high-acceleration movements are adequate for testing, this constraint makes thorough and accurate testing particularly difficult as recreating accelerations as produced by a rocket multiple times is difficult.