CompletedRobotics & Edge / EmbeddedComputer Vision & Perception

Autonomous Multi-Terrain Service Robot

A modular vision-guided autonomous robot: ArUco-marker navigation (±5 cm) plus a 2-DOF arm doing calibration-based visual-servoing pick-and-place, on a rugged dual-ESP32 platform.

Source codePosterWatch the story
Visual story

Find it, then pick it up

Scroll to watch it unfold. Each beat is one documented step of the project.

  1. 01

    Search

    The vision computer looks for the ArUco marker in the camera feed.

  2. 02

    Approach

    Marker pose (PnP) guides the differential-drive base to within about ±5 cm.

  3. 03

    Grab

    Vision guides the 2-DOF arm and gripper onto the object.

  4. 04

    Lift

    The arm lifts the object for transport.

  5. 05

    Outcome

    The base reaches the target and the arm completes the pick-and-place.

  6. 06

    System view

    Two ESP32 modules act on decisions made by one central computer.

An illustration of how the system works, drawn from the write-up below. It is not recorded output.

Overview

An autonomous mobile robot that can both find its way to a target and pick things up — built as two independent modules: a differential-drive base for movement and a 2-DOF arm with a gripper for manipulation. Each module runs on its own ESP32 microcontroller and talks over WiFi to a central computer that handles all the vision and decision-making. The chassis is a rugged ~5 kg stainless-steel frame with deliberately mismatched wheel sizes (smaller front, larger rear) so it can cross gaps and uneven ground without getting stuck.

Autonomous navigation

For navigation the robot reads ArUco markers with its camera, works out each marker's 3D position and orientation, and converts everything into its own body frame so it knows exactly how far left/right and forward/back the target is. A layered controller then decides whether to rotate, drive forward, or do both — smoothed with PID control and rate-limiting so the motion stays steady instead of jittery. It reaches targets within about ±5 cm, with keyboard teleoperation and an instant emergency override always available.

Vision-guided manipulation

The arm uses position-based visual servoing, but instead of hand-deriving the arm's kinematics it learns a direct mapping from camera pixels to joint angles from a handful of manually-taught calibration points (radial-basis-function interpolation). Objects are located by colour in HSV space, and a small state machine runs Search → Approach → Grab → Lift, using proportional control with capped step sizes and a gentle, progressive grip so it grasps reliably.

Built for the real world

The two-microcontroller design isolates faults so a problem in one subsystem doesn't take down the other, WiFi links reconnect automatically, and the robot stops safely if it loses sight of its markers. Combined with the rugged steel build, balanced weight and low centre of gravity, it targets practical settings like warehouse item-handling, material transport and inspection.

By the numbers

±5 cmNavigation accuracy
2-DOFArm + gripper
2 ESP32sIndependent subsystems

Schematic & figures

System block diagram — the differential-drive navigation and the 2-DOF arm run on separate ESP32 units, coordinated over WiFi by the central vision computer.
System block diagram — the differential-drive navigation and the 2-DOF arm run on separate ESP32 units, coordinated over WiFi by the central vision computer.
Circuit / wiring diagram — sensors, ESP32 controllers, MG996R servos and the motor-driver power domains.
Circuit / wiring diagram — sensors, ESP32 controllers, MG996R servos and the motor-driver power domains.

Tech stack & key skills

Core tools, methods and skills demonstrated in this project:

PythonOpenCVArUco + PnP posePID controlPosition-Based Visual ServoingRBF interpolationESP32 (embedded)TCP/IP over Wi-Fi