As part of the Boston University Rocket Propulsion Group, I led the development of a real-time control graphical user interface (GUI) for a rocket test stand designed to provide responsive and efficient monitoring and control of the test stand’s operations. This GUI was built using Flask with WebSockets for low-latency communication between the frontend and backend, enabling live updates of sensor data and actuator states directly in a browser. This format allows for easily extending functionality to accommodate future features.
The GUI features real-time updating graphs, implemented using HTML canvas elements as a high-performance alternative to libraries like Chart.js. This approach achieved a 7x performance improvement, significantly reducing CPU and memory utilization during front-end computation. By using vanilla JavaScript instead of React or something similar, the system avoided the resource-intensive overhead of library functions with high operation counts, ensuring efficient operation under heavy load.
To ensure precise and reliable communication between the GUI and the rocket test stand, we utilized UDP packets for transmitting actuator states. UDP was chosen for its minimal overhead and ability to support precise timing requirements, which were critical for our small embedded devices. This approach worked effectively in our setup, as the system operates on a small, isolated network with no congestion. In this environment, any physical event severe enough to drop a UDP connection would also drop a TCP connection, making UDP a practical choice.
To enhance reliability, we implemented acknowledgment (ACK) commands to verify that each state transmission was successful. This combined the low-latency benefits of UDP with application-level checks for reliable communication.
The GUI supports an autosequence feature, which allows scripts to be loaded and executed for precise control of actuator commands at specified time intervals. This feature is critical for firing engines, as the timing of oxidizer, fuel, and ignition must be extremely precise for successful operations.
In addition, the system includes an abort sequence, which is defined in a separate script. In the event of an emergency or anomaly in the stand, the abort sequence can be executed to immediately safe the stand. This provides an automated, reliable way to respond to critical situations, prioritizing safety and protecting personnel and equipment.