
There are somethings that I could have designed better, mainly the connections for the pulleys and servo mounts. But the major point in this design is that when the servos go in opposite directions, it creates a twisting motion, similar to how the wrist works. The two pulleys can act in tandom to pull the arm up or down. They act as tendons to pull up the radius and ulna bones. The main idea for replicating the motion of a human forearm, relies on the pulleys. There are two sets of pulleys that are driven through the two microservos. It is comprized of three main bones and a number of joints to give a realistic range of motion. The design of this robotic arm is inspired by human anatomy. Mainly through my mistakes and tries, I learned good habits for designing something. I learned key lessons in design and engineering. I learned quite a few things from this aspect of my project. This was actually my first experience of printing something that I designed from a 3D printer, all other times I merely left it digital. They were then printed on my school's 3D printer. I designed all of the parts for this arm myself in Solidworks.
ROBOTC IDE TRIAL
I learned most of the things for this project through trial and error, and now I know what not to do.
ROBOTC IDE CODE
Which was surprising, that the simple code is exactly what I needed for it to work. So my code went from this: glRotatef(a,1,0,0) But it turned out I didn't need that, all I needed were two functions. I was using inverse trig functions to try and determine the distance vertically and horizontally it had to be translated. When trying to figure out this part, I really over thought it. When the radius is rotated it must also be translated back to the elbow joint in order for it to meet up. This means that it rotates from the bottom not the top. The main problem is that the radius's local origin is not based in the upper part of the object, but in the bottom part.
ROBOTC IDE HOW TO
This was an area that took a good chunk of my time to figure out how to sync up the joint of the elbow in the 3D model. The radius can be controlled through the G and H keys, rotating and translating it up and down. I would have added the ulna bone, but was strapped for time on this project. The radius is one of the two bones in the fore arm. The humerus is the upper bone of the arm, and remains static. I added this to add a reference point for the motion of the arm as it is translated and rotated. The first is simply a cross section of planes, 50 by 50 units, colored red, blue, and green. This program creates three 3D objects: The axes, the humerus, and the radius. The bulk of the program was inspired by the Sentdex python opengl tutorials, but after the first few I set out on my own to learn my way, through trial and error, and simply doing it to see what works. Changing the order of a translation and rotation can have drastically different results. An aspect that is important to note in 3D graphics is, the order translations and rotations take place in, because their order affects their outcome. I had a hard time understanding how to move objects, because the functions for moving objects are the same as 'moving' the camera, only in this case they are actually moving. The other area I had problems with was translation and rotation of objects. This also creates the situation where coordinates in the translate and rotate functions must be inverted in order to have their desired effects. In the case of the camera, the objects on screen are all being moved with respect to it so it appears as though the camera is doing the moving. In order to 'move' the camera, the entire world must be translated and rotated with reference to it. The camera is located at (0,0,0) facing negative z. This idea is that, the camera does not move it is the world that moves around it. When it comes to camera positioning there is a very important idea to grasp. There were a few things in the overlying subject of 3D graphics that I was initially confused on. With the help of python opengl tutorials by Sentdex on Youtube, I was able to gain a better understanding of this subject, giving me a starting base of knowledge to expand upon with this project. It took me quite some time to understand how to build this type of program. Prior to this I had no experience in 3D graphics processing. In this area of my project, I used the python opengl library to create a 3D render of the robotic arm I built.
