LeapMotion. Что внутри?

от автора

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

Узнав о том, что в контроллере LeapMotion используются две камеры, мы тут же его заказали «на потыкать».


Думаю, о том, что такое LeapMotion если не знают, то хотя бы слышали все. Если все-таки не слышали — то это маленькая коробочка-контроллер, которая воспринимает движения рук, и позволяет этими самыми движениями управлять компьютером. Вот ролик, в котором показано как это происходит:

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

Общупав его со всех сторон, выявляется первый вариант вскрытия — резиновая наклейка в нижней части, которая легко отклеивается:

Под ней обнаруживаются несколько винтов:

Который естественно тут же выкручиваются, и… и ничего не происходит. Устройство выглядит таким же монолитом как и прежде. Хорошо, зайдем с другой стороны в прямом и переносном смысле:

Темная поверхность на лицевой части — непрозрачный ИК-проницаемый пластик. Он тоже на что-то приклеен, но медленными движениями термофена его удалось освободить от объятий клея и корпуса. Убираем его в сторону, и видим ГЛАЗА:

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

Она держится на четырех шурупах. Откручиваем их, снимаем верхнюю плату, и получаем доступ к нижней:

Вот она-то, вместе с черным пластиковым вкладышом и держится теми винтами, что мы видели ранее. Хорошо что мы их уже выкрутили 🙂
Контрольное включение, проверяем корректную работу после разборки:

Все нормально. Можно играться дальше.

При соединении платы составляют вот такой бутерброд:

Соединяются платы вот таким разьемом(часть отэц):

И другая часть:

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

На ней расположен контроллер CYUSB301X:

Это 32-битный ARM9 контролер от Cypress. 200МГц, USB3.0 и 2.0, OTG. Рассчитан как раз на работу с картинками и видео.
USB3.0(интересно зачем, неужели 2.0 не хватило бы?) разьем:

Рядом расположился MOSFET:

И два больших конденсатора:

Больше на этой стороне ничего интересного нет. Смотрим на верхнюю сторону первой платы:

Это флеш-память MXIC 25L3206E, SPI-интерфейс, 32 мегабита. В ней хранится прошивка контроллера. Разработчики почему-то не стали использовать фирменную фишку кипрессовских контроллеров — загрузка прошивки по USB. Может быть, для ускорения загрузки?
Разведенный UART:

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

К сожалению, он молчит в него как партизан — ни единого байтика.
Так что, посмотрим на что-нибудь более интересное, например на один из трех инфракрасных светодиодов:

Рядом с ним — по видимому, обвязка для управления им — в режиме ожидания светодиоды заметно гасят яркость.
А вот еще один, центральный светодиод:

Единственное отличие — немного другая форма линзы. Рядом с ним — точно такая же обвязка.

Оставшаяся плата — довольно скучная. Две камеры с объективами «рыбий глаз», да разъем.
Еще раз удивляемся ощущению рожицы с глазами-камерами, и ртом-разьемом:

Думаю, разработчики не случайно остановились на именно таком расположении компонентов. °-°
Камеры черно-белые, разрешением всего 640×480, но зато могут выдавать 60 кадров в секунду.

Посчитаем. 0.3 мегапикселя, на 60 кадров, две камеры, без сжатия… 640*480*60*2=35Мбайт/сек. Видимо поэтому и поставили USB3.0, такая скорость недостижима для 2.0, а разработать сжатие было дороже(в накладных расходах), чем поставить новый чип.
Впрочем, в режиме USB2.0 устройств тоже работает, но снижает частоту кадром — реакция становится задумчивее.

Хотел посмотреть на матрицу — но объективы камер были заклеены герметиком:

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

Выводы

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

А вот на компе картинка обрабатывается, по двум изображениям строится карта глубин:

И создается массив точек, с которым уже работают программы:

Работать с камерой можно и без использования родного ПО — добрые люди разобрали протокол и написали программки для работы с ним.

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

Напоследок — забавный двухцветный светодиод:

Напоминаю, если вы не хотите пропустить эпопею с чайником и хотите увидеть все новые посты нашей компании, вы можете подписаться на imageна странице компании(кнопка «подписаться»)

ссылка на оригинал статьи http://habrahabr.ru/company/avi/blog/199230/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *