Skip to content
All projects

Robotics / ROS 22026

AutoCar SLAM

A self-mapping robot car — ROS 2, RPLIDAR, and live floor plans over Wi-Fi

  • ROS 2 Jazzy
  • Python 3
  • micro-ROS
  • RPLIDAR A1
  • Raspberry Pi 5
  • ESP32
  • L298N
  • Foxglove
  • Ubuntu 24.04

A robot car that drives itself around a room and builds a floor plan while it goes. An ESP32 handles motors and encoder counting, a Raspberry Pi 5 runs the LiDAR, odometry and SLAM stack under ROS 2 Jazzy, and a laptop watches the map build in real time through Foxglove Studio over Wi-Fi.

The assembled AutoCar with RPLIDAR mounted on top
The car, fully assembled — RPLIDAR A1 up top, Pi 5 and ESP32 below.
12 m
RPLIDAR A1 range
10 Hz
Scan rate
10.2 mm
Per encoder tick
11.1 V
3S Li-ion pack
  1. 01

    Split-brain architecture

    The ESP32 does only what needs hard real-time — PWM and encoder ticks — and bridges into ROS 2 through micro-ROS. Everything with a compute budget lives on the Pi 5, so the motor loop never competes with scan matching.

  2. 02

    Encoder odometry from first principles

    Wheel position is integrated from 20-slot encoder ticks calibrated at 10.2 mm per tick, then fused with RPLIDAR A1 scans at 10 Hz to close loops and correct drift.

  3. 03

    Live remote visualization

    Map, scan point cloud and odometry stream to Foxglove Studio on a client machine over Wi-Fi, so you watch the floor plan assemble as the car drives rather than after the fact.

  4. 04

    Teleop and autonomous modes

    WASD keyboard teleop with tunable speed for careful mapping runs, plus an autonomous obstacle-avoidance mode. Finished maps persist as PGM images with YAML metadata.

  5. 05

    Honest hardware limits, documented

    Motor deadband near 20% duty, single-channel encoders that infer direction rather than measure it, and a battery that sags when motors and LiDAR draw together — all characterized in HARDWARE.md rather than hidden.

A completed SLAM floor plan rendered in Foxglove Studio
A finished room map after loop closure.
ROS 2 node and topic graph for the AutoCar stack
Node graph across the ESP32, Pi 5 and client.
The occupancy map filling in during a mapping run
Map assembling live during a slow mapping pass.