← Notesengineering · simulation
Connecting a team's autonomous stack to a simulator
At Auria, I worked on bridges that let the team’s autonomous software run inside two vehicle simulators. CarMaker is developed by IPG. EUFS Sim 2 comes from Edinburgh University Formula Student. My contribution was integrating them with our system.
Translate at the boundary
A simulator and the autonomous stack need to agree on what they exchange: vehicle state and perceived cones in one direction, steering and acceleration commands in the other. Message formats, units and coordinate frames all matter at that boundary.
I built CarMaker bridges for our system and participated in Lap Time Simulation, where our team placed third. For EUFS Sim 2, I adapted the integration to NATS, the messaging system used by Auria’s autonomous stack.
Keeping translation at the bridge gives the rest of the system an explicit interface to work with. It also makes the boundary the place to check when simulator output and a consumer disagree about a measurement.
Make the run repeatable
The EUFS integration includes a packaged runtime and a launcher for the simulator and the required autonomous-system processes. The launcher handles startup, timeout and cleanup.
I also added deterministic perception profiles. Holding the profile and seed fixed makes a scenario repeatable, so a change in the controller can be examined against the same simulated conditions. That is useful alongside tests of individual components because the run exercises their integration.
Make the run visible
I integrated Rerun to inspect the simulated vehicle, cones and trajectory. A completion status tells us whether a run finished. Seeing the run gives us more context for understanding its behaviour.
This simulation work sits alongside my Trackdrive controller and CAN bus integration. The complete autonomous system is a team effort, with perception, localisation, planning, control and vehicle interfaces working together.