К содержимому
  1. Главная
  2. Блог
  3. Многокамерные модули Jetvariety: руководство пользователя

Многокамерные модули Jetvariety: руководство пользователя

29 декабря 2022 · По материалам Arducam

Введение

Arducam 2MP*2 Stereo Camera MIPI Module — модуль стереокамеры с двумя синхронизированными монохромными сенсорами OV2311 с глобальным затвором (2 × 2 Мп). Он подключается напрямую к разъёмам MIPI CSI-2 на Raspberry Pi и Jetson Nano и работает на этих платформах с драйвером камеры V4L2. Модуль легко встроить в собственную аппаратную разработку или использовать с собственными алгоритмами на встраиваемых системах — для измерения глубины, 3D-картографирования, SLAM и других задач.

Что такое Camarray

Camarray — серия встраиваемых стереокамер и решений с несколькими камерами от Arducam. Это развитие платы Arducam Sync Stereo Camera HAT: Camarray подключает до 4 синхронизированных модулей камер к встраиваемой системе — Raspberry Pi, Jetson Nano, Xavier NX — так, что система видит их как одну камеру в одном слоте. С Camarray число камер больше не ограничено числом разъёмов на основной или несущей плате, а драйверы камер от Arducam делают многокамерные приложения гибче.

ПримечаниеОграничения платы Camarray HAT:
  1. Плата Camarray HAT не поддерживает цифровое панорамирование в режиме объединения с половинным разрешением и программное управление скоростью панорамирования.
  2. Плата Camarray HAT не обрезает кадр вдвое (когда вдвое уменьшаются и горизонтальное разрешение каждой камеры, и угол обзора), а сжимает его: горизонтальное разрешение каждой камеры уменьшается вдвое, а угол обзора не меняется. Поэтому поддержка режима сканирования ей не нужна.

Общие характеристики

Сенсор

Модель сенсораOV2311
Тип затвораГлобальный затвор
Активные пиксели(1600 × 2) × 1300
Разрешение2 × 2 Мп
Оптический формат1/2.9"
Размер пикселя3 × 3 мкм
Цветной фильтрНет (монохромный)
Структурная схема сенсора OV2311
Структурная схема OV2311

Объектив

Сменный объективДа
ДиафрагмаF2.8
ФокусировкаРучная фокусировка
Дистанция фокусировкиОт 30 см до бесконечности (при фокусировке на бесконечность)
Фокусное расстояние2,8 мм
Угол обзора83° по горизонтали
Крепление объективаM12
Чувствительность к ИКБез ИК-фильтра (чувствителен к ИК-излучению)
3D-модель объектива стереокамеры OV2311

Плата камеры

Размер платы камеры105 × 24 мм
Чертёж платы стереокамеры OV2311
Механический чертёж
№ выводаНазваниеТипОписание
13V3ПитаниеПитание 3,3 В
2FSINВходВход кадровой синхронизации
3STBВыходВыход стробирования светодиода
4GNDЗемляЗемля
53V3ПитаниеПитание 3,3 В
6SDAВход-выходДанные последовательного интерфейса SCCB (вход-выход)
7SCLВходТактовый вход последовательного интерфейса SCCB
8GNDЗемляЗемля

Разъём и шлейф

Интерфейс разъёмаMIPI CSI-2, 15 контактов, 2 линии
Длина шлейфа150 мм (15 контактов), 150 мм (15–22 контакта)
Ответный разъёмSFW15R-2STE1LF
№ выводаНазваниеОписание
1GNDЗемля
2CAM_D0_NЛиния данных MIPI 0 (−)
3CAM_D0_PЛиния данных MIPI 0 (+)
4GNDЗемля
5CAM_D1_NЛиния данных MIPI 1 (−)
6CAM_D1_PЛиния данных MIPI 1 (+)
7GNDЗемля
8CAM_CK_NТактовая линия MIPI (−)
9CAM_CK_PТактовая линия MIPI (+)
10GNDЗемля
11CAM_IO0Включение питания
12CAM_IO1Светодиодный индикатор
13CAM_SCLI2C SCL
14CAM_SDAI2C SDA
15CAM_3V3Вход питания 3,3 В

Работа с официальным драйвером V4L2

Формат видеоGREY (8 бит) / Y10P (10 бит)
Выходной интерфейсПоследовательный MIPI, 2 линии
Форматы выводаМонохромный RAW, 8/10 бит

Частота кадров (регулируется в пределах 5–50 к/с)

Raspberry PiJetson Nano
RAW8 (GREY)3200 × 1300 при 50 к/с3200 × 1300 при 50 к/с
RAW10 (Y10P)3200 × 1300 при 50 к/с3200 × 1300 при 50 к/с

Быстрый старт

ПримечаниеНа Xavier NX всё делается так же, отличается только пакет драйвера.

Подключение оборудования

Модуль стереокамеры Arducam на сенсорах OV2311

Проверка драйвера

Этот шаг нужен, чтобы проверить, не установлены ли другие драйверы. Если вы уверены, что других драйверов нет, пропустите его и переходите к установке драйвера Arducam V4L2.

1. Типы драйверов

Для Jetson есть три драйвера:

  • официальный драйвер IMX219;
  • драйвер Arducam IMX477;
  • драйвер Arducam V4L2.
ПримечаниеЭти три драйвера конфликтуют друг с другом: работать может только один из них.

1) Драйверы Arducam IMX477 и Arducam V4L2 при установке автоматически заменяют другие драйверы, удалять их вручную не нужно.

2) Чтобы использовать официальный драйвер IMX219, удалите драйвер Arducam IMX477 или Arducam V4L2 командой:

sudo dpkg -r arducam-nvidia-l4t-kernel

3) Драйвер Arducam IMX477 устанавливается так же, как драйвер Arducam V4L2, отличается только пакет драйвера (.deb).

Этот модуль работает с драйвером Arducam V4L2.

2. Проверьте драйвер

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

Проверка официального драйвера IMX219:

dmesg | grep imx219
Проверка официального драйвера IMX219
Пример: ответа нет — официальный драйвер IMX219 не установлен.

Проверка драйвера Arducam IMX477:

dmesg | grep imx477
Проверка драйвера Arducam IMX477
Пример: ответа нет — драйвер Arducam IMX477 не установлен.

Проверка драйвера Arducam V4L2:

dmesg | grep arducam
Проверка драйвера Arducam V4L2
Пример: ответ есть — драйвер Arducam V4L2 установлен. Сообщение Failed означает, что камера Arducam IMX477 не подключена или подключена неправильно.

Установка драйвера Arducam V4L2

Подробная инструкция — на этой странице.

Первый запуск

1. Установите модуль V4L2 для Python

Для Python 3.x:

wget https://bootstrap.pypa.io/get-pip.py  
Загрузка get-pip.py

Введите следующую команду и нажмите Enter — загрузка займёт несколько минут.

sudo python3 get-pip.py  
Установка pip для Python 3
Установка pip завершена
 sudo pip3 install v4l2-fix
Установка модуля v4l2-fix
ПримечаниеВ модуле v4l2 для Python 3.x есть известная ошибка, которую нужно исправить вручную. При импорте модуля v4l2 в Python 3.x выводится такое сообщение:
Ошибка при импорте модуля v4l2 в Python 3

Как исправить ошибку, описано в баг-трекере Launchpad проекта python-v4l2 (ошибка № 1664158).

2. Скачайте пример кода

git clone https://github.com/ArduCAM/MIPI_Camera.git  
Клонирование репозитория MIPI_Camera
Репозиторий MIPI_Camera скачан

3. Проверьте, определилась ли камера

ls /dev/video0
Устройство /dev/video0 в системе

4. Проверьте поддерживаемые форматы видео

v4l2-ctl --list-formats-ext

5. Вывод изображения в реальном времени

Если вы работаете с Jetson удалённо (например, через MobaXterm), для вывода изображения выполните следующую команду (один раз):

export DISPLAY=:0.0

Перейдите в каталог программы:

cd MIPI_Camera/Jetson/Jetvariety/example/

Сейчас OV2311 поддерживает такие команды:

RAW8:

python3 arducam_displayer.py -f GREY --width 3200 --height 1300 -d 0 --fps

RAW10:

python3 arducam_displayer.py -f Y16 --width 3200 --height 1300 -d 0 --fps
GREY — для RAW8, Y16 — для RAW10. Параметры --width и --height задают ширину и высоту входного изображения. Параметр --fps выводит текущую частоту кадров; если она не нужна, уберите этот параметр.

Например, выполните команду:

python3 arducam_displayer.py -f GREY --width 3200 --height 1300 -d 0 --fps

В командной строке в реальном времени обновляется частота кадров.

Вывод изображения со стереокамеры

Чтобы закрыть окно с изображением, нажмите Ctrl+C.

ПримечаниеНастройки разрешения экрана могут влиять на частоту выводимых кадров.
Пропадают кадры?Выберите файл Arducam/arducam_displayer.py, щёлкните по нему правой кнопкой мыши и откройте его в текстовом редакторе. Значение, обведённое на рисунке ниже, — число столбцов в разрешении вывода. Если кадры пропадают, попробуйте его уменьшить.
Открытие arducam_displayer.py в текстовом редакторе
Параметр разрешения вывода в arducam_displayer.py

6. Приём данных без вывода изображения

Сохранение RAW-изображения:

