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 КиБ) Просмотров: 120577


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

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


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


Вложения
Send_to_comp_80x60.zip
Исходники
(72.68 КиБ) Скачиваний: 323
Последний раз редактировалось Michael_K 13 янв 2010, 16:31, всего редактировалось 2 раз(а).
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

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

Сообщение Myp » 20 окт 2009, 10:31

если линия прерывается то выдавать на каждый огрызок линии свой прямоугольник
тогда хоть сквозь строй табуреток проедем :)
после сканирвоания кадра ищем смежные пикселы (тож самое как в лайнтрейсере тока линий может быть несколько)
каждая группа смежных пикселов даст нам 4 максимальных значения:
2 координаты Х (самая верхняя строка принадлежащая группе точек и самая нижняя строка принадлежащая группе точек)
и 2 координаты У (аналогично макс и мин)
из них получаем 2 координаты притивоположных вершин прямоугольника "препятствия"
соответственно меньшую координату Х прямоугольника используем как длинну до препятствия (если изначально померить линеечкой на натуре)
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

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

Сообщение =DeaD= » 20 окт 2009, 10:34

2Myp: А зачем? Если можно выдать 80 значений расстояний по всему сектору? Нафига урезать информацию и делать непредсказуемым её объем?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение Myp » 20 окт 2009, 10:40

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

для движения по квартире в сущности не наплевать какой формы там препятствие?
кубик игрушечный там стоит или ножка от табуретки круглая.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

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

Сообщение =DeaD= » 20 окт 2009, 10:43

2Myp: Если форма препятствия не важна - пользуют сонар ;) в общем - твоё предложение надо обставлять кучей "если", и в итоге получим навороченное урезание данных :) которое по приему в другой вычислительный модуль еще и расшифровывать надо будет. Пример - если карта расстояний такая:


-,-,-,10,-,-,-,10,-,-,- это понятно два препятствия

если
-,-,-,10,10,10,10,10,-,-,- это понятно одно препятствие

если
-,-,-,10,12,14,12,10,-,-,- это понятно тоже одно препятствие

а если
-,-,-,10,42,64,42,10,-,-,- это одно или два или три?

а если
-,-,-,10,72,64,72,10,-,-,- это одно или два или три?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение Michael_K » 20 окт 2009, 11:41

Ребята, лазерную линию уже на рпсстоянии 200-300 миллиметров
ЭТА фитюлинка НЕ УВИДИТ просто. Пробовал на ТОЧКЕ (которая ярче в сто раз).
В шумах теряется.

Кондер "антиалиасинговый" на ногу АЦП ставил (потом выпаял, ибо пользы - ноль)

---------------------------------------------------
И еще, я хотел бы, чтобы была понятна такая вешь:
ЭТА картинка - убогая. Никто не спорит.
ЭТОТ проц слабый. Безусловно.

Но даже если мы возьмем камеру покруче, проц помощнее, то...
картинка-то будет получше...
а вот ТАКТОВ НА ПИКСЕЛЬ принципиально больше НЕ станет.

Возьмите камеру 320x240 c кадровой частотой "всего" 30 Гц,
возьмите проц стомегагерцовый, пусть даже картинка забирается в буфер
независимо от проца (просто появляется там неожиданно)... И что?
100МГц/(30*320*240) = 43. 43 такта!!!
Ну допустим команды помощнее - ну будет чуть полегче, но не кардинально.

Поэтому проблема "что запихать в эти такты" так или иначе будет вставать,
хоть на арме, хоть на блэкфине, хоть на чем...
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

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

Сообщение =DeaD= » 20 окт 2009, 11:54

2Michael_K: Дык с лазерной линией на более мощном проце и четкой камере - вполне вариант. Так что возможно не надо отметать? ;) Кстати, а что если взять не лазерную линию, а сделать полосу ИК-освещения прожектором? ;) и глаза целые будут и не потеряется в шумах :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение Michael_K » 20 окт 2009, 11:58

на более мощном проце и четкой камере - вполне вариант.

Согласен, но опыты с телефоном тоже не радуют, хотя лучше безусловно.
Я и не отметаю - я пробую.

а что если взять не лазерную линию, а сделать полосу ИК-освещения прожектором?

