Как стать автором
Обновить

Комментарии 59

Молодцы ребята, классная плата!
Что с поддержкой ubuntu 16.04 и ROS?
Я ROS ни разу не использовал, так что не знаю. Насчёт Ubuntu тоже не уверен. В Raspbian точно работает.
Ну убунту на малину можно накатить (https://www.ubuntu.com/download/iot/raspberry-pi-2-3)
Прелесть распбиана в том что там клевая обвязка вокруг видеоподсистемы сделана, в частности по стерео. Никакой головной боли.
С ROS есть планы активно туда забуриться. Основной этап битвы с железом вроде завершен (тьфу-тьфу-тьфу), будем сейчас прикладным софтом заниматься.
А у вас по ROS общий интерес, или пробовали уже там карту глубин и SLAM?
Почитайте мой, блог, делаю робота на ROS.
Карту глубин и SLAM еще не делал, нет у меня пока таких камер, но думал об этом, пока больше в сторону лазерного лидара смотрю.
Но тема стерео зрения и построения карты глубины в ROS крайне интересует, пока не видел норм работ на эту тему.
Если вы делаете свое устройство для роботов, то рекомендую всетаки сделать поддержку ROS и написать понятные туториалы, тесты.
Именно так и планировали делать. Мануалы в стиле уроков (как на 3dberry.org) будут.
У нас до большого тиража будут пробные выпуски платы маленькими партиями, планируем раздать несколько штук ранним тестерам. Сейчас вот будем набирать желающих.
Можете меня записать в желающих, сниму вам красивые видео обзоры и статьи напишу.
Записал!

И меня пожалуйста

сделано
и меня!
Ну я чего в стороне-то буду…
Пока нигде, железка только покинула стены хардварной лаборатории. :-)
Прикидываем сейчас объем и стоимость тиража.
Я больше моделист, чем роботостроитель, так что я эту штуку использовал, в основном, на машинках. Выглядело примерно вот так (первая версия была, колхозная)
www.instagram.com/p/BH0tqazDseG
www.instagram.com/p/BH0uCn_DXj4

Видео с борта отдавалось по вифи, через WiFiBroadcast. Ощущения при езде в Окулусах офигенные были :-)

Помимо стерео картинки, камеры могут работать независимо, т.е. можно запустить два raspivid и стримить два потока одновременно. Вместо одной из камер можно HDMI захват добавить. Два HDMI пока завести не получилось, к сожалению.
Видео с борта отдавалось по вифи, через WiFiBroadcast. Ощущения при езде в Окулусах офигенные были :-)

Ага… я хорошо помню фрагмент, когда машинки подъезжали к девчонкам в миниюбках, которые на тех тестах были. Машинки то у самой земли, девочки высокие, а камеры широкоугольные. :-)
какая была задержка видео?

Как обычно, порядка 100-150 мс.

А зачем безногий кварц на первой фотке рядом с RJ45?
Я ждал этого вопроса! Аппаратчики подтянулись! :-) Плюсанул карму как первому заметившему.
Это кварцевый резонатор для чипа с сеткой и USB. На первой ревизии накосячили с линией PLL — протянули её сквозь все слои на другую сторону. Пришлось накладывать патчи и ставить внешние резонаторы. В итоге переразвели плату и вернулись к решению по обвязке, которое было в первой ревизии.
Только начал пилить болванку жесткого диска для зеркал камеры, как вы выпускаете такой интересный продукт. Спасибо, что развиваете это направление. Жду релиза!

А как решен вопрос с синхронизацией видеопотоков? Для динамичных сцен это критично...

Я в статье давал ссылочку на форум малины, там есть такой товарищ 6by9, который собственно и реализовывал стерео в Raspbian, и в малиновой ветке пару раз он на него отвечал. Если коротко — тут нет синхронизации как на промышленных сенсорах (которые с глобальным затвором и для синхрона прям отдельную ногу имеют), но рассинхрон минимальный (миллисекунды набираются за десятки минут).

Ну а мы как любители практики пробовали ставить стереострим видео на десятки часов — визуальной разницы не заметили (это значит что разница если и есть, то не больше пары десятков миллисекунд). Это как раз Gol и тестировал.
upd> в прошлом ответе (про 6by9) я говорил про синхронизацию именно процесса захвата сенсорами. В видеопотоке кадры с обеих камер склеиваются и идут одним кадром, режимов склейки много (со скейлом, без, side-by-side, top-bottom и так далее). Так что «долетают» они одновременно — это если речь о том что стереопара распознается и анализируется уже где-то на земле, а не на борту

Просто помню, что когда активно занимался стереозрением, то для случая, например, самоходных автомобилей, рассинхрон в 50-100ms между кадрами уже давал серьезные артефакты на результирующей depth map'е.

Ну 50-100 это реально очень много, согласен. А как у вас такое получалось? Камеры независимо на компе захватывались и оцифровывались?

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

По хорошему по тайм-стемпам синхронизировать надо, тогда можно добиться задержки <10ms

У нас немного иная логика — камеры малины родные, по шинам CSI-2 обе воткнуты напрямую в проц, поэтому всё шустро. Это не две отдельные камеры по USB или через платы видеозахвата. И, кстати, у обеих малиновых на лету синхронизируются настройки — балансы белого, яркость и прочие вещи. С независимыми камерами это большая проблема.
Спасибо за статью! А расскажите, как доставать в промышленных масштабах CM3? Какие microSD берёте, чтобы не сыпались? Почему выбрали R-Pi, а не какие-нибудь imx6q?
Ну CM3 спокойно продается на фарнеловских сайтах, можно штучно приобретать, а можно вагонами :-).
По карточкам — ну тут кто что любит, мы чаще Kingston или Transcend используем.
А почему малина — ответ простой: готовность и уровень поддержки софта и сообщества. Нам в свое время хватило счастья от переноса линукса с ядра 2.6.32 на 3.9 на виртурилке, спасибо и низкий поклон Texas Instruments. Хочется просто брать и проводить эксперименты со стереозрением, а не пытаться месяцами просто заставить софт работать.
> Хочется просто брать и проводить эксперименты со стереозрением, а не пытаться месяцами просто заставить софт работать.

Золотые слова. В свое время аналогично долго сражались с китайскими SBC, шаг вправо-влево и ты наедине со своей проблемой. Коммьюнити RPi, которое наступило на 99% граблей, это самое ценное.
Ну если у Texas Instruments были две критичные ошибки в документации (обе четырехлетней давности на тот момент), то что говорить про китайцев :-)
Поэтому да, тот факт что оно работает из коробки, и практически на любой вопрос есть ответ — определяющий факторы.
Очень круто. Работаем сейчас с OpenCV на Python. Где эту приблуду достать можно, а главное — за сколько? Если можно то в ЛС vk.com/barashkoff3. Спасибо!
Присоединяюсь к вопросу — как такую достать?
Ну как выпустим тираж — можно будет купить. Пока мы пытаемся понять интерес народа. Продвинутые товарищи разгадали квест в статье и смогли встать в очередь. :-)
Вообще мы железо обычно разрабатываем для своих задач, когда не можем найти на рынке готовое решение, подходящее под наши задачи. Если решение вызывает массовый интерес — уже организовываем тираж.
Лично у меня интерес следующий, робот телеприсутствия. Так чтобы можно было смотреть стереоскопически, что происходит.
Я ниже ответил, что все виртурильные наработки перенесены на малину. Стерео у нас поддерживается «из коробки» — менять ничего не надо. Собственно мы уже летали и катались со стерео, еще с прошлой ревизией стереопи с первым компьют-модулем. На форуме для радиомоделистов я небольшой обзорчик делал.
upd> сейчас прикручиваем это всё к Oculus Go, но тут Gol подробнее рассказать может
А что с проектом виртурилка, уже заморожен?
Наработки все перенесены на другие платформы (чаще с малиной работаем), саму железку прошлую уже выпускать не будем — время идет, много нового появляется. Можно считать что stereopi это витртурилка 2.0
Я к вам пришёл тогда не в самый удачный мой период жизни, вот и получилось, что несколько слабоват для вас был. Желаю всяческих успехов вам, даже готов посодействовать чем-то. Разве что теперь в Питере живу.
Ага, рядом со мной значит! Ну в личке договоримся кофе попить :-)
Интересный проект, но Малина, к большому сожалению, не потянет серьёзный процессинг. Только совсем уж простые алгоритмы в реальном времени можно реализовать. Для более серьёзных вещей нужны штуки вроде Nvidia Jetson TX2.
Согласен, вопрос только в определении «серьезный процессинг». Джетсон штука очень злая, с малиной сравнивать нечестно :-) Ну и цена у самого джетсона (без кроватки и обвязки) примерно в 13 раз выше.
Для задач «изучить», «быстро спрототипировать» малина больше подходит. И получается хороший вариант пощупать технологии перед тем, как переходить на предложенную вами тяжелую артиллерию.
пы.сы.: Google умудрился на PiZero (с очень старым процом) запихнуть нейронку и распознавание образов, так что тут еще и вопрос оптимизации решения под платформу.
А с какой точностью определяется глубина «залегания» предметов?
А это зависит от стереобазы (расстояния разнесения камер) и разрешения, с которым будете работать. Это конечно не миллиметры или сантиметры на расстоянии десятков метров, как, например, у лидаров типа Lidar Lite v3 HP, зато за один кадр вы сканируете сразу большой кусок пространства — до полусферы (при широкоугольных камерах).
Выглядит круто, компактно.
Но мне не очень понятно, почему этот extension board за 59$ настолько дороже самой raspberry pi? И почему бы не решить эту же проблему дешевле просто использовав 2 raspberry pi? В случае со stereo vision можно даже препроцессинг делать на каждой.
Варианты с двумя распберри пробовались еще в эпоху первых малин. Идея интересная, особенно с малявками типа PiZero. Но, к сожалению, к моменту «сбора» двух картинок по сетке в одну стерео набирается гарантированный рассинхрон в несколько кадров — карта глубин рассыпается. А касательно цены — мы не Raspberry Foundation, тираж прикидывали небольшой. Будут миллионы устройств — будет копеечная цена. :-)
позволю уточнение (т.к. вначале некорректно предполагал, что эта плата влючате в себя миксер для стерео-камер) — поддержка 2х камер по интерфейсу CSI — это фича RPI Compute module, и все наличествующие Compute Module IO Board (официальная и китайские вариации) уже имеют таковые 2 входа.

уникальность вашей платы в её размере (по цене китайские IO Board дешевле будут), благодаря которому она прекрасно влезет в какое-то роботизированное устройство, но стоило ли на ней оставлять в таком случае RJ-45, HDMI, полноразмерные USB?
Хороший вопрос. Как я упоминал, мы обычно затачиваем наши железки под решение своих задач. Нам нужна была компактная плата, с которой хорошо и удобно делать две вещи:
1. Комфортно отлаживаться. Поэтому у нас полноразмерные USB на борту, полноценный коннектор сетки и полноразмерный HDMI.
2. Удобно встраивать на борт в готовом решении. Поэтому плату сделали маленькой, и предусмотрели «слим» версию (я её показывал на видео) без больших разъемов и колодки GPIO, которые просто не паяются при производстве.
Касательно китайских GPIO — это клоны отладочной борды от самой Raspberry с вариациями на эту тему. Они очень удобны для прототипирования при разработке своего железа, но никак не годятся для наших целей. Они просто для других задач, с которыми кстати хорошо справляются.
upd> опечатался — не китайских GPIO, а китайских devboard имел в виду
спасибо за прояснения. нашёл на видео «слим»-версию — это похоже на то, о чём я думал, читая статью.
да, если не секрет — мультимплексор на CSI1 (у которого 4 линии) не пробовали делать? (т.е. 2 стерео-камеры(с fish-eye) на него для карты глубины, а камеру с обычным объективом на CSI0)
Мультиплексор это «некрасивое» решение с кучей головной боли по аппаратной части (там закрытые бинарники по работе с камерой и нештатное использование I2C у малины при работе с видеочастью). А с новыми IMX219 еще и крипточип туда воткнут — броадком какие-то секреты свои бережёт. Учитывая, что мы сейчас будем «разгонять» карту глубин до теоретических 90FPS — мультиплексирование выглядит совсем тупиковой веткой. Если нужна третья камера — в крайнем случае её можно по USB зацепить (например, сделав PiZero с камерой дочерним устройством в режиме клиента через usbgadget).
Вы написали про расчет глубины по двум камерам. Вычисления прямо на raspberry pi выполняются? На какое количество кадров и при каком разрешении можно рассчитывать?
Да, вычисления на Пи сразу. Пока мы делали proof-of-concept на питоне, за скоростью не гонялись, получалось около 25 FPS при 640х480 и подкрученных настройках карты глубин (там много параметров). В планах прогнать всё на сишечке, с разными разрешениями. Вообще пиковый FPS захвата картинки до 90 fps (заявленный в официальных доках), неофициальный в аппаратных ветках малинового форума — до 120 fps (с соняшными сенсорами). Будем пробовать сделать так, чтобы расчет карты глубин успевал за камерой.
Недавно попробовали запустить ROS на борту для получения карты глубин, результаты я выложил тут: habr.com/post/431092
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории