roboforum.ru

Технический форум по робототехнике.

Как оцифровать видео AVR-кой. Схема макетика и исходники.

Правила форума
В этом форуме новые темы не создаются, однако обсуждение допустимо.

Как оцифровать видео AVR-кой. Схема макетика и исходники.

Michael_K » 19 окт 2009, 23:43

По просьбе EdGull выкладываю для желающих поизгаляться...

Исходники и хекс для AVR на GCC (пользуюсь версией 20080512) - тупая хваталка с камеры 80х60 пикселей.
Посылает данные через FTDI на комп.
Исходники и экзешник для компа на VB - ловит данные и показывает.

Картинка:
6f377835e4a8.jpg

Схема:
sch.GIF


Питание 5 вольт.
Кварцы: на меге - 20Мгц, на FTDI - 6МГц.
Все конденсаторы - 0.1мкф
Резисторы слева направо 1.5к, 470, 470...
два делителя справа - у меня стоят подстроечники на 4к7

ОФФТОПИКОМ в этой теме будет считаться:
- зачем это надо автору,
- на чем и как это сделать будет лучше,
- обсуждение кривизны схемотехники и кода.
( Это я и так знаю :) - делал быстрый макет. )


Частота проца 20МГц, предделитель АЦП - 4.
Получаем оцифровку с периодом 2.6 микросекунды.
Строка видеосигнала - 64 микросекунды (видеоданных меньше)
Строк 252.
Получается порядка 20 точек на строку растра.
То есть, если подходить тупо, то можно получить разрешение
20(ширина кадра)x280(высота) - это неудобно.

Поэтому я делаю выборки по принципу "шахматной доски":
Выборки из строк выбираются со смещением относительно строба.

images.jpg
images.jpg (12.03 КиБ) Просмотров: 120606


AVR-ка может выделить на обработку порядка пятидесяти тактов на каждый пиксель.

А вот узнать хотелось бы следующее:
- Что в эти 50 тактов хочется поместить и что туда удастся поместить?


На вопросы по схеме и исходникам отвечу.


Вложения
Send_to_comp_80x60.zip
Исходники
(72.68 КиБ) Скачиваний: 323
Последний раз редактировалось Michael_K 13 янв 2010, 16:31, всего редактировалось 2 раз(а).

Re: Как поймать видео на AVR-ке. Схема макетика и исходники.

EdGull » 20 окт 2009, 13:06

=DeaD= писал(а):Ээээ.... в чем? там был поиск мусора, а тут сканирование местности на тему препятствий

вообще-то мусор который мы не можем переехать является препятствием.

Michael_K а что если вместо ИК-подстведки вспышкой от фотоаппарта пыхать? Тогда ближайшие препядствия в независимости от цвета будут белыми пятнами на картинке

Re: Как поймать видео на AVR-ке. Схема макетика и исходники.

=DeaD= » 20 окт 2009, 13:17

2EdGull: Читер ты :) и нафига вспышку? Она будет как ИК-бампер только (т.е. в зависимости от отражающей способности препятствия работать) + ослеплять будет и кошку и детей. Я бы офигел, если бы у меня фотик по полу гонял и пыхал :)

Re: Как поймать видео на AVR-ке. Схема макетика и исходники.

Michael_K » 20 окт 2009, 13:34

Для ленивых результаты опытов:
Камера телефона 640х480 на высоте 180мм от пола
(и это,по моему, многовато - зависит от размеров робота).
Расстояние до медведя 350мм (что при высоте робота 200, имхо, маловато)
Лазерная указка с новыми батарейками развернута в линию стеклянной палочкой.
(угол небольшой, поэтому на все поле не раворачивает - зато яркость больше)
Лазер - под камерой на высоте 10-15мм от пола. Смотрит чуть вверх.
(прижат к полу и чуть приподнят).
Высота медведя - 150мм, мячика - 70мм, книжки - 100мм

Задания:
1. Найти алгоритмически (не глазами - так и я могу :) ) на картинках лазерную линию.
2. Определить расстояние до объектов.
3. Повторить пункты 1 и 2, переведя картинки в грейскейл.

Картинки приложены:
Изображение
Изображение
Последний раз редактировалось Michael_K 20 окт 2009, 13:42, всего редактировалось 1 раз.

Re: Как поймать видео на AVR-ке. Схема макетика и исходники.

=DeaD= » 20 окт 2009, 13:41

2Michael_K: Предлагаю забить в этой теме на лазерную линию, раз она всё равно теряется за помехами, а в другой теме можно обсудить алгоритмы для поиска этой линии в кадре.

Re: Как поймать видео на AVR-ке. Схема макетика и исходники.

Michael_K » 20 окт 2009, 14:22

