Как стать автором
Обновить

Комментарии 45

А как выходить из режима скролла в вашей программе?

«Обморгаешься» — а разве так не удобней будет? Глаза — кнопки мышки, клики и драг-н-дроп удобней делать, имхо.
Человек моргает раз в несколько секунд, так что на моргание пологаться нельзя, разве что более длительное закрытие-открытие глаз, но там уже проблемы с потерей фокусировки начинаются. Так что работу с мышью врятли стоит переносить на другие девайсы.
Вы моргаете только одним глазом? Логично было сделать не какой-то квадратик, а обычный курсор и управление морганием левого или правого глаза.
Моргание одним глазом — это наоборот круто, так как чаще смазывается слизистая, глаза будут меньше уставать.
Захват движения вроде достаточно удобный (интересно, с ростом качества железа, можно ли будет позиционировать курсор точнее, чтобы не увеличивать интересующую область?), осталось поработать с типами взаимодействий. Я думаю, моргание как имитация левого и правого клика — самый удобный вариант.

Насчет скролла, я бы попробовал сделать так (особенно удобно для людей, кто не может двигать головой): человек принимает самое обычное положение головы (не знаю как другие люди, но я часто сижу неподвижно часами) и калибрует расстояние до краев монитора. И когда программа фиксирует, что человек смотрит за пределы монитора (и краем глаза видит происходящее на экране) — мы скроллим в нужную сторону с нужной скоростью (зависит от отклонения глаза от края монитора).
p.s. если отвернешься, логично что всё улетит фиг знает куда :D Поэтому, я бы отключал трекинг, если у тебя глаза закрыты больше двух секунд или около того. В общем, имея 2 глаза и разные скорости моргания — можно придумать несколько кодов управления.

Идея очень крутая, не только для инвалидов, но и я для суперленивых людей. Я думаю, такое управление глазами, с развитым и продуманным интерфейсом, помогло бы выйти на новый уровень играм или тренажерам. Всем же выгодно, когда у вас дома есть eye-tracker, можно массовые тепловые карты делать ;D

Самый удобный скроллинг для тех кот мало двигает головой — использовать координаты глаза (у устройств от Тобии такие данные доступны).
А моргание подходит для тех задач, где не нужно часто кликать по объектам. Например, для игры в шахматы моргание вполне подойдёт, а для набора текста — нет.
Вы меня не поняли: когда человек моргает, он делает это синхронно двумя глазами. А когда хочет «кликнуть» — закрывает только один раз. Неужели программно нельзя различить эти типы морганий?
Различить — запросто. Я лишь уточнил, что моргание как клик не для всего подходит. Но это, безусловно, один из методов для симуляции клика, которых вполне себе может быть применён.
Только нужно будет менять иногда местами левый и правый клики, а то левый глаз будет моргать раз в сто чаще правого.
Фильтровать естественное моргание придется. (я буду обновлять комментарии)
Выход из режима скролла — ещё раз посмотреть на кнопку выбора скролла или выбрать любой другой режим.

Про «обморгаешься» — честно говоря, смотрел на клипы, демонстрирующие работу разных коммерческих программ, и такой способ нажатия на кнопки мыши (фиксация взгляда) мне приглянулся больше всего. Я думаю, так сделали по следующим причинам:
  • Ложные срабатывания, если один из зрачков нечётко распознаётся
  • При подмаргивании требуется работа мимических мышц (в отличие от рефлекторного моргания). А эти мышцы при некоторых заболеваниях у человека могут не работать. А именно при таких заболеваниях система могла бы быть весьма полезной.
При подмаргивании требуется работа мимических мышц (в отличие от рефлекторного моргания). А эти мышцы при некоторых заболеваниях у человека могут не работать. А именно при таких заболеваниях система могла бы быть весьма полезной.


Да, для инвалидов можно использовать «фиксацию взгляда», а для тех кто хочет сделать новый и крутой интерфейс для всех — почему бы и нет?

Так или иначе, я думаю то, что вы описываете — проблема скорее техническая, чем принициальная.
Не надо ничего полностью заменять! Это нужно сделать как дополнение к основному курсору мыши. Моргаешь левым глазом, и курсор бегает за взглядом, моргаешь правым и можешь продолжать более точное движение мышкой. Кликать и скролить по прежнему мышкой.

