
Комментарии 7
ESP32 Super Mini,
Может ESP32-С3 Super Mini?
Идеологически, мне кажется проще, вместо создания железного устройства (который некому поддерживать, даже если здесь и сейчас его создадут за 10х прайс, починить его будет уже 100х) лучше сфокусироваться на решении проблемы программным способом (как минимум вам это явно доступно, а с помощью ИИ и подавно) и уже готовыми инструментами.
Отдал идею на изучение ИИ, забраковал, типа отраженный свет слабый, экраны не идеальные, будут потери сигнала и т.п.
Самый простой и эффективный - вебкамера + отражатели на голове (цветные блестки которые на одежду крепят) + экран (стена/потолок). Блестки могут быть не только разного цвета но и формы (звездочка, крест, квадрат, круг... лучше в форме каких-нибудь fiducial markers типа ArUco/AprilTag только их придется делать самому, когда как разной формы можно купить готовые). Крепить отражатели лучше на чем то типа заколок в волосах и сережках в ушах (с ними сидеть долго удобнее чем в шапочке), максимум приклеить крошечные на висках, лбу и может носу. Направленное освещение на голову дает четкие солнечные зайчики на экран, которые ловит вебкамера, дальше вопрос калибровки. Саму голову можно детектировать как отправную точку, не говоря о том что маркер может быть прямым а не отражателем (но позиционная точность тут будет заметно ниже чем угловая). Подчеркну, что речь идет об определении угловой дельты при наклоне головы, а не самого угла, так как положение самой головы точно получить сложнее.
Для OpenCL были библиотеки поддержки ArUco и тем более простых ярких ярких точек, несколько их плюс стена+потолок дадут четкий вектор в 3d. Веб камер так же может быть несколько, с разных ракурсов повышают точность распознавания но усложняют код (обязательно заложить автокалибровку, разместив метки на стенах и потолке) .
Еще момент, просто движение мыши напрямую завязать на движение головой неудобно. Это скорее эпизодический процесс, нужна команда - вот тут начинаем двигать, а потом заканчиваем... есть не только голос но и моргание к примеру (камерой это просто). Так же не нужно сбрасывать со счета устройство детектирования направления взгляда, команды от него могут быть аналогом кнопок, т.е. переключение режима - клики, захват мышкой,
p.s. почему идея с блестками (без маркера, просто точка) рабочая, можно найти в магазине фурнитуры для рукоделия миллионы разных стеклянных/пластиковых бусинок (крохотные от миллиметра) которые дают четкие отражения (чаще всего в небольшом пределе угола, не обязательно обратно в сторону светильника), это даже фичей считается. В темной комнате зайчики очень яркие, вопрос только в их количестве и калибровке (вот тут то цвета и понадобятся, они позволят различать несколько точек относительно их взаимного положения а дальше информацию берут из соседнего кадра и последней калибровки)
p.p.s. начать можно с простого - определение координаты самой головы с помощью вебкамеры, разместив на ней пару маркеров под разными углами (условная оригами-шапочка из бумаги с напечатанными маркерами, под которые при необходимости подложены картонки для жесткости, так как маркер должен быть ровным), грубая прикидка 4мегапиксельная камера даст точность порядка 10 пикселов на fullhd экране, т.е. курсор будет дрожать, но если точность привязать к скорости или ко времени, то это решаемо, т.е. начинаем движение с невысокой точностью, с каждой долей секунды скорость движения курсора уменьшается а точность повышается, т.е. настроить это замедление под типовую работу пользователя таким образом что бы было удобно и не пришлось курсором долго вокруг цели крутить
Чинить тут нечего, все компоненты копеечные и заказываются с Али, корпус печатается на 3D принтере. И это несравнимо проще, чем решать задачу трекинга головы через камеру.
Спасибо за поддержку и участие. Есть более интересная идея. Когда я был ещё ребёнком, у современных камер, тогда ещё пленочных, была проблема красных глаз. Технический специалист по-любому знает, что это такое. Даже простая камера в ночном режиме будет глаза прям сильно выделять. Никакие очки не позволят спрятать зрачки от камеры. Относительно простым кодом мы можем посчитать направление взгляда зрачка на экран. Решение очень простое. Точность очень высокая. К тому же очки, как у меня, они совершенно не будут мешать. Простая веб-камера не очень помогает, на самом деле. У меня есть приложение на C-Sharp. Просто клики определяет. По морганию глаз. Я использовал библиотеку Computer Vision. Ну, меня этот результат не очень устраивал. Можно было добиться большего, но я не стал. Ниже правильно вам ответили. Стоимость этого всего 1000 рублей. Заказывал на озоне. За две тысячи рублей мне собрали. Квалификации здесь достаточно-квалификации школьника с прямыми руками.
У меня была 3d камера от intel (usb3 это скоростная вебка с 240 инфракрасным режимом и железом для построения карты глубины), с ее sdk шла тьма утилиток, в т.ч. определения взгляда и т.п., Так вот, качество было отвратительное. Проблема в том что на основе именно изображения детектировать положение можно только приблизительно.
Что бы нивелировать эти проблемы, нужно использовать специализированные маркеры и софт к ним, которые на порядок повышают качество распознования без затрат процессора, тот же ArUco (это упрощенный qr код), его смартфоны на скорости в 10-30fps детектируют, если он будет большой (десяток другой сантиметров) то управление головой станет реальностью а не пыткой.
Почему я выше предложил детектировать не маркеры на голове а отражения от блесток, в зависимости от расстояния от блестки до стены, даже малейшее движение головой вызовет очень далекое перемещение зайчика, и вот на основе этого можно ловить дельту очень точно, сотые градусов (камерой по ArUco - десятые, а просто детектить изображения - уже просто единицы градусов угла)
Мышь на голову