Rocket design, flight-computer development, and active-control simulation in OpenRocket.
The primary goal of ActiveControl_MIT_RktTeam is developing the MIT edition of OpenRocket: a desktop environment for designing rockets, testing onboard control algorithms, and understanding flight performance. Flight computers, sensors, control surfaces, recovery events, and telemetry run alongside OpenRocket's flight simulation.
This repository contains the application source, platform packaging, verification tools, and supporting flight data. The earlier Python–OpenRocket experiments remain available under sim/old/.
Download releases · Feature documentation · Architecture report · Report an issue
| Area | MIT additions |
|---|---|
| Flight-computer designer | Graphical boards, sensors, connections, and editable flight states. Portable .fc files live in a managed library, with a supplied Zephyrus baseline and simulation-specific references in .ork files. |
| Programmable control | Custom Java boards with syntax highlighting, completion, external-editor support, and compilation status. Controller blocks provide PID, velocity-weighted PID, and constant outputs, with measured inputs, baselines, and assignments to fin tabs, fin cant, or airbrakes. |
| Physical actuation and recovery | Servo commands affect the simulated rocket; FC recovery channels can deploy assigned recovery devices and take authority over OpenRocket's normal deployment rules. Initial launch spin is configurable. |
| Sensors, timing, and telemetry | Configurable measurement noise, acquisition intervals, execution costs, and PWM timing. Simulated radio packet loss/delay, selectable CSV/log destinations, measured-versus-physical plots, servo plots, and import of OR-produced FC logs as simulation results. |
| 3D flight playback | Rotate, pan, and zoom the trajectory with equal spatial scaling. Animate a rocket using recorded attitude, with a velocity arrow, motor exhaust, recovery canopy, and FC state labels. |
| Uncertainty analysis | Parallel ensembles with additive Gaussian thrust-curve noise, atmospheric and wind variation, and mass/drag/roll-coefficient uncertainty. Plot the mean and ±1σ bands in 2D, the mean trajectory in 3D, and distributions of flight-summary quantities. Save every run's results in the .ork. |
| Motor comparison | Run motor batches with manufacturer and certification filters, physical-fit checks, recovery-delay searches, flight criteria, saved summaries, and CSV export. |
| Design previews and compatibility | Fin thickness, fillets, leading-edge profiles, and deflected roll tabs are visible in previews. Export a converted copy for vanilla OpenRocket 24.12, with a summary of the conversion. |
The FC runtime extends OpenRocket's existing simulation listeners. Custom Java boards support rapid algorithm experiments; board communication and servo dynamics remain simplified. See the architecture and model limits for the implemented contracts.
Captures from the application and its verification views, using example designs and test data. Click an image for full resolution.
Download a macOS or Windows package from GitHub Releases, or run the release JAR with Java 17. Packaged installers include their Java runtime. The source tree may contain features newer than the published packages; the current development edition is 6.4.
- Open or create a rocket and configure its motors and launch conditions.
- In Edit simulation → Flight computer, enable FC simulation, load a
.fcdesign, and choose Edit… to configure hardware, behavior, Java boards, and controllers. - Assign controllers and recovery channels to the rocket's physical components, then run the simulation.
- Use Plot data for FC diagnostics or 3D playback. Enable Ensemble simulation under Simulation options to explore uncertainty across multiple flights.
Share the external .fc alongside the .ork when sharing a flight-computer setup. The designer guide, controller guide, and recovery guide explain the workflow in detail.
Use JDK 17 and the included Gradle wrapper. Python is optional and is not required to build or run the desktop application.
git clone https://github.com/MDNich/ActiveControl_MIT_RktTeam.git
cd ActiveControl_MIT_RktTeam/clone/openrocket-release-24.12.RC.01
./gradlew shadowJar
java -jar build/libs/OpenRocket-MIT-v6.4.jarOn Windows, use gradlew.bat shadowJar. Run the root shadowJar task to produce the complete application. The JAR name follows OpenRocket-MIT-v<version>.jar; its MIT version comes from build.properties.
From the same Gradle directory:
./gradlew :core:test :swing:test
./gradlew verifyMitJavadoc rocketTeamJavadoc rocketTeamUmlSome Swing and rendering checks need a graphical desktop. Platform packaging instructions are in packaging/macos/ and packaging/windows/.
| Location | Contents |
|---|---|
clone/openrocket-release-24.12.RC.01/ |
Main application, based on OpenRocket 24.12.RC.01. core contains simulation and FC logic; swing contains the desktop interface. |
core/…/edu/mit/rocket_team/ |
Java translation of the Zephyrus firmware. |
core/…/simulation/flightcomputer/ |
FC definitions, custom-board API, controller runtime, sensor models, and physical bindings. |
doc/improvements/ |
Feature guides, implementation notes, verification results, generated Javadoc, and the LaTeX architecture report. Download the Javadoc directory to browse the HTML locally. |
sim/FCsim/ |
Simulation runners, telemetry benchmarks, flight-data comparisons, and verification utilities. |
packaging/ |
macOS/Windows packaging and launcher/update verification. |
sim/old/, doc/FCsim/, bib/ |
Earlier Python integration, original FC studies, and research references. |
This is an MIT Rocket Team development fork of OpenRocket. Credit for the original simulator belongs to the OpenRocket contributors. The OpenRocket code is distributed under GPL-3.0-or-later. Please report MIT-edition issues to this repository.





