Varun Cumbamangalam
ProjectsAboutContact

Varun Cumbamangalam.

Senior IoT and Edge AI Engineer, AI Product Manager at OraLens Healthcare

ProjectsAboutContactPrivacy

© 2026 Varun Cumbamangalam. Built with Next.js and Tailwind CSS.

% RRT for differential-drive robot - core expansion loop % Robot navigates bitmap map; kinematics: unicycle model while ~done % Random sample with 1% goal bias sampleq = [-100,-100] + [1000,1400] .* rand(1,2); if rand() > 0.99, sampleq = endq; end % Find nearest vertex in tree dists = vecnorm(RM.verts - sampleq, 2, 2); [~, minIdx] = min(dists); % Propagate unicycle kinematics from nearest vertex uL = 700 * rand(); uR = 800 * rand(); xDot = wheelR * (uL+uR) * cos(RM.dir(minIdx) * pi/180) / 2; yDot = wheelR * (uL+uR) * sin(RM.dir(minIdx) * pi/180) / 2; dirDot = 180/pi * wheelR * (uR-uL) / (axleR * 2); newq = RM.verts(minIdx,:) + [xDot yDot] * dt; newDir = RM.dir(minIdx) + dirDot * dt; % Add to tree if collision-free and closer to goal if ~colCreateMap(newq, robot.radius, map) RM.verts(end+1,:) = newq; RM.dir(end+1) = newDir; RM.velocities(end+1,:) = [uL uR]; RM.adjMat(minIdx, end) = 1; if norm(newq - endq) < goalThresh, done = true; end end end % Extract shortest path via Dijkstra on RRT adjacency matrix path = dijkstra2(length(RM.verts), RM.adjMat, 1, endvert);
All Projects
ResearchAI/ML

Sampling-Based & Graph-Search Motion Planning

Four path-planning methods tested on an iRobot Create.

Sampling-Based & Graph-Search Motion Planning main screen
4 Algorithms

Implemented

RRT + Hardware

iRobot Execution

University of Utah

Research Lab

Tech Stack

MATLABRRTPRMA*DijkstraConfiguration SpaceCollision Detection

The problem

A robot needs to find a safe path through a space filled with obstacles - without bumping into anything. But the straightforward approaches (search every possible position) get impossibly slow in larger spaces. The question was: which planning method is actually fast enough to work, and would it hold up on real hardware in a real room?

The challenge

Planning collision-free paths for a differential-drive robot requires reasoning in configuration space (C-space), not just Euclidean space - the robot's orientation is a third degree of freedom, and circular robot geometry must be inflated into C-space obstacles. Grid-based methods (Dijkstra, A*) are complete but scale poorly; sampling-based methods (PRM, RRT) scale better but are probabilistically complete. The final assignment required deploying the best planner onto a physical iRobot Create navigating a real room mapped from camera images.

Architecture & System Design

Path planning algorithms for robot navigation: Dijkstra and A* search graphs, PRM samples configuration space, RRT explores randomly. All tested on real robot with actual obstacle maps.

Full system schematic available upon request

Dijkstra and A* operate on a weighted graph derived from a bitmap occupancy map - pixels become nodes, edges connect 8-connected neighbours, and A* uses Euclidean distance as the heuristic. PRM samples random free-space configurations, connects nearby nodes via a straight-line collision check, and queries the resulting roadmap with Dijkstra. The RRT implementation builds a tree by sampling random configs, finding the nearest tree vertex, propagating differential-drive kinematics (xDot, yDot, dirDot from left/right wheel velocities), and checking for map collision at each step. The final path is extracted via Dijkstra on the RRT adjacency matrix and executed on the iRobot Create via a MATLAB serial-port toolbox, with hardware playback scripts.

Results

All four planners successfully found collision-free paths in simulated bitmap environments. Dijkstra and A* produced optimal paths but were slow on large maps (>10s). RRT found paths in 2-5 seconds with up to 2000 tree vertices. The final assignment deployed RRT on the physical iRobot Create: the robot navigated a real room, executing the planned path via wheel velocity commands over Bluetooth serial. Path execution videos were recorded (LongPath.mp4, ShortPath.mp4).

Gallery & Demos

A* Algorithm Execution - Grid-Based Search

A* Algorithm Execution - Grid-Based Search

Dijkstra/A* graph search finding shortest path on occupancy grid with 8-connected neighbors.

RRT Plan Visualization

RRT Plan Visualization

Path found by the RRT planner on a 3D terrain cost surface, navigating from start to goal across the elevation landscape.

PRM Path Result

PRM Path Result

2D occupancy grid (top-down) showing the planned path extracted from the PRM roadmap, traversing the terrain from start to goal.

Click any image or video to expand · ← → keys navigate

University of Utah

More from University of Utah

Vision-Based Autonomous Quadrotor

Researcher

MS thesis project: a quadrotor capable of autonomously taking off, navigating, and perching on branch-like structures using only visual feedback - designed for autonomous crop monitoring in agricultural fields.

OpenCVPID ControlROS

Multi-Arm Coordination - 2-DOF QUANSER

Researcher

Dual-arm robotic manipulation system using 2-DOF QUANSER robots with a master-slave architecture - one arm controlling position, the other controlling force - to collaboratively manipulate objects with precision.

MATLAB/SimulinkQUARCImpedance Control

Adaptive Backstepping - Indoor Micro-Quadrotor

Researcher

Nonlinear controller design for an indoor micro-quadrotor with a suspended pendulum mass - a highly unstable configuration. Adaptive backstepping outperformed classical PID in robustness tests across multiple flight regimes.

MATLAB/SimulinkBackstepping ControlLyapunov Analysis

Sensor-Based SLAM Navigation - iRobot Create

Researcher

Autonomous mapping and navigation system on an iRobot Create platform using IR rangefinders and servo-mounted sensors for 360° SLAM - with RRT path planning to navigate complex maze environments.

MATLABiRobot CreateRRT Path Planning

PUMA 6-DOF Robot Arm - Forward & Inverse Kinematics

Researcher

Forward and inverse kinematics solver for a 6-DOF PUMA 762 robot arm, using Denavit-Hartenberg parameters and an interactive 3D MATLAB GUI with joint sliders, a motion trail, and collision detection.

MATLABDenavit-HartenbergRobotics Toolbox

Monocular Depth Estimation for UAV Perch Landing

Researcher

C++ and OpenCV vision system that estimates a landing perch's 3D position and orientation from one monocular camera. It uses image moments, covariance eigendecomposition, and focal-length triangulation for closed-loop quadrotor control.

C++OpenCVHSV Segmentation

RC Fixed-Wing Glider - Servo Actuation & Aerodynamics

Researcher

Fixed-wing RC glider with two servos for roll and pitch, a brushless DC motor, and an ESC for forward thrust. Flight-tested outdoors.

Servo ControlBrushless DC MotorESC

Interested in this work?

I can walk through the architecture and code during an interview.

Get in Touch All Projects