Saturday, November 30, 2013

Week of Thanksgiving

Meetings


Nov 26

Members present: Kendrick, Dat, Usama, Steven

The plastic parts were printed and allowed to sit in the chemical bath overnight in order for the support material to separate from the actual part. There was not much to do, since Parallax servos are still shipping. The assembly of the physical hand will be occuring over the weekend once all the parts and hardware can be cut and drilled.


Nov 25 (during lab session)

By this time, most of the physical and mechanical aspects of the project were completed. The arm was constructed over the weekend by Steven, complete with recessions for the servo motors. Professor Sullivan also allowed us to have the final design of our knuckle printed. We had 30 printed at about 1.5 cubic inches of material, and perhaps about 1 cubic inch of support material. The machine said it would take about 4-5 hours.

A rough version of the glove was also presented. It had one flex sensor attached to one finger on the glove and some hookup wire soldered to the flex sensor leads. Conceptually this should work for the rest of the fingers, so sometime over the weekend, more flex sensors will be attached.

The RF transmitter and receiver arrived in the mail, and progress was made to at least get a successful transmission to happen. During the end of this project, the focus will be shifting to the programming and Arduino aspect.

Weekly Progress

Dat Le
Time spent: 5 hours

Over the weekend, I determined that the best way to have the flex sensors attach to the glove was by inserting into a "slot." I achieved the slot by sewing a stitch into the top portion of the finger of the glove. This keeps the flex sensor aligned with the finger, but allows it to move back and forth along the length of the finger (very slightly) to allow for bending.

I also purchased some hookup wire from Radioshack and was able to solder it to the leads of the flex sensor. I tested it by stripping the wire ends and plugging it into the breadboard and it works fine. With long lengths of hookup wire, we will no longer need to worry about mounting an entire Arduino and breadboard onto the control glove.


Kendrick Lo
Time spent: 1 hour
I looked into getting a nice power source for the arduinos and managed to find a good plug in source that was compatible. It will only be able to power one arduino, which wont be that great since we are using multiple.


Steven Passios
Time spent: 1-1.5 Hrs

Over this week I created the Solid-works representation of our project. It appears to work as intended but the motion study didn't.

If all goes well, according to the 3D model we should be able to place both the arduino and the breadboard onto the back of the base of the assembly. This will save us space as well as helping to balance the assembly which I believe may be front heavy..


Usama Saadat
Time spent: 4 - 5 hrs.

Having ordered the RF transmitter and receiver last week, I began this week by assembling a mock circuit with the parts already included in the sparkfun inventor's kit. I used this system as a first draft to test some of the basic code and to familiarize myself with the basic format of the functions I'd be utilizing.

The circuit that I created consisted of a flex sensor and a servo motor connected to the same Arduino. The flex sensor was connected to an analog input and this data was then mapped and output to the servo motor. While the overall circuit was very simple, the prototype did allow for me to determine a basic format and flow that I will likely transpose to later drafts of the code.

*** [insert code] ***


In addition to this, I spent some time brainstorming the ways in which the RF transmitter / receiver would transmit the data. Having realized that the code would be a bit more involved than I initially imagined, given that the RF transmitter / receiver would only be able to transmit data in terms of character arrays, I would likely need to find a way to convert the integer values into an array and to decompose that array on the receiver end.

Having analyzed the relative complexity of this endeavor, I also decided to abandon the idea of the preset remote controller, given that creating a quality wireless dynamic control would likely be a greater priority than having a redundant remote control.







Wednesday, November 27, 2013

Preliminary tests of Parallax Servos and Glove-Mounted Flex Sensors

5 Parallax standard servos arrived today in the mail. They are quite large compared to the servos that came with the Sparkfun kit:

Left: Parallax servo; Right: SparkFun servo
The servo is both larger and stronger, with a torque about 2 to 3 times that of the SparkFun servo, so it should meet our needs nicely.

