Терминология: кальки с английского айтрекер / гейз-трекер звучат не очень, но перевод «устройство для отслеживания движений глаз» и «устройство для отслеживания взгляда» очень громоздок. Не уверен, что есть какая-то более удобная устоявшаяся терминология в русском языке – дайте знать если ошибаюсь
В последние годы Kinect (конечности, тело в целом), Siri (голос), и LeapMotion (пальцы) показали, что бесконтактное управление и ввод данных/текста может оказаться весьма удобным и интуитивным для определённых задач. Но до недавнего времени о возможности использования взгляда для таких же задач знали немногие. И основных причин было две: а) все устройства были достаточно дорогими (тысячи и десятки тысяч евро/долларов), б) а точность определения направления взгляда откровенно хромала. И если точность в топ–продуктах уже довольно-таки высока (около половины градуса – всё ещё требует доработки, хотя и никогда не выйдет на один уровень с точность позиционирования курсора мыши из-за биологической особенности глаза), то цена в нестарый автомобиль делало эти устройства весьма нишевыми: рынок был поделён на маркетинговский (юзабилити-исследования, здесь на Хабре были статьи на эту тему), академический (разносторонние исследования в университетах), медицинский (исследования пациентов), и «accessibility» (использование ай-трекеров людьми с ограниченными способностями как средство управления).
И вот несколько лет назад группа Ph.D. студентов из Копенгагенского Технического Университета задалась целью расширить нишу «accessibility» на любого пользователя вычислительных устройств. Их первый ай-трекер был бесплатной программой (ITU GazeTracker), которая вычисляла направление взгляда с видео-потока обычной веб-камеры; правда, надо было самому ставить инфракрасный LED, или покупать камеры с таковым (выбор был очень скромен). Программа работала, хотя точность была приемлемой не для всех и только с случае высокой неподвижности (использовалась некоторыми парализованными в Дании), впрочем, это касалось всех бесплатных/опен-сорс ай-трекеров т.к. обычные камеры с самодельной подсветкой были их главным узким местом.
Создатели ITU GazeTracker (кроме самого левого) и основатели The EyeTribe
Однако на этом Javier San Agustin Martin Tall и Henrik Skovsgaard останавливаться не стали, и в соавторстве с Sune Alstrup Johansen создали стартап The EyeTribe который получил более $3М инвестиций (в том числе и от Интел). Цель стартапа – создать доступный по цене продукт по качеству приближённый к тем что продаются по $20.000, а именно – за $99. Открыв предзаказ в сентябре и разослав первую партию устройств в декабре-январе, разработчики заявили что следующая партия будет готова к концу марта, а вообще от желающих отбоя нет.
ET-1000 от The EyeTribe
Тут надо отметить что доминирующие в производстве ай-трекеров компании, типа Tobii Technologies и SensoMotoric Instruments к тому времени уже почувствовали куда дует ветер: например, Tobii Technologies года два назад выпустила Tobii REX «исключительно для девелоперов» (т.е. с ним запрещено проводить исследования или использовать в бизнесе) за $1000. Но, видимо, продукт остался не очень востребованным и был закрыт а остатки продаются за треть цены. Сейчас та же компания, спохватившись, пытается придержать резкий взлёт The EyeTribe усиленно разрабатывая Tobii EyeX за $95/€70 (с обещанием выслать до конца этого месяца), а заодно пробуя себя в новом качестве патентного тролля. Скорее всего, лицензия останется той же что и у Tobii REX – зачем менять, если с богатых западных университетов можно получать такие хорошие деньги…
Итак, месяц назад было получено вот это:
ET-1000
Очень маленькое – всего 20 x 2 x 2 см, меньше чем подобные устройства других производителей. В коробке есть ещё маленький трипод и весьма жёсткий и толстый USB 3.0 кабель. Кстати, нужен именно USB 3.0, на второй версии работать не будет. Больше ничего, но с официального сайта купившим можно скачать инсталляционный софт с сервером и SDK. И тоже больше ничего, т.е. никаких готовых программ по управлению компьютером нет (есть некоторые демки на Гитхабе, но это лишь как туториал для разработчиков), лишь в GUI версии сервера есть возможность привязать курсор к детектируемой точке взгляда. Разработчики пишут, что создание таких программ оставляют другим, а сами занимаются исключительно хардом и софтом для определения точки взгляда. Я один из них (из других), и доля пиара чуть ниже.
Тестирование данного устройства (работает на Win7+, обещана поддержка Andoid, Mac и Linux) оказало исключительно позитивное впечатление – я ожидал меньшего от того что стоит как одна сотая Tobii X2-60. После калибровки на 9 точках (это не так удобно как у Tobii с 5-ю точками, но меньше пока невозможно) точность была около 1 градуса (40–50 пикселей – немного хуже чем у топ–брендов), но с небольшой корректировкой движением головы весьма нетрудно было попасть в кнопки окна «закрыть/свернуть» в Win7/8. Долго я не тестировал, но за те 3–4 минуты точность не ухудшалась, глаза и зрачок почти всё время оставались детектируемы. В другом месте с другим освещением глаза иногда «терялись» на короткое время, но время восстановления было коротким (навскидку, 100–200 мс). В общем, это весьма достойный результат за свои деньги, и на мой взгляд по точности и надёжности лишь немногим хуже продуктов Tobii и очень близок к тем продуктам SMI с которыми мне довелось работать. Формального тестирования не точность пока не проводилось, возможно, это тема для следующей статьи.
По 6 инфракрасных LEDa с каждой стороны
Сейчас об SDK. Оно, как и сервер данных, пока весьма сырое (не вся заявленная функциональность работает), но активно разрабатывается (в начале февраля версия 9.20, в конце – 9.27). Процесс взаимодействия происходит через сокет и выглядит так:
0. Запускается ТЕТ сервер (сокращение от The EyeTribe).
1. клиент подключается к 127.0.0.1:6555/tcp
2. клиент шлёт запросы в формате JSON, клиент отвечает с таком же формате. Содержание пакетов расписано здесь.
3. кроме того, клиент что 3 секунды шлёт «heatbeat» пакет – мол, я тут, живой (зачем это для TCP соединения – для меня загадка).
4. калибровочные точки клиент рисует сам, лишь уведомляя сервер когда надо начинать и заканчивать обрабатывать данные для составления калибровочный матрицы.
5. в режиме push клиент получает точки взгляда без запросов, 30 точек в секунду (есть ещё режим 60 Hz, но я не проверял пока).
5а. каждая точка содержит:
– координаты точки взгляда: усреднённые и для каждого глаза отдельно.
– координаты точки взгляда после сглаживания каким-то low-pass фильтром: усреднённые и для каждого глаза отдельно.
– размер зрачка: для каждого глаза отдельно (пока не знаю, какие единицы измерения используются).
– координаты зрачков в поле зрения камеры.
– флаг фиксации
– код состояния сервера.
На Гитхабе уже ест некоторое количество кода для разработчиков на С++ и С# чтобы не надо было, как мне, писать всё с нуля. Впрочем, есть вероятность, что формат пакетов и типы данных в будущем будут немного изменяться, делая тем самым старые программы под это устройство несовместимыми с новыми версиями сервера. Например, мне пришлось выяснить, что в официальном описании пакетов по ссылке выше было две неточности в типах данных, а некоторые пакеты могут содержать значения которые там не описаны,
На этом можно было бы пожелать удачных разработок и освоения новых рынков, но в завершение хочу поделиться одной проблемой. Она состоит в том, что не существует какого–то единого драйвера или интерфейса под ай-трекеры, которые делали бы их такими же совместимыми между собой устройствами, как, например, компьютерные мыши. Т.е. один раз разработав софт под определённый ай-трекер, к нему нельзя будет подключить другой, придётся писать новый модуль. Лет 12 назад я озаботился этим вопросом и написал некую платформу (middleware) с единым интерфейсом для клиентской части, С тех пор, как только ко мне в руки попадает очередной ай-трекер, я пишу под него отдельный модуль (DLL), и весь мой софт разработанный для использование взгляда поверх этой платформы сразу же начинает работать с этим устройством без лишних телодвижений. Естественно, что ETU-Driver (так я его назвал) уже поддерживает и ЕТ-1000 (в ближайших планах – сравнение точности с Tobii T60 и X2-60). Но за годы использования выявились его недостатки: в первую очередь, жёсткий формат пересылаемых данных и реализация в виде COM. Была уже попытка переписать всё с начала, но не покидает ощущение, что реализация должна быть какая–то другая, возможно, более гибкая и платформо-независимая. Если у кого будут какие соображения по поводу как надо правильно реализовать устройство-независимую платформу под такие устройства – большая просьба поделиться.
Автор: lexasss