I decided to design and build a tiny robotic arm during winter break in preparation for the Robotics and Autonomous Systems course I was going to take in the spring. At the time of making this page, I am about halfway through the course and we have just begun looking at 3D pose. My goal is to eventually implement forward kinematics so that I can drive the arm using the keys of my computer or a joystick and it will move around smoothly.
Once I settled on the scale of robot, I designed an arm which was built to accommodate SG90 motors at the top and bolt onto servo arms at the bottom. I was worried about excess weight creating a bigger moment on the base motor so I decided to use the weight reduction challenge as a fun excuse to do some topology optimization. I created a basic geometry on the left that had the overall length I wanted, maximum width of the arm, and the correct mounting holes for the motor and motor arm. I used Fusion's Generative Designs feature to assign geometry constraints and force constraints. The end result was pretty cool and looks a little bit like an I beam.
Then I designed the roboic arm using the topology optimized pieces I created earlier. I wanted the arm to have a big range of motion so I put it on a spinning base. The arm will use four motors total, including one for an endefector. The image on the left shows the motor responsible for spinning the arm assembly, and the endefector motor is not yet part of this assembly because I wanted to focus on the arm's motion first.
I printed all the parts for the arm and assembled them with the four motors. I ran into a small issue where I could not thrad my M2 bolts through the motor arms that came with the motors but it was pretty simple to modify the base parts for them and print custom motor arms.
I connected all the motors to an Arduino Uno R3 and programmed a hardcoded path to start. The gif on the right shows the hard coded path which was set on a loop. The gif also shows how the extremely noticable backlash from the SG90 motors, which is not surprising given the torque I am putting on such cheap motors, but is something I would still like to improve with some speed tuning in the future.
After I programmed a hardcoded path, I programmed the robot to move when I pressed the wasd keys on my keyboard. It is still hardcoded and very hard to achieve specific poses with. I am really excited to improve this with the forward kinematics for robotic arms that we are about to learn in class. Once this works, I will design and implement an endector.