v4l2-ctl --set-fmt-video=width=3200,height=1300,pixelformat=GREY --set-ctrl bypass_mode=0 --stream-mmap --stream-count=1 --stream-to=ov2311.raw -d /dev/video0

RAW8:

v4l2-ctl --set-fmt-video=width=3200,height=1300,pixelformat='GREY' --stream-mmap --stream-count=-1 -d /dev/video0

RAW10:

v4l2-ctl --set-fmt-video=width=3200,height=1300,pixelformat='Y10P' --stream-mmap --stream-count=-1 -d /dev/video0
Приём данных без вывода изображения на Jetson Nano

7. Настройка экспозиции

Откройте два терминала: в первом выполните команду вывода изображения, во втором — команду настройки экспозиции.

Настройка экспозиции:

v4l2-ctl -c exposure=1000

Просмотр параметров экспозиции (минимум, максимум, значение по умолчанию):

v4l2-ctl -l
Список параметров камеры в выводе v4l2-ctl -l

Например, выполните во втором терминале команду:

v4l2-ctl -c exposure=6000
Частота кадров после изменения экспозиции

Чем больше время экспозиции, тем ярче изображение и ниже частота кадров.

8. Настройка усиления

Откройте два терминала: в первом выполните команду вывода изображения, во втором — команду настройки усиления.

Настройка усиления:

v4l2-ctl -c gain=12

Просмотр параметров камеры (минимум, максимум, значение по умолчанию):

v4l2-ctl -l
Параметр усиления в выводе v4l2-ctl -l

Например, выполните во втором терминале команду:

v4l2-ctl -c gain=200
Частота кадров после изменения усиления

Чем больше усиление, тем ярче изображение; частота кадров при этом не меняется.

9. Изменение частоты кадров

Чтобы изменить частоту кадров, введите команду, подставив вместо «X» нужное значение:

v4l2-ctl -c frame_rate=X

Например, нужно установить 40 к/с. Откройте два терминала и в первом введите команду:

python3 arducam_displayer.py -f GREY --width 3200 --height 1300 -d 0 --fps
Текущая частота кадров в терминале
В последней строке в реальном времени выводится текущая частота кадров; для RAW8 по умолчанию — 30 к/с.

Во втором терминале введите команду для изменения частоты кадров:

v4l2-ctl -c frame_rate=40
Частота кадров после изменения
Частота кадров изменилась на 40 к/с.

Чтобы посмотреть диапазон частоты кадров в текущем режиме вывода, введите во втором терминале команду:

v4l2-ctl -l
Диапазон частоты кадров в выводе v4l2-ctl -l
Частоту кадров можно менять от 5 до 50 к/с. Если заданное значение больше максимального, камера работает на максимальном; с минимальным — так же.
ВниманиеИз-за ограничений производительности платформы кадры могут пропадать. Например, при частоте 50 к/с на экран выводится не больше 43 к/с. Реальную частоту входящих кадров можно проверить, принимая данные без вывода изображения. Значения частоты кадров здесь не мгновенные: они рассчитываются итеративно с учётом предыдущих значений и меняются медленно.
Частота кадров при выводе изображения
Частота кадров при приёме данных без вывода изображения

Вывод изображения в VLC

Откройте медиаплеер VLC.

Медиаплеер VLC

1. Выведите изображение

Нажмите Ctrl+C.

Окно открытия устройства захвата в VLC

В поле «Название видеоустройства» выберите «/dev/video0» и нажмите «Воспроизвести».

Выбор устройства /dev/video0 в VLC
Изображение со стереокамеры в VLC

2. Настройте экспозицию, усиление и частоту кадров

Нажмите Ctrl+E и на вкладке «v4l2 control» отрегулируйте ползунками параметры «Exposure» (экспозиция), «Gain» (усиление) и «Frame_rate» (частота кадров).

Настройка экспозиции, усиления и частоты кадров в VLC
Изображение OV2311 после настройки экспозиции и усиления

Вывод изображения в MPlayer

1. Установите mplayer

sudo apt-get install mplayer

2. Выведите изображение

mplayer tv:// -tv driver=v4l2:device=/dev/video0

Не вводите эту команду в удалённом сеансе, иначе программа зависнет.

Изображение со стереокамеры в mplayer на Jetson Nano

Или введите следующую команду, чтобы масштабировать изображение:

mplayer tv:// -tv driver=v4l2:device=/dev/video0 -zoom -x 1280 -y 520
Параметры -x и -y задают ширину и высоту масштабированного изображения; меняйте их пропорционально.
Масштабированное изображение с двух камер OV2311 в mplayer

Что дальше

После быстрого старта изучите раздел «Руководство по применению» — например, об использовании драйверов камер MIPI Arducam для userland.

Руководство по применению

Инструкция — на этой странице.

Ещё по теме

Запросить цену

Укажите количество — пришлём коммерческое предложение.