BeYourOwnDoctor
OLPC – GsoC 2008
Project: Be Your Own Doctor (based on data from Health hardware)
Abstract
Until today there is not a widely used method for the computer to interact with the user based on her/his emotions. While the cost of electronics components decreases, new devices for getting and using human biological signals are developed.
Be Your Own Doctor (BYOD) will make it easy for children to get acquainted with their bodies using data from TeleHealth Hardware of OLPC platform (ECG, GSR, Pulse) and present them in a funny and children-friendly user interface.
Children will be able to have a better understanding of their body functions and explore parameters like their heart rate, galvanic skin response (the sweat in their hands -a clue for anxiety), breath rate while doing different activities.
Additionally, prior to writing BYOD itself, I will write and implement the software that will get the data from the BioSignals devices (if there is not such a software until time of developing). I have already developed a similar hardware for my BSc. thesis. In any case it can be used only sampled data from electronic sources to simulate the bio signal data!
You can see a similar work here.
About me
My name is Ioannis Valasakis (tungolcildATgmailDOTcom) and I am from Greece. Right now I am completing my BSc. (Electronics Engineering and Computer Systems - 4th year) thesis which is about a Portable Biomedical Electronics Device. I have developed a battery-powered wireless ECG with physical signal probes that gets physical data (like 3-lead ECG, GSR, Heart Pulse) from the user/patient using embedded AVR processors.
The data are transmitted wirelessly (or serially via RS232) to a central station for further processing. It's low-level code is in C using GCC AVR's compiler, Python on the fronted and also Qt for the GUI in the OS.
Work Experience
2007-2008 (1 year) University of Athens - Media Department Programming - Artistic Supervision I was the core developer (with another one assistant) for a game created in Adobe's Flash for children with special needs. The programming was done in ActionScript 2.0 and the animation/interface in Flash.
2004-2006 (2.5 years - reference letter available if requested) Intracom Defense Electronics Electronics Engineer I started from internship and they offered me to continue because of my merit. I was in the development team on a state-of-the art military communication system, called WISPR.
In the past I was as a project leader in GNU's Greek Translation Team, worked on various open source projects, using Linux and involved in the community since 2000 and compiling a Knoppix clone for Electronics Engineering design.
I know how to speak C (also for embedded AVR processors), Python (also PyGame), Adobe's Flash. I have also some limited experience using Qt framework and C++. I use Linux and Mac, editors like VI or Emacs, Eclipse. I know shell programming and have been developing personal projects like my Remote Home Automation Project which controlled any electronic device by simply sendind a short message (SMS) to a mobile phone in the home base!
As for human languages I speak and write in English, German and Greek (mother language).
Proposal
Affective computing is a modern term which relates, arises or is influenced by emotional phenomena. Emotion is fundamental to human experience and interaction but technology has in great extend ignored it. As a result frustrating user experience is accounted (affective computing @ mit). It's best use -in my personal opinion- is in making people understand their personal health matters and making computer more emotionally-intelligent. Because of OLPC, my hope is that many children will benefit from this approach -and especially children that don't have much experience with technology.
Based on the concept of affective computing, BYOD will help children better understand how their bodies and the associated biological signals work. The software will get data from the TeleHealth Hardware devices (ECG, GSR, Pulse), process and present them in a funny and children-friendly user interface. If there is not such a code for getting the data from the embedding device I can implement such a software in C or Python programming language (I have the experience to complete this, in a very short time).
As there is nothing similar for wide use today (only some software but often poor written or with limited capability because of their use as research tools) I believe that it will have a great benefit for the community in general and for children especially.
Also, it will be a stimulation for more open source projects in OLPC, concerning health awareness, physical data monitoring and/or game development, which will help children understand even better their bodies. An example is a space game where the children by lowering their heart rate could get more points and fewer enemies. Or a Pac-Man clone, in which less ghosts are chasing you while you feel calm, e.t.c.
You can see a similar project with BYOD here, although Vadim Gerasimov is utilizing a much simpler approach for showing purposes. My plans are more extended.
Implementation
The hardware I have developed for my final thesis is based on Atmel's AVR line of micro controllers, ATMega128 an instrumentation amplifier by Texas Instruments and a very fast Analog to Digital Converter by TI also. You can see the basic idea schematic here:
Programming language of choice for the data acquirement will be either C or Python via a digital data stream through the serial link. I will get the data via XO 's serial debugging port (RS232) without hardware flow control. The software on the XO side will poll the serial line to see if data are available (control bit set). If the control bit is set it will start to read data from the ADC on the health board. If we want to stop data reading the XO will reset the control bit so the conversion will stop.
The received data available on XO could be plot using a simple plotting routine, or processed and analyzed to display heart beat rate and children's feeling state. Heart rate is determined with a QRS detection algorithm [1] [2]
The heart rate and other variables will be displayed in real time in an animated drawing (like a child, a dog, etc). For this part I will use the PyGTK toolkit in the Sugar implementation.
I have developed two very simple GUI applications using PyGTK in the Sugar environment just to test that everything works as expected! I am also aware of Tubes feature which will be great in data communication between more than one children modules, so they can interact with each other! Although, I have not mastered this one, not in great extend!
Safety Concerns
Every country in the world has different safety electrical regulations for medical devices. I have tried to make my medical board as unique as possible. These parameters are:
- Hazards due to direct current
- Hazards associated with the mains alternating current frequency
The solution to these problems is the use of high-impedance amplifier in the input stages of the ECG signals, the use of amplifier with a very high CMRR (Common Mode Rejection Ratio - about 100db). Also, the program will be designed to recognize when the laptop operates on battery and will permit it's use only at this time!
As of the electrodes to be used, these are the self-adhesive type applied with gel. These don't permit direct metal contact with the patient.
Another point which is very important is the frequency response. The medical hardware is designed to reduce 50 Hz artifacts, muscle artifacts (25-1000 Hz) and low-frequency base-line drift. For example the AHA specifications for direct ECG recorders state that the amplitude of response should remain substantially flat within 0.5 dB between 0.14 Hz and 50 Hz and must not decay below -3 dB of the unfiltered response at the extremes of 0.05 Hz and 100 Hz. A similar filter is designed with these specifications.
Deliverables - Timeplane
- Final software in appropriate form (PyGTK for the GUI and C/Python for the library)
- Code for data acquisition from health hardware or a sample data suite for testing purposes (C/Python)
Based on my experience in industry I believe I can complete this project in the specified time limit (always with the help of a mentor)! That is about two months and a half...:) Of course this doesn't mean that I will stop the development. I believe this would be a great stimulus for my further OLPC project involvement!
Conclusions
Google's program is a very helpful program for the whole community. It helps students familiarize with the concepts of open source software and more importantly with team work.useful software for children. Students also gain knowledge about how a real program works, it's time limits, e.t.c. I hope that with my great enthusiasm and knowledge about the specific topics of Medical Devices, Open Source Programming and Children Gaming I will offer to the children around the world! That's also my hope!