Восемь камер одновременно на Raspberry Pi Compute Module 4

Предыстория
Зачем это нужно
Сложно ли запустить восемь камер одновременно на одном Raspberry Pi CM4?
Нет, если у вас есть синхронизированная плата Arducam Camarray HAT на четыре камеры. Понадобятся всего две такие платы по четыре камеры на каждой. Arducam уже собрала всё нужное в готовый комплект.

Поводом для этого руководства стал опыт одного из пользователей, который недавно поделился с Arducam своей сборкой. Но и в целом спрос на системы с несколькими камерами есть всегда: 3D-сканеры, камеры на дронах, камеры IoT, стереозрение роботов, фотоловушки для съёмки дикой природы, круговое видеонаблюдение на 360°, распознавание лиц и объектов, прямые трансляции и т. д.
По данным Arducam, если говорить о нескольких камерах, которые работают буквально «одновременно»* на одном Raspberry Pi, оборудование Arducam пока остаётся единственным решением, которое это умеет. К этому результату Arducam пришла за несколько лет через три крупных шага: плата-адаптер для нескольких камер, синхронизированная стереокамера HAT и Camarray.
\* Что значит «одновременно»:
- На одной плате HAT камеры CAM0 и CAM1 полностью синхронны, CAM2 и CAM3 — тоже; между парами CAM0/1 и CAM2/3 есть задержка в один кадр.
- В схеме с восемью камерами из этого руководства две платы HAT между собой полностью НЕ синхронизированы: задержка зависит от многих факторов конкретной системы.
Как развивались решения Arducam для нескольких камер

Этап 1
Плата-адаптер Arducam для нескольких камер решила базовую задачу — съёмку несколькими камерами с разных ракурсов: к одной плате Pi можно подключить до четырёх камер.
Но адаптер включает только одну камеру за раз, между камерами приходится переключаться. Опытным пользователям Raspberry Pi нужна одновременная работа — настоящая стереокамера для Raspberry Pi 3, 4 и других стандартных плат Pi. Решить это мешала аппаратная конструкция: у стандартных моделей Raspberry Pi только один порт камеры. Можно синхронизировать камеры по сети, но тогда на каждую камеру нужен свой Raspberry Pi, а снимки всё равно делаются не строго в один момент — между кадрами возникают сдвиги движения и артефакты.
Этап 2
Затем Arducam выпустила плату-стереокамеру HAT для Raspberry Pi. К одной стандартной плате Pi через неё подключаются две камеры OV5647 на 5 Мп или две камеры IMX219 на 8 Мп и снимают фото или видео одновременно. Главное — в этой бинокулярной схеме обе камеры полностью синхронизированы.
Этап 3
Следующим шагом стала Camarray — линейка Arducam для работы с несколькими камерами на Raspberry Pi, Jetson Nano, Xavier NX и других платформах, в которую входят и аппаратная, и программная части. Аппаратная часть снимает ограничение по числу физических разъёмов камер: к одному разъёму подключается до четырёх одинаковых камер MIPI. Программная часть позволяет выводить на экран и захватывать видео со всех подключённых камер и даже работать с сенсорами, которые официальные драйверы не поддерживают.
Герой этой статьи — комплект Arducam из четырёх камер — представляет самую свежую версию Camarray. Он ещё дальше расширяет возможности работы с несколькими камерами и вдвое увеличивает число подключаемых модулей: четыре синхронизированных модуля камер MIPI работают через один разъём MIPI CSI-2.
Приступаем
Теперь за дело — это проще, чем пожарить яичницу.

Что понадобится
Всё, что нужно для сборки.
Оборудование
- 1 × Raspberry Pi Compute Module 4
- 1 × несущая плата (для стабильной работы настоятельно рекомендуется плата ввода-вывода Raspberry Pi CM4 IO Board)
- 2 × комплект Arducam из четырёх камер на 8 Мп (Quadrascopic Camera Bundle Kit). В каждый комплект входят:
- 1 × плата Arducam Camarray HAT
- 4 × камера IMX219 на 8 Мп
- 4 × шлейф FPC с 15 на 22 контакта, 15 см
- 1 × шлейф FPC с 15 на 22 контакта, 30 см
- 1 × шлейф FPC с 15 на 22 контакта, 7 см
- 1 × набор винтов
Программная среда
- ARM (Raspberry Pi CM4)
- ОС: Raspberry Pi OS Bullseye
Порядок действий
Переходим к «приготовлению».
Подключение и питание
- Подключите выход MIPI TX каждой платы Camarray HAT к плате ввода-вывода: одну — к CAM0, другую — к CAM1.
- Подключите плату ввода-вывода Raspberry Pi CM4 к монитору.
- Подайте питание на обе платы Arducam Camarray HAT.
Питание на платы HAT можно подать двумя способами:
- через кабель USB Type-C;
- от Raspberry Pi — установив плату прямо на GPIO (5 В и GND) или через двухконтактный кабель питания.
Затем включите питание платы ввода-вывода Raspberry Pi CM4.

Настройка
sudo vi /boot/config.txt
Добавьте в файл конфигурации строки:
dtoverlay=imx219
dtoverlay=imx219,cam0

Запуск нескольких камер
Откройте два терминала.
В первом терминале:
libcamera-still -t 0 --camera 0
Во втором терминале:
libcamera-still -t 0 --camera 1

Полная демонстрация — в видео на YouTube.


