F1TENTH Autonomous Racing
Lidar-only autonomy on a 1/10-scale race car - from a Nav2 baseline to a custom MPC
- 10th
- ICRA 2026 Vienna - first competition
- 2 weeks
- MPC integrated to race-ready
- 50 Hz
- Closed-loop control rate
- Lidar-only
- No camera in the sensing stack
Stack
The platform
F1TENTH is a 1/10-scale autonomous racing platform: a real vehicle, with real dynamics, that has to perceive, localize, plan and control entirely on board. Scaling down removes the cost and safety envelope of full-size autonomous driving without removing the hard part. The car still slides, the compute budget is still finite, and the control loop still has to close in time or the car leaves the track.
Ours runs ROS 2 on a Jetson AGX Xavier, sensing the world through a single 2D lidar. No camera.
My role
I led the project as team lead and lead developer, responsible for the hardware and the software, with teammates contributing to the physical build. In practice that meant owning the whole vertical: vehicle build and wiring, sensor integration, the ROS 2 stack, the controller, and the trackside decisions during race weekend.
From Nav2 to a custom MPC
The first working system used Nav2. That was a deliberate choice - it gets a vehicle driving autonomously quickly, and it provides a known-good reference to measure against. For bring-up and early testing it was the right tool.
It was not the right tool for racing, partly because of its dependence on very good odometry, and mostly because of what it optimizes for. Nav2 is engineered to reach a goal safely in an environment shared with people and obstacles: conservative velocity profiles, generous clearances, reactive replanning. Racing inverts almost every one of those priorities. You want minimum-time trajectories, you want to carry speed through corners, and you want to operate close to the limits of tyre grip rather than comfortably inside them.
So the racing stack runs a custom MPC instead, closing the loop at 50 Hz. Model predictive control is the natural fit: it optimizes over a horizon against an explicit vehicle model subject to explicit constraints, which is exactly the racing problem. The engineering difficulty is that it has to solve that optimization to convergence, every 20 milliseconds, on an embedded GPU platform, without ever missing a deadline.
I took the MPC from development and integration to race-ready in two weeks, and raced it at the end of that. That timeline is the part I am most willing to be judged on. Replacing the controller at the centre of a working autonomy stack is the change most likely to break everything downstream of it, and doing it against a fixed external deadline removes the option of extending the schedule until it feels safe. It worked because the interfaces around the controller were drawn well enough that swapping what sat inside them did not require renegotiating the rest of the stack.
Result
The team placed 10th at ICRA 2026 in Vienna - its first F1TENTH competition, with a stack built from scratch.
Where this goes next
The platform is the reason this project matters beyond the result. A Jetson Xavier closing a 50 Hz loop against a hard deadline is a near-ideal testbed for the question I am most interested in now: how do you get modern learned models - RL-assisted racing policies, for instance - fast enough to sit inside a real control loop?**