Комментарии 30
По одной камере! Впечатлен.
Так они же постоянно двигаются, за счёт этого и получается стереопара.
Мы не стали делать optical flow, мысли были, но по времени решили не рисковать и использовать более простой и прогнозируемый алгоритм.
Ребята, вы молодцы, работа серьёзная!
Если мне не изменяет память, то вычислительные ресурсы должны были полностью размещаться на борту коптера.
Или я неверно истолковал условия конкурса?
Процессинг видео производился силами коптера, или же видео потоком передавалось на ноутбук/ПК?
Или я неверно истолковал условия конкурса?
Процессинг видео производился силами коптера, или же видео потоком передавалось на ноутбук/ПК?
В правилах не было такого ограничения. У нас все обрабатывалось на наземной станции (ноутбук). С дрона приходила телеметрия и поток видео, обратно мы отправляли команды управления.
Думаю да, если провести оптимизацию кода и переписать критические модули на С++.
Будет потеря по количеству fps, но летать сможет.
Будет потеря по количеству fps, но летать сможет.
У меня были похожие рассуждения при выборе сенсоров, поэтому главный алгоритм полагался на распознавание видеопотока с камеры.
Напомню, размеры полигона предполагались 25 х 50 метров. Т.е. ширина коридора была бы 12,5 метров, что для обычных сонаров довольно много, хотя потом мне и попались сонары XL-MaxSonar-EZ, у которых максимальная дистанция 10 метров, чего уже хватило бы.
Для сокращения задержек на пересылку данных был выбран вариант с распознаванием на борту коптера.
Я купил решение, которое обладало максимальной удельной процессорной мощностью на единицу веса, многие здесь его знают, это ODROID-U2. Радиатор которого, планировал заменить на совсем маленький чипсетный.
Установил на него Ubuntu, и начал писать на С++ и OpenCV алгоритм для определения коридора по линиям. Фактически, это двумерная задача.
Сонар планировал установить для определения высоты.
Скажу лишь, что в одиночку заниматься проектом действительно сложно.
У меня сейчас есть все необходимые компоненты, а главное опыт для участия в следующем конкурсе, которого я уже жду :)
Напомню, размеры полигона предполагались 25 х 50 метров. Т.е. ширина коридора была бы 12,5 метров, что для обычных сонаров довольно много, хотя потом мне и попались сонары XL-MaxSonar-EZ, у которых максимальная дистанция 10 метров, чего уже хватило бы.
Для сокращения задержек на пересылку данных был выбран вариант с распознаванием на борту коптера.
Я купил решение, которое обладало максимальной удельной процессорной мощностью на единицу веса, многие здесь его знают, это ODROID-U2. Радиатор которого, планировал заменить на совсем маленький чипсетный.
Установил на него Ubuntu, и начал писать на С++ и OpenCV алгоритм для определения коридора по линиям. Фактически, это двумерная задача.
Сонар планировал установить для определения высоты.
Скажу лишь, что в одиночку заниматься проектом действительно сложно.
У меня сейчас есть все необходимые компоненты, а главное опыт для участия в следующем конкурсе, которого я уже жду :)
НЛО прилетело и опубликовало эту надпись здесь
Пока никаких данных нет. По тестам ARM процессоров, которые есть в нете, видно, что Cortex А9 (очень)примерно вдвое медленнее чем современный х86 и раза в 1,5 медленее чем Атом.
Т.е. я рассчитывал, что разогнанный до 2ГГц Odroid будет способен выдавать приблизительно 4 х 1ГГц Core i3. Если программу распараллелить, то для обработки потока в 640 х 480 этого должно было хватить.
Т.е. я рассчитывал, что разогнанный до 2ГГц Odroid будет способен выдавать приблизительно 4 х 1ГГц Core i3. Если программу распараллелить, то для обработки потока в 640 х 480 этого должно было хватить.
НЛО прилетело и опубликовало эту надпись здесь
Спасибо, я тоже учту, что может так получиться. Есть уже готовая сборка с OpenCV для ODROID-U2. На ней буду тестировать через некоторое время.
Интересно, если подойти с другой стороны: создать модель коридора из плоскостей. Задать исходную точку. Отрендерить модель из этой точки, сравнить изображениия. Переместить робота в другое место, задав максимальную скорость, и зная время перемещения определить область в которой может находиться робот, отрендерить из предполагаемой точки, а потом используя алгоритм оптимизации и сравнивая отреднеренные изображения со снятыми найти точное положение в пространстве.
Особенно впечатлила посадка по фронтальной камере, через которую крест видно только издалека. Это круто, я бы сдался, и повернул камеру немного вниз :)
(не туда написал, хотел в верхний уровень)
(не туда написал, хотел в верхний уровень)
На самом деле мы именно так и сделали :) У нас было два изменения к стандартному дрону — внешняя антенна и угол наклона фронтальной камеры — мы наклонили ее вниз примерно на 30 градусов, тем самым увеличив обзор интересующего нас пространства внизу и уменьшив неинтересного пространства выше горизонта.
А какая примерно задержка между событием и попаданием изображения на ноутбук?
Задержка при передаче примерно 50-70 мс. До того, как мы поставили внешнюю антенну, сигнал мог полностью пропасть. После апгрейда видеопоток стал гораздо стабильнее, хотя лаги (битые кадры) периодически возникали.
У нас была еще одна проблема — рассинхронизация видеокадров и телеметрии, которую можно увидеть в ролике по поведению линии горизонта (верхняя голубая линия). Это влияло на определение расстояний до стен — приходилось все усреднять. Буквально в последние дни мы нашли один рецепт, который вроде-бы позволял решить проблему рассинхронизации, но проверять не стали — побоялись все сломать.
У нас была еще одна проблема — рассинхронизация видеокадров и телеметрии, которую можно увидеть в ролике по поведению линии горизонта (верхняя голубая линия). Это влияло на определение расстояний до стен — приходилось все усреднять. Буквально в последние дни мы нашли один рецепт, который вроде-бы позволял решить проблему рассинхронизации, но проверять не стали — побоялись все сломать.
А насколько реально получить с дрона стереопару (от двух камер или благодаря движению) и определить расстояние до стен по ней. Просто я когда-то писал программу сопоставления кадров стереопары и пришел к красивому быстрому алгоритму (и простому как две копейки). Интересно было бы наконец-то его применить.
Две камеры на Ar. Drone сложно поставить (надо колдовать с передачей потока и грузоподъемность мала). Мы решили использовать только то, что есть в стандартной комплектации. Что касается анализа соседних кадров, то такая идея была, но поняв, что мы не сможем понимать какое расстояние было между положениями дрона в момент съемки каждого кадра, решили что алгоритм будет очень сложным. Поэтому отложили эту идею на потом.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Как мы улетели и с трудом вернулись: подробный отчет о нашем участии в соревнованиях летающих роботов компании КРОК