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.

% PumaIK.m - 4-solution IK enumeration with joint-limit checking % DH params: a2=650, a3=0, d3=190, d4=600 (mm) for i = 1:4 sign1 = (i <= 2) * 2 - 1; % +1 for i=1,2 | -1 for i=3,4 sign3 = (mod(i,2) == 1) * 2 - 1; % alternates +1/-1 K = (Px^2+Py^2+Pz^2 - a2^2-a3^2-d3^2-d4^2) / (2*a2); theta1 = atan2(Py,Px) - atan2(d3, sign1*sqrt(Px^2+Py^2 - d3^2)); theta3 = atan2(a3,d4) - atan2(K, sign3*sqrt(a3^2+d4^2 - K^2)); % Recover theta2 from coupled joint-2/3 equation t23 = atan2((-a3-a2*c3)*Pz - (c1*Px+s1*Py)*(d4-a2*s3), ... (a2*s3-d4)*Pz + (a3+a2*c3)*(c1*Px+s1*Py)); theta2 = t23 - theta3; % Resolve wrist angles theta4-theta6 from orientation matrix theta4 = atan2(-r13*s1 + r23*c1, -r13*c1*c23 - r23*s1*c23 + r33*s23); theta5 = atan2(s5, c5); theta6 = atan2(s6, c6); % Accept first solution satisfying all 6 joint limits if all_within_limits(theta1,theta2,theta3,theta4,theta5,theta6) return; end end
All Projects
ResearchHardware

PUMA 6-DOF Robot Arm - Forward & Inverse Kinematics

A live 3D MATLAB simulator for FK, IK, and joint control.

PUMA 6-DOF Robot Arm - Forward & Inverse Kinematics main screen
6-DOF

Joint Space

4-Solution

IK Enumeration

University of Utah

Research Lab

Tech Stack

MATLABDenavit-HartenbergRobotics Toolbox3D GraphicsInverse Kinematics

The problem

Tell a robot arm to reach a point in space, and there isn't just one way to do it - there can be multiple valid joint configurations that all land the arm at the same position. The challenge is figuring out which solution is physically possible, and which ones would snap a joint past its mechanical limit.

The challenge

Building a correct inverse kinematics solver for a 6-joint robot arm means handling the inherent ambiguity of IK - a single Cartesian target can be reached by multiple joint configurations. The PUMA 762 IK has two sign choices (sqrt can be + or −) for θ1 and θ3, yielding up to 4 distinct solution branches. The solver must enumerate all branches, evaluate the full 6-joint angle set for each, and select the first solution where every joint stays within its physical travel limits.

Architecture & System Design

Robot arm kinematics from Denavit-Hartenberg parameters: forward kinematics calculates end-effector pose from joint angles. Inverse kinematics solver evaluates multiple solution branches respecting physical joint limits. 3D simulator with collision detection.

Full system schematic available upon request

Forward kinematics uses the standard Denavit-Hartenberg chain: each joint contributes a 4×4 homogeneous transform, and the end-effector pose is the product of all six. Link parameters: a₂=650mm, a₃=0, d₃=190mm, d₄=600mm. The IK solver loops over all 4 sign-combination branches, computing θ1 and θ3 from the geometric decoupling solution, then back-solving θ2 from the joint-2/3 coupled equation, and finally resolving θ4-θ6 from the wrist orientation matrix. The 3D GUI (puma3d.m) renders the full arm model using capsule primitives, with interactive sliders for each joint, a motion trail renderer, and collision detection via capsule-capsule intersection tests.

Results

The simulator correctly solves FK and IK for any reachable workspace point, selecting joint configurations that satisfy all six physical travel limits. The interactive GUI runs in real time, allowing the user to drag joint sliders or click a target position and watch the full arm animate to the solution. Collision detection via capsule-capsule intersection tests flags self-collisions during motion. The project formed the foundation for subsequent robot control research at the University of Utah.

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

Sampling-Based & Graph-Search Motion Planning

Researcher

MATLAB implementations of four canonical path-planning algorithms - Dijkstra, A*, PRM, and RRT - applied to a differential-drive robot navigating bitmap maps in configuration space, with real hardware execution on an iRobot Create.

MATLABRRTPRM

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