Предлагаю забить в этой теме на лазерную линию, раз она всё равно теряется за помехами

Согласен.

Вообще, тема про то, как наиболее эффективно (и для чего)
использовать несколько десятков команд на пиксель для реал-тайм обработки.

Я предлагаю не ограничиваться пылесосами, а рассмотреть и другие задачи.
Например, позиционирование по краю ринга в минисумо, поиск движения (например для того же сумо),
позиционирование относительно маяков или заведомо удаленных объектов, та же линия или команды
закодированные рисунками на полу... - что угодно.
Да хоть градиентно колеса покрасить и заменить энкодеры :)

=Dead= в начале ветки предложил неплохую мысль, только смущает, что камера нацеленная в потолок
уже больше ничего, кроме потолка, не увидит. А все же хотелось бы использовать ее по максимуму.
Если не будет хватать производительности на все одновременно (а ее всегда будет не хватать :)),
можно разбить кадр на зоны: например, в верхней половине кадра ищем движение и маяки,
в нижней - препятствия и линию и т.д.

Интересуют именно легкие налетушные алгоритмы.

Добавлено спустя 22 минуты 58 секунд:
=DeaD= писал(а):2EdGull: Читер ты :) и нафига вспышку?

Согласен - это перебор. Светодиодного фонарика хватит за глаза.
(результаты опытов приводил).

=DeaD= писал(а):Она будет как ИК-бампер только (т.е. в зависимости от отражающей способности препятствия работать)

Даже если так - направление на препятствие она определит точнее ИК-бампера.
А если еще и расстояние грубо оценит (не знаю как) пусть даже с точностью десять сантиметров
в "ближней зоне" - это уже будет кое-что.

У нас робот с какой точностью поворачивать может? Пять-десять градусов?
А тормозить? Два сантиметра? Ну вот вам реальное механическое разрешение...
Последний раз редактировалось Michael_K 20 окт 2009, 14:59, всего редактировалось 2 раз(а).

Re: Как поймать видео на AVR-ке. Схема макетика и исходники.

Myp » 20 окт 2009, 14:27

=DeaD= писал(а):
Myp писал(а):каждый непрерывный отрезок лазерной линии(белая линия на чёрном фоне) окружаем виртуальным зелёным прямоугольником

Очень хочется увидеть быстрый алгоритм для этой задачи :oops:
Не использующий мой подход с набором чисел :oops:

незнаю про подход с набором чисел (((
наверно там чото скучное и я пропустил))

имеем набор точек на картинке
методом перебора устанавливаем смежные точки, если 2 точки имеют соседние координаты по какой либо оси значит они смежные
типа точка а1 и точка в3 не смежные
а точки а1 и а2 смежные
равно как и а1 и б1 смежные
тогда пусть эти смежные точки образуют виртуальный массив

.JPG
.JPG (38.13 КиБ) Просмотров: 13042


массив:
б1
б2
б3
б4
в5
г6
в7

нам надо найти крайнюю левую границу "препятствия"
она будет очевидно столбец 1(мин цифра из правого столбика в массиве)
теперь надо найти крайнюю нижнюю границу "препятствия"
она будет очевидно буква Б(мин буква из левого столбика в массиве)
теперь надо найти длину "препятствия"
она будет очевидно 7 (максимальная цифра из 2 столбика в массиве)
итого первый массив точек от лазера это препятствие Б-1-7

в паузе(или прямо в процессе..?? между АЦП и усреднением строки есть свободные такты? хватит на сравнение 3х чисел и сохранение результата?) сканирования строки сравниваем прошлую строку с текущей
и так далее до конца кадра сравниваем полученную строку с предыдущей
к концу кадра получим массивы смежных точек на картинке
время между кадрами тратим на сортировку точек в массиве чтобы найти координаты начала препятствия и его длину

тоесть с частотой снятия кадров имеем карту препятствий

Добавлено спустя 22 секунды:
Michael_K писал(а):
моя цветная минирадиокамера в разрешении 640х480 отлично видит пятно лазера по всей квартире

Подозреваю, что это не камера, а ВЫ видите его на картинке.
Вы свои мозги с процом не сравнивайте - не нужно прибедняться :)

софтинка оч приятная, робореалм называется
с лёгкостью справлялась с отслеживанием лазерной точки по всей квартире
камера дефолтная миникамера видеонаблюдения самая дешовая.
отсюда я делаю вывод что яркость точки достаточна чтобы её увидеть.
однако это говорит только о том что на АВР такое нереально.

Re: Как поймать видео на AVR-ке. Схема макетика и исходники.

Michael_K » 20 окт 2009, 14:43

софтинка оч приятная, робореалм называется

Хм...
А можете попробовать скормить ей картинки "с медведем"?
(в моем сообщении чуть выше) Интересно.

