...

понедельник, 28 октября 2013 г.

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на странице компании(кнопка «подписаться»)


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends:



Комментариев нет:

Отправить комментарий