[09:30] Okay. I've been wondering about this for a while but I think it's finally time to start looking into what options or components I need for eye tracking. I feel that, even if I don't obtain a full TyMist solution, eye tracking would speed up / streamline my PC work, just like #Tetent [gd0090].
The best solution would be one that I can use to detect the assumed focal point of the user. The closer something is, the smaller the angle is (if 90 degrees is the eye looking straight ahead). I doubt I'd get that accuracy, but I also don't think I need it as long as the screen focus is user adjustable.
Lets see if I can not invent here. For starters, I know of the Tobi 5 eye tracker which is a Wii-looking bar that's too large for this application (as well as seemingly incompatible with my portable monitor #Teti [gd0022] setup). I also know prices for these kinds of things are usually >£200 and have mentally set pricing expectations accordingly.
So the first option was looking promising when I was looking in the docs, until I found the price of the device:
There weren't any hardware solutions after the first one, so I'll have to invent here. I just watched a video of what happened when Target tried to outsource a software solution (and now they do 70% inhouse, according to a comment) so inventing here might not be so bad.
It seems that the main thing I need is an infrared camera. Well most cameras can detect infrared (and thus actually require a filter for them), so I have the 330fps camera I planned to use for the #SecSavr Sublime [gd0036] in the back of my mind, but I first wanted to see if I could use a mouse sensor camera. I hopefully don't need a great deal of resolution for tracking the eye, and those sensors are much faster and cheaper. They're also small so, along with the low price, I could have more than 1 sensor per eye for increased accuracy / reliability.
So I the watched the above video. It seems that the sensors are 40x40px and those high mouse DPIs are a result of interpolation. Is that enough to detect an eye? Could I even get the raw data off fast enough?
Well there's this paper https://www.hindawi.com/journals/js/2019/3931713/ about using optical mouse sensors for eye tracking so there's probably some promise in there.
WOAH! It does 1080p 120fps?! That's a new one! The version I had originally found prior only did 60fps at that resolution. Anyway, for this application I'm only interested in the 330fps options.
I also got an idea to create a custom lens that cuts the image sensing area in half so that something like dual 320x320px images of the eye can be captured with a single sensor. That sounds like a solid plan; better than wasting free data by capturing the surrounding skin or something. Wait... couldn't I use dual images for triangulation? 😏
The original plan was to have the sensor and illumination take the same path as the displays, but I don't think there would be space in the focal plane for that (oh and I'd lose about 50% of the light just to illuminate and another 50% on the capture, due to the losses from the lenses and beamsplitter) so I thought I'd made the optics holder more useful by integrating the eye tracker gear in there.
I can worry about converting the data into eye position at a later time. Right now, I just need to avoid Garbage In Garbage Out.
[12:50] Here are more up-to-date renders, including the lenses and the 20mm diameter beams that hold them and house the eye trackers:
Potentially useful research links
- Near eye detection using a mouse sensor: https://www.hindawi.com/journals/js/2019/3931713/
- Open source project for VR headset eye tracking: https://docs.eyetrackvr.dev/getting_started/intro
- Detecting eye focus from reflections: https://www.cs.unc.edu/~cpk/data/papers/purkinje-tracker.pdf