В этой статье аккумулирован опыт, включая определенные нюансы при создании стереоприбора на базе stereopi первой модели. С помощью «изделия» возможно делать стерео фото- и видео- картинки, смотреть на мир в стерео режиме, используя мобильный телефон и несложную vr гарнитуру(тот же cardboard). Прилагается образ для stereopi первого поколения для быстрого развертывания и использования.



Что такое stereopi


Об этой разработке неоднократно уже писалось как на Хабре (пост, пост), так и в других источниках. Но если коротко: stereopi — это compute module v.3 с обвесом в виде usb портов, выходом на hdmi, ethernet и, разумеется, 2-х синхронизированных csi камер для raspberry pi.

*На подходе уже обновленная версия второго поколенияstereopi v.2, но она пока не доступна, по крайней мере мне.

В принципе, на сайте stereopi представлена достаточно подробная инструкция, что куда втыкать и что куда загружать. Однако, несмотря на то, что все разжевано до мелочей, подводные камни начинают возникать по мере приближения к заветной цели — созданию стереоприбора — буквально на этапе подключения wi-fi. Кроме того, поместив compute module в stereopi и пришвартовав две камеры, становится непонятно как и куда это все поместить, «чтобы не торчало во все стороны».

Поэкспериментировав достаточно с usb донглами, корпусами и прочими аксессуарами, и был выработан определенный рабочий концепт, речь о котором и пойдет далее.

Как всё работает




Софт-начинка (основной образ для stereopi) представлен разработчиками stereopi, и надо признаться, что после обновления он стал достаточно прогрессивным. Доработанный web-интерфейс дополнен многочисленными опциями, которые делают жизнь удобнее. Добавлены кнопки создания фото-, видео- прямо из web-интерфейса, которых лично мне так не хватало. Помимо прочего, сам web-интерфейс оптимизирован и нет подвисаний при работе с тем же файловым менеджером даже при относительно не быстром wi-fi.

*Ранее автором самостоятельно предпринимались попытки доработать web-интерфейс, а также оптимизировать его загрузку, но это не пошло в мэйнстрим.
**Кроме того были проблемы с apt-get update, которые вызывали слишком много вопросов.

Итак, после запуска stereopi, она подключается к сети wifi, получает ip адрес. Далее к этому адресу можно подключиться как со стационарного ПК, так и со смартфона. Причем на последнем можно выбрать режим «без иконок» и наслаждаться стерео.

С чего начать собирать?


C корпуса конечно. Его можно напечатать на 3d принтере, а можно просто купить коробочку из дерева в каком-нибудь специализированном магазине. Данные коробочки, как правило, продаются для изготовителей шкатулок.

Например подойдет вот такая деревянная заготовка размерами — 10x10x6 см (в Москве продается в «Лео… до»:



Итого понадобятся:

  • stereopi v.1
  • compute module v.3 (non lite)
  • usb dongle (низкопрофильный)
  • две камеры csi для raspberry pi (лучше взять fish eye, т.к. угол обзора у них шире)
  • держатель для аккумуляторов 18650B (например такой)
  • 4 аккумулятора типа 18650B
  • понижающий преобразователь dc-dc (например такой — MP1584EN)
  • * cooler 12V, 0.1А (его можно запитать прямо от ног stereopi, взяв 5V)
  • комплект гаек с болтами для закрепления держателя батарей 18650 на размер m2 (например).

Несколько слов о usb-донглах




Несмотря на то, что в самом compute module уже есть встроенный wi-fi, но его качество оставляет желать лучшего. Поэтому лучше приобрести внешний usb-свисток и желательно, чтобы он не сильно выпирал из корпуса.

На известном китайском ресурсе есть на любой вкус и цвет. Но самое интересное начинается, когда пытаешься установить driver на linux систему stereopi. Большинство usb-донглов от китайцев работают из коробки только для систем на базе windows.

Тем не менее, эта проблема зачастую преодолима, и при установке драйверов на stereopi необходимо не забывать про то, что система работает в режиме read-only и ее перед любыми изменениями необходимо перемонтировать — ссылка.

В данном проекте используется Wi-Fi адаптер TP-LINK Archer T2U Nano и под него уже установлен драйвер на прилагаемом к статье образе.

Несколько слов о держателях для аккумуляторов 18650B


Здесь нет ничего особенного и можно использовать как держатель на 4 аккумулятора, так и на меньшее количество, главное помнить, что stereopi необходимо 5V питания.

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

И все же мой совет — использовать нормальные держатели, немного переплатив за них:



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

Собрать все вместе


Для камер потребуется просверлить отверстия в лицевой части коробки. Разместить камеры на расстоянии 65 мм, закрепив их на болтики m2.



*Вообще для разного режима стереосъемки разработчики продают отдельно держатели для камер с уже выверенными размерами (ссылка). Но для меня это показалось дороговато для нескольких кусочков фанеры.

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



К днищу корпуса внутри крепится cooler, а также размещается понижающий преобразователь:



Stereopi крепится опять же на болты m2 с противоположной стороны лицевой панели коробочки.

Заливаем образ


Чтобы запустить аппарат, сперва необходимо загрузить образ на stereopi.

Небольшая ремарка — необходимо уточнить, что никакой sd карты не требуется, так как образ заливается непосредственно во встроенную память compute module через stereopi.

Образ можно взять из данной статьи либо скачать образ, который предлагается на сайте разработчиков stereopi. Но в последнем случае потребуется самостоятельно искать и устанавливать драйвер для usb dongle, а также править параметры wi-fi сети.

Двигаясь далее, предварительно потребуется установить на ПК rpiboot — программу, позволяющую общаться со stereopi.

Далее — поставить перемычку-джампер в usb-slave, подключить кабель mini-usb, соединив stereopi с ПК.



*В данном случае stereopi работает в режиме slave и при подключении определится как обычная usb-флэшка (после заливки образа).

Перенесение образа на stereopi можно производить разными программами, но я по-старинке использую win32diskimager.

После заливки образа можно изменить параметры wi-fi сети, к которой будет подключаться stereopi, сделав это в файле cosmostreamer.conf:



*Для этого необходимо еще раз запустить stereopi с установленным джампером на usb-slave.

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

Как обычно — это подавая питание на 5V VCC вход stereopi, а не через mini-usb кабель.

Также, что важно, при питании сoolerа необходимо помнить, что на stereopi v.1 gpio гребенка представлена реверсивно, то есть расположение пинов не так как у стандартной raspberry pi.



Этот вопрос также обсуждался автором на форуме здесь.

После прогрузки залитого образа stereopi будет искать сети boss либо boss1 (пароль одинаковый — 1234554321) и пытаться к ним подключиться.

Фото и видео создается при нажатии прямо на экране соответствующих кнопок.

Далее результаты попадают в папку /mnt/DCIM, до которой можно дотянуться прямо из браузера, воспользовавшись встроенным tiny file manager:



И, что самое приятное, скачать на пк или смартфон прямо из браузера:



В заключение


Сваять свой стерео фото-, видео- аппарат, собрав по пути несколько интересных шишек, дорогого стоит.

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

Также интересно как поведет себя stereopi с образом предустановленного opencv и элементами дополненной реальности. Но это, как говорится, совсем другая история.

Образ для stereopi — скачать (2 Гб, после распаковки 15,3 Гб).

Комментарии (8)


  1. akaAzazello
    21.08.2021 19:08

    Можно добавить, что Waveshare выпускает специальную стерео-камеру на базе IMX219(aka Camera v2.1). Сенсоры более-менее дают одинаковую картинку, есть встроенный датчик Холла (для gimbal), можно поменять линзы на более широкие (как я понимаю, стандартный M12 используется).

    Но в любом случае возможно расфокусировка на расстояниях, отличных от бесконечности, так что может лучше сразу использовать пару камер с моторизированным фокусом, вроде Arducam IMX219. Ну и если бюджет позволяет, то и на базе сенсора с global shutter ;)


    1. dcoder_mm
      21.08.2021 19:28

      Но в любом случае возможно расфокусировка на расстояниях, отличных от бесконечности

      У IMX219 размер пикселя 1.12мкм, такой же как у IMX214, которая стоит на Ingenuity и делает цветные фоточки. При этом камера на Ingenuity имеет достаточно короткое гиперфокальное расстояние, чтобы вещи были четкими и вблизи и на горизонте. Получилось на Марсе, получится и на Земле.


      1. akaAzazello
        21.08.2021 20:05

        Извините, я не понял, как вручную управляемая оптическая система камер RPi v1.x/2.x связана с таковой у Ingenuity . И причём тут размер пикселя?


        1. dcoder_mm
          21.08.2021 20:08
          +1

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


          1. akaAzazello
            21.08.2021 20:44
            -2

            Вы что-то путаете в самом базисе - у камер для RPi нет фиксированного фокуса! В оригинальных фокус меняется специальным ключём (или пассатижами под рукой - но не рекомендую), во многих выпущенных недавно сторонними компаниями - моторизированный по I2C.


            1. dcoder_mm
              21.08.2021 21:17
              +3

              Под "фиксированным" я имел ввиду, что он не меняется в процессе работы камеры. Что как раз верно для "IMX219-83 Stereo Camera".

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

              Возьмем для примера ту стерео-камеру.
              Размер пикселя 1.22мкм.
              Фокусное расстояние 2.6мм
              Диафрагменное число не указано, но там внизу таблица и для похожих FOV и той-же матрицы оно 2.0.
              Что дает круг нерезкости из-за дифракции = 2.44*2.0*0.55 = 2.7мкм (пара пикселей).

              Гиперфокальное расстояние, если мы хотим круг нерезкости не больше чем ограничение дифракции:

              H = \frac{2.6^2}{2.0*(2.7*10^{-3})} = 1252\ мм

              Значит, если установить фокус на 1.25 метра, то в фокусе будет всё от H/2 = 62 см до бесконечности. Совсем вблизи поснимать не выйдет, но всё же.


  1. Moskus
    21.08.2021 19:37

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


  1. Soorin
    23.08.2021 09:32

    Основная беда цифрового стереофото — в отсутствии стандартного удобного средства просмотра фотографий стерeограмм — особенно, в компании. Ни 3D-камеры FujiFilm, ни даже 3D-камеры Samsung не совместимы с форматами файлов, которые может показывать гарнитура Samsung GearVR (ныне не выпускающаяся и не поддерживаемая телефонами младше Galaxy S10). Так что снять-то можно, а вот самому посмотреть (кроме, как на камере), да тем более — гостям показать… Увы.
    Отец-оптик снимал стереопары с 50х годов самодельными отъюстированными стереофотоаппаратами — и посмотреть их и тогда было, и сейчас можно только в (самодельном) стереоскопе. Я снимал стереокамерой FujiFilm Real3D W3 — посмотреть можно только на камере, или пересобирать каждый файл специально под GearVR для индивидуального просмотра.