Всем привет! Сегодня я хотел бы рассказать вам о нашем новом оборудовании на базе вычислительного модуля Raspberry Pi, предназначенном для изучения компьютерного зрения и установки на роботов и дронов.
По сути, это «умная» стереокамера — она поддерживает работу с двумя камерами одновременно, имеет «сердцем» настоящую малину и, что самое главное, работает со стоковой версией Raspbian.
Вот как выглядит собранное решение с двумя установленными камерами и модулем Pi Compute.
Устройство работает со стандартной версией Raspbian. Вам нужно всего лишь скопировать наш файл dtblob.bin, чтобы включить поддержку двух камер.
Это значит, что вы можете использовать привычные raspivid, raspistill и другие утилиты для работы с изображениями и видео.
Для справки, поддержка стереорежима появилась в Raspbian уже в 2014 году, одновременно с выпуском первой версии Raspberry Pi Compute. Вы можете посмотреть историю развития поддержки стереорежима.
Прежде чем описывать технические детали, позвольте мне показать вам несколько реальных примеров того, как работает устройство.
1. Захват изображения
Код:и вы получите это:raspistill -3d sbs -w 1280 -h 480 -o 1.jpg
Вы можете скачать исходное захваченное изображение Прямо здесь .
2. Захват видео
Код: raspivid -3d sbs -w 1280 -h 480 -o 1.h264
и вы получите это:
Вы можете скачать оригинальный видеофайл (конвертированный в mp4) по этой ссылке .
3. Использование Python и OpenCV для построения карты глубины
В этом случае я использовал слегка измененный код из предыдущего проекта 3Dberry ( https://github.com/realizator/3dberry-turorial ).
Для получения этих фотографий и видео мы использовали следующую пару камер:
Для установки на дроны мы часто используем широкоугольные (160 градусов), вот такие:
Теперь немного подробнее о самом железе
Технические детали
Передний план:Вид сверху:
Основные показатели: Размеры: 90х40мм Камеры: 2 x CSI 15-полосный кабель ГПИО: 40 классических Raspberry PI GPIO USB: 2 x USB типа A, 1 USB на контактах Ethernet: RJ45 Объем памяти: Micro SD (для CM3 Lite), для остального NAND (flash) Монитор: HDMI-выход Питание: 5 В постоянного тока Поддерживаемая малина: Вычислительный модуль Raspberry Pi 3, Raspberry Pi CM 3 Lite, Raspberry Pi CM 1 Поддерживаемые типы камер: Камера Raspberry Pi OV5647, камера Raspberry Pi Sony IMX 219, вход HDMI (один режим) Для прошивки NAND: Разъем микроUSB Выключатель: Да-да, это он.
Больше не нужно подключать и отключать провода MicroUSB для перезагрузки!
Немного истории
Вообще сама идея появилась ещё в 2015 году.Первая версия родилась в конце 2015 года.
Некоторые знают, что у нашей команды есть «пунктик» на дистанционное управление различными механическими штуковинами, поэтому в первом выпуске была добавлена дополнительная фишка.
установлен на плате, что дало нам 16 ШИМ-выходов — для сервоприводов рулевого управления, моторов и прочих полезных вещей.
К тому времени на рынке существовала только первая версия модуля Compute, на борту которого был старый процессор от самой первой Raspberry. Аппаратное обеспечение отлично справилось с захватом, сжатием и потоковой передачей видео, но в итоге мы уперлись в процессор.
Например, уже было недостаточно одновременно передавать поток h264 на пилот и поток RTMP на сервер.
А у роботостроителей главным пожеланием было построить пространственную карту с помощью карты глубины и SLAM — тут процессора совсем не хватало.
Вот и выходит версия Compute Module 3. Они сразу «перескочили» с первой версии на третью, установив процессор от третьей Raspberry. Теперь его мощности уже было достаточно, чтобы что-то посчитать на лету.
Однако оказалось, что поколения вроде бы и совместимы, но не настолько.
Тот факт, что Compute Module 3 стал на миллиметр шире, нас не смутил.
Но требования к питанию серьезно изменились.
Кроме того, у нас уже были комментарии по результатам работы с первой версией, и мы решили выпустить новую, в которую внесли все накопленные изменения.
Что исправлено во втором поколении
Добавлена поддержка вычислительного модуля 3. Схема питания у нас отключаемая, поэтому при желании можно работать и с первой малиной.Выбор здесь простой: если вам нужно только транслировать видео, то первой малины вполне достаточно.
В качестве бонуса у него почти в три раза меньше энергопотребление и тепловыделение.
Но если нужно посчитать что-то посерьезнее (несколько видеороликов или компьютерное зрение), ставим третий.
Развернул модуль «Фишки с платы» В первой версии был перепутан тип разъема SoDIMM на плате; в результате модуль компьютера был вставлен чипами «в сторону материнской платы».
На Compute Module 1 проблем это не вызвало — процессор грелся незначительно, а узкого пространства между платами хватало для нормального охлаждения.
С третьим этот трюк не сработал бы, поэтому мы «перевернули» разъем, что повлекло за собой перемонтаж всей платы с нуля.
Встроенная поддержка MicroSD Первый компьютерный модуль по умолчанию имел на борту встроенную FLASH и не мог работать с microSD. Мы попытались добавить туда MicroSD в качестве второго накопителя, но столкнулись с большой проблемой с ее поддержкой.
Общение с разработчиками ядра на форуме Raspberry показало, что проблема непростая (при загрузке модуль случайным образом выбирал для загрузки NAND или MicroSD).
В итоге в текущей ревизии мы сделали разводку как на эталонной девборде от Raspberry. Если вычислительный модуль Лайт - без встроенной NAND - с microSD работаем как в обычной малине.
Если версия не Lite или первый модуль, microSD недоступна.
Мы переместили разъемы камеры вверх и расположили их на расстоянии 65 мм.
В первом варианте разъемы были направлены по плоскости платы.
Мелочь, но после многих установок в чехлах вылезло несколько проблем.
- Из разъемов торчит кабель камеры, который желательно не перегибать (особенно синяя усиленная часть).
Это просто занимало лишнее место в корпусе и мешало при установке.
- Разъемы располагались очень близко — это затрудняло работу с кабелями.
- Камеры в корпусе обычно имеют стереобазу диаметром 65 мм, а кабели на плате находились рядом.
Получается, что каждый кабель пришлось неестественно согнуть - ломается, ломается, выскакивает из разъемов.
Проанализировав множество последних проектов, мы поняли, что эта функция неактуальна.
Чаще всего достаточно программной ШИМ малины.
Добавлен выключатель питания Те, кто хоть немного работал с малиной, понимают, о чем речь :-) Добавлен третий USB на пины сбоку.
В наших малиновых проектах нам часто нужны USB-ключи на борту.
Если подключить их к разъемам на плате, то в итоге модуль будет торчать далеко.
Попытка использовать удлинитель USB еще больше усугубляет проблему.
Оставался один вариант - припаять провода напрямую к малинке.
Добавленные нами боковые контакты позволяют сделать простой удлинитель и разместить USB-ключ (обычно WiFi или 4G) прямо вдоль платы, и все это оборудование прекрасно помещается в компактный корпус.
Именно эту историю я хотел рассказать вам сегодня.
Благодарю за внимание и готов ответить на вопросы.
Теги: #Сделай сам или Сделай сам #Raspberry Pi #Разработка на Raspberry Pi #Робототехника #OpenCV #карта глубины #slam #virt2real #stereovision
-
Чего Ожидать От Seo-Услуг Bigcommerce
19 Oct, 24 -
Глучат Тег?
19 Oct, 24