Карта глубины на любой модели Raspberry Pi с платой стереокамеры Arducam HAT и OpenCV — без Compute Module
Стереозрение для Raspberry Pi
Большинство живых существ видят мир двумя глазами, а большинство моделей Raspberry Pi — нет: у стандартной Raspberry Pi только один порт камеры. Как ни старайся, работа с несколькими камерами и стереозрением на Raspberry Pi шла со скрипом, пока Arducam не выпустила плату HAT для синхронизированной стереокамеры. Она позволяет одновременно подключить две камеры Pi, а плата Raspberry Pi при этом «думает», что подключена одна.
Впрочем, стереокамера на платформе Raspberry Pi и раньше была возможна: с Raspberry Pi Compute Module и StereoPi двухкамерную систему вполне можно использовать. Но было бы здорово получить всё это и на обычной потребительской Raspberry Pi, например Raspberry Pi 3/4.
С этой задачей справляется плата стереокамеры Arducam HAT. Недавно в Arducam собрали на ней систему построения карты глубины: программную часть взяли из OpenCV, аппаратную — плату стереокамеры Arducam. Результат такой же, как у описанной выше связки.
OpenCV и построение карты глубины
OpenCV (Open Computer Vision) — огромный набор библиотек для компьютерного зрения в реальном времени. Он прост в использовании и распространяется с открытым исходным кодом, поэтому очень популярен у разработчиков. Если есть два снимка одной сцены, OpenCV извлекает из них информацию о глубине и с помощью несложной математики строит карту глубины.
Карта глубины похожа на карту рельефа (например, топографическую), только без горизонталей. Объекты на разном расстоянии окрашены в разные цвета, поэтому по карте сразу видно, что впереди, а что позади. Карта глубины добавляет камере «интеллекта»: она получает не только изображение, но и дополнительную информацию. Данные о глубине пригодятся во многих проектах, например в робототехнике.
Примеры карт глубины
Несколько карт глубины, построенных в Arducam с платой стереокамеры HAT:

Руководства по построению карты глубины с платой стереокамеры Arducam HAT
Подробное руководство по получению карты глубины на Raspberry Pi — в документации Arducam.
Вопросы и ответы
Можно ли вместо этого использовать две миниатюрные камеры (spy camera)?
Да, но придётся повозиться с тонкой ручной работой: вывод генератора одной камеры нужно подключить ко второй камере, а её собственный генератор снять. Проще взять стереокамеру — планку с двумя камерами — и подключить её напрямую к плате стереокамеры HAT на 5 Мп.
Работает ли эта стереоплата с Raspberry Pi Zero W?
Да, работает, если припаять к Pi Zero гребёнку GPIO или взять плату с уже распаянной гребёнкой. На фото ниже — как это выглядит с Pi Zero.

Можно ли подключить два официальных модуля V2 и использовать их как стереокамеру?
Да. Снимите с одной из плат камер резистор и микросхему шифрования, обведённые на фото кружком, припаяйте к контактным площадкам провода-перемычки, как показано на рисунке ниже, и скрутите их между собой для лучшего качества сигнала. Но Arducam рекомендует использовать её плату стереокамеры на 8 Мп.

Можно ли использовать эту двойную камеру с NVIDIA Jetson Nano?
У Jetson Nano такой же 40-контактный разъём GPIO и такой же разъём камеры MIPI CSI-2, поэтому стереокамеру можно использовать и на этой платформе. Подробнее о работе с этой платой HAT на Jetson Nano — в отдельной статье.


