Project 01 — Robotics
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.
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.
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.
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.
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.
"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."
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.