Wednesday, 20 March 2013

Opengazer for cerebral palsy

The son of one of my friends appears to have cerebral palsy. That means no motion control. Except for maybe his eyes. He's 10 and never was able to communicate.

For now, this is my plan:
Connect an eye mouse (opengazer) to dasher or something similar.

A Tobii device would be great, but costs $×n, so just for checking if my little friend can use it, it's definately overkill. Could be we could fund it in the future, if applicable.

For now, I got dasher to speak spanish via espeak :
  1. In one terminal, start "espeak -v es-la".
  2. In another, start "dasher --appstyle=direct"
  3. Focus on the first terminal (little seems to happen: dasher keeps grabbing focus)
  4. Start using dasher to make up words. Espeak will speak it when you hit a paragraph mark ¶  (technical details: espeak reads line by line).


Now, building opengazer (on linux mint 14) I ran into a few problems:

1 VXL libraries. Now, the docs suggest these MUST be installed from source. It kind of works anyway here.
Solution: apt-get install libvxl1.14 libvxl1-dev

2 Make errors
change PointTracker.h (thanks to http://ubuntuforums.org/showthread.php?t=2041502):
from:
class TrackingException: public exception {};
to
class TrackingException: public std::exception {};

3 Linking errors - change Makefile (thanks to https://github.com/opengazer/OpenGazer/issues/1):

# the object must come BEFORE linking
Originally the %.o rule is as below:
g++ -c $(CPPFLAGS) -o $@ `pkg-config cairomm-1.0 opencv gtkmm-2.4 --cflags` $(INCLUDES) $<
I had to change the order to make it look like:
g++ -c -o $@ $(INCLUDES) $<  `pkg-config cairomm-1.0 opencv gtkmm-2.4 --cflags` $(CPPFLAGS)

Also the opengazer rule was:
g++ $(CPPFLAGS) -o $@ `pkg-config cairomm-1.0 opencv gtkmm-2.4 --libs`  $(LINKER) $^
And I modified it to be:
g++ -o $@ $^ `pkg-config cairomm-1.0 opencv gtkmm-2.4 --libs`  $(LINKER) $(CPPFLAGS)

4 Change Makefile to be aware of the VXL libs:
from:
VXLDIR = /opt
to:
VXLDIR = /usr

# due to .h files loated in /usr/include/vxl/core/

----------
make
and it kind of works. "Kind of", because I can't hold my head entirely still :D

No comments:

Post a Comment