THE GOAL
Built for the NXP Cup competition: a car that reads the track with its own onboard camera and drives itself around it, with no remote control and no human in the loop.
- Pixy2 camera vision feeds dual PID loops: one for cruise, one for steering
- BLDC motor control and CAN bus communication between modules
- ROS 2 / Gazebo simulation for testing control software before touching the real car
- ESP32-C3 + MPU6050 telemetry streamed to a FastAPI server for live trajectory plots

PHOTO — CAR ON TRACK
HOW IT WORKS
A Pixy2 camera feeds track position to two independent PID loops running at register level on the automotive-grade S32K144 (one holding cruise speed, one handling steering), which drive the car's BLDC motors. Modules communicate over CAN bus, all written in register-level C/C++ in S32 Design Studio.
TRACK RUN
CURRENTLY EXPLORING
I'm exploring RTOS task scheduling for deterministic real-time sensor fusion, instead of a simple polling loop. A full ROS 2 / Gazebo simulation lets me test control software before touching the real car, alongside an ESP32-C3 + MPU6050 telemetry link that streams motion data to a FastAPI server for live trajectory plots while testing.

GAZEBO SIM
Recorded runs get replayed through a small analysis tool built for reviewing them after the fact: trajectory against the taped track, a handling classifier that flags oversteer/understeer against the intended line, and every raw channel broken out over time.

TRAJECTORY REPLAY

HANDLING ANALYSIS

RAW CHANNELS
TELEMETRY — LIVE STEERING TRACE