Friday, December 6, 2013

Week of Dec 2

Meetings



Dec 5

Members present: Steven, Dat

With the deadline extended to the Friday of next week, we have time to spare. The assembly/construction tasks of the mechanism have been divided between the group members. Each of the knuckle pieces are now attached to dowels, and the palm is now attached to the rest of the arm, which now has the servo motors mounted as well. The plan is to finish the assembly during what would normally be the scheduled lab time (Mondays 2-4), and then use the rest of the week to troubleshoot and adjust the code and mechanism where necessary.

Initial thoughts on a possible second prototype are already underway. Although a second prototype will not be built for this project, exploration of that option and issues we would address and fix will be discussed in later blog posts.

The same tasks remain that were mentioned for the December 3rd meeting: finish the code, finish assembling the mechanism, and then begin tweaking the project so that it actually works.

Dec 3

Members present: Usama, Dat, Kendrick

Although previously we had strived for a Wednesday project completion in order to present at the Dean's event, this deadline proved to be too tight. Our group opted to drop this deadline to give us more time to complete the major components of assembling the mechanism and finalizing the Arduino portions.

All that is left to be done is to assemble the mechanism, finish the code, and then we should be able to begin troubleshooting.

Shown below is the progress on the physical assembly so far:

Completely sewn glove. All that is left is to attach flex sensors

Mechanism assembly so far

Close-up of hardware used to attach the joints: #6 panhead machine screw, two washers, and a lock nut

Additionally, we have been experiencing some issues with the RF transmitter/receiver pair. It was discovered today that the range is extremely limited, somewhere around the order of a few inches actually. However, after some extensive internet research, it was discovered that using some wire, antennae could be fashioned and attached to both the transmitter and receiver. The range was then increased to perhaps a few feet, which is probably more than was required. Hookup wire was soldered to slots labelled "ANT" onto both the transmitter and receiver. This should overcome one of the last two large hurdles left in the Arduino component of the project, the last one being the issue of transmitting an array of servo positions.

Weekly Progress

Dat
Time spent: 4-5 hours
I spent most of the Thanksgiving break beginning assembly of the mechanism, which included modifying the plastic printed parts, cutting the dowels, drilling the dowels, and then attaching everything. These were all time-consuming endeavors.

I also soldered small antannae to the RF transmitter and receiver. They should work from a reasonable distance from now on.

      




The final assembly has been posted and I attached a basic animation of the finger motion as well as a collapsing assembly for viewing.

I've also started working on the Project Summary report, which will accompany the project when we present it to the public next Friday during finals week. Related to this report is thinking about next steps in this project if we were to continue such as a second prototype and new designs for 3D-printed parts.

Kendrick
Time spent: 3 hours
This week I went out and purchased some of the materials that will be used in the design. I went to Lowe's and purchased 10 small eye screws that will be used to orient the fishing line that will pull the fingers of the hand. I also cut approximately 20 ft of very thin fishing line, which will be used like muscles. They will be tied onto the servos and used to pull the fingers against the elastic band and form a grip. I'm concerned that the fishing line will end up cutting through the very thin circle of acrylic that will be used to pull on the knuckles. Hopefully this won't hold true.


Steven
Time spent: 3-4
Physical arm

After cutting out the wire guide I finally glued all of the individual pieces together. This part was originally going to be made out of acrylic but we decided to make it out of wood instead.

 In addition I attached all of the servos to the base as well as finishing the construction of the individual finger parts. The joints may create a problem due to the fact that the joint parts keep breaking; some redesigning may be necessary. Also, there may be an issue with the wires that run to the servos running into each other.

Usama
Time spent: 8 - 9  hrs.

By the beginning of this week, I had received the RF Transmitter / Receiver pair in the mail and I began to build a circuit to incorporate these into the system. Having borrowed Kendrick's Arduino kit, I worked with two computers to simultaneously assemble the transmitter and receiver complex.

I ran into several issues as I developed this code. Several of these were due to the exploratory nature of this undertaking, where I had accumulated some knowledge but did not know first hand what the challenges would entail.

Initially, as I hooked up the transmitter and the receiver, I initially tried to send analog values across the channel but realized quickly that this was too advanced an approach for an initial test. As I pared down the code, I researched online to find several resources that were of great help. From these resources, I found the VirtualWire library which I downloaded and imported into Arduino to help run the RF Transmitter and Receiver. Early on, I realized, however, that the library resource I had downloaded was not entirely compatible and found another through the Arduino forums that provided me with a more complete library.

Nextly, I found code that allowed me to map the data on the receiver end, using a for loop and a character array that would copy the message array after each iteration of the loop. The loop itself would run based on the received message length, which was called for by a virtualwire function. I made sure to add in Serial commands to each end of the code to track whether or not the receiver and the transmitter were actually outputting the correct data. This was primarily to debug any issues that would crop up.

Having compiled this code, I tried to send a preset message across but continued having issues. After numerous trial and error approaches, I began to realize that the remaining problems were actually not a product of my code, but rather, my hardware. For one thing, given the nature of the breadboards provided with the SIK, as well as the high rate of usage over the course of the semester, there were many instances where a wire would be loose within its socket and as such, the circuit would not function. I ended up having to try a series of slots and combinations of wires until I could maintain the circuit without having to hold any wires down.

Finally, the largest issue, once these were isolated, was that of the transmitters themselves. Because neither the transmitter or receiver contained an antenna, when there was any distance greater than 1.5cm between the two components or anything in between them, the signals would not transmit and as such the system would not be complete. After having isolated this issue, I was able to determine that we would need to solder antennae to the components. I handed over the components to Dat who then proceed to solder antennae to each of them.

Furthermore, as I had initially been a bit more ambitious in my attempts to run the RF system, I had also connected the flex sensor and the servo motor to their respective ends of the system, the transmitting and receiving arduinos. It became apparent that the servo motor drew too much power from the arduino and it in turn limited the functionality of the receiver. The arduino, with both connected, could only process data at a much slower rate, due to the draw of the motor.

The other issue that arose with the servo motor was a conflict between the servo.h library and the VirtualWire.h library. It turned out that both libraries utilized the same timer and as such, I found a Servotimer2.h library through the Arduino forums online. This new library used a different timer but also came with a couple of other challenges of its own. Firstly, the servotimer2.cpp file needed to be edited to allow for complete compatibility with the newer version of the arduino software. After finding these edits and putting them into the code, I needed to make adjustments to the servo writing and mapping. It turned out that the servotimer2.h, because it used a different timer, required for all servo write values to be expressed in terms of pulse width modulation, and thus in terms of microseconds, not degrees. While in retrospect this didn't add any severe level of complexity, it was an additonal complexity nonetheless.

We tested the arduino circuits again the following day and found that the reliability and distance of their communications had expanded considerably. When we connected the motor, once again, the same issue resurfaced and the basic communications were slowed considerably due to the drain of the motor. We concluded that we would need to find a third power source to run the motors for the final system.


*** Arduino Code ***

No comments:

Post a Comment