Прежде чем навести курсор на что-то ты всегда его шевелишь, чтобы определить где он и потом из того места подводишь в нужную точку. Я работаю с двумя мониторами, и иногда вообще теряю курсор мыши. Особенно когда открыты графические программы с навороченным интерфейсом с кучей менюшек и кнопок.

Это так круто, что я теперь себя чувствую обделённым что этой функции нет прямо сейчас. Именно для работы. Не от лени двигать мышкой, а для ускорения рабочего процесса.
Мне давно хотелось узнать — с помощью такого устройства можно управлять компьютером быстрее, чем мышью? То есть перемещать курсор взглядом, а кнопки нажимать на клавиатуре? А к мышке вообще не тянуться.
Я понимаю, что пятно взгляда относительно велико, но ведь у него есть центр и этим центром можно попасть на относительно маленькие символы и иконки? Или нельзя? К примеру если я зажму Shift и левую кнопку мыши, но мышь двигать не буду, смогу ли я выделить взглядом слово написанное стандартным 14 шрифтом на стандартном 24 дюймовом мониторе при 1920*1080?
Я думаю, потеницально, погрешность ошибки у мыши выше, чем у человеческого глаза, поэтому при прочих равных условиях (мышь «немного старше» чем глазной интерфейс ;D), выиграет «глаз». Для эксперимента, попробуйте оббежать 4 точки на экране глазами и курсором. Кто выиграет в этой гонке?
Всё же управление мышью более точное, нежели с помощью «глазного интерфейса» — у последнего погрешность позиционирования намного больше.
Это сейчас, потому что захват позиции глаза не идеален. Первые мыши тоже были далеки от идеала и ввод команд с клавиатуры был куда предпочтительнее.

В любом случае, вы в 2 шага (быстрая прикидка взглядом и точный фокус) достигаете любой точки зрения. Как и с помощью мыши (редко попадаешь в нужный пиксель быстро, приходится еще выцеливатвь какие-то области), для которой нужно минимум 2 итерации фокусировки.

Убьет ли «ручной интерфейс» (когда мы руками машем в воздухе) мышь+клавиатуру? Сейчас сложно сказать, в ручном интерфейсе непонятно как решить проблему усталости рук. А тут нет никаких приниципальных сложностей, можно развивать. А потенциал чудовищен =)
Боюсь, что позиционирование глазом никогда не сможет достичь той же точности, что и мышью — глаза никогда не стоят на месте, а заодно человек никогда не смотрит не объекты абсолютно прямо, так что даже самая совершенная техника в идеальных условиях будет выдавать не совсем точный результат. Такова биологическая особенность глаз.
2020 год. «А ещё вы все знаете, что программы загружаются быстрее, если бегать взглядом по всему экрану!».
К сожалению, точность определения точки на экране, на которую направлен взгляд, довольно низкая. Приходится даже усреднять несколько последних значений координат, иначе бы курсор просто плясал бы на экране. Соответствующий код находится в файле smooth.cpp
На мой взгляд то что вы делаете это невероятно круто. По крайней мере, благодаря таким как вы, я не беспокоюсь что если где-то ближе к старости у меня, например, оторвётся тромб и я сгнию в собственной кровати овощем, даже не имея возможности разговаривать с близкими (ну почти не беспокоюсь).

Только вот управление глазами, имхо, не самое перспективное направление. Гораздо убедительнее выглядят системы, снимающие электро-магнитные колебания мозга.
В силу ряда причин мне нужно было сделать систему в течение месяца-двух. Поэтому на исследования электромагнитных колебаний мозга времени не было, взял то, что работает сегодня. Поэтому и код довольно грязный, написанный на коленке.
Ну, в общем-то главное что он работает, да и плюс — он открытый, так что если у кого-то будет необходимость, сможет запилить для себя. Плохо то, что он завязан под стороннюю железку. Было бы круто адаптировать приложение под стандартную веб-камеру.
Упомянутые опен-сорс программы — как раз для веб-камер. Есть миддл-варе программы которые могут общаться с несколькими ай-трекерами (их можно прикрутить к своему проекту, чтобы сделать прогу более-менее систамо-независимую), но Tobii REX в списке поддерживаемых устройств нет.
Гораздо убедительнее выглядят системы, снимающие электро-магнитные колебания мозга.

Не выглядят они убедительнее. Позиционирование курсора с помощью снятия ЭЭГ мозга не сделать.
Решения как обычно будет за гибридной системой: позиционирование курсора с помощью глаз, имитация нажатия кнопки с помощью ЭЭГ.
И всё же довольно перспективное. Чуть ли не все гиганты ИТ интересуются этой областью (для примера — в Face Tracking из Snapdragon SDK есть функция getGazePoint), так что эта штука вполне может появится в очередном Кинекте, как только технология и её использование будут проработаны в достаточной степени. Кстати, ай-трекинг целится не только в индустрию развлечений, но и в смартфоны — исследования в этой области сейчас развернулись во всю.
Вообще говоря, тромбоэмболия не так часто заканчивается «овощеобразным» состоянием, в котором голова работает, а остальное — нет. Неподвижность, скорее, является одним из факторов её возникновения, если не принимать специальных лекарств со своими побочными эффектами. А по заболеваниям нервной системы и некоторым другим дело вполне стоящее.
К сожалению, очки добавляют паразитные блики.

Очень странно что это мешает для Tobii REXX, ведь их T60 отлично работает с теми кто носит очки (по крайней мере, в закрытом помещении).

П: С.Михаил, вы молодец, что написали на Хабр. Жаль, что ETU-Driver не уменьшил объём работы.
Олег,
Жалею, что не успел поблагодарить Вас лично за консультации по тематике, за отзывчивость. То у вас праздники начались, то у нас вот. Ваш ETU-драйвер, действительно, с REXX'ом не заработал, а мне было быстрее написать свой код, чем хакерством заниматься. Жду ещё две железки: EyeX и ту что от TheEyeTribe, думаю, ещё будет о чём Вас порасспрашивать. Алгоритм сглаживания, который Вы мне порекомендовали, тоже не успел разобрать, так и оставил скользящее среднее. Успехов вам и ещё раз спасибо.
П.С. А очки сильные очень, -6 диоптрий, может из-за этого?
Спасибо!
Сейчас посмотрел видео — а ведь функциональная программа получилась! Я видел похожие, но их годами делали, а тут всего за 2 месяца.

Жду ещё две железки: EyeX и ту что от TheEyeTribe, думаю, ещё будет о чём Вас порасспрашивать

Замечательно! Трекер от TheEyeTribe и у нас ждут, как только будет, сразу буду писать плагин для ETU-драйвера, так что можно будет пользоваться :) Тем более, что у меня сейчас на гитхабе 2 тулза для его интеграции с браузером (один как Chrome-extension через плагин (пока) для браузеров — этот готовые страницы браузить, другой идёт как библиотека для разработки gaze-oriented страниц, через WebSocket данные получает). Думаю, такие штуки могут пригодится: браузить Инет глазами — замечательная вещь (сейчас один студент как раз работу делает на тему клавиатура+глаз для браузера).
очки сильные очень, -6 диоптрий, может из-за этого?

Может… а может это форма очков такая, что даёт очень неподходящий блик, тут трудно сказать однозначно.
Попробуйте разместить устройство снизу от пользователя под острым углом. Блики от очков должны отразиться вверх и меньше попадать в камеру. Если устройство размещено под прямым углом по отношению к плоскости очков, разумеется, будут сильные блики. По моему опыту, больше влияет не оптическая сила очков (у меня -13), а наличие/отсутствие антибликового покрытия.
А можете посоветовать производителя линз с антибликовым покрытием? Сейчас много всяких: Essilor, Carl Zeiss, Hoya, Nikon, Seiko. У вас какие?
Я использую GazePoint GP3 — $495 за устройство и ПО. Для управления устройством и получения данных используется удобный открытый текстовый протокол, работающий поверх TCP (соответственно, SDK не нужен). Это не версия для разработчиков, а массовая, без каких-либо ограничений на использование в конечных продкутах.
А есть ли у него готовый софт для замены мыши и клавиатуры, в том числе с кириллицей?
Если бы знал об устройстве с готовым софтом, способным заменить русскую клавиатуру и мышь за такие деньги, сам бы делать ничего не стал.
Кстати, Tobii REXX продавался за $295 (если не считать стоимость доставки)
Если же готового софта нет, то лично для меня писать для TCP сокетов — незнакомая область. Да и цена в полтора раза больше выходит.
А вы сами используете устройство для замены мыши или клавиатуры, или только для сбора статистики?
Просто здорово!
Если есть возможность распознавать моргание, то, вероятно, можно было бы использовать его для ускорения печати букв. Потому что в процессе ожидания, пока ползет полоска, пользователь не моргая смотрит на нее. Можно считать моргание досрочным подтверждением выбора буквы.
Попробуйте моргнуть столько раз, сколько букв в вашем сообщении. Уверяю вас, после этого вы поменяете своё мнение.
Когда полоска растёт, можно и моргнуть, полоска от этого расти не перестанет, просто замрёт на миг, так что в напряжении взгляд держать не обязательно.
Разумеется, я попробовал! Поэтому и не предлагаю моргать для имитации клика мышкой, а тем более моргать левым и правым глазом :-)
Достаточно неудобно, согласен. Но мне было еще мучительнее ждать окончание проползания полоски. Возможно, настройка скорости полоски избавила бы меня от желания выполнить какое-то действие для досрочного подтверждения действия.
Задержку нажатия на клавишу пришлось сделать из-за очень низкой точности определения направления взгляда. Если видишь, что полоска растёт не на той клавише, есть время это понять и отвести взгляд в сторону. Если точность новых приборов будет выше, можно задержку свести к минимуму, а ошибочные нажатия отменять Backspace'ом.
Да, понятно. Просто у разных людей разная скорость реакции. При одной и той же скорости полоски кто-то не успеет среагировать, в случае, если клавиша определена неверно, а кто-то, наоборот, будет мучиться, что приходится ждать.
Я вот это имел ввиду. И для последнего случая предложил один из вариантов решения. Возможно, не очень хороший — вам виднее.
В подобной клавиатуре собственного изготовления есть индикатор этой задержки и 2 кнопочки чтобы менять его.Очень нужные кнопочки, я скажу — на тестах студенты сокращали его до 250мс, получая 100 букв в минуту.
Спасибо, возьму на заметку. Это пока первый вариант, в котором нет даже звука при нажатии клавиши, курсор убогий, да и ещё куча недоработок по мелочи. Но уже можно работать.
А в перспективе можно сделать предсказание слов и индикацию последних набранных букв прямо в том месте, куда смотришь, как это сделано в Tobii Gaze Interaction.
Пока же меня больше всего заботят очки.
Звук обязателен — без него глаз часто «соскакивает» с кнопок не дождавшись клика. Про это и другое на эту тему моя коллега отличный диссер защитила, рекомендован к чтению для тех кто разрабатывает проги с печатанием текста глазами (правда, с тех пор появились новые наработки).
Вообще, функция скролла, просто великолепная. Было бы замечательно иметь возможность прокручивать страницы или исходники без использования полного функционала этой программы, т.е. что бы работало в фоне. Посмотрел на строчку какую — она автоматом центрируется. Ох, мечты.
У меня хорошая новость — если трекеры от TheEyeTribe за 100 евро окажутся достаточно точными и стабильными, то уже в следующем году сможете осуществить свою мечту за разумные деньги.
Update:

The EyeTribe ET-1000 уже оттестирован и признан вполне неплохим [1], но немножко сыроватым [2] продуктом.
[1] — точность в лабораторных условиях весьма неплоха — в сочетании с небольшим кручением головы можно легко попадать в элементы интерфейса Windows 7
[2] — API не доработано, но активно дорабатывается

Вчера залил ETU-Driver с модулем для этого устройства, ребята из нашей лаборатории уже тестируют его на Surface с Windows 8. Если получится, напишу сюда краткий обзор этого устройства.

П.С. Цена в 100 евро — это без налогов и доставки, вместе с ними будет около 150.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.