Добавлено спустя 6 минут 17 секунд:
Myp писал(а):между АЦП и усреднением строки есть свободные такты?

Не очень понял про что...

В конце строки есть свободные такты. Порядка двухсот или трехсот - что-то в таком духе.
Я там из прерывания выхожу в этом примере и кручусь в основном цикле,
но конечно можно (и нужно!) занять проц чем-то полезным.

В конце кадра - много. Там бланки всякие, синхры идут.
Это время хорошо (имхо) использовать для окончательных расчетов,
апдейтов всяких ШИМов, обмена, собственно верхнеуровневого алгоритма
управления роботом и т.д.

Re: Как поймать видео на AVR-ке. Схема макетика и исходники.

Myp » 20 окт 2009, 15:00

вот засунул картинку туда
.jpg

это работа отдельного модуля поиска линии лазерной
распознанная линия отрисовалась чёрнобелой полоской
в принципе видно тока на блестящей поверхности

можно тож самое делать пошагово из разных модулей с гибкими настройками, результат будет немного лучше
включая и выключая линию + сравнивая кадры избавимся от случайных бликов

Re: Как поймать видео на AVR-ке. Схема макетика и исходники.

Michael_K » 20 окт 2009, 15:13

=DeaD= писал(а):В естественном окружении нету полновесной ИК-засветки (иначе бы телевизор от пульта фигово работал ;))


Вы бы еще сказали, что в естествееном окружении нет ЭМ полей,
иначе бы вайфай не работал...
А лампочка накаливания - это что, по вашему?
Мне казалось, что у телевизора фишка в модуляции, разве нет? :)

Добавлено спустя 4 минуты 34 секунды:
Myp писал(а):вот засунул картинку туда
распознанная линия отрисовалась чёрнобелой полоской

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

Re: Как поймать видео на AVR-ке. Схема макетика и исходники.

=DeaD= » 20 окт 2009, 15:52

Модуляция это чтобы не сработал левый сигнал, она не гарантирует передачу сигнала при сильной засветке.
Это всё равно что показывать условный знак человеку, которого только что ослепили "дальним светом" ;)

Re: Как поймать видео на AVR-ке. Схема макетика и исходники.

Myp » 20 окт 2009, 16:17

Michael_K писал(а):А что - неплохо. Я думал хуже будет.
Даже на мячике точка поймалась. А вот на табуретке непонятно, почему разрыв...
Ну да ладно.

табуретка под углом потому что
там отражённый сигнал ещё более слабый.



поиск движения тож интересно
было бы интересно узнать вектор движения группы пикселей в кадре.
есть ли быстрый алгоритм для этого???

Re: Как поймать видео на AVR-ке. Схема макетика и исходники.

=DeaD= » 20 окт 2009, 16:22

2Мур: быстрого нет, в целом семейство алгоритмов, решающих эту задачу называется оптикал-флоу.

Re: Как поймать видео на AVR-ке. Схема макетика и исходники.

Myp » 20 окт 2009, 16:35

оптикал флоу знаю

но мб есть чтонить более дружелюбное к АВР?

Re: Как поймать видео на AVR-ке. Схема макетика и исходники.

Michael_K » 20 окт 2009, 17:08

=DeaD= писал(а):Модуляция это чтобы не сработал левый сигнал, она не гарантирует передачу сигнала при сильной засветке.


Нет, не так. Чтобы вогнать входной каскад или фотосенсор в насыщение - надо из пушки в него палить - у него
динамический диапазон огромный по сравнению с уровнем сигнала. Он работает на выделении и усилении известной
частоты. Это как определить есть ли волны на поверхности пруда можно независимо от того много в пруду воды или
мало.

(Так же и радиоприемник - несмотря на то, что кругом много разных каналов "засветки" выделяет только свою частоту.)

По даташиту у тсопа чувствительность падает всего в восемь раз при изменении уровня общей засветки от нуля до 100 ватт на квадратный метр. (100 ватт _ИЗЛУЧЕНИЯ_ на кв. метр - это, я вам скажу, до фига)
При этом он видит свои 38килогерц с мощностью 4 МИЛЛИватта на кв. метр.

=DeaD= писал(а):Это всё равно что показывать условный знак человеку, которого только что ослепили "дальним светом" ;)
Некорректное сравнение.


К сожалению, динамический диапазон обычных камер - сильно ограничен, но и в этом случае модуляция сигнала
(моргание подсветкой через кадр) может помочь.

Re: Как поймать видео на AVR-ке. Схема макетика и исходники.

=DeaD= » 20 окт 2009, 17:09

2Мур: То что ты просишь - это по определению оптикал-флоу :)


Rambler\'s Top100 Mail.ru counter