Goal:
Create a robotic arm that can move around in 3 dimensions, and when we input a certain coordinate, it is able to move there; this means making the base able to rotate.
Research/Planning:
Proposal: https://docs.google.com/document/d/1OOKJzWpzns3k_BpA3I0wHpSKaCvIGEDFLpgSc5h2HgE/edit?usp=sharing
We split up into groups to work on different parts. We decided to utilize Onshape to create the joints (3), used ROBOTC to create code (for the robot to be able to rotate), and decided to build a prototype using metal VEX parts. Finally, we 3D printed parts for the final robot design.
Application of Knowledge:
We utilized forward kinematic equations to calculate the position and orientation of the end-effector of a robot depending on the joint angles:
X = C1 { C2 ( C3 L2 + L1 ) - S2 S3 L2}
Y = S1 { C2 ( C3 L2 + L1 ) - S2 S3 L2 }
Z = -S2 ( C3 L2 + L1 ) - C2 S3 L2
Where L1 = 7, L2 = 11, and Z = Z-4 because L1 is suspended 4 inches above the base.
We used these equations with the numerical method to calculate inverse kinematics for the joint angles, base, and the 2 links. We integrated the equations by barely changing the joint angle value, and tested this using forward kinematics to see if the solution from forward kinematics was closer or further away from the target position. We used this to adjust the joint angle accordingly.
Create:
Code:
This actually runs the robot and begins by defining variables for the links and the x y z target coordinates as well as the angles. Then it calculates q1, q2, and q3 values to move the robot to the desired positions.
This code uses the encoders attached to the links to run the motor until it reaches the target angle inputted.
This code uses a numerical method to calculate the desired q1, q2, and q3 values.
Test and Improve:
We changed from using 3D parts and an actual lampshade to using VEX parts; we were not sure if we would be able to obtain the 3D printed parts in time, so we decided to create a “prototype.” Additionally, we used 1-3 gear ratios instead of 1-1 to rotate the robot because it gave more torque and helped hold the joints at the desired angles.
We initially tested the lamp robot moving vertically in which it often had to fight gravity and noticed two main problems: much of the encoders didn’t work and the motors couldn’t effectively fight gravity. This led us to replace the broken encoders with new quadrature encoders and place the lamp robot horizontally so that the majority of the motors weren’t fighting gravity to rotate and stay in place. Since the motors were not able to overcome gravity, we rotated this product on its side so it did not have