American Modelica & FMI Conference 2026 · Workshop
Hands-On with Rumoca: From Modelica Source to Simulation and Multiple Algebraic Backends in VS Code
James Goppert · Managing Director, PURT; Research Assistant Professor
Micah Condie · PhD student, School of Aeronautics and Astronautics
Purdue University
Join & Get Started
1. Open the workshop Codespace
Create Codespace →Scan or click. Requires a GitHub account with Codespaces allowance. Prefer local? See local setup or browse the workshop repository.
2. Join remotely on Microsoft Teams
Join Teams Meeting →About the Workshop
How many versions of the same physics do you maintain? Independently written simulation, fitting and control models drift apart. Rumoca is an open, Rust-native Modelica compiler that lets one declared model travel into simulation, identification, optimization and verification without silently becoming a different model.
In this tutorial you take a single small Modelica model, a planar quadrotor, through three steps: simulate it, fit its drag with JAX, then plan a constrained trajectory with CasADi. All from the same source:
import rumoca as rum
model = rum.Session().load("models/Quadrotor.mo", model="Quadrotor")
jax_model = model.to_jax()
casadi_model = model.to_casadi() Along the way you'll edit and run models in VS Code and the browser, configure scenarios with TOML, drive a Three.js visualization, and write a custom code-generation target that emits Lean-checked equations and a differentiable Torch model.
Any modeling domain is welcome and no aerospace background is needed. Basic Modelica familiarity helps but isn't required.
Agenda
-
10:00 – 10:10
Welcome & open experiment challenge
Introductions, the core exercises, and the optional challenge: apply Rumoca to a question you care about.
-
10:10 – 10:20
Why Rumoca? One model, many questions
How declared Modelica equations travel through AST, Flat, DAE and Solve IRs into JAX, CasADi and other targets.
-
10:20 – 10:30
Browser plot & choose your setup route
Zero-install run in the playground, then pick a route: Codespaces, local Dev Container, or native uv.
-
10:30 – 10:45
Simulation setup & the live user guide
Fly the user guide’s quadrotor, read the scenario TOML, drive a Three.js scene, and explore the NACA airfoil flow.
-
10:45 – 11:00
Simulate a planar quadrotor
Inspect Quadrotor.mo and make your first engineering change: add quadratic drag and compare distance flown.
-
11:00 – 11:10
Break
-
11:10 – 11:50
Fit drag from noisy data with JAX
Differentiate the prediction error through Rumoca’s JAX dynamics, fit two coefficients, and test on a held-out flight.
-
11:50 – 12:00
Custom targets: Lean & Torch
Write a Jinja template, generate Lean-checked equations, and learn a policy through a generated Torch model.
-
12:00 – 12:10
Break
-
12:10 – 12:40
Plan a trajectory with CasADi
Compile the same model to CasADi and move between hovers while respecting thrust, torque, pitch and altitude limits.
-
12:40 – 12:50
Beyond the core
PURT pylon racing, FastDyn firmware-in-the-loop, fixed-wing workbench, motion-capture identification, SLAM Lab, and the community.
-
12:50 – 13:00
Challenge demos & wrap-up
Up to five 45-second demos, an audience vote for a CogniPilot stocking cap, and how to join the research community.
Open Experiment Challenge
During downtime, apply Rumoca to a problem you care about. One change to an existing model, controller or simulator is enough. Entries close at 12:40; up to five experiments are demoed at 12:50 (45 seconds each), and the audience favorite wins a CogniPilot stocking cap. See the challenge rules.
Materials
-
Participant guide →
Step-by-step worksheet, commands and expected results
-
Slides (PDF) →
The full workshop deck
-
Local setup →
Dev Container or native uv install
-
Troubleshooting →
Recovery steps if setup goes wrong
-
Challenge rules →
Open experiment challenge, entries close 12:40
-
Browser apps →
Fixed-wing, mocap identification and SLAM experiments
-
Custom targets →
Write your own Rumoca code-generation target
-
Playground →
Zero-install modeling and simulation in the browser
Conference Information
Conference Page →Join the Community
Bring a model or a question from your own domain, contribute a validation case, model library or compiler improvement, or talk with us about research collaboration. The upcoming PURT pylon racing competition will also leverage Rumoca.
- Rumoca on GitHub: github.com/CogniPilot/rumoca
- Contact: condiem@purdue.edu