Driverless Kart
Flagship project · 2020 – present · Outdoor autonomous vehicle testbed built on a real competition kart.
📚 Documentation · 💻 kart-brain (perception + control) · kart-docs (mechanical/electrical/process) · driverless (legacy Python stack)
Status — May 2026
ROS 2 migration complete. Manual mode fully operational. First autonomous run completed 5 full laps on a cone-defined track (April 2025) before a printed PLA sun gear in the steering reducer snapped on the 6th lap — a known PLA-creep failure with a brass upgrade already designed. Autonomous mode actively integrated.
Read the Build Journey Full technical documentation (kart-docs)
What it is
A modular autonomous platform built on a real Tony Kart chassis, designed as an outdoor testbed for perception, planning, and control algorithms. Maintains manual drive capability so a safety driver can take over at any time, which makes it a practical platform for real-world algorithm validation rather than a simulator-bound demo.
Hardware
- Compute — NVIDIA Jetson AGX Orin (JetPack 6.2.2, CUDA 12.6, 62 GB RAM, Ubuntu 22.04)
- Perception sensor — ZED 2 stereo camera (USB 3.0, GPU-accelerated depth)
- Microcontroller — ESP32 "Kart Medulla" custom PCB, FreeRTOS, UART link to the Orin at 115200 baud
- Steering actuation — DC motor + planetary reducer (in-house design)
- Emergency brake — fail-safe pneumatic system on STM32
- Wheel sensorisation — custom PCB for hall-effect odometry
- Frame — 2024 Tony Kart competition chassis
- Power — custom 18650 lithium pack with JBD BMS, spot-welded in-house
Software architecture
Everything from cone perception to steering commands runs in ROS 2 Humble on the Orin. The ESP32 is the safety boundary: if the high-level loop dies, the kart fails into a known mechanical-safe state independent of the Linux side.
- Perception — YOLOv5 cone detector + stereo depth localiser. 3D cone positions published to ROS 2 in real time on the Jetson's GPU.
- Control — geometric / pure-pursuit controllers. Each controller publishes its picked target point to
/kart/target; the dashboard HUD subscribes to the same topic, so what the user sees and what the controller commands cannot disagree. - Pre-ROS legacy stack — earlier 100% Python pipeline ran at ~50 Hz end-to-end on the same hardware. Walkthrough video.
Autonomous mode running outdoors — no one in the seat. April 2026.
Gallery
Links
- kart-brain — Jetson-side perception, control, ROS 2 nodes
- kart-docs — mechanical, electrical, hydraulics, BOM
- driverless (legacy) — pre-ROS Python stack, ~50 Hz reference
- How Our Autonomous Kart Software Works — walkthrough video of the legacy stack