Вот это мне больше нравится.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

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

Сообщение EdGull » 20 окт 2009, 12:04

=DeaD= писал(а):Кстати, а что если взять не лазерную линию, а сделать полосу ИК-освещения прожектором? ;) и глаза целые будут и не потеряется в шумах :)

помоему очень хорошая идея! :good:
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

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

Сообщение =DeaD= » 20 окт 2009, 12:18

И пол тёплый будет :ROFL:

Добавлено спустя 9 минут 20 секунд:
По поводу ИК-прожектора для полосы - взять ИК-диоды L-7113F3BT с углом 20° завернуть их 2 зеркалами в 7°, на расстоянии 40см это будет полоса шириной примерно 5см, соотв. на расстоянии 100см это будет полоса 10см, а на расстоянии 10см полоса ~ 1см. Вполне обнаружаемая вроде вещь при любых не особо безумных помехах.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение EdGull » 20 окт 2009, 12:19

помнишь я когда-то выклыдывал фотки со вспышкой паралельно полу обнаруживать грязь на полу?
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

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

Сообщение =DeaD= » 20 окт 2009, 12:20

Помню :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение EdGull » 20 окт 2009, 12:32

значит я всё таки тогда был прав! :Yahoo!:
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

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

Сообщение Myp » 20 окт 2009, 12:40

=DeaD= писал(а):2Myp: Если форма препятствия не важна - пользуют сонар ;) в общем - твоё предложение надо обставлять кучей "если", и в итоге получим навороченное урезание данных :) которое по приему в другой вычислительный модуль еще и расшифровывать надо будет. Пример - если карта расстояний такая:

а если
-,-,-,10,72,64,72,10,-,-,- это одно или два или три?

это какойто бред из цифр :shock:

каждый непрерывный отрезок лазерной линии(белая линия на чёрном фоне) окружаем виртуальным зелёным прямоугольником и получаем что нижняя грань прямоугольника
это наше "препятствие" и плевать что препятствие под углом, нам всё равно туда не проехать строго вперёд.
6f377835e4a8.jpg


данные на выходе достаточны и просты
на выходе имеем просто список препятствий с координатами
например строка 10 15 8
это отрезок с началом в точке X10Y15 и длинной 8 пикселов

если 2 препятствия имеем:
X10Y15L8
X20Y35L20


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

ЗЫ
моя цветная минирадиокамера в разрешении 640х480 отлично видит пятно лазера по всей квартире включая ковёр диван и мебель.
беда в том что пятно от лазера гораздо меньше пиксела на конечной картинке которая получится в меге после АЦП кадра. тем более в ЧБ виде оно вобще будет как шум или любой другой блик.
вот красный воздушный шарик в таком разрешении было бы запросто определять :)
очень хочется цвет распознавать.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

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

Сообщение Michael_K » 20 окт 2009, 12:54

И пол тёплый будет

Это вы зря. Вы лазер больше 5 милливатт вряд ли поставили бы.
Ну вкачайте в светодиод(ы) - не пять, а 250 милливатт
- это не так уж много.

И... все же неясным остается алгоритм с линией или ИК-полосой
в условиях естественного окружения.

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

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

Если это пятно растянуть в линию, его яркость упадет, а в линии будут разрывы.
Как проц (не вы, а проц) будет искать эту линию на фоне темной занавески
или блестящего чайника, на котором к тому же блик от лампочки?
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

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

Сообщение =DeaD= » 20 окт 2009, 13:00

EdGull писал(а):значит я всё таки тогда был прав! :Yahoo!:

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

Myp писал(а):это какойто бред из цифр :shock:

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

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

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

Добавлено спустя 1 минуту 58 секунд:
Michael_K писал(а):И... все же неясным остается алгоритм с линией или ИК-полосой
в условиях естественного окружения.

А в чем именно проблема? В естественном окружении нету полновесной ИК-засветки (иначе бы телевизор от пульта фигово работал ;)), поэтому создавая ИК-полосу мы её легко обнаружим в кадре. И по тому какой она формы, поймём, где перед нами препятствия и на каком примерно расстоянии.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Пред.След.

Вернуться в Золотой фонд

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2