Open comments for this post
Programming and Calibrating Servos:
Servos don’t need calibration, but you need to ensure you know the right range of pulse which is why I made a reusable program that helps you find it and saves it for future reference.
One cool thing I learned was command aliases in Linux. I was getting annoyed with doing git fetch & pull so I just made an alias “Refresh”
Open comments for this post
Powering Clums-E
I shifted focus to the hardware background for Clums-E. I wired my 6V battery to the Mini PDP, ran it to the buck converter, and used a spliced Micro USB cable to link it to the Raspberry Pi.
But the Pi stayed completely dead.
After digging into it with Gemini and finding an article on cheap cables, I found the culprit. The cable I cut was a shoddy 3-wire line that used a thin layer of foil for the ground. It was completely useless for carrying power.
I swapped it for a high-quality cable, and the Pi instantly booted up. With clean power finally flowing, I hooked up the Servo Driver, and it is officially up and talking to the Pi.
Open comments for this post
Forward and inverse Kinematics:
I started this project in Desmos by creating two polygons and calculated their relative coordinates based on a user-defined angle. After translating those relative coordinates to global ones, I finally had a working arm.
At first, I had to manually adjust the angles to make the tip reach a target. I knew there had to be a better way. I wanted to just click a point and have the arm calculate the math on its own.
That led me down the rabbit hole of Inverse Kinematics (IK).
The Roadblock:
After researching the math, I threw it into Desmos, but something was broken. The angle of joint 2 was completely off.
After digging deeper, I realized my mistake. I was calculating the angle of segment 2 relative to segment 1, but the renderer actually needed the angle relative to the origin.
The Breakthrough
The math did not click for me until I imagined a person walking up a hill. If you are climbing a slope and reach a peak, you need to know the exact change in your angle to keep moving along the new path.
To solve this, I extended the first segment line and found the supplementary angle to my original calculation. Once I applied that shift, the arm snapped perfectly into place.
Now, the arm seamlessly calculates its own angles and reaches the goal point automatically.
I then implemented the same Math into my Python project