CédricHollande

Robotics

F1Tenth - Autonomous Racing

Full autonomous racing stack for **F1Tenth**, a 1/10-scale race car on a Jetson Orin with 2D LiDAR. Time-trial and head-to-head racing at Penn, on a 4-person team in ROS 2 Humble (C++ and Python).

F1Tenth - Autonomous Racing

Full autonomous racing stack for F1Tenth, a 1/10-scale race car on a Jetson Orin with 2D LiDAR. Time-trial and head-to-head racing at Penn, on a 4-person team in ROS 2 Humble (C++ and Python).

I owned hardware bring-up, real-car control and speed tuning, iterative raceline refinement, and race-day operations. I also built an AI-assisted raceline optimization workflow that cut per-iteration tuning time significantly, the kind of dev-loop hack that wins lap times.

  • Follow-the-Gap reactive baseline for unknown tracks
  • Pure pursuit tracking on optimized racelines
  • RRT* for obstacle-aware planning and multi-line overtaking
  • MPPI integration for aggressive high-speed control
  • Sim-to-real transfer and localization against pre-mapped tracks

MPPI

Model-Predictive Path Integral control for aggressive corner exits, where pure pursuit alone leaves time on the table.

RRT* and overtaking

RRT* generates obstacle-aware racelines on the fly so the car can commit to a passing line when it spots a slower opponent.

RRT* in simulation with static obstacles

RRT* overtaking a dynamic obstacle

Pure pursuit

Pure pursuit on optimized racelines is the baseline production controller. The overlay below shows the planned line vs the car's actual track.

Real-car tuning of the optimized raceline
Real-car tuning of the optimized raceline
Speed profile and overlay from a tuning run
Speed profile and overlay from a tuning run

Real car running pure pursuit

Real car running pure pursuit, second pass

Follow the gap

Reactive baseline for unmapped tracks: scan for the largest gap and steer through it. Cheap, robust, surprisingly fast.

Obstacle map from a follow-the-gap run

Real car after iterative tuning