Чуть ли не в каждом втором фантастическом фильме появляется любопытный девайс, который всем своим видом должен напоминать зрителю о каких-то «очень высоких», технологиях и дело происходит в далёком будущем: Обливион, Аватар, Апгрейд и т. д. — речь идёт о так называемом «мультитач-столе».
Несмотря на такое позиционирование, подобное устройство вполне может быть создано (и создаётся) в настоящее время, не является чем-то новым, и даже мало того, это не обязательно может быть горизонтальная поверхность, — это может быть, по сути, любая поверхность, даже вертикальная.
Рассмотрим, какими путями этого можно достичь...
Данное обозрение не претендует на исключительную полноту и завершённость, так как наверняка существуют и неизвестные мне способы — если вам есть что добавить по этому поводу, и вы знаете какие-то альтернативные варианты, будет интересно почитать в комментариях!
Но, для начала, определимся с тем, какой список задач необходимо решить:
- отобразить визуальную информацию на плоскость стола,
- отследить манипуляции пальцев пользователя,
- произвести манипуляции с изображением (например, вывести на нём какие-то подсказки, спецэффекты и т. д.).
Несколько отвлекаясь от темы, можно отметить, что особо интерес к подобным устройствам наблюдался в начале 2010-х годов, в связи с недавним (на тот момент) выходом смартфона Apple iPhone, а также очередной версии мультитач-стола Microsoft Surface.
В данный момент, интерес к подобным устройствам несколько подуспокоился, но, тем не менее, некоторые отмечают, что подобное устройство может быть весьма любопытным для проведения досуга в компании друзей и осуществления сеанса одновременной игры — в те или иные компьютерные игры.
Побочным эффектом такого «успокоения интереса» является то, что вы очень быстро обнаружите, если заинтересуетесь этой темой — что многие ссылки и мануалы тех лет, по сборке подобных устройств перестали действовать на данный момент или не поддерживаются/не в должной мере поддерживаются авторами.
Тем не менее, некоторая информация имеется, и, думается, будет любопытной для тех, кому эта тема интересна…
Сразу следует отметить, что подобное устройство в классическом исполнении является условно недешёвым (но есть способ и проще, о нём тоже будет ниже), так как требует для своей работы того или иного способа вывода изображения — в одной версии устройства для этого используется короткофокусный видеопроектор (то есть, проектор, который может создавать условно большое изображение, находясь на маленьком расстоянии от этого изображения); в другой же версии — большой ЖК телевизор.
Рассмотрим первый вариант.
В классической версии подобное устройство выполняется в виде закрытого со всех сторон стола (из-за чего он скорее воспринимается как тумба), высотой примерно в 1 м, под которым, собственно, и скрывается вся начинка (кликабельно):
В качестве такой начинки выступают основные элементы (про питание и прочий «обвес» умалчиваем):
- видеопроектор: который служит для проецирования изображения на столешницу,
- зеркало для отражения луча проектора — в сторону столешницы,
- сама столешница: в качестве которой выступает лист из оргстекла, заклеенный, с одной стороны, с применением силиконовых клеев (так как имеют хорошую адгезию к стеклу) полупрозрачной калькой или «плёнкой обратной проекции», которая довольно широко используется в рекламной индустрии — в дальнейшем на эту плёнку будет проецироваться изображение,
- инфракрасные светодиоды: светят прямо в торец/или торцы (если стол большой и надо создать, скажем так, «уверенное покрытие» светом всей площади столешницы.
Здесь светодиоды и столешница служат для целей практического использования эффекта «полного внутреннего отражения», который мы рассматривали ранее: свет от светодиодов, которые светят прямо в торец стекла — свободно распространяется в толще стекла, многократно переотражаясь от всех поверхностей.
Но стоит только коснуться пальцем такой поверхности — и эта точка касания становится местом выхода света из стекла наружу, что приводит к освещению кончика пальца (почему так получается, более подробно можно почитать по ссылке выше).
Таким образом, если посмотреть на столешницу снизу, то мы бы увидели ярко освещённые кончики пальцев и более тусклые контуры руки.
Однако, нам этого увидеть не получится, так как используются инфракрасные светодиоды.
Кстати, а почему именно инфракрасные? Ведь для реализации такого эффекта подойдёт любой диапазон видимого света!
Такое решение было выбрано не случайно, потому что позволяет «разделить частоты» — для обнаружения касаний используется инфракрасный диапазон, в то время как для наблюдения визуальной информации глазами — видимый диапазон света, и они не забивают друг друга, позволяя выполнять свои возложенные роли.
И, по сути, вся дальнейшая обработка сводится к анализу количества и расположения этих освещённых точек.
Для этого используется видеокамера, в качестве которой сгодится любая веб-камера, подключённая к компьютеру, которая для успешного осуществления цели специально модифицируется: у неё удаляется инфракрасный фильтр (выглядит как красноватая пластинка) — такими фильтрами снабжают камеры, чтобы камера могла выдавать картинку, близкую к той, которую воспринимает человеческий глаз.
Так как если не поставить такой фильтр, то картинка в тёмное время суток будет тоже яркой, что будет существенно отличаться от человеческого восприятия действительности.
Тем не менее, в случае построения подобного мультитач-стола, этот фильтр будет лишним, так как необходимо улавливать именно инфракрасный диапазон, то есть видеть освещённые кончики пальцев.
Из всего этого описания сразу становится понятно, что необходимо ещё и какое-то ПО для проведения подобного анализа и не только.
Как я уже говорил, на данный момент, в связи с давностью лет, многие ресурсы, посвящённые этой теме «приказали долго жить» и/или переехали на новые места.
Тем не менее, на мой взгляд, есть весьма интересный ресурс, на котором собрана интегральная информация по этому вопросу, а именно по программному обеспечению, необходимому для осуществления каждого этапа такой обработки.
Как можно видеть, на этом ресурсе собраны программные решения, реализующие протокол tuio, подразумевающего взаимодействие двух частей приложения, где одна часть служит для получения данных с камеры, а другая — для вывода изображения на столешницу:
Картинка: tuio.org
Эта реализация протокола подразумевает использование транспорта udp, с передачей избыточной информации на случай потери пакетов.
Если мы обратимся к списку ПО для отслеживания касаний, то увидим достаточно большое количество разных реализаций, где одной из самых старых реализаций является первая — reacTIVision:
Картинка: tuio.org
Этот фреймворк изначально был предназначен для распознавания специальных символов, которые должны были наноситься на передвигаемые объекты:
Картинка: modin.yuri.at
О чём, собственно, и говорится в его описании алгоритма работы:
Картинка: tuio.org
Выше приведён только краткий пример таких символов, однако их полный список достаточно большой.
А вот так выглядит, например, использование такой системы кодировки символами и мультитач-стола, для диджеинга в реальном времени (под этим первым видео, на youtube есть описание работы системы для целей диджеинга, так что, кому интересно, можете ознакомиться):
Тем не менее, позже был добавлен и функционал по распознаванию пальцев.
Фреймворк является кроссплатформенным и доступен под множество операционных систем; на картинке ниже можно видеть справа ещё и вариации клиентов (где общение между распознающим приложением и клиентским приложением осуществляется с помощью отправки сообщения на 3333 udp-порт, а уже данные, полученные клиентским приложением, могут быть использованы для соответствующей модификации и вывода изображения — например, чтобы игра как-то отреагировала на действия пользователя):
Картинка: tuio.org
Там же есть не сильно большой, но всё-таки форум, где можно задать вопросы (что важно).
Подытоживая этот вариант реализации, можно отметить, что несмотря на то, что этот вариант требует использования видеопроектора, в последнее время появившееся большое количество недорогих китайских видеопроекторов делает этот проект вполне привлекательным для реализации.
Что же касается альтернативной реализации, без использования видеопроектора, то любопытный вариант её, на базе ЖК телевизора есть вот здесь.
В остальном, всё то же самое — лист оргстекла, подсветка с торца, считывание камерой…
Однако, как я уже говорил, ввиду давности лет, большая часть ресурсов уже не работает, и информацию можно использовать разве что в общеознакомительных целях, чтобы «почерпнуть концепцию» и реализовать нечто своё.
Выше я уже говорил, что существует как минимум ещё один интересный способ для реализации дешёвого и, по сравнению с приведённым выше вариантом, — гораздо более плоского варианта мультитача.
Этот способ основан также на использовании массива инфракрасных светодиодов, расположенных в виде линейки, только они уже излучают свет не в торец некоего стекла, а располагаются прямо над экраном: массив располагается с одной стороны экрана, а напротив него, с другой стороны экрана, располагается оптический датчик (CCD sensor), вынутый из старого планшетного сканера бумаг — он содержит 2700 фотоэлементов, расположенных на участке в 20 см.
Теперь, если поставить руку между светодиодами и фотоприёмниками, и поочерёдно включать светодиоды, считывая после этого данные с фотоэлементов, то можно обнаружить, что какие-то из фотоэлементов перекрываются пальцем(ми).
Методом измерения длин сторон треугольников, то есть, триангуляцией, можно более-менее точно определить координаты пальца(ев).
Точность определения координат зависит от количества фотоэлементов и количества светодиодов.
В рассматриваемом проекте такая линейка фотоэлементов от сканера и 24 инфракрасных светодиода позволили достичь вполне приемлемой точности определения координат, для рабочей поверхности в 740х380 мм (в видео ниже показан ещё старый вариант, с 16 ИК-светодиодами):
Все остальные подробности проекта, а также его файлы, желающие могут найти здесь.
Казалось бы, всё? А вот и нет, есть ещё, как минимум один способ для реализации такого стола: использование лазерной линии.
Но тут надо сразу оговориться, что далее речь пойдёт не совсем о столе, а скорее, о способе создания на столе «мультитач-областей».
Дело здесь вот в чём: в своё время была (и сейчас довольно много на али, по ключевым словам projection keyboard) довольно известная (про неё есть даже отдельная статья на Вики) проекционная клавиатура, где небольшое устройство ставилось на стол и проецировало лазерную клавиатуру прямо на поверхность стола, одновременно отслеживая положение пальцев и регистрируя «нажатия» на кнопки:
Картинка: FRW Office Electronics Store Store
Вашему покорному слуге тоже доводилось пользоваться такой, и, на удивление, отслеживание нажатий было очень точным: можно было, не напрягаясь, печатать с большой скоростью (почти без опечаток!) точно так же, как и на обычной физической клавиатуре!
Причём, что любопытно, её можно было подключить по bluetooth к смартфону или планшету, и быстро набирать сообщения.
Ощущения довольно интересные, но с другой стороны немножко странные, потому что, как оказалось, «долбить» пальцами по столешнице не слишком приятно — отбиваются кончики пальцев, и мы обычно с этим не сталкиваемся, когда взаимодействуем со стандартными клавиатурами, так как у нас обычно клавиши мягко пружинят под пальцами.
Как вариант, можно постелить на стол небольшой мягкий коврик, однако я тогда об этом не подумал, честно скажу :-)
После долгих поисков мне удалось обнаружить проект, который, хоть и не может похвастаться такой же миниатюрностью, как оригинальная проекционная клавиатура, но, всё же, повторяет её функционал.
Итак, для начала посмотрим на картинку ниже, так как по ней становится хорошо понятен принцип действия:
Картинка: hxy513696765
Как можно видеть, в нём также используется видоизменённая веб-камера, которая может обнаруживать инфракрасный диапазон излучения, в качестве которого выступает лазер инфракрасного диапазона, проецирующий линию параллельно поверхности стола, на небольшой высоте, прямо над ним:
Картинка: hxy513696765
Ещё один лазер служит для проецирования видимой красной клавиатуры на стол, а сверху, над всем этим наблюдает веб-камера:
Картинка: hxy513696765
Картинка: hxy513696765
Когда пальцы человека пересекают лазерную линию, с включённой видимостью инфракрасного диапазона это выглядит вот так:
Картинка: hxy513696765
Как можно видеть, кончики пальцев ярко освещены.
Для анализа изображения с камеры используется библиотека компьютерного зрения OpenCV.
При желании повторить проект, все исходные файлы проекта и сопутствующие описания вы можете найти на github.
Проект достаточно старый, относится примерно к середине 2010-х годов, и в наше время вполне можно попробовать реализовать подобное устройство, только в более миниатюрном варианте, приближенном к оригиналу по размерам (кстати говоря, а как бы вы это реализовали?).
И, пока вы над этим думаете, вот вам небольшая информация для затравки: кое-кто уже реализовал этот проект, в современной итерации, и пытается его продавать аж за 799$ (О_о) — правда там внутри ещё встроен и полноцветный проектор, что позволяет превратить любую плоскую поверхность в тачскрин:
Итак, подытоживая этот рассказ, можно сказать, что несмотря на кажущуюся футуристичность, мультитач-стол не является неким недостижимым девайсом из будущего, а вполне может быть реализован в самом обыденном настоящем, и, кроме того, как показывает вариант современной итерации с проектором — энтузиасты-разработчики ещё не забросили эту идею и пытаются исследовать с разных сторон…
Причём и стол не обязательно должен быть плоским — кто сказал, что гнутый стол невозможен? :-)
© 2024 ООО «МТ ФИНАНС»
Автор: DAN_SEA