We were inspired to build this project due to our affiliation to the Queen's Rocket Engineering Team. We wanted to create a simple kit-rocket flight simulation tool that can be easily used by people without any technical background.
What it does
RSim provides a simple web interface for inputting rocket parameters using sliders. Once the simulation is run, these parameters are used to model and plot predicted flight data for the model rocket. RSim also supports user upload of captured flight data, allowing for easy comparison between simulated and actual data.
How it works
Our frontend is made in React.js. The web-app connects to a backend written in python. The frontend POSTs json with the user-selected parameters for the rocket to the backed. The backend then uses Numpy and SciPy to numerically solve a differential equation model for the flight of the user's rocket and emits a json array of time-altitude pairs back to front-end. Finally the front-end perform numerical differentiation to determine velocity and acceleration for the rocket before plotting all three graphs with React-vis.
Challenges I ran into
Implementation of the physics equations proved to be challenging due to the presence of differentials which did not plot well on the web-page. The equations were also difficult to derive as we needed to combine multiple differential equations together and simplify them for a code implementation.
Accomplishments that I'm proud of
We are proud that we were able to plot the graphs on a web-app and overcame the complexity of the equations.
What I learned
We learned a lot about both rocket physics and behavior as well as equation integration in python. This was also our first time using React-vis and we found that the tool is very useful.
What's next for R-Sim
The next step for R-Sim would be to allow for more user customization for the theoretical rocket model and add the ability to calculate for center of pressure and center of gravity on the rocket which can be used to derive rocket stability during turbulent flight. This would be a useful feature for performance analysis.