Project 01 — Robotics

Robotic Arm
for Object
Manipulation

Type
Personal Project
Stack
Arduino · C · Servo Motors
Status
Complete
GitHub
Overview

My first robot. Learning fundamental concepts in building and programming a robotic arm; from scratch, in the real world.

This project was the starting point of my robotics journey. I built a robotic arm and programmed it to manipulate objects, specifically, to pick up and roll dice. The goal wasn't a polished product; it was to get my hands dirty with the full stack of robotics: hardware assembly, motor control, and C programming on embedded systems.

What drew me to robotics was the gap between simulation and reality. Tools like Gazebo and RViz can model a world, but they can't teach you what happens when a power supply delivers inconsistent voltage and your servo starts jittering at 3am.

Tools & Hardware
Arduino C Servo Motors Knob Shield ROS2 Gazebo RViz
Robotic arm close-up
What I built
01

Assembled the hardware

Built the physical arm from servo motors and a knob shield, wiring everything to an Arduino. Learned how small tolerances in mechanical assembly compound into large positional errors.

02

Programmed motion in C

Wrote C code to control servo positions using Action Groups — predefined motion sequences the arm could execute. Learned about Baud Rate, degrees of freedom, and how to map real-world positions to motor angles.

03

Taught it to roll dice

Gave the robot a purpose: pick up a die, hold it, and release it in a controlled roll. Having a concrete task turned abstract debugging into motivated problem-solving — when it wasn't working, I had a reason to keep going.

04

Debugged real-world failures

The arm developed 'jitters' from an underpowered supply. Tracing that back to the root cause — and fixing it — taught me more about reliable embedded systems than any simulation could.

4
Degrees of freedom
1st
Physical robot I built
Dice rolled in testing

"Simulation tools like Gazebo or RViz can only go so far. Running into real-world problems like 'jitters' from not enough power taught me how crucial reliability will be for human-centric tasks."

What I learned

Software, mechanics, and electronics are inseparable. Building a robot requires holding all three in your head at once. A bug in your code might actually be a mechanical tolerance issue, or a power delivery problem.

Purpose is a debugging tool. Having a goal — rolling dice — gave me motivation to push through failure. Robots that serve a human need are more motivating to fix than robots that serve a spec.

The leading question this project raised: how can I teach a robot intuitively? Using kinematics, computer vision, and ML, this becomes achievable — and it's the direction I want to go next.

Real-world reliability is non-negotiable for human-centric tasks. A robot that jitters in a lab is a curiosity. A robot that jitters around a person is a liability. This project made that concrete.

Next project
Sauceathon — Robotics Hackathon