http://parallax.com/product/900-00005

I began to hook it up to the breadboard to begin testing them but ran into a bit of a snag. For whatever reason, the servos weren't working. I had the 5V and GND from the Arduino hooked up into the positive and negative rails of the breadboard, respectively. Then I attached the red, white, and black leads of the servo (just like the ones in the Sparkfun kits) to the power rail, ground rail, and digital PWM pin-out.

Next I tried plugging the servo directly into the 5V and GND pin of the Arduino. This worked! However, the problem it posed was that only one Arduino could power one servo motor at a time.

I spent the next hour or so troubleshooting and scouring the internet for answers. No luck. At last, I tried using hookup wire instead of the breadboard wires that came with the Sparkfun kit. This finally worked. I was even able to run two servos at once from the same power/ground rail with more hookup wire.

After this debacle, I wrote some quick code to test out the flex sensor's ability to rotate the servo when mounted on the glove. The servos get jittery once more than one servo is powered and grounded to the same rail, but overall, they are able to run independently. One discovery I made was that the 600-900 analog value for the flex sensors that was recommended in the SIK Guide code isn't far too much. What ended up happening was that the flex sensor was only bouncing between 690 and 800, which when mapped to a servo's angle position of 0 to 180, would only give me from about 70 to 110. I wanted full rotation, so what I did instead was have the "map" function convert flex sensor values from around 675 to 800 to the servo angles of 0 to 180. This way, I got a much broader angular range for the servo. I've included the code to show what I mean:


Perhaps more quality flex sensors would utilize the entire 600 to 900 range, but that's not the case with these flex sensors. Adjusting the range to 675 to 800 will allow for much greater range of motion for the servo. The video shown below uses this updated range for the flex sensor mapping to the servo angle, in addition to using the flex sensor on the glove mount for one servo.


Of course, this is with the flex sensor and the servo attached to the same breadboard and Arduino. Our challenge arises in separating this system into two by utilizing the RF transmitter and receiver, which is the last big challenge for this project.

-Dat

Monday, November 25, 2013

The Physical Arm


Steven Passios
Work Time: 6 hrs

Assembling The Physical Arm
After the final design of the arm was completed I immediately started cutting out the pieces. I did not have all of the tools I would like but managed to recreate the part by cutting the piece into smaller sections and then gluing them to the base.

The Arm

Upper Arm

Steven Passios
Work time: 45 min

The Upper Arm

Over the weekend I made a few adjustments to the arm section of the project. It now has all of the slots for the servo motors as well as the spaces for the arduino board and the wire guide which will be added later.

The Glove

Over the weekend, I sewed a "slot" for the flex sensor to sit when mounted onto the glove. I also soldered some hookup wire to the leads of the flex sensor that will attach to a breadboard away from the glove since mounting a breadboard and Arduino onto the glove would be difficult and cumbersome to both assemble and to wear. Additionally, I used heat shrink tube to help to strengthen the area where the hookup wire was soldered to the flex sensor, since the weight of the wires due to its length actually put a lot of stress on this portion of the flex sensor. Usually, it's recommended that the bottom of the flex sensor does not bend; otherwise you risk damaging the sensor.

Flex-sensor mounted onto the index finger of the glove. Note the blue heat-shrink tubing and the red and black hookup wire leads
- Dat

Thursday, November 21, 2013

Week of Nov 18

Meetings


Nov 21

Members present: Dat, Kendrick

A lot was discussed today in a very short amount of time. We finally decided that the servo motors provided in the Sparkfun kit would not be adequate for this project. Although they possess the necessary torque, their range of motion is limited at best. Standard Parallax servos were chosen as good servos to use in this project.

Further work on the Arduino control system was made. Specifically, the RF transmitter/receiver were ordered and the VirtualWire library was explored. VirtualWire would allow us to transmit an array from the transmitter to the receiver. That array could contain the servo angles. As such, we require two Arduinos, one for the robotic hand and one for the human hand.

