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на странице компании(кнопка «подписаться»)
    AVI
    Company
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 33

      +4
      Не вижу препятствий включать 2 такие камеры в ноутбуки над тачпадом.
      Ждём производителей, а там и софт подтянется до удобного юзабилити.

      Можно будет руками слепить фигурку из виртуального пластилина и распечатать на 3d принтере.
      +14
      разъемы мама/папа немного по другой аналогии называются и то что у вас подписано как «отэц» им быть не может )
        +2
        «папа» написанный через «Э», мною был расшифрован как «основы теории электрических цепей» :)
          0
          Фотки перепутал. Писал в 4 утра :)
        +1
        На Калькулона похож
          +13
          image
          Не только.
          +4
          Пока работа с чайником ограничивается составлением документации(что, несомненно довольно скучно для хабра
          Зато таможня и центральные сми сделали нехилый перфоманс на тему чайников с wi-fi, который немало повеселил аудиторию Хабра.
          • UFO just landed and posted this here
              +1
              Первая фотка напомнила робота из фильма «Короткое замыкание». :)
                0
                > Картинка с двух камер выглядит вот так забавно

                На время наступающего Хеллоуина вам стоит отложить свой замечательный макро-объектив и использовать гляделки из Leap Motion. Я серьёзно.
                  0
                  Получается, что крутое инновационное устройство, «будущее здесь» и т.д. — просто две монохромные веб-камеры?
                    0
                    Ага, и соответствующий софт.
                      0
                      Хочу, чтобы этот софт работал с любой парой камер.
                    +3
                    Наш девайс. Оцените трекинг в случае, когда пальцы касаются друг друга.

                      0
                      Приличный latency. Где-то 150-200ms на глаз. Простите я не специалист это типично для подобных устройств или просто болезнь прототипа?
                        0
                        Latency чувствуется на 2ом ролике. Причины 2 — ранний прототип (датировано февралем) и медленный монитор. На первом ролике latency практически нет. Трекинг идет на 140-160 fps, не более 3-4 мс на кадр, что позволяет получить ОЧЕНЬ быструю реакцию. В дополнение ко всему устройство позволяет вести съемку под 1k FPS. Пруфвидео:



                        Но, несомненно, главное достоинство — умение трекать пальцы в случае, когда они соприкасаются друг с другом, что позволяет реализовать такие жесты, как pinch-to-zoom и grab-and-place
                      +1
                      Хммм. А обработка идёт на проце у этой штукенции? Это же достаточно ресурсоёмко, одно ядро почти полностью должно выкушивать.
                        +1
                        Ага, мобильный i5 грузит около 60-70% на одно ядро при работе.
                        0
                        Видимо поэтому и поставили USB3.0, такая скорость недостижима для 2.0,

                        Отнюдь, USB 2.0 High-speed поддерживает скорость передачи данных до 480 Мбит/с
                          +1
                          480 на хаб, а не на устройство, в том и беда. лимит на устройство — 240 Мбит/~30Мбайт
                          0
                          хм, как же тогда достигается скорость чтения/записи с usb харда в 50 — 55 МБ/с?

                          p.s. ответ на комментарий vorphalack
                            +1
                            Что-то мне кажется, что скорость очень сильно зависит от реализации контроллера. Лично у меня есть внешний винт 3.0. При подключении к 2.0 скорость никогда не превышает 30Мб/с. Переключаю на 3.0 — и получаю 60-70-80. Хотя много раз слышал от друзей, что по 2.0 они копировали и 40Мб/с.
                              0
                              Может эта пиковая скорость? Винда вполне может тупить пару секунд, а потом показать скорость больше реальной.
                                0
                                Клялись и божились, что засекали секундомером :-) Хотя не могу утверджать, лично не видел.
                                  0
                                  В своё время проверил на практике:
                                  HDD через USB 2.0 выдавал 32,7 / 36,1 МБ/сек (чтение/запись соответственно);
                                  SSD через USB 2.0 — 35,8 / 37,3;
                                  SSD через USB 3.0 — 109,7 / 198,9;
                                  Он же в SATA 2 — 134,6 / 264,4;
                                  Он же в SATA 3 — 261,6 / 502,7.
                                  Так что, несмотря на теоретические ограничения, по факту скорость отличается от ожидаемой.
                              0
                              Это же Джонни 5-ый из «Короткого замыкания»! :))))

                              image
                                0
                                Ты зачем у дкодре игрушку отобрал и сломал?
                                  0
                                  Он сам ее сломал, чесслово!
                                  0
                                  каждая статья как минисобытие! жду очередных постов про «умный» чайник или разбор очередных высокотехнологичных гаджетов
                                    0
                                    А можно ли использовать LeapMotion в своих собственных программах?
                                    0
                                    Интересно, а он только руки понимает, или ему еще что-нибудь можно показать? (гусары, молчать)

                                    Only users with full accounts can post comments. Log in, please.