Journal

Week 1 - May 31- June 3 This past week I was able to get acquainted with the senior design project, SEMGO, which was  completed last semester by a group of Texas A&M Computer Science students. Their project consisted of remotely moving a robot through the flexing of independent muscles in the forearm. I spent time down in the senior design lab working with Jason Black, who was a part of the SEMGO project, to reconstruct the project. He took time explaining the basic hardware and provided me with  information on the EMG sensors and hardware components that were used in their design. I got the opportunity to view the waves produced by my own muscles while attached to a oscilloscope through a pair of EMG sensors.  Most of my time was spent reading material on EMG sensors and the  research completed by the SEMGO group. I thought it was important for me to understand the basics of how muscles and EMG sensors work to understand the data that was being collected and analyzed through the hardware. I also spent time reading the final projects and papers from the SEMGO project and asking Jason specific questions concerning the hardware that was implemented. Understanding the hardware completely is a difficult task for me to accomplish due to my lack of schooling in the field, but after this week I have a general idea of how the signal from the EMG sensors is amplified, filtered, and processed to remotely move the robot. 
June 6- 10 In this upcoming week I plan on continuing my hardware research through working with Jason to complete reconstructing the SEMGO project. This way I can see their finished project. I also plan to review their code to understand more how to they interfaced with the hardware.  I will start my own research concerning my own project of using the signal that the SEMGO project collected to move a curser on a computer screen. I will be programming in JAVA, so I will start my research with a quick review of the program and learning the compiling tool that I will be using. I will then start programming to interface with the hardware. I will also do research on the Robot class in JAVA that will help in the controlling the movement of the cursor.
Week 2 June 6-10 Week 2 was focused on the Java interface to retrieve the data processed by the hardware and move the cursor on the screen accordingly.  I started my work by reviewing the basic principles of Java by looking through Java books given to me by Barani (my graduate mentor) and asking questions of my peers.  After designing the basic model for how I wanted to implement the interface, I successfully wrote the program to read in a text document containing numbers from 1-4 representing the different directions (right, left, up, down).  My implementation did include using the Robot class to move the cursor.  Through my research concerning my design model I did find the MouseEvent class, which will return the coordinates of the mouse at any time through the getX() which “returns the x position of the event relative to the source component” and getY() functions.  Unfortunately, we would have to upgrade to Java 1.4.2 to import this class.  This functionality would be useful to implement in the future, so that the cursor would not have to be moved into a general area such as the middle of the screen when the program is started.  I also did extensive research concerning connecting to the serial port.  I found a package that would help in this implementation (javax.comm.), but I do not yet know if I can use it so alternative ways are being researched.  I also spent my time doing some research concerning active EMG sensors and creating my web page for the DMP program, which can be viewed at http://students.cs.tamu.edu/ella.  I also wrote my research proposal for my REU/DMP internship, which will be reviewed by Barani at a later date.
June 13-17 This week I will continue my research in active EMG sensors and complete my abstract, which is due on Thursday.  I will work more on my program by implementing the serial port connection.  I will then reprogram the hardware to no longer move a robot remotely but send a specific integer through the serial port to be read by the cursor program.   Hopefully then we will be able to test the whole system using the EMG sensors.  New hardware is being constructed so I am not sure if I will have to wait for that hardware to be completed to test the whole system or not, the new hardware is being constructed by Jason Black.
Week 3 June 13th – 17th To successfully implement a serial port reader, I started with research concerning how this functionality would be instantiated in Java.  I once again came across the javax.comm package, which I decided might be the best way to implement the serial port reader.  Unfortunately, upgrading the jdk to 1.5, installing and implementing the javax.comm package became quite a task.  After a good deal of trial and error I was finally able to use the classes within the package.  I modeled my serial port program from code found on a javax.comm website (http://www.javaworld.com/javaworld/jw-05-1998/jw-05-javadev.html).  

To be able to test the serial reader, I also wrote a serial writer so that I could control the reading and writing of data across the port.  I was able to compile and open port “COM1” on my computer for read and write.  To test my read and write serial programs I also had to install the javax.comm package on another computer so I could link them with a null modem cable.  Due to the fact that the other computers in my lab area did not have jdk1.5, Jason and I downloaded javax.comm on the two computers in his lab, but unfortunately when the code was ran it would terminate before the port was opened for reading and writing.  I then tried implementing the programs on my computer and one that I had installed javax.comm on, which resulted in a termination also.  I then figured out that I was not correctly closing the ports for them to be reopened when the code was run again.  After fixing this, I could open and the close the ports every time each program was run.  

This week, I also reviewed the code for the Motorola chip that was used for the SEMGO project.  I discussed with Jason what would need to be changed to successfully send data across the serial port to be used to manipulate the mouse.  For most of the week, we were unable to do any work with this aspect of the project due to the fact that we could not compile the prewritten code and download it onto the chip.  Once this was resolved we added in the functionality to send the data that was collected from the EMG sensors across the serial port instead of remotely controlling the robot.  Before we were able to test our code a program was written to send data through the serial port and read using an existing C program. I was able to conduct some research on active sensors.  Barani supplied me with some great internet sites that had multiple active sensors and from that I was able to find some other ones.  

This week I was also able to attend a seminar concerning Energy, Environment and Transportation given by Dr. Christine Economides.  The talk was concerning implementing different forms of mass transportation and why such a change might be needed.  I really found her talk very interesting and informative.

June 20th – 24th This next week I plan on completing the serial port communication.  Since a program was written for the Motorola chip and output was produced and read by the C program, I will then see if my program reads the same data.  I am concerned about how the program will react concerning data being written and read from the serial port at the same time.  Once I know what kind of data I can read then I will improve my mouse controller by adding a stop state.  This way when the controller is given a move right command it will not stop moving right until a stop command is read.  This is the way that the SEMGO robot was implemented.  I will then manipulate the testing program downloaded on the chip to send me each state for the mouse, to make sure that the mouse is being moved properly across the screen.  The last step will be to test the changed code for the Motorola chip to read from the EMG sensors and relay the appropriate data through the serial port.
Week 4 - June 20th –24th

This past week I finished the code to read from the serial port.  I was able to read a series of numbers written to the port by our board.  Two other programs, one written by Caleb Wells a fellow REU student for another project and a built in HyperTerminal program, verified that the data being read was accurate. 

After testing my reader I concluded that there is a problem reading in first number in the sequence. Jason’s test program for the board writes one number continually onto the serial port and when my code is run the first number read is always different then the following numbers.  The port blocking some of the bits at the beginning may cause this problem, but either way this problem will have to be fixed.

To accurately read from the serial port, the port needs to be closed after each time the code is run.  If the port is not closed then it may not properly open the next time the code is executed.  To insure that the port closed I needed to find a way to break the loop that was reading from the serial port when the user has ended the program. 

Jason and I thought that a way to break the loop would be to have the user press a key on the keyboard.  Through the power of Google and java.sun.com I researched how this could be performed.  After looking at keyboard event, key listener, key_pressed functionality, and programming test code, I realized, with the guidance of fellow REU student Brian, that without a container or GUI I would not easily be able to implement what I had wanted to do.

I implemented a small GUI that allows the user to stop reading the input stream and close the port.  The GUI also allows the user to reset, which will close the port and then reopen it to read the input stream.  These buttons can be pressed by the mouse or through keyboard commands.

With the data being read in at such a high volume my GUI became very slow.  This problem may be fixed through the implementation of threads, but may not be needed because data being read from the EMG sensors may not be written at such a high rate.

This past week I was also able to attend some interesting events.  On Monday I went on the Immersive Visualization Center Tour, which gave us an overview of the Center and allowed us to experience some great animation in 3-D.   On Tuesday we met with Princeton Review and went over verbal strategies for the GRE.  On Wednesday I attended an all campus REU lunch, which discussed attending and applying to graduate school presented the Graduate Studies office at Texas A&M University.  On Thursday I attended Computer Science Brown Bag lunch talk “Presenting Research Results”, by Dr. Frank Shipman.  This presentation gave me some great ideas for organizing my final paper and presentation.  On Friday night I went on a tour of the TAMU Observatory, which allowed me to view Jupiter, Saturn, and many other different stars.

Week 5 - June 27th – July 1st

This week I researched different muscle groups to use to move the mouse cursor.  Dr. Gutierrez suggested that I look into the shoulders, neck (rotation, pitch), and face muscles.  These muscles could potentially be available for use on a person who is not able to move a cursor due to immobility of their arms or hands.  I found it very hard to identify different muscles within the neck that a specific movement correlated with and in turn did not also contract many other muscles.  I looked at rotation, lateral flexation, hyperextention, and flexation within the neck.  I also looked at the muscles responsible for shrugging the shoulders (trapezius –upper), clenching the jaw (masseter), and raising the eyebrows (occipitofrontalis).  To test if these muscles may be used for the project, Jason placed two sensors on his face, one on the masseter and the other on one of the occipitofrontalis (forehead) to review the strength of their signals.  Their signal overlapped slightly but overall we believe that they could potentially be used for someone who only has muscle movement in their face.  We also spent part of the week trying to figure out the problems with the hardware so that we could calibrate it with just the forearm muscles, but we were unsuccessful. 

Week 6 - July 5th – 8th

This week Jason and I did final testing for the demo of the project due on Wednesday.  After rewiring of the part of the board we were able to use the muscles in the forearm to move the cursor up and left!!!  We were able to successfully demo this to the lab on Wednesday.   At our lab meeting I also presented my research concerning the different muscles that could be used to control the mouse in the shoulders, neck, and face. 

I then started on research concerning the different populations that the interface would be beneficial for.  My research concluded that the physiological mouse could benefit people affected by: Muscular Dystrophy, Multiple Sclerosis, Amyotrophic Lateral Sclerosis, Carpal Tunnel, Spinal Cord Injury – Paraplegia Quadriplegia, Cerebral palsy, Stroke, and Paralysis.   I also came across many different mechanisms that perform the same sort of function that my project does.  On Friday I discussed with Dr. Gutierrez that to make my project stand out from these other products I have to show the benefits or differences of using muscles to control the mouse.  I started a write up concerning each population and how my project can be adapted to fit the needs of those people.  Hopefully I will be able to narrow down the populations to the one that will benefit the most from a muscle driven physiological mouse.
Week 7- July 11th-15th

This past week I continued with my work concerning the different populations that may benefit from our physiological cursor. 

Through this research I realized that the benefit of the physiological cursor is its adaptability for different populations.  With each population, our physiological cursor will be able to adapt to the specific muscle groups that are not affected by the specific disorder and will allow the user to use those muscles to manipulate the mouse cursor on a computer screen.

I completed research on alternative mouse products, to compare their functionality to the physiological cursor.  These products included: eye tracking, head tracking, and voice recognition.  In each case these products needed specific muscles groups to be functioning to work, where the physiological cursor can use any of the muscles that are not affected my the disorder to manipulate a mouse.

For proof of functionality, I started on reworking my code so that the commands it receives are the same as those sent by a serial mouse.  This would then show that indeed our physiological cursor has the same functionality as standard mouse. 

A serial mouse sends packets of three bytes that tells the computer the length of the x and y movements, and right and left click and release.  The program that I had working just took one byte as its input and would move the cursor accordingly.  I first started hacking my code a part to try and make the serial port functionally to work, but in the end I decided to start a new project to insure all the functionality worked properly. 

Week 8- July 18th-22nd

This week I completed the revisions on the physiological cursor software which allows the cursor to move on input from a serial mouse.  This task required me to change a lot of how I had set up the original program.  A Serial mouse sends a series of serial packets consisting of three bytes.  Each byte consisted of 8 bits which when combined with each other would give the x increment and y increment of the next mouse movement and a 0 or 1 value for the left and right button.  In complete serial packet the first byte would have the 6th bit as a 1, and the second and third bytes would have their 6th bit as a zero.

To ensure that each byte was being processed, I added a serial port listener and all data that was received was placed into a vector.  The first byte in the vector was checked to see if it was the beginning byte and if it was that byte and the following two where then read and decoded into the x increment, y increment, left click, and right click values.  These values where then used by the java Robot class to manipulate the cursor on the screen.  The cursor still began in the middle of the screen and all movements were still checked against the dimensions of the screen. The GUI was also recreated using threads and consisted of three buttons for user control of the program: Start, Reset, Stop.

The project was demoed for Dr. Gutierrez on Friday.  It was demonstrated that the serial mouse could perform the same functionality as a standard mouse, including actions such as drag-drop, double click, and highlight.  The hardware was also revised to send serial packets to the software depending on the signal it received.

  This week I also had the opportunity to tour the Texas A&M Low Speed Wind Tunnel.  The students that lead the tour were studying Aerospace Engineering.  We toured the machine shop where exact models were built for the tunnel.  We also saw pictures of Lance Armstrong testing his bike in the tunnel and Harley Davison Bikes being tested.

  For our brown bag lunch this week Dr. Valerie Taylor, Department Head, presented on "Presentation Skills".  This was an interesting talk concerning how to present research in a PowerPoint presentation manner. 
Week 9-  July 25th-29th

At the end of the previous week, Jason and I performed testing concerning the strength of the signals that a small muscle produced and that of a larger muscle, the forearm, and we found that the smaller muscle’s signal was around 1/6 of the larger muscle.  During our weekly meeting on Monday Dr. Gutierrez discussed different options with Jason and I concerning how to more precise read the muscle signals on the smaller muscles, like those on the neck.  We discussed the option of using a notch filter on the signal before it was processed in the Motorola chip.  A notch filter would pass the entire signal minus the 60-hertz power signal.  With this filtered signal the chip would be able to distinguish between smaller signals. 

Jason and I constructed the notch filter on a prototyping board and after much tweaking and testing (it was quite a long process) we completed the filter.   The filter did filter out noise at 60Hz caused by AC power.  It did then keep the noise at 60Hz from dominating the signal, and increased the signal to noise ratio.

This past week I also started the introduction and background for my final paper.

For this weeks brown bag lunch Dr. Gutierrez, Dr. John Keyser and Dr. Scott Pike presented the "Faculty Research Panel".   It was really interesting to actually learn in-depth what Dr. Gutierrez was working on as his research.  At each Monday meeting I learn what all the Graduate students are working on, but never him, so I really enjoyed listening to his presentation.  The other presentations were just as interesting.  I just really enjoy listening and learning about faculty research because it always spans so many different avenues which I find quite interesting.

  Week 10- August 1st -5th

This week has been my last working week and it was spent finishing my poster presentation, final paper, and website. 

Jason and I also spent a lot of the week trying to collect data concerning different calibration techniques.  These were contracting the muscle hard vs multiple soft contractions.  We were able to read two different channels of data concerning the decisions that the hardware was making, but after many hours of deliberation we could not interpret the graphs the FFT data collection.  The problem was is the person who wrote the original code for the SEMGo project was only available to communicate over email which made the data collection process quite tedious and not very productive.   

The brown bag lunch was: "Evaluations" with Beth Johnson.  I thought this session was important to insure the success of the program for the next year.

On Friday all the students, graduate mentors, and faculty mentors were invited to a “thank you” lunch, which I believe everyone had a great time at.  I have defiantly enjoyed every moment here at Texas A&M and would recommend this program to anyone interested in research!!

[ Home ]