For next week, the final assembly of the project will be put together. Once the plastic parts have been sent out to be printed, the focus can shift more towards the Arduino system and logistics in terms of how all the electronics will be hooked up.


Nov 19

Members present: Steven, Usama, Kendrick, Dat

Code was quickly written to test and observe the flex sensor as an analog control for the servo motors. There was the issue of whether the servos would be able to rotate enough (the Sparkfun servo range is several degrees less than 0 to 180) and if the $8 Sparkfun flex sensors would suffice. These issues were put on hold for the time being.

The RF transmitter and receiver will be purchased later during the week to be able to test out their capabilities and finalize the Arduino code.

Professor Sullivan gave us the opportunity to have our "knuckle" design printed during the Monday lab session. We were able to obtain them the next day. It only comprises of about 0.04 to 0.09 cubic inches of material, depending on sparse low or sparse high density printing. Some modifications will have to be made before we send a final design to be mass-printed. Shown below is the part that was printed:



Weekly Progress


Dat
Time spent: 4 hours

Redesign of knuckle to allow for use of #4-1/2 inch wood screws to connect to a dowel and #6-3/4 inch panhead machine screw as a pin. Also added a pass through hole for fishing line, which will connect to the last phalange of a given finger and the servo motor, thus closing the finger.

Knuckle5 Part File

Knuckle5 Drawing File
This is the final design for the part, since we would like to have it printed and assembled as quickly as possible.

I also explored the VirtualWire library for Arduino:

VirtualWire Library download and tutorial

Using a pair of RF links (transmitter and receiver at 433 Hz), we can send an array of characters. Essentially we can read in the value from the flex sensor, map that to an array with angle values for the servo motors (0-180), and then convert to characters for wireless transmission via the Arduino function "iota." The code is relatively simple, but will require some experimenting and troubleshooting to get the result that this project requires.

Kendrick
Time spent: 3 hrs

I performed the torque test the past weekend and now have a large DeWalt mechanic's glove. After performing the test, I decided that, while the servos are sufficiently strong to hold the strings and finger, that they are heavily limited with respect to their range of motion. They hardly provide a large enough range to allow the fingers to to clench, so we came to a group decision to order new servos (Parallax standard servos).

I also created the full assembly for a single finger.

 
The assembly is made of 3 pairs of knuckles (After the adjusstments were made), 6 single knuckles in total, and three 5/8 inch dowels.

Steven
Time spent:

Usama
Time spent: 5 hrs

Having begun an initial inquiry into the approach I would take with coding the Master Hand, I pursued a pseudocode template and began to explore my options for designing the remote control circuitry and code.

*** [Insert Code] ***


Having designed a systematic flowchart, I then began to explore what options I had for designing the dynamic glove control. Having discussed the ideas with the group, it seemed that there was a great deal of interest in pursuing a wireless option. Having consulted a few external sources, including our T.A. from the Design Lab, Christy, we determined that the Infrared Remote option was going to be complicated enough that it would not be a wise pursuit given our time frame.

As such, I began to explore the RF Transmitter / Receiver route. After browsing through several types, which had differing frequency ranges from 315 to 433 MHz, I settled on a basic 433 MHz RF transmitter / receiver pair and ordered it off of Amazon.com. This particular pair was included in several online tutorials and generally seemed to have good reviews, in spite of its relatively inexpensive price point at approximately five dollars a pair.

I placed the order for the RF Transmitter / Receiver and then conducted some preliminary exploration of the potential code I would need to run the RF Transmitter / Receiver complex. After discussing with Dat what our options were, it became apparent that both of us had discovered the same library for use with the wireless radio communication hardware. The Virtualwire library was an opensource library that contained the code required to run the RF off of the Arduino.

For the week, this seemed like an adequate point to have reached, and I began to plan how I would approach building the code next.

Thursday, November 14, 2013

Summary of Mechanism Description and the Arduino Code



Shown above is an initial concept sketch of the overall layout of the design project our group has chosen.

Mechanism: Glove-Controlled "Hand"

The idea involves creating a rough 1:1 scale model of a human hand that is controlled via an Arduino interface and a control glove. The fingers of the hand will be attached by string or thread to several servo motors. By changing the position of the servo motors, the opening and closing motion of the hand can be replicated. The position of the servos will be controlled using flex sensors mounted to a glove which can be worn by a human user. Opening and closing the fingers of the glove will subsequently open and close the fingers of the Arduino hand. This creates a "shadowing" or "copy-cat" effect.

String/cord/thread/wire will also be used on the backside of the hand to maintain an open palm position. It will have to be elastic, so that the hand springs back to an open palm whenever a user is not interfacing with the Arduino hand.

The components of the Arduino hand that must be designed and fabricated are the phalangeal joints, or "knuckles," of the hand that join the individual lengths of a given finger together. The goal is to have it reflect the limitations of human hand movement i.e. they can't bend too far backwards or fold too far inwards on themselves.

Arduino Component:

The Arduino board will take the analog input of the flex sensors and map them to angular position of the servo motors. We would also like to incorporate a set of either IR or RF emitters/receivers for the analog control glove to communicate to the servo motors remotely.

Week of Nov 11

Meetings:


Nov 14

Members present: Usama, Steven, Dat

We discussed two different design options for the knuckle. The new design will build off of the advantages of both by incorporating a "fork" that will help to align the tension strings that will ultimately keep the Arduino hand in an open palm position when not being interfaced by the analog input. The existing design will have to be updated to accommodate this combination.

The Arduino code was also discussed. In general, mapping the flex sensors to the servos will be a relatively simple task. The difficulty arises in how we will decide to have the glove interact with the servos from a distance, perhaps remotely i.e. how we decide to connect the electronics to the mechanism. More research is required.

We also discussed the issue of power consumption, since we will need five servos running independently at one time. We aren't sure of whether this is an issue of voltage or current draw. In any case, this has been put on the backburner, and can be worried about later.

For this upcoming weekend, research on IR or RF transmitters and receivers will need to begin, as well as ideas on the control glove and mounting the Arduino and flex sensors. We will also have to determine how far we go with the thumb design (how intricate will it's motion be?).

Nov 12

Members present: Kendrick, Dat

Today we discussed the design of the knuckles, as well as the overall design of the entire assembly, which included choosing materials, costs, etc. One concern was whether the stock servo motors that came with the SparkFun kit would have enough torque to control the fingers. Kendrick will determine if these servos provide enough torque and get back to the rest of the group.

Weekly Progress:


Dat
Time spent: 4-5 hours

I made some initial designs of the knuckle and eventually came upon a design that would accomplish everything we needed it to do in terms of replicating a real human hand's opening and closing motion. It took some time to determine how excess material could be shaved off the part, since we are only given 4 cubic inches of material to work with. Show below is the part and its dimensions.

Knuckle Part File

Knuckle Drawing File

This part was designed with the intention of taking two identical pieces, rotating them 180 degrees so that they face each other, and then insert a pin to connect them. The part is made to sit flush against the end of a 5/8 inch dowel, and attach by using a countersunk wood screw, perhaps around the size of #4 and 1/2 inch depth. 

The group discussed the issue of aligning the tension strings along the length of the fingers whenever the fingers would close. This design did not take that into account, but we did come up with the idea of adding a sort of "fork" that would be at the top of this component. Whenever the hand closes, the fork is lifted, and the string will stay aligned. Further implementation of this concept in combination with the above design will be required this weekend.

I also spent time determining the best materials to use. In general, the fingers will be something along the lines of 1/2 inch to 3/4 inch wooden dowels, cut down to size. 5/8 inch is about the diameter of my fingers, so that is how I designed the knuckles. I also found some elastic band at a JoAnn Fabrics. It's much more springy than elastic thread, but not as strong as elastic cord. It's a good in-between stretchiness that I believe will work when keeping the hand open when not being controlled. It should also be weak enough for some servo motors to pull against when closing the fingers.

The wooden dowels, the elastic bands, and wood that will be the palm and forehand will be the cheapest materials, probably all under $20. I would guess that the electronics (more flex sensors and servos if it so happens that we need them) will be the most expensive. We estimated that the whole project could cost around $100.

Kendrick:
Time spent: 2 hrs

I looked into what type of glove should be used. It was decided that a standard glove would by insufficient and too weak, whereas a mechanic's glove would be stronger and better. I got yellow and black DeWalt's mechanical glove that will be used for the hand. Our group also wanted to find out if the servos provided in the SIK would be sufficient enough to use with the strings, in terms of strength. I will perform a torque test on the servos and decide whether or not they will work.

Steven:
Time spent: 2-2.5 hrs

Over the weekend I looked into possible configurations for the control glove as well as possible ways to mount the thumb to the base piece. The most prominent thing we need to decide for that is if we want the thumb to have full range of motion or if it should only be able to bend inwards. 

Usama
Time spent: 2 hrs

After the initial meeting, it was determined that I would effectively be in charge of the Arduino code which would interface and run the Master Hand system. As such, I began by brainstorming and imagining various ways in which I could approach the task, thinking of what some of my potential options might be for assembling the code.

Our initial discussions had entertained the idea of a remote control with presets for the hand configuration as well as having the human interfaced glove which would allow for active participation and an analog input that would be more dynamic. After some thought, I determined that I would pursue the dynamic hand code more aggressively and see if there was any time left to add an additional remote control for preset figures.

In terms of the dynamic glove input, I categorized and wrote out a brief outline that detailed some initial thoughts:


     Glove:
  • Five Sensor Variables 
  • Five Servo State Variables
  • Five Servo Value Variables
  • Map each of these separately.
  • How will we communicate glove to hand? Wired or wireless?
     Remote:
  • Maintain each servo variable (independent of functions) 
  • Map each servo according to sub function? 
  • Each servo controlled by if function of buttonstates? 
      ** Also need RF Transmit Code


Based off of this template, I began to explore a pseudocode that would provide a template that I could further pursue in building the code for the Master Hand system.

Tuesday, November 5, 2013

Week of Nov 4

Nov 7

Members present: Dat, Steven, Usama

Today we weighed the decision of the project idea heavily upon two options, the glove-controlled hand and the "useless" machine. Although the useless machine was funny and had many possibilities for variation, the decision ultimately fell upon choosing the glove-controlled hand because the concept was a bit challenging and overall, would be cooler than a useless machine.


The idea is as such: A glove would house flex sensors (the analog input) which would control some servo motors. These servo motors would then control the movement of "fingers," thus producing a hand-shadowing sort of mechanism. Plastic-printed "knuckles" or "phalangeal joints" would attach the phalanges of the fingers together. The possibility of incorporating an IR remote was also mentioned, but requires further research.


This upcoming weekend is going to be dedicated to writing "pseudocode," or the general flow of the code that would be required for this mechanism, as well as design of the plastic-printed knuckles. Design of the overall layout of servos and the mechanism will also begin this weekend.


-Dat

Nov 5

Members present: Dat, Kendrick, Steven

During this meeting, the group brainstormed various ideas for the design project (see list below). We also set up a dummy g-mail account (22201.804.dksu@gmail.com), organized the Google drive to use for file exchange, and set up this Blogger account (http://22201804dksu.blogspot.com/). The name of the blog and the name of the group are temporary until we think of something good.

Possible Ideas for the Project:
- Glove-controlled animatronic hand
- "Useless machine"
- Sumo robot
- Wii-controlled rubber-band cannon

-Dat