Ray Shao Back to the room Desktop
ProjectsAutonomous Ackermann Robot Car: ROS 2 Distributed Stack, Gazebo Digital Twin and STM32 Velocity Control

← Projects

Autonomous Ackermann Robot Car: ROS 2 Distributed Stack, Gazebo Digital Twin and STM32 Velocity Control

Aug 2026 - Oct 2026

On this page 7 sections
  1. Overview
  2. Key Innovations
  3. 1. ROS 2 stack, distributed over Zenoh
  4. 2. Velocity-setpoint control with a Pi-side pure pursuit tracker
  5. 3. Sim-to-real: Gazebo runs the real stack
  6. 4. Live telemetry in Foxglove
  7. 5. Rosbag recording of every run
  8. 6. Task 2 measures the course during the run
  9. 7. Development with coding agents under a written contract
  10. Other engineering
  11. Stack
  12. Outcome
  13. Skills Acquired
  14. Related

Part of: SC2079 Multidisciplinary Project (NTU)

Overview

Ackermann-steered car (Wheeltec Mini-Ackermann, STM32F407VET6, Raspberry Pi 4B) that runs two tasks in a known arena:

My part: designed the system architecture, integrated and wired the whole stack (ROS 2 workspace, firmware, planner, simulation, Foxglove telemetry layer, rosbag tooling), and did most of the hardware debugging. ~378 of 486 commits (authors “Ray”, “Ray Shao”, “frieddeli”, “SC2079 Group 16”). Lam Nguyen did most of the Android UI and much of the Task 2 tuning.

Key Innovations

1. ROS 2 stack, distributed over Zenoh

First group to build the project on ROS. The course reference is a socket-based Pi program, which the repo keeps in raspberry-pi/ as a parallel track.

2. Velocity-setpoint control with a Pi-side pure pursuit tracker

The course firmware runs distance primitives (FC030, FR090): the Pi sends a move, and the STM32 drives it and replies FIN. I replaced this with continuous velocity control.

3. Sim-to-real: Gazebo runs the real stack

4. Live telemetry in Foxglove

5. Rosbag recording of every run

6. Task 2 measures the course during the run

7. Development with coding agents under a written contract

Other engineering

Stack

ROS 2 Jazzy, rmw_zenoh, CycloneDDS (sim), pixi, Python, C (FreeRTOS, STM32Cube HAL, PlatformIO), Ultralytics YOLOv8, NCNN, ONNX Runtime, OpenCV, Gazebo Harmonic, ros_gz_bridge, URDF/Xacro, RViz2, Foxglove, rosbag2 / MCAP, Java (Android, Bluetooth SPP), pytest, JUnit, Tailscale

Outcome

Skills Acquired

ROS 2, Robot Simulation, Controls & Estimation, Edge Inference, Python, embedded C / FreeRTOS, motion planning, path tracking, distributed ROS over Zenoh, rosbag tooling

All projectsBack to top