During the concept and design phase, I considered what I wanted the robotic arm to be able to do. I also knew I wanted to use just one Mindstorms kit. Knowing these items helped to frame the scope of the project. Since I would only have 3 motors and since I wanted to have a grasping hand, rotating wrist and bending elbow, I knew I was going to have to be creative.
I spent time researching other real world robotic arms as well as my own arm. One motor would have to be used for the hand grasping action. One motor would have to be used to rotate the wrist and one motor would have to be used to bend the elbow. The motors are not very powerful, so I needed to incorporate leverage at each joint.
This pictures show the motor placement. The video shows each element in action.
Each component took unique attention. The hand went through several designs, builds and rebuilds. I started out wanting to have individual articulated fingers and a thumb. Realizing that only having one motor for this component, I chose to make a hand with one grasping action. The top fingers are leveraged strong enough to grasp and hold a water bottle and other small household objects. The video shows this in action. Note the rubber grips on the fingertips. These help hold slick objects.
Since the Mindstorms kit already had a component that acted like a wrist, I thought this piece would be the easiest. It was actually challenging to attach the hand and transfer power from the second motor. I started out trying to align the motor horizontally and transfer the power from a 90 degree gear configuration. However, after much trial and error, I finally settled on a direct shaft approach.
The elbow was quite a challenge. The biggest problem is that the motor is not very powerful. From a leverage standpoint, trying to pull up the entire arm is about all the little motor wants. The configuration you see in the picture is only good for about 45 degrees. After trying to build this component, it made me appreciate how strong the muscles are in our own arm.
Since my objective was to build a robotic arm that can be attached to my body, I had to devise a way to attach the arm to my real arm. The pictures show me slipping my arm through the ring behind the elbow joint. I also used a small strip of loop fastening strap to secure the entire device to my arm.
The software is obviously important to the entire project. Since I had 3 motors to control with each having unique actions, I spent quite some time considering how I would trigger the various actions.
I only wanted to use the NXT brick. However, it only has two directional buttons and one Enter button. I finally decided to use the Enter button as a toggle between each function. Once the program is running, you press and release the Enter button. The speaker will respond with the word "One". Press the Enter button again and the speaker says, "Two". Press again and it says, "Three". The next press starts it over to "One". The trick is that, "One = Hand". "Two = Wrist". "Three = Elbow".
So if you want to close and open the hand, press the Enter button until it says, "One". Then the left button closes the hand and the right button opens the hand. Press the Enter button again and it says, "Two". Then the left button turns the wrist to the left and the right button turns the wrist to the right! Get the idea?
I have included many documentation comments within the RBT file. After looking through the code, I think you will get a good idea how I used variables to accomplish this.
I really enjoyed this "Robotic Arm" challenge. It helped me learn more about the Mindstorms components and the NXT software. It is always fun to have a challenge like this to encourage you to take a concept and bring it to reality. I hope my descriptions, pictures, video and software are helpful to you.
Happy robot building!