Independent projects — infrastructure, robotics, technology surveys, and corporate research
← Back to Projects
Ongoing field testing

Indoor Autonomous Robot

Design and build a differential-drive robot that performs self-localization, obstacle avoidance, and autonomous movement indoors using LiDAR and a camera. Processing is split across an edge unit and a PC to keep real-time performance within a limited wireless bandwidth budget. Safety is handled by a dual layer of control software and a physical kill switch, so a single failure never leads directly to an accident.

Architecture

System architecture: 6-layer flow from control input to the chassis Onboard — processing split between the edge unit and the PC Autonomous Planning (PC) Manual Control (Pro Controller) Safety Supervisor — physical e-stop always wins Sensor Input LiDAR Camera IMU / Encoder Battery Voltage Edge Processing (Raspberry Pi 5) Firmware (ESP32) Chassis — Motors / Encoders

Figure 1 — The safety supervisor intervenes with top priority in both autonomous and manual modes. Sensor input is processed on the edge unit, and only decimated data is sent to the PC.

Hardware

Livox Mid-360 (LiDAR + IMU). The primary sensor for self-localization and obstacle detection.
Livox Mid-360 (LiDAR + IMU). The primary sensor for self-localization and obstacle detection.
The status dashboard. Shows the obstacle guard's detection distance (0.97 m) alongside a real-time top-down SLAM map and driving trail.
The status dashboard. Shows the obstacle guard's detection distance (0.97 m) alongside a real-time top-down SLAM map and driving trail.

Technology Stack

Chassis / Hardware

Aluminum frame (3-tier) 2x differential-drive geared motors Cytron MDD10A motor driver

Sensors

Livox Mid-360 (LiDAR + IMU) Logitech C920 (USB camera)

Control Computers

Raspberry Pi 5 ESP32

Software Stack

ROS2 Jazzy Ubuntu 24.04

Self-Localization

FAST-LIO robot_localization (EKF)

Mapping / Autonomous Navigation

slam_toolbox Nav2 RTAB-Map

Custom Implementation

twist_mux arbitration safety supervisor node obstacle guard web dashboard

What It Can Do Now

Can now be driven manually with a controller, and estimates its own position from wheel rotation counts.

Can now build a map of its surroundings automatically using LiDAR (a sensor that measures distance to nearby objects with a laser) and a camera.

Can now move automatically to a destination picked on the map, avoiding obstacles along the way.

Automatically slows down and stops when approaching an obstacle, making collisions with walls or objects less likely (though not entirely preventable).

Battery level and sensor connection status can now be checked in real time from a browser.

If the control computer stops unexpectedly, manual control and the physical emergency stop button keep working independently.

Roadmap

01
Stage 0-1

Foundation

Verified communication with the chassis, motor driver, and encoders, and achieved manual driving with odometry estimation. Laid the groundwork for every stage that followed.

02
Stage 2-3.5

Sensor Integration and SLAM

Integrated the LiDAR and camera, achieved 2D map generation via SLAM, and then moved to high-precision self-localization using 3D LiDAR-Inertial Odometry.

03
Stage 4

Achieving Autonomous Navigation

Implemented goal-reaching with Nav2 and confirmed autonomous movement to a specified point, with a safe handover between manual and autonomous operation.

04
Stage 4.5

Moving to a Distributed Architecture

Migrated to a setup that keeps sensor acquisition and safety supervision on the edge unit while mapping and navigation run on the PC, preserving real-time performance under limited wireless bandwidth.

05
Stage 4.7-ongoing

Hardening Safety and Field Testing

Built out the obstacle guard, status dashboard, and physical e-stop, and continue to iterate through field testing and improvement.

Detail Articles

August 25, 2026

Building the Status Dashboard

A read-only status dashboard built entirely on the edge unit using standard libraries, with no extra ROS package dependencies.

August 19, 2026

How the Distributed Processing Architecture Works

A distributed setup that offloads heavy processing to a PC while keeping drive control and safety supervision on the edge unit, and the decimation design that carries sensor data over limited wireless bandwidth.

August 13, 2026

How Safe Velocity Control Works

The twist_mux pipeline that safely arbitrates between autonomous planning and manual commands, and the obstacle guard's asymmetric clamp that limits only the forward component.

August 6, 2026

How Mapping and Autonomous Navigation Work

Building a 2D map on top of 3D LiDAR-derived odometry and driving to a goal autonomously with Nav2, plus a serious bug found along the way.

July 31, 2026

How Self-Localization and Sensor Fusion Work

A self-localization design that switches between FAST-LIO and an EKF depending on whether LiDAR is present, and the drift accuracy measured on real runs.

July 25, 2026

How the ESP32 Firmware and Communication Protocol Work

The serial protocol linking the upstream computer to the motor-control microcontroller, and the autonomous fail-safe that kicks in when communication drops.

July 16, 2026

How the Hardware Is Put Together

The aluminum-frame chassis, differential drivetrain, a power system built on a power-tool battery, and the LiDAR/camera sensor setup.