• Leap Motion - как его настроить для работы. Обзор Leap Motion: управление компьютером взмахом руки Настройка leap motion для игр

    Я помню, как в прошлом году увидел и не поверил, что это не прототип, а вполне завершенный продукт, релиз которого состоится в течение полугода. Как-то уж слишком фантастично выглядели показанные разработчиком картины, наталкивая на мысли о киноленте «Особое мнение». Но чуда не произошло, и вначале дата релиза была перенесена на , а потом . Но главное, как говорится, результат, а он весьма и весьма неплох. Да что там неплох - это реально удивительная штука, о которой я и расскажу в данной статье.

    Концепция

    Идея Leap Motion заключается в том, чтобы сделать управление интерфейсом более интуитивным. Причем не важно - работаете ли вы в операционной системе или играете в игру. А что может быть интуитивнее жестов? Вспомните, как бодро Том Круз работал с базой данных Агентства в киноленте «Особое Мнение»:

    Впечатляет, не правда ли? Вот так легко данные гоняются по экрану, объединяются в отдельные кластеры, сравниваются. С клавиатурой и мышкой ковыряться пришлось бы явно в разы дольше.

    «Но это дело далекого будущего и, вообще, выдумка фантаста! », - скажете вы. А оглянитесь-ка вокруг - большинство технологий в современном мире вышло из сказок и фантастических произведений: перемещения по воздуху с огромной скоростью, связь на расстоянии с помощью миниатюрного устройства, представляющего собой мощнейший компьютер, легко помещается в ладони, Интернет… примеров можно привести массу.

    Вот и Leap Motion стал своего рода воплощением в реальности мечты Филипа Дика , написавшего роман «Особое Мнение » еще в 1956 году:

    Впечатляет не меньше, чем показанный выше эпизод из киноленты. И, вы знаете, эта штука действительно работает! Пусть не так гладко, как это демонстрируется в видео, но ощущения от работы с Leap Motion словами передать сложно, хотя я и постараюсь сделать это.

    Маленькое устройство в большой коробке

    Учитывая размеры контроллера, не особо превышающие таковые у зажигалки, он поставляется в просто таки огромном боксе, хотя и тот легко поместится в ладонь. А вообще, упаковка классная:

    Сверху суперобложка, под ней коробочка из очень твердого и качественного картона. Приподнимаешь крышку, и тебя приглашают окунуться в совершенно новый мир:

    А вот и сам герой обзора, вольготно расположившийся в пластиковой ванночке:

    Помимо него в коробке есть еще пара кабелей и небольшая инструкция:

    Кстати, обратите внимание на кабели . Длина одного - 60 см, второго - 150 см, но интереснее разъем:

    Это не проприетарный коннектор, а стандартный microUSB 3.0 . Но, если честно, то я не понял, зачем было использовать такой вариант, если само устройство работает через USB 2.0. По крайней мере, об этом говорится на официальном сайте. Обычный разъем microUSB и компактней, и соответствующий кабель достать проще, если комплектный придет в негодность.

    Ну да ладно, что имеем, то имеем. Давайте более внимательно рассмотрим само устройство.

    Leap Motion хоть и маленький, но увесистый и плотно сбитый. Контроллер выполнен в алюминиевом корпусе с глянцевой пластиковой панелью сверху и резиновой - снизу:

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

    Из дополнительных элементов на корпусе есть лишь разъем microUSB 3.0 и статусный индикатор:

    Возомнив себя самым умным и способным во всем разобраться без инструкций, я решил сразу подключить контроллер к Mac и действовать по обстоятельствам, не заморачиваясь с бумажками. Подключил и… ничего не произошло. Инструкции - это для трУсов? Нет, друзья. Все-таки их лучше читать, что экономит и время, и нервы.

    Как подружить Leap Motion с компьютером

    А ведь все, что надо было сделать - перейти на официальный сайт проекта. К этому создатель аксессуара настоятельно подталкивает, как только вы открываете коробку и извлекаете гаджет наружу. На защитной наклейке сверху четко написано, мол, «Активируй на leapmotion.com/setup ». Пройдя по ссылке, я получил предложение загрузить соответствующие драйвера:

    Кстати, пакет был загружен весьма увесистый, аж на 80 МБ, а после установки он занимает более 200 МБ:

    Ну вот, установил драйвера, ПО, и маленькая коробочка после подключения к компьютеру сразу же ожила: статусный светодиод загорелся зеленым светом, а сверху появились красные точки - это ИК-излучатель:

    На экране тоже творилось действо, причем ПО не только предлагало мне подключить гаджет и расположить его соответствующим образом, но еще и почистить верхнюю панель Leap Motion от отпечатков пальцев, чтобы аппарат работал лучше. Не знаю, где оно там нашло отпечатки, доставал устройство очень аккуратно, верхнюю панель не трогал, но все-таки протер ее, смахнув несколько пылинок:

    Ну всё, сейчас я прикоснусь к магии! Ан нет, еще надо запустить сопутствующее приложение Airspace и зарегистрироваться в местном магазине приложений:

    Зарегистрировался, запустил Airspace и, наконец, можно прикоснуться к будущему. Хотя, не спешите. Вначале загрузятся демонстрационные приложения, а они занимают прилично - как минимум десятки мегабайт, но обычно далеко за сотню.

    Что ж, пока загружается стоит пробежаться по настройкам аксессуара, их немного.

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

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

    Ну вот, все демо-программки загрузились, пора испытать гаджет в действии.

    Видеообзор

    Пассы руками

    Когда Leap Motion в запакованном виде попал в редакцию, то каких-то особых эмоций не вызвал. Слишком долго мы ждали и как-то перегорели, наверное. Даже в процессе настройки устройства особо сильных эмоций я лично не испытывал.

    Но стоило запустить первое приложение и увидеть устройство в действии, когда не касаясь клавиатуры, мышки или экрана ты творишь какие-то невероятные доселе вещи, вроде вращения молекулы ДНК вот прямо так же, как в «Особом Мнении», или же распугиваешь стайки рыбок легким движением ладони, тогда и вернулся дикий восторг и ощущение того, что мир меняется прямо на твоих глазах.

    Контроллер действительно очень точно отслеживает ладони, пальцы и их движение. Правда, необходимо все-таки привыкать. Во-первых, не стоит делать слишком резкие движения. Производительность у Leap Motion высока, но чудес не ждите. К тому же, при резких движениях частенько руки выпадают из зоны действия датчика.

    Второй важный момент - это определение наиболее удобной высоты трекинга, которая настраивается в опциях, об этом я упоминал выше. Во время тестирования наиболее удобным оказалось стандартное значение в 20 см, но по большей части я взаимодействовал с гаджетом стоя. Если будете сидеть, то стоит несколько снизить высоту, либо использовать автоматический трекинг.

    Что касается приложений , то для Leap Motion их уже существует масса, причем как платных (цены примерно на уровне Apple App Store), так и бесплатных. По сути, компания-создатель устройства открыла свой собственный магазин приложений, который уже успешно освоили многие сторонние разработчики. Благо, SDK раздается уже больше года.

    Есть игры, есть просто прикольные программки, демонстрирующие возможности контроллера, есть приложения для создания музыки, обучения и т. п. Присутствует ПО как для Windows, так и для OS X.

    В общем-то, по большей части это пока игрушка, но игрушка невероятная, вызывающая бурю эмоций в душе. Я радовался как ребенок, когда на мои движения руками в этой реальности реагировала виртуальность - когда на воде появлялась рябь от прикосновения, а крона дерева со светящимися листьями шевелилась, когда ты управляешь виртуальной ракеткой в 3D-арканоиде и отбиваешь шарик, как будто держишь в руках настоящую ракетку… все это очень затягивает.

    А стоит попробовать поиграть с использованием Leap Motion ребенку, и вы не оттащите его от компьютера еще долгое время. Причем детям не надо ничего объяснять, они все схватывают на лету, и вот уже 3-летний малыш резво рубит веревки в и кормит Омнома леденцами.

    У Leap Motion большое будущее. Пусть пока это скорее игрушка, чем серьезный инструмент или замена мыши и тачпаду, но она реально работает. Более того, устройство поддержали разработчики и это самое важное. Ведь без ПО даже самый крутой гаджет будет лишь грудой мертвого «железа, пластика и кремния». Программы - это душа устройства и у Leap Motion она широкая, добрая и многообещающая.

    Цена вопроса - около 5000 руб.

    сайт Я помню, как в прошлом году увидел демонстрационный ролик Leap Motion и не поверил, что это не прототип, а вполне завершенный продукт, релиз которого состоится в течение полугода. Как-то уж слишком фантастично выглядели показанные разработчиком картины, наталкивая на мысли о киноленте «Особое мнение». Но чуда не произошло, и вначале дата релиза была перенесена на четыре...

    Для большинства задач работы на компьютере, ничто не сравнится со старыми добрыми клавиатурой и мышью. Но контроллер Leap Motion уже доступен, и он изменит наше представление о навигации в компьютерах.

    Если вы ищете способ управления компьютером как в фильме «Особое мнение», Leap Motion уже достаточно быстр, чтобы произвести впечатление, ну или хотя бы развлечь. С его помощью вы можете играть в игры, рисовать, и даже выполнять неожиданные задания, вроде разблокировки вашего ПК, даже не прикасаясь к мыши. При всём этом в устройстве есть некоторые неполадки, которые могут вызвать некоторое разочарование в начале эксплуатации.

    Если вы решились приобрести сей гаджет, используйте эти советы для оптимизации производительности и приобретите опыт как можно более безболезненно.


    1. Размещение
    По словам разработчиков в Leap Motion, можно действительно поставить контроллер, куда вы хотите, справа, слева, перед вашей клавиатурой, на голову или на колени. Не переживайте о выборе места, контроллер быстро адаптируется к изменениям в размещении.

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

    Каковы последствия далекого размещения контроллера? Усталость рук.

    2. Держите его в чистоте
    Под темной пластиной контроллеа Leap Motion из стекла находятся две камеры и инфракрасный датчик. Пыль и грязь будут мешать отслеживать движения, особенно во время работы, требующей особой точности.

    Чтобы помочь датчикам Leap Motion держите его чистым, насколько это возможно. Если есть большое пятно, устройство даст вам знать уведомлением на панели задач (или меню на Маке). Но не ждите предупреждения о загрязнении. Гаджет поставляется с тканью из микроволокна, так что используйте её для протирки стекла как можно чаще.

    3. Тонкая настройка отслеживания жестов
    Хотя инженеры Leap и настаивают, что большинству людей не нужно настраивать какие-либо параметры, но хочется же иногда почувствовать себя профессионалом в настройке и использовании приложений, которые требуют особой точности. Есть несколько полезных настроек, с которыми стоит поиграть.

    На панели задач в Windows или на панели меню Mac, откройте меню контроллера Leap Motion и войдите в настройки.

    В первой вкладке, справа, взгляните на настройку высоты взаимодействия. Вы увидите, что высота установлена на 20 сантиметров от верхней поверхности устройства. Это хорошо умолчанию, но если ваши руки устают или это слишком высоко, вы можете поднять или опустить эту зону, соответственно. Используйте ползунок, чтобы попробовать различные варианты.

    Там также есть функция автоматической настройки взаимодействия, которая побуждает контроллер Leap Motion постоянно перемещать зону взаимодействия, основываясь на движениях пользователя. Все это звучит хорошо в теории, но на практике работало не очень надежно. Лучше всё-таки вместо этого оставить статическую высоту.

    Во вкладке "Отслеживание", обратите внимание на приоритет отслеживания. По умолчанию он установлен в сбалансированный, предоставляя скорости и точности равное внимание. В большинстве случаев это хорошая установка, однако, если вам нужна более высокая точность, выберите акцент на точность в настройках. Или, если вы играете в игру, которая требует высокой скорости, акцентируйте настройку на скорости.

    Просто имейте в виду, что если устройство отслеживает одну приоритетную опцию, другая будет несколько приуменьшена. На более мощных системах, это менее очевидно, но ожидайте некоторую задержку с другим элементом. Проверьте числа внизу, чтобы узнать, как изменение этих параметров повлияет на производительность.

    4. Перекалибровка контроллера Leap Motion
    Падение, тряска или даже вмятина на Leap Motion контроллере расстроит его. В худшем случае, когда такие вещи случаются, контроллер, скорее всего, попросит вас откалибровать устройство.



    Но, любопытные: вам не нужно ждать такого случая, чтобы попробовать самому откалибровать гаджет. Если вы заметите много "мёртвых зон", или заметите, что отслеживание не достаточно точное, выделите несколько секунд для повторной калибровки.

    Для этого можно перейти в панель "Настройки> Устранение неполадок>Повторная калибровка устройства".

    Именно здесь происходит что-то странное. Возьмите своё устройство боковым стеклом перед экраном компьютера на расстоянии около 1 или 2 сантиметров, медленно перемещайте его в различных направлениях, чтобы окрасить экран в зеленый цвет, пока вы не получите "Оценку" 80. Повторная калибровка проста на глянцевых экранах, на матовых экранах процесс занимает чуть больше времени.

    Почему? В процессе калибровки, программа отслеживает инфракрасный луч контроллера, отражающегося от экрана обратно на устройство. (Чистое, не так ли?)

    5. Спецификация компьютера.
    Если вы поэкспериментировали со всеми этими вариантами оптимизации и до сих пор не в восторге от производительности Leap Motion, есть вероятность, что в этом виноват компьютер. Хотя минимальные требования не прописаны, контроллер может адаптироваться к различным системам. Таким образом, его производительность зависит от системы, на которой он запущен.

    Конечно, он будет функционировать на ПК с 2 Гб оперативной памяти и процессором Core i3, но дайте ему 4 Гб ОЗУ и Core i7, и вы увидите резкое улучшение в скорости и точности.

    Компьютерные манипуляторы – как ни удивительно, одна из самых консервативных отраслей. Клавиатура и мышь в практически неизменном виде существуют уже многие десятки лет, и успешно сопротивляются робким попыткам предложить что-то другое – трекболы, сенсорные мониторы, гироскопические манипуляторы и проч. так и не вышли из разряда экзотики, да и не очень пытались. Удастся ли детищу компании Leap Motion, Inc отправить мышь на свалку истории и дать возможность управлять компьютером так, как нам когда-то показывали в Minority Report, или их контроллер так и останется забавной игрушкой?


    Поставляется контроллер в небольшой коробке из белого картона, в оформлении которой используются «фирменные» цвета – белый и светло-зеленый. Впрочем, на поверку оказывается, что упаковка могла быть еще меньше – две трети пространства в ней пустует; внутри, кроме собственно миниатюрного устройства, обнаруживается также два USB-кабеля (длинный и короткий) и небольшая информационная брошюра со сведениями о гарантии и т.д. В качестве же инструкции пользователя выступает короткая фраза «для активации контроллера посетите официальный сайт», продублированная на прикрывающей устройство картонке и на наклейке на самом контроллере.



    Дизайн

    Контроллер Leap Motion оказывается совсем небольшим – «брусок» со скругленными углами размерами 8х3х1 см. Верхняя грань у него из глянцевого черного пластика, боковые грани – из серебристого пластика «под алюминий». Низ полностью прорезиненный, однако по гладкой поверхности стола контроллер скользит достаточно легко. Никаких опознавательных надписей на нем нет (лишь снизу можно найти выдавленный логотип Leap Motion). Сбоку находится разъем USB 3.0 Micro-B, спереди в углу – индикатор активности, светящийся умеренным зеленым светом. В общем, лаконичность во всем.





    В работе

    Для определения перемещения рук пользователя в Leap Motion используются две монохромные инфракрасные камеры и три инфракрасных излучателя. Камеры «сканируют» пространство над поверхностью стола с частотой до 300 кадров в секунду и передают полученные данные в компьютер, где они обрабатываются фирменным ПО. Несмотря на кажущуюся схожесть с Microsoft Kinect, эти устройства все же отличаются (в Kinect используются цветная видеокамера и датчики глубины).

    Leap Motion следует располагать под экраном, точнее – вместо клавиатуры (на самом же деле, поскольку совсем без традиционного управления обойтись не удастся, контроллер придется размещать либо за клавиатурой, либо перед ней, как будет удобнее пользователю). Как следствие, у Leap Motion достаточно малая зона сканирования, в которую попадает, по сути, лишь небольшое пространство над клавиатурой.

    После подсоединения контроллера к порту USB (несмотря на то что в самом устройстве используется USB 3.0, его спокойно можно подключать и к USB 2.0) необходимо загрузить программное обеспечение с официального сайта (доступно для Windows, Mac OS и Linux). После его установки пользователь получает оболочку Airspace – в ней объединены собственный магазин приложений Airspace Store, в котором находятся игры и программы, оптимизированные под управление с помощью Leap Motion, и доступ к официальному сообществу. По данным на ноябрь 2013 года, в Airspace Store было уже 150 приложений – часть из них бесплатные, за другие придется заплатить (как правило, в районе $2-5 за программу).

    Главное, что следует учитывать перед приобретением Leap Motion – что работа с устройством происходит на уровне отдельных приложений. Другими словами, вы не можете установить системный драйвер, после чего использовать управление руками в любом приложении с той же легкостью, с которой это производится при использовании клавиатуры и мыши. Хотите делать то-то и то-то? There is an app for that, как бы говорят нам разработчики. Другими словами – отправляемся в Airspace Store и ищем подходящее приложение.

    Так, наиболее логичный вариант использования, эмуляция управления на уровне системы – это категория Computer Controls, в которой на данный момент находится 16 приложений, которые справляются с этой задачей более или менее удачно. К сожалению, наиболее качественная бесплатная программа в этом разделе – Better Touch Controls – существует только в версии для Mac OS, пользователям же Windows придется довольствоваться гораздо менее удачной Touchless, либо раскошеливаться на платное ПО (максимальный рейтинг у Pointable стоимостью $5).

    Разумеется, здесь хватает и казуальных игрушек и «музыкалок» (неплохое впечатление произвела Dropchord), однако всех их хватает максимум на 5 минут, причем не только из-за усталости рук.

    В настройках контроллера можно отрегулировать высоту распознавания, в пределах от 7 до 25 см. Угол распознавания составляет примерно +/- 45 градусов.

    Управление осуществляется с помощью пальцев (распознаются все 10 одновременно), располагать ладони следует в горизонтальной плоскости – если развернуть их вертикально, точки распознавания пальцев наложатся друг на друга, и устройство будет отслеживать только нижний из них.

    Также устройство может плохо различать отдельные пальцы, если они находятся слишком близко друг к другу. Точность распознавания оказывается очень высокой, однако удобство использования очень сильно зависит от качества реализации управления в каждом конкретном приложении – скажем, если крутить глобус в The Weather Channel (крайне упрощенный аналог Google Earth со встроенным прогнозом погоды) оказывается очень даже удобно, то уже попытка вылепить что-то в «симуляторе скульптора» Freeform наталкивается на достаточно серьезные препятствия.

    При попытке управления системой с помощью Touchless очень быстро проявилась характерная проблема, с которой сталкиваются все пользователи Windows на системах с сенсорным управлением – элементы Windows слишком мелкие, чтобы в них можно было попадать, тыкая пальцем в touchscreen. А теперь представьте, что сенсорная панель – это невидимая плоскость, висящая в воздухе на расстоянии пары десятков сантиметров от экрана. Конечно, точность отслеживания движения у Leap Motion позволяет попадать если не в пиксель, то уж точно в самые миниатюрные элементы управления на экране, однако тут проявляется «человеческий фактор» — совершать в воздухе микродвижения пальцем вытянутой вперед руки оказывается довольно сложно и весьма утомительно.

    В «плиточном» интерфейсе Windows 8 управление было уже более удобным – попасть в большую плитку гораздо проще, чем в маленький ярлык или текстовую ссылку, однако тут тоже были свои проблемы – например, со скроллингом главного меню (вызванные, впрочем, уже не столько особенностями самого контроллера, сколько реализацией управления в программе Touchless).

    Говоря о приложениях в общем, нельзя не упомянуть еще один очень показательный недостаток, который как бы намекает нам, что Leap Motion даже не претендует на роль Главного Манипулятора в Системе – закрыть запущенное приложение с помощью жестов рук нельзя; более того, если приложение полноэкранное, то вполне вероятно, что выйти из него удастся лишь по нажатию комбинации клавиш Alt+F4.

    Итоги

    После знакомства с устройством и его возможностями можно сделать вывод, что на уровне концепта Leap Motion выглядит крайне интересно. А вот конкретная реализация и программная поддержка на текущий момент, к сожалению, опускают пользователя на землю – заменить этим контроллером клавиатуру и мышь и начать размахивать руками перед экраном а-ля Том Круз у него, к сожалению, не получится. Так что пока Leap Motion это скорее любопытная игрушка, которой можно развлечь пришедших в гости друзей… или же необычный новогодний подарок.

    Продукт предоставлен интернет-магазином Stylus, stylus.com.ua .

    Leap Motion
    Уведомить о появлении в продаже
    Тип Устройство виртуального ввода
    Описание Контроллер ваших движений, сделанных кистями рук и пальцами, с его помощью можно взаимодействовать с компьютером непосредственно жестами

    Leap Motion Controller вошел в десятку лучших устройств года по версии журнала Time. Данный девайс относится к славной семейке беспроводных контроллеров нового поколения, таких как Wii Remote, PlayStation Move, однако ближайшим его родственником является Xbox Kinect. В отличие от последнего, Leap Motion реагирует на движения исключительно рук, он в 200 раз точнее определяет даже самые быстрые движения кистей и пальцев. Это устройство еще плотнее приближает нас к настоящей виртуальной реальности - к созданию естественного интерфейса между человеком и машиной. Ура, товарищи!

    Leap Motion Controller

    После выхода сенсора Kinect на волне его успеха стали появляться другие устройства бесконтактного управления. Kinect послужил основой для роста и развития рынка подобных устройств: инвесторы увидели перспективу и поняли смысл вложения средств в устройства жестового управления. Однако наиболее значимым и успешным стал контроллер Leap Motion Controller. Как и прародитель, последний основан на технологии захвата движения. Это устройство подключается к порту USB и по размеру не превышает пары сложенных флешек. С технической стороны для захвата проекции пользовательских рук в пространстве устройство Leap использует два оптических сенсора (камеры) и инфракрасный источник света (разработчики не исключают, что в будущих версиях устройства количество камер может быть изменено). Девайс размещается рабочей поверхностью кверху рядом с экраном, чтобы создать ощущение, будто объектами на экране управляют с помощью рук. После подключения устройства над ним образуется виртуальная перевернутая пирамида с центральной вершиной в устройстве. Наиболее эффективный диапазон распространяется от 25 до 600 мм над контроллером с областью видимости 150 градусов. В области этой пирамиды Leap Motion «видит» все движения и пересылает их софту, который преобразует данные и сигналы в координаты и сообщения. Софт способен распознать как простые жесты (виртуальные прикосновения, нажатия), так и сложные продолжительные движения: масштабирование, перемещение, вращение, рисование различных геометрических фигур. Таким образом, само устройство не выполняет никаких вычислений и преобразований, отдавая все на откуп софту хоста, который, удаляя шумы изображения, строит модели рук и пальцев - указателей. Имея начало координат в центре устройства, Leap Device интерпретирует оси координат следующим образом: отрицательная X расположена слева от устройства, соответственно, положительная - справа. Координата Y растет вверх и не имеет отрицательных значений, так как Leap «видит» объекты, начиная с 25 мм выше себя. Положительная Z располагается в направлении к пользователю, тогда как отрицательная - к экрану.

    Leap Motion SDK

    Leap Motion SDK развивается удивительно бурно, а новые версии выходят с завидной регулярностью: за сравнительно недолгую историю своего существования уже появилась полноценная вторая версия тулз, а также ее модификации. Точнее, моды находятся еще в стадии беты, и мы будем использовать самую последнюю на момент написания статьи версию SDK, поскольку каждая новая версия предоставляет видимые улучшения - дополнительные возможности слежения за скелетом («костями» рук). Как и следовало ожидать, Leap Motion SDK работает на всех распространенных платформах: Windows NT, OS X, Linux. Так как в последнее время мне больше приходится работать на Маке (а я вот редактирую эту статью на EEE PC с Win XP, и мне норм. - Прим. ред.), то в дальнейшем мое повествование (с некоторыми оговорками) будет касаться именно этой операционной системы. Если ты с ней не дружишь, не отчаивайся, ведь Leap Motion SDK кросс-платформенный, и ты без труда сможешь адаптировать полученные из этой статьи сведения для любой поддерживаемой операционной системы.

    Готов вкалывать!

    Для начала работы с контроллером Leap Motion, предварительно зарегистрировавшись на сайте производителя устройства, из раздела Downloads скачай архив LeapDeveloperKit_2.1.1+21671_mac.tar. Распаковав его, ты обнаружишь папку, внутри которой будет бандл Leap_Motion_Installer_skeleton-release_public_mac_x64_2.1.1+21671_ah1704.dmg (образ диска для OS X), содержащий драйверы для работы устройства, а также демоаппликации. Рядом с бандлом будет находиться директория LeapSDK, включающая все необходимые библиотеки и API для разработки приложений, работающих с устройством Leap Motion. Вдобавок в этой папке находится документация и сэмплы. Кроме демоприложений, бандл содержит Airspace Home, своего рода клиент для магазина приложений Leap Motion - в него можно загружать свои приложения и продавать их, как на других площадках цифровой дистрибуции. Основное отличие второй версии SDK от первой - это новая система слежения за «скелетом» верхних конечностей. В нее включена обработка дополнительной информации о костях рук и пальцев, возможность предсказания расположения невидимых для устройства костей и построение моделей рук в тех условиях, когда полностью конечности не видны.

    Сначала установи содержимое бандла (уверен, под Windows он имеет такое же название, только с расширением exe). Сама установочная программа, находящаяся внутри образа, называется Leap Motion.pkg, она запускает процесс инсталляции всего перечисленного выше.


    Рис. 2. Установка программы

    После завершения установки софта для Leap Motion автоматически запустится драйвер, который в виде демона «поселится» в строке меню (справа сверху). В «Программах» появятся три новых приложения: сам драйвер, демопрограмма Leap Motion Orientation (рекомендую начать с нее) и Airspace. Если ранее контроллер не был подключен, самое время сделать это. Значок (в строке меню) подсветится зеленым цветом. В результате щелчка на нем откроется меню, содержащее пять пунктов. Первый пункт Launch Airspace запускает одноименный оконный клиент. По умолчанию в нем присутствуют семь демоприложений и две ссылки, ведущие в Airspace Store и комьюнити разработчиков. Каждая из демонстраций раскрывает возможности Leap Motion.

    Следующий пункт меню - Settings открывает окно для настройки устройства. Это окно включает четыре вкладки. На странице Generals производятся основные настройки: разрешить или запретить устройству взаимодействовать с веб-приложениями, которые поддерживают Leap Motion (забегая вперед, отмечу, что такая возможность присутствует, и для этого используется HTML5 + JavaScript), включить или выключить возможность получать сигналы от устройства приложениям, работающим в фоне, автоматически передавать статистику устройства, включить (при необходимости) переход в энергосберегающий режим; настроить наименьшую высоту над устройством, при которой оно «видит» руки и пальцы (указатели); согласиться на автоматическое обновление. На странице Tracking присутствуют два параметра, относящиеся к настройке возможности «слежения» устройством. Следующая вкладка посвящена диагностированию и устранению неполадок, здесь присутствуют функции просмотра лога ПО, диагностический визуализатор, повторная калибровка устройства и возврат к настройкам по умолчанию. Последняя же вкладка просто сообщает инфу об устройстве и обслуживающем его софте. Щелчком по пункту Visualiser открывается демонстратор, в нем можно посмотреть, как устройство «видит» конечности. То есть, если переместить руки над активной областью устройства, приложение отобразит их в виртуальном пространстве. Кнопка Pause Tracking приостанавливает слежение, Quite - вырубает демон.


    Когда ПО для Leap Motion будет установлено, можно ставить инструменты разработчика. При этом я полагаю, что у тебя установлены самые новые версии операционной системы и тулз для разработки (Xcode). Как я говорил выше, после распаковки архива папка с SDK находится рядом с бандлом установки. Эта папка содержит документацию, примеры, заголовочные и объектные файлы для всех официально поддерживаемых языков. Изначально Leap Motion SDK написан на C++, но, благодаря SWIG, имеет поддержку многих распространенных компилируемых и интерпретируемых языков, среди которых C# (вместе с фреймворками.NET и Mono плюс движком Unity 3D), Objective-C, Java, Python, JavaScript. SWIG, являясь свободным инструментом с открытым исходным кодом, играет роль генератора связующего кода между C++ и другими языками. Для своих разработок мы возьмем C++, как самый родной. Клиентский компьютер и контроллер взаимодействуют по TCP-соединению, при котором открываются порты 6437, 6438, 6439 - для корректной работы устройства необходимо проследить, чтобы они не блокировались файрволом. Leap Motion SDK позволяет разрабатывать приложения двух видов: поддерживающие нативный интерфейс (клиентские приложения) и интерфейс WebSockets (веб-приложения, работающие в среде браузера). Первые для работы (получения данных от контроллера) используют динамическую библиотеку - конкретную для определенной операционной системы, она подключается к устройству и предоставляет сервис верхнему уровню. Тогда как вторые получают данные через сервер WebSockets локального хоста в виде сообщений формата JSON. В этом случае используется JavaScript + open source надстройка LeapJS, и для управления устройством приложение может передавать конфигурационные сообщения через сервер WebSockets обратно девайсу.

    Кодинг для Leap Motion

    Сегодня мы сконцентрируемся на нативных приложениях для OS X, но благодаря кросс-платформенности инструментов ты легко сможешь переделать наши проги для другой поддерживаемой операционной системы. Мы не будем разрабатывать консольное приложение, которое показывает координаты, передаваемые контроллером, это скучно. Мы сразу же окунем голову в серьезный код и напишем приложение, выводящее графическое представление.

    Визуализация

    Leap Motion SDK предоставляет чудесные средства для получения данных от контроллера, но в нем совсем ничего нет для вывода графики. Поэтому наш путь лежит через использование дополнительных тулз. Чтобы вывести графику из нативного приложения под OS X, надо воспользоваться OpenGL. От этой идеи веет грустью: слишком низкий уровень, никакой статьи не хватит, и вообще уснуть можно. Поэтому мы воспользуемся настройкой над OpenGL. Из всего широчайшего ряда подобных библиотек я выбрал Cinder . Cinder представляет собой набор библиотек с открытым исходным кодом для обработки изображений, работы с графикой, звуком, вычислительной геометрией. Как я уже сказал выше, Cinder кросс-платформенна, и один и тот же код будет работать не только на десктопных платформах, но также на смартфонах и планшетах от Apple. В будущем разработчики собираются расширить круг поддерживаемых аппаратных и программных платформ. Вдобавок для генерации заготовки нового проекта в поставку Cinder входит утилита TinderBox, с ее помощью можно создать проект с поддержкой OpenGL, DirectX, CocoaView (OpenGL), каждая из этих заготовок может содержать в себе поддержку физического движка Box 2D, библиотеку рендеринга Cairo, аудиобиблиотеку FMOD, библиотеку компьютерного зрения OpenCV. Для Apple-устройств можно сгенерировать заготовку, где будут использоваться менеджеры геолокации и движения, при помощи стандартных фреймворков (Core Location, Core Motion). Все это с легкостью можно включить в проект на этапе его создания с помощью GUI-интерфейса. Кроме того, проект можно сгенерировать под определенную среду программирования и операционное окружение: Xcode (Mac), Xcode (iOS), VC 12/13 (WinRT). Следствие: мы имеем более, чем библиотеку API, все это напоминает кросс-платформенный игровой движок! Также можно сразу создать локальный Git-репозиторий. По моему скромному мнению, Cinder скоро станет наилучшим кросс-платформенным решением, даже в сравнении с Qt. Так как в Cinder активно используется boost, его неплохо обновить до последней версии. Открываем любимую консоль и сначала поставим систему управления устаревшими (на суровый взгляд Apple) пакетами Homebrew:

    Ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

    После чего из этой системы установим boost 1.55: brew install boost. Для работы непосредственно с Cinder ее достаточно скачать и распаковать, а для генерации проекта - использовать размещенную в подпапке tools утилиту TinderBox.

    Руки, пальцы, управление пространством

    Итак, для разминки создадим приложение, которое выводит в окно то, что видит сенсор. Если ты читал мои статьи про Kinect, то можешь помнить, что там мы начинали так же, будем считать это традицией. Заготовка из TinderBox для OpenGL нам прекрасно подойдет, надо только добавить в нее поддержку Leap Motion. Для этого из подкаталога include ранее распакованной папки LeapSDK (об этом см. выше) в дерево каталогов проекта среды Xcode перетащи два файла: Leap.h и LeapMath.h. Когда перенос будет завершен, появится диалоговое окно, где надо указать способ вставки / связывания файлов с проектом; поставь флажок Destination -> Copy items into destination group’s folder (if needed), отметь галкой Folders -> Create groups for any added folders и ниже отметь проект, к которому происходит добавление файлов. Кроме того, еще нужна динамическая библиотека. Так как компилятор языка C++ (LLVM), входящий в Xcode, следует стандарту C++11, то необходимо использовать библиотеку, скомпилированную с его вмешательством. Такая либа есть, она называется (версия для OS X) libLeap.dylib и находится в подкаталоге libc++ подпапки lib каталога LeapSDK. Либу тоже надо переместить в систему Xcode, с таким же последующим прохождением диалога. Теперь надо указать среде Xcode использовать добавленную в проект либу. В дереве файлов/каталогов проекта щелкни на имени проекта (верхний пункт), откроется меню конфигурирования проекта. Перейди на вкладку Build Phases. В левом верхнем углу вкладки, щелкнув на знаке «плюс», из появившегося контекстного меню выбери пункт New cope files build phase. В нижней части вкладки появится свернутая панель Copy Files. Развернув ее, из ниспадающего списка Destination выбери Executables, а в пустой список файлов (ниже) из дерева проекта перетащи динамическую либу, при этом флажок Copy only when installing должен быть снят. Теперь она подключена к проекту. Следующее действие нужно, чтобы сенсор передавал «сырые» данные изображения того, что он видит; в настройках Leap Motion (пункт Settings контекстного меню значка девайса в строке меню) на закладке General надо отметить флажок Allow Images. Сгенерированная TinderBox’ом заготовка включает несколько папок, файлов и необходимых фреймворков. Поскольку я назвал проект RawImagesApp, я добавил заголовочный файл RawImages.h. В него я поместил подключение заголовочных файлов Cinder’а и Leap’а, включение пространства имен Leap и объявление объекта контроллера Leap Motion, собственно, он является центральным предметом дискуссии. Вдобавок TinderBox сгенерировал исходный код для нашего проекта, он послужит хорошей отправной точкой для развития. В cpp-файле содержится основной класс (в моем случае RawImagesApp) приложения, соответствующий имени проекта и унаследованный от базового класса Cindera - AppNative. Окно создается с помощью макроса CINDER_APP_NATIVE. В классе RawImagesApp объявлены и реализованы виртуальные функции базового класса. Функция setup вызывается при старте приложения, сюда помещается код для его инициализации: для вывода «сырых» графических данных в этом методе необходимо установить особый флаг политик сенсора, для чего надо вызвать метод setPolicyFlag, в который передать значение POLICY_IMAGES контроллера. Функция update вызывается в каждом кадре для обновления; draw вызывается для перерисовки контента; mouseDown - при нажатии клавиши мыши. По умолчанию включены не все возможные функции, можно, например, добавить prepareSettings - функцию, которая вызывается до создания окна и позволяет передать ему параметры. Добавим эту функцию, чтобы при создании окно было большего размера, также установим для него частоту обновления. Объявление внутри класса RawImagesApp выглядит так:

    Void prepareSettings(ci::app::AppBasic::Settings* settings);

    а реализация так:

    Void RawImagesApp::prepareSettings(Settings* settings) { settings->setWindowSize(1024, 768); settings->setFrameRate(60.0f); }

    Уверен, комментарии здесь излишни. Добавим в основной класс приложения текстуру OpenGL: gl::Texture tex; Она пригодится нам для вывода. В функции update мы по кадрам будем получать изображения от сенсора, затем их обрабатывать и отображать на текстуре (см. исходник). На каждом кадре мы получаем кадр контроллера: Frame frame = controller.frame();. Объект класса Frame содержит в себе все остальные объекты, информацию о которых генерирует контроллер. Нам надо просто извлечь их из него. К слову, получение кадра таким способом - самостоятельно его брать у контроллера (последовательный опрос устройства) - наиболее просто и используется чаще всего. Любые промежуточные моменты предрешены: если при следующем опросе новый кадр еще не готов, то возвращается старый; если при последующем опросе готовы уже несколько кадров, то они помещаются в историю. Есть еще один способ получения кадров, но пока он нам не нужен, и мы перенесем его рассмотрение на следующий раздел. Получив кадр, мы извлекаем из него снятые сенсором изображения: ImageList images = frame.images();. Всего их два, поскольку в сенсоре две камеры, поэтому в каждый момент два изображения. Далее мы последовательно обрабатываем оба. Сначала в строке: const unsigned char * image_buffer = image.data (); получаем данные картинки; в определенный момент времени от контроллера мы можем получить разные изображения - не только по содержимому, но и по размеру. В следующей строке создается объект графической поверхности (Surface), входящий в Cinder API. Его конструктору передаются четыре параметра: ширина и высота поверхности, использование альфа-канала, последовательность цветовых каналов (константа SurfaceChannelOrder::RGBA соответствует стандарту: красный, зеленый, синий, альфа, однако имеется ряд других, например, в GDI или Quartz используются другие цветовые последовательности). Затем с помощью итератора обходятся все пиксели (пока пустой) поверхности. Внутри этого цикла устанавливается цвет пикселей. Я решил придать выводимому изображению красноватый оттенок (как в DOOM:)). Поэтому для красного канала каждого пикселя устанавливается значение, соответствующее значению из данных изображения. Остальные каналы обнуляются. После обхода всего изображения мы конструируем объект - текстуру с помощью метода gl::Texture на основе переданной в параметре поверхности. Если сейчас вывести текстуру на экран, она будет слишком маленькая. Поэтому предварительно отмасштабируем ее: glScalef(2.0, 3.0, 0.0);. Теперь отобразим: gl::draw(tex);.

    Рис. 5. Что видит Leap Motion Controller

    Кости

    В следующем примере мы отобразим наши руки в машинном контексте, то есть нарисуем их в соответствующих координатах. Эта задача будет сложнее, чем предыдущая, а LeapSDK все-таки предоставляет довольно низкоуровневый интерфейс, поэтому для упрощения нашей задачи мы воспользуемся готовыми наработками. Американский программист Стивен Шейберл (Stephen Schieberl), под ником Ban the Rewind, разработал пару классов (Listener наследуется от Leap::Listener и Device), выполняющих всю типичную работу, связанную с обработкой и возвращением состояний устройства. Вдобавок Стивен поместил в файл функции, которые выполняют подсчеты координат и матриц, что позволит нам сконцентрироваться на более высокоуровневой работе. В первую очередь эти вычисления связаны с тем, что в отличие от координат рабочего стола операционной системы, где ось Y растет сверху вниз, начало координат для Leap Motion (0, 0, 0) начинается в левом нижнем углу (Y растет снизу вверх), следовательно, при использовании значений координаты Y их надо инвертировать. Дополнительные вычисления проводятся над векторами и матрицами, как указано выше. Итак, создадим новый проект таким же образом, как прошлый. Дополнительно добавь в него файлы Cinder-LeapMotion.h и Cinder-LeapMotion.cpp (см. материалы к статье). В главном классе приложения количество переменных-членов пополнилось, были добавлены: mDevice - ссылка на устройство - объект самописного класса, mFrame - класса Frame (мы уже рассматривали этот класс в прошлом разделе), mCamera - объект класса CameraPersp либы Cindera, также был добавлен метод onFrame (функция обратного вызова класса-предка), который, принимая объект класса Frame, делает его текущим - присваивает его переменной-члену mFrame. В методе Setup включаются режимы рисования, сглаживания линий и полигонов; инициализация камеры: задание области видимости (в параметрах конструктора), установка точки обзора (в методе lookAt); затем создается объект самописного класса Device, включающий три необходимых объекта классов: Controller, Device (из пространства имен Leap) и Listener, кроме того, без мьютекса не обойтись. Вот мы и подошли ко второму способу получения кадров от устройства - прослушиванию. Наш класс устройства унаследован от класса Listener, который позволяет реализовать эту возможность, то есть мы получаем кадры от контроллера с периодичностью, соответствующей его работе. Когда контроллер готов передать кадр, класс Listener вызывает переопределенный нами метод onFrame и передает ему кадр (в параметре), выше мы упоминали этот метод. Кстати, зачем нам понадобился мьютекс? Дело в том, что при использовании прослушивания - функции обратного вызова - onFrame вызывается в многопоточном режиме. То есть каждый ее вызов осуществляется в независимом потоке. Поэтому нам необходимо позаботиться о потоко-безопасности в момент получения кадра от девайса, чему служит мьютекс. При прослушивании также можно игнорировать приход нового кадра (например, если прошедший кадр еще не обработан) и добавить его в историю (для последующей обработки). Возвратимся к нашему коду, к месту создания объекта нашего класса Device. После его создания для него устанавливается функция обратного вызова.

    Перерисовка

    Но самое интересное происходит в методе перерисовки. Сначала выполняются подготовительные действия: очищение экрана, установка текущих матриц для камеры, включение альфа-смешивания, возможности чтения и записи в буфер глубины, установка цвета для рисования. Затем начинается непосредственное рисование: мы получаем от устройства трехмерные вектора положения локтя и запястья и методом gl::drawLine рисуем между этими точками линию. Далее получаем количество пальцев и в цикле с помощью итератора пробегаем по контейнеру, их содержащему. В Leap Motion каждый палец состоит из четырех частей (фаланг): периферической, промежуточной, проксимальной и пястной. Хотя на большом пальце настоящей человеческой руки последняя фаланга отсутствует, здесь она есть, но имеет нулевое значение. Во вложенном цикле, обходя все фаланги, получаем координаты различных их частей: начало, центр, конец, направление. Координаты представлены в виде векторов (Vec3f). Также внутри этого подцикла осуществляется рисование фаланг с помощью метода drawLine, которому передаются найденные координаты. Дополнительно из первых фаланг формируется контейнер суставов (knuckles). Когда происходит выход из внешнего цикла, рисуются линии, соединяющие пальцы и образующие кисти рук. На этом веселье перерисовки заканчивается. Откомпиль и запусти прогу, задержи руки над сенсором, и в окне отобразятся очертания твоих конечностей.

    Итоги

    Leap Motion - революционный контроллер, он не только заменил сенсорный экран, но и подарил нам управление пространством, сделав еще более прозрачной границу между реальным миром и виртуальной реальностью. На уровне разработчика ПО мы получаем удобный программный интерфейс, позволяющий управлять всеми возможностями сенсора. Кросс-платформенные инструменты разработчика дают последнему доступ к устройству на множестве языков программирования, как компилируемых, так и интерпретируемых (пока среди последних только два - Python и JavaScript). Кроме того, API имеет стройную и понятную структуру: в каждый момент времени контроллер снимает изображение, формирует на основе его кадр и посылает на верхний уровень - в прикладную программу, где программист, распарсив кадр, работает с такими сущностями, как руки, пальцы, указатели (инструменты) и другое. Из-за наличия в устройстве двух камер оно часто монтируется на очки виртуальной реальности для создания эффекта дополненной реальности, что достигается благодаря наличию в изображениях, снимаемых камерами, измеренных значений яркости инфракрасного излучателя, а также калибровочных данных, необходимых для коррекции сложного объектива. В сегодняшней статье мы затронули тему создания прикладных решений, взаимодействующих с устройством посредством API. Тема эта очень обширна, и рассмотреть удалось далеко не все - за бортом остались жестикуляция, специальные движения, эмуляция прикосновения и много чего еще. Все это, а также многое другое, например использование контроллера в Windows и Web, интеграция с игровыми/графическими движками, может стать темой для разговора в ближайших статьях. Все зависит от тебя - пиши нам, требуй продолжения:). А пока - удачи во всех делах и до встречи на страницах «Хакера»!

    Цена вопроса - 4990 руб.

    Комплект поставки - само устройство, 2 USB шнура.

    Внеший вид.

    Когда я впервые взяла в руки коробку с подаренным мне Leap Motion , в башке крутилась одна-единственная мысль - что это, черт побери, вообще такое? Так как диалог полугодовой давности с обсуждением данной новинки электронного рынка выветрился из памяти начисто, а инструкции на русском языке не прилагалось, то пришлось лезть за помощью в гугл, который выдал мне примерно следующее. :)

    В теории. На практике, конечно, все несколько иначе. :)

    Само устройство выглядит примерно так, как на картинке, хотя габариты несколько больше: 8 см в длину и 3 в ширину. За счет прорезиненной подкладки должно устойчиво стоять на столе, хотя лично у меня его всегда несколько перекашивает:) К компьютеру подключается через кабель USB-USB 3.0, устанавливается между монитором и клавиатурой и спокойно работает на Windows 7.

    Многие пишут про какие-то особые тесты при подключении девайса, однако у меня ничего такого не было, кроме регистрации в Leap Motion Airspace, но об этом чуть ниже.

    Leap Motion - программное обеспечение.

    После того как система опознала инородное устройство и радостно оповестила о том, что оно готово к работе, я торжественно взмахнула рукой перед монитором, и.. чуда не произошло. :)

    Пришлось лезть на сайт https://airspace.leapmotion.com/ и скачивать оттуда Leap Motion Airspace - программу представляющую собой типичный сервис распространения игр и прочего ПО созданных для этого девайса.

    Скачала, поставила, прошла регистрацию, установила софт, начала тестировать. Первая программа - Orientation, демонстрирует наиболее эффектные возможности Leap Motion. Довольно необычно было видеть собственные верхние конечности в вот таком вот виде:

    Дальше на выбор - в Airspace Store имеются игры, программы для создания различных объектов, рисовалки, создатели музыки и прочие, не менее интересные вещицы. Разумеется, много платных, но и среди бесплатных есть во что поиграться.

    Пожалуй, самым неприятным открытием тут стало разделение софта для Mac и Windows, так что на некоторые программы обладателям "неправильной" системы придется только облизываться.

    Для этого идем в раздел Computer Controls и скачиваем там Touchless - для мака и винды соответственно.

    Leap Motion - настраиваем для нормальной работы.

    Дальше начинается самое интересное. :) Первоначально, чтобы хотя бы попасть по значку на рабочем столе мне потребовалось минут 5. Это было похоже на то ощущение, которое возникало во время первого использования компьютера - все страшно, щелкает и ни черта не работает. :) Так что на определенном этапе тыканья по экрану недоумение начало сменяться разочарованием.

    А потом пришло понимание того, что неплохо бы залезть в настройки, если таковые имеются. Настройки обнаружились в области уведомлений и представляли собой компактный значок "Жесты" . Щелкаем по нему правой кнопкой мыши (о, какое это блаженство, когда все работает сразу и как надо) и выбираем Открыть панель управления "Жесты".

    В открывшемся окне Жесты выставляем точную чувствительность пера и касания. Затем переходим на вкладку Параметры пера . Выбираем строчку Двойное касание Двойной щелчок и нажимаем Параметры .

    В новом окне ползунки Скорость и Расстояние двигаем до упора в сторону больше и тестируем результат в маленьком окошке с дверью. Если все сделано правильно и вы уже приноровились к двойному касанию - дверь откроется. Такую же процедуру проделываем и на вкладке Касание .