WHITEHAND   GROUP
Organization Documents

Notes and Data


Most of the notes and data archived here are from a "little black book" we kept of our meetings early in the semester. About halfway through the semester, we were well established enough to stop keeping notes on everything in this book. Shortly after notes in the book ended, digital data recording began. Some of the digitally-recorded data is also available here, but most of that data does little other than prove a correlation between finger bend radius and digital output values. In general, once the basic testing was finished, all other test data was used to show that the data was at least somewhat reflective of hand motion and provided a testbed for creating a new calibration algorithm. This is explained in greater detail below.
  • Notebook, Page 1 - Very early in the semester, we wanted to discuss our project goals with Dr. Picone, especially since we had a major design choice to make. Ultimately we went against his advice and changed the design because we believed we could overcome the technical challenges and make significant gains in cost and power consumption with a modified design. This proved to be more difficult than we had imagined, but in the end we realized the benefits we had intended and created a working design. Given the chance to go back to this point in January, we may have followed Dr. Picone's advice, but the challenge was just too exciting at the time.


  • Notebook, Page 2 - This meeting with Joe Fanguy was when we pretty much decided a design modification would be the best route. At this stage, we were already discussing LED-switching and hardware minimization. We also began talking about a switch to infrared. Later this same day, we began considering a way to power the entire system directly from the PC serial port and eliminate the need for batteries or other external power sources entirely.


  • Notebook, Page 3 - These diagrams are from the previous meeting. The top-most drawing shows a proposed circuit that would allow us to power the glove and all its systems directly from the PC serial port. This idea is never touched again, however, once we discover that the PC serial port is limited to 10mA of current, a full ten-fold reduction from the original prototype. We decided that was an unreasonable objective and went back to battery power. The second diagram shows the LED-to-photodetector coupling scheme, which eventually found its way into the final product. The only difference between this sketch and the current model is that there are three LEDs and four photodetectors (the five-fibers-to-one-LED coupling was impossible). This hardware reduction saved us a significant amount of power dissipation. The final section of this page shows how the LED switching could be realized in firmware. This is not how the final firmware implemented LED switching.


  • Notebook, Page 4 - This page shows some calculations of instruction execution time, analog-to-digital conversion time, and RS-232 data transfer time. The objective was to determine if the switching times for the LEDs and photodetectors (found in the datasheets, below) would cause a problem with our sample rate. It was quickly determined that the very fast switching times would not interfere at all, and the necessary "settling" delays were already built into the firmware.


  • Notebook, Page 5 - These notes were taken during a brief meeting in the lab, with further discussion of hardware reduction and component switching. Additionally, we began serious work on designing a PCB, which began with a consideration of surface-mount components. The decision on whether or not to go to surface-mount components was not made for nearly a month.


  • Notebook, Page 6 - At this point, we began to get serious about switching to infrared. Mr. Fanguy pointed out that infrared components would be less susceptible to ambient light interference, and also that infrared was a more mature technology which would probably mean reduced costs. We also began looking at whether or not our coupling plan (from page 3) would work, and concluded that it would not. However, up to four fibers could be coupled to a single LED, so we decided to use 3 LEDs and 4 photodetectors. At this time, we had not settled on an LED or photodetector, so we were not sure how coupling would work.


  • Notebook, Page 7 - We continued our experiments with coupling multiple fibers to a single component, looking for a method that was secure and usable. Also, we began checking the sensitivity to infrared of several photodetectors we already had available by building a sample sensor network. By swapping out LEDs and photodetectors in our sample network, we were able to determine which pairs of components produced the best results. However, we did not use any of these components in our final design. We also began discussing alternative coupling options. At this time, Mr. Fanguy found LED and photodetectors designed specifically to be coupled to optical fiber. The next time we met with Mr. Fanguy at DIAL, we tested the new LEDs and photodetectors. The results for the "blue dot" LED are shown here, where the straight-fiber and bent-fiber voltages for each photodetector ("white dot" phototransistor, "red dot" photodarlington, and "orange dot" photodiode) are shown. We were very surprised by the poor performance of the photodarlington, but we hypothesized that the photodarlington is so sensitive, the amount of light reaching it when the fiber is bent is still enough to nearly saturate it. Also shown here is a schematic of the circuit setup, so we could reproduce it on the final model.


  • Test Data - This page shows the results of the tests described on page 7 (the early "sample sensor network"). We did not know anything about the detector at the time of the tests except that it was 43 cents. The far-right column shows the joints being tested, 2 and 3, or the first index-finger joint and the second index-finger joint. This test was conducted after the optimal component pair was found, and was used to show that we could loop the fiber and thus put both the LED and photodetector on the same side of the hand. The specifics on the components are listed at the bottom of the page, after we found out what they were.


  • Notebook, Page 8 - The remaining LED/photodetector test data is shown here. These results are for the "silver dot" LED. Note that the color of the dot refers to the color of a small dot located on the side of the component. These results show the greatest voltage change with the "blue dot" LED and the "orange dot" photodiode. This component combination is still used in the final design. Also at this meeting, we discussed using a spectrometer to gather more test data. However, the DIAL optics lab did not have an infrared spectrometer at the time, but one was on the way. Ultimately, it was decided that we did not need spectrometer data.


  • Notebook, Page 9 - This page just shows the circuit diagram for the MAX232 chip and the oscillator, along with a small diagram explaining the necessity of a diode in our final PCB. The MAX232 and oscillator diagrams were drawn directly from the original prototype to make sure that we would have no trouble with them on the PCB. As for the diode, it is necessary for In-Circuit Serial Programming (ICSP), a feature in PICs that allows them to be programmed after they have been placed in the circuit. The diode is needed because the RESET pin is driven to +13 volts during programming, but is normally tied to VDD, which is 5 volts. The diode prevents this +13 volts from getting to the rest of the PIC and the rest of the circuit.


  • Notebook, Page 10 - We designed a PCB around surface-mount components, but because we were still unsure about ICSP, we decided not to send off the design just yet. We met briefly with Dr. Reese to talk about ICSP. Within a few days, we concluded that we could not guarantee that ICSP would work with our PCB design and were not sure that we could access an ICSP programmer anyway, so we decided to go back to a DIP package for the PIC. On closer inspection, we realized that the DIP package would not increase the size of the PCB at all. Also on this page is a small diagram displaying current draw in a sensor network. For some reason, the values were never filled in.


  • First Calibration Data Set and Test - This spreadsheet begins with the raw data captured by the DataGlove API. One thing we quickly noticed was a large amount of "noise," which could easily account for the wild fluctuations we were seeing in the visualization application. The second graph in this spreadsheet shows the direct linear interpolation method used in the first prototype. This data is extremely "dirty" and bears out our concerns that noisy raw data could cause serious problems with the final calibrated data. The third graph shows an amplified and filtered version of the raw data. The amplification is really unnecessary, but at the time it acted as proof that even the dirty data could be converted into something usable. The next graph is direct linear interpolation from the filtered data, and the final graph shows the linear interpolation with a small amount of averaging added in to help smooth the graph. In this early test, the averaging was simplistic and resulted in negligible change. (The raw data in this spreadsheet is the only data captured directly from the glove. All other data was calculated by a PHP script as we attempted to understand how our calibration algorithm should work. Ultimately, the algorithm was designed and first implemented in PHP. It was then ported to C++ for use in the API.)


  • Second Calibration Data Set and Test - The first graph here is a new set of raw data, captured over a longer period of time. It is difficult to tell from this graph, but at two times, the joint used for testing was bent half-way. This fact will become important. The second graph is the amplified and filtered version of the raw data. The third graph is linear interpolation using averaging, but this time it also includes what we termed "sine compression." This little piece of the overall algorithm pushed values that were close-to-center even closer to the center. It was meant to combat the apparent drift of these values to the extremes, and seemed to produce better results that somewhat more clearly showed the half-bend. Eventually it was realized that the "sine compression" was combatting an error caused by a typo and was therefore removed after the typo was fixed. (Unfortunately, the spreadsheet showing the results without the typo and "sine compression" has gone missing.)


  • Third Calibration Data Set and Test -
  • All of the data in this test set was captured directly from the DataGlove API. The filtering function, used to obtain the data in the second graph, is not as clean as we had previously observed in the PHP implementation of the algorithm, and we cannot explain this. It is possible that the key to this difference is in how the algorithm was implemented in each case - in the API, the calibration had to occur in real-time and could only use past values for averaging, but the PHP implementation could "see the future" and used future values in its averaging functions. Whatever the cause of the difference, the averaging and smoothing functions used in the API implementation were modifiedto produce a very smooth calibrated graph. The major problem with this calibrated data, however, is that it changes too slowly. The averaging produces a sort of lagging effect which causes the data to slowly change from "fully bent" to "fully straight" rather than doing it quickly. The averaging methods have been further modified in the final version of the API - some smoothness has been traded for faster response. The fourth graph here shows the max and min values over the full capture time. This was the first time we used a max/min averaging function and it produced outstanding results. We realized that the spikes in the filtered data were causing the max value to be set too high, which prevented "fully straight" from ever reaching anything close to 64. We had not seen this problem previously because the PHP implementations had filtered out more of the spikes than the C++ version. However, we concluded that if we employed averaging, we could dramatically reduce the effect of those unfiltered spikes and thus keep our max value in a reasonable range. It worked very well, as can be seen in the calibrated data graph (third in this file) where the data ranges in value from 0 to 64 over the entire data capture period. The final graph is simply an overlay of the raw data and the filtered data, which shows how much cleaner the filtered data really is.

    At this point, we felt we understood how to manipulate the algorithm well enough to begin using it in the final API. All further testing was conducted using the visualization application, which can be interpretted in real-time very easily, but data capture becomes much more difficult, so no further data has been captured.

  • Datasheet, "Blue Dot" LED


  • Datasheet, "Orange Dot" Photodiode


  • Datasheet, "White Dot" Phototransistor
Digital test data is coming soon.

This page last modified April 28, 2004 - 1:34:28AM