Individual+Contribution+-+Vipul

=Individual Contribution Report - Vipul Potluri =

The main goal of the project is to design and build a wireless robotic arm to implement the haptic technology. I have contributed a lot towards this project to make it successful. While my first partner Daryl is making sure that wireless communication can be implemented for our project, I, along with my other partner Umair, have built the robotic arms and implemented the haptics on them. My individual contribution towards the project have been divided in to two parts as shown below.

Project Design

 * The first challenge was to decide on a specific motor to enable the movements of the arm. After a thorough research, I finalized on servos, as position feedback is the main aspect that has to be considered for our project. The next task was to calculate the required motor torque at each joint to choose the appropriate motors.
 * My initial plan was to use the servos at both ends, where the input servos would just be used for position feedback. I have changed this design by using raw potentiometers at the input end for the position feedback instead of servos. This was a very important design change as it reduced about $150 in our budget without compromising the accuracy or the quality of the movement.
 * The next important part of the project was to choose the materials for building the robotic arms. As budget was our main concern, I preferred not to buy a kit. So it was a challenge to decide on the materials. Due to the time constraint and limited experience with raw materials, I decided to buy a few pre-made parts of aluminum to make my own design, which would be cheaper than buying a kit. A lot of 3D designs were made on //'Google Sketchup'// to finalize on a design.
 * The challenging part of the project for me was to come up with a design to implement the haptics function to feel the rigidity of the object as well as the weight of the object. As it was known to me that its not possible to to move a servo while it is receiving any kind of signal. After some research I decided on using a force sensor at the output gripper that detects the force when the output arm holds an object. While the input servo is initially detached for free movement of the gripper, it receives a signal from the microcontroller when a particular force is detected at the output end. This would block the user's motion from gripping further. In order to increase the accuracy, the position feedback from the output gripper was sent to the input gripper to stop at the same position. This would work fine but the main problem aroused while the user wanted to let go of the object. As the servo would be in a frozen state when the object is detected, it would be impossible to let go of the input gripper. So I decided to use a switch that would be placed in such a way that its pressed when the user wants to let go of the gripper. So the input gripper will be detached again to move freely when the switch is pressed and would go in to a frozen state as soon as it detects the object.
 * The next challenging part of the project was to come up with a design for the weight haptics. The design for implementing this part was to use a force sensor at the bottom of the output arm to measure force acted by the entire arm. A threshold force would initially be measured without any object and any additional force acting on it would be the weight of the object. This additional force has to be sent to the input arm to produce some sort of an opposing force to feel the weight of the object. As a result, a DC motor would be used in order to produce this effect. The heavier the object, the faster the motor rotates in the opposite direction to produce the feedback force.

Design Implementation

 * The first step was to test all the motors that have been ordered. The initial testing of the servos was done by running the 'sweep' program from the Arduino examples. The next step was to control each servo individually using a potentiometer. As this testing was done on bare servos before building the arm, the amount of noise observed was not so much. This little noise was eliminated using capacitors across the power supply.
 * The next step was to enable the position feedback from a servo to control the movements of another servo. As the position feedback nature exists in a servo but it is mainly used for internal position correction. So I had to open up the servo and solder a wire to the viper of the internal potentiometer to record the current position of the potentiometer. I had to make a few changes to the code I wrote for the pot-to-servo control according to the max and min voltages of the servo's potentiometer.
 * The first challenge while implementing was to build the output arm. As it was a custom design, I had some trouble initially putting up the parts to each other to enable maximum motion of the arm with perfect stability. I have continued testing the movement of each joint using the potentiometers on the breadboard. As I progressed building the arm, I noticed that the amount of noise started to increase by a lot. This was the noise, which I thought I had eliminated in the initial testing. The tiny jitter that was noticed while using a small output shaft was very evident when attached to a longer joint. I tried to eliminate the noise by soldering the circuit on a PCB instead of using a breadboard along with some capacitors. But unfortunately this did not reduce the noise. After thorough research, I figured that the noise was from the connector wires (which are basically RF signal). As a result, I purchased a sensor shield to boost the signal going in and out of the microcontroller. This has worked like a magic reducing almost all the noise.
 * The next challenge I faces was to build the input arm. This was much harder than the output arm, as the brackets are designed to mount servos and not potentiometers. So I had to come up with a special design to hold the potentiometers in place such that they would rotate when the joint is moved. The hard part was to attach the DC motor in parallel to the potentiometer at the input joint. This was achieved with a bit more complex mechanical design.
 * After the completion of the input arm, the big task twas to make sure that the output arm rotates exactly similar to the input arm. In order to maintain the accuracy the mapping had to be done a bit differently and a few changes were made to the structure of the arm.
 * The final challenge was to control the DC motor using the Arduino to cause the required opposing force on the elbow joint of the input arm. It was not very simple to control a DC motor as a special H-Bridge circuit had to be built in order to control the speed and direction of the motor. This part is still being implemented.

