roboforum.ru

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

Робот DemoVisionRobot с техническим зрением

Обсуждаем рождающиеся мысли и результаты экспериментов.

Re: Робот DemoVisionRobot с техническим зрением

Сообщение AndreiSk » 17 май 2010, 12:51

artymen писал(а):да, YUYV весьма темный и скользкий формат из-за "двухпиксельности", и это создает жуткую путаницу.


Светлый и ясный формат ;)
У меня есть OV9655, там этот формат тоже есть.
Вкратце, есть два соседних пикселя с камеры (P1, P2).
Их цвет описывается как (Y1, U, Y2, V). Y1, Y2 = яркости для каждого пикселя.
U, V = общие для обоих пикселей. Y1, U, Y2, V = 4 байта.
Конверсия в RGB:
Код: Выделить всёРазвернуть
                 // Common part for both pixels 
                 u = frameBuffer[idxFrame];                  // U component
                 v = frameBuffer[idxFrame + 2];      // V component

                 // Start YUV -> RGB conversion
                 u -= 128;
                 v -= 128;
                 v1 = (5727 * v);
                 uv1 = -(1617 * u) - (2378 * v);
                 u1 = (8324 * u);

                 // Pixel #1
                 y = frameBuffer[idxFrame + 1];                         
                 
                 y1 = y << 12;
                 r = (y1 + v1) >> 12;
                 g = (y1 + uv1) >> 12;
                 b = (y1 + u1) >> 12;
                 if (r > 255) r = 255;
                 else if (r < 0) r = 0;
                 if (g > 255) g = 255;
                 else if (g < 0) g = 0;
                 if (b > 255) b = 255;
                 else if (b < 0) b = 0;
                 
                 // Use (rgb) for pixel #1
                 //putchar(r); putchar(g); putchar(b);



                 // Pixel #2
                 y = frameBuffer[idxFrame + 3];
                 
                 y1 = y << 12;
                 r = (y1 + v1) >> 12;
                 g = (y1 + uv1) >> 12;
                 b = (y1 + u1) >> 12;
                 if (r > 255) r = 255;
                 else if (r < 0) r = 0;
                 if (g > 255) g = 255;
                 else if (g < 0) g = 0;
                 if (b > 255) b = 255;
                 else if (b < 0) b = 0;
                 // Use (rgb) for pixel #2
                 //putchar(r); putchar(g); putchar(b);
Аватара пользователя
AndreiSk
 
Сообщения: 2639
Зарегистрирован: 23 апр 2009, 17:03
Откуда: Москва, Самара
прог. языки: C#

Re: Робот DemoVisionRobot с техническим зрением

Сообщение Alex080969 » 17 май 2010, 16:02

:D Читаю темку с начала... Гыыыы Прямо как детектив))))))) уже на 8 странинце дата- 21.10.09. Мысль - кспеет или неуспеет :)

Добавлено спустя 2 часа 12 минут 31 секунду:
наконец то дочитал)))
Детективчик то недописан пока.
Очень интересное обсуждение. Породило множество идей однако.
Только бы незабыть когда до них руки дойдут ))
Жаль что ТС помочь ничем не могу - не работал с камерами.
Первая заповедь радиотехника - почисти контакты!
Аватара пользователя
Alex080969
 
Сообщения: 763
Зарегистрирован: 10 ноя 2009, 13:13
Откуда: Красноярск
прог. языки: С++, Delphi, PHP, SQL, 1C
ФИО: Александр

Re: Робот DemoVisionRobot с техническим зрением

Сообщение artymen » 17 май 2010, 21:20

:crazy: там всё-равно 2 байта на пиксель, как ни крути. :o
вот именно, как ни крутить, меньше чем 160х120х3 мне не удастся передать с тем же качеством. т.е. предположим, я буду интерепретировать YUYV как два пикселя, но тогда и длина строки у меня увеличится в два раза, размер данных останется прежним. те же пироги ;)
и тем более нафига вообще это делать, когда камера может выплёвывать данные в RGB565 формате.
во-первых, мне не удалось это сделать. во-вторых, я вскоре понял, что меня совершенно не устраивает такая низкая глубина цвета.
вот я такие статьи и имел в виду. первая - это тупо энциклопедия констант для всяких DirectShow, где программисту вовсе не нужно встревать во все дебри. вторая гораздо лучше, но вопросы все равно останутся

AndreiSk, ну я примерно понял, потом как-нить пересмотрю эту сторону, а пока пусть работает как есть :)

:D Читаю темку с начала... Гыыыы Прямо как детектив))))))) уже на 8 странинце дата- 21.10.09. Мысль - кспеет или неуспеет :)
Добавлено спустя 2 часа 12 минут 31 секунду:
наконец то дочитал)))
я всегда рад столь самоотверженным читателям :D детектив подходит к концу, скоро вы узнаете, чем это все закончится.
голосуйте ! отправляйте смс на короткий номер 02 с номером варианта концовки, который вы ожидаете увидеть:
1. автор завершит к сроку проект и реализует в нем все задуманное
2. автор не успеет и получится недоробот с глюками
3. автора заберут в армию
4. мозг автора взорвется до завершения проекта
5. робот выйдет из под контроля и убежит от автора (упрыгает), как только научится распознавать девушек
6. военные выкупят у автора проект для создания нового поколения киборгов, ну а автора, разумеется, заберут в армию
Аватара пользователя
artymen
 
Сообщения: 353
Зарегистрирован: 06 окт 2009, 10:44
Откуда: Омск
Skype: artymen1
ФИО: Артем Константинович

Re: Робот DemoVisionRobot с техническим зрением

Сообщение Alex080969 » 18 май 2010, 04:57

аха..
7. робот поколотит создателя шоб неиздевалси)))
Первая заповедь радиотехника - почисти контакты!
Аватара пользователя
Alex080969
 
Сообщения: 763
Зарегистрирован: 10 ноя 2009, 13:13
Откуда: Красноярск
прог. языки: С++, Delphi, PHP, SQL, 1C
ФИО: Александр

Re: Робот DemoVisionRobot с техническим зрением

Сообщение artymen » 18 май 2010, 20:54

он уже покушался. хитрый киборг не реагировал ни на какие объекты и я поднес свое лицо ради прикола, вдруг срегагирует, и он на меня накинулся :D хорошо, что я хваталку пока еще не запрограммировал, так бы нос отцапал :D
Аватара пользователя
artymen
 
Сообщения: 353
Зарегистрирован: 06 окт 2009, 10:44
Откуда: Омск
Skype: artymen1
ФИО: Артем Константинович

Re: Робот DemoVisionRobot с техническим зрением

Сообщение artymen » 21 май 2010, 13:14

Успехов нет. Я переключаюсь на бумажную работу. Пока диплом не будет готов к защите, не притронусь к роботу.
Вот видео на потеху:
Последний раз редактировалось artymen 21 май 2010, 18:16, всего редактировалось 2 раз(а).
Аватара пользователя
artymen
 
Сообщения: 353
Зарегистрирован: 06 окт 2009, 10:44
Откуда: Омск
Skype: artymen1
ФИО: Артем Константинович

Re: Робот DemoVisionRobot с техническим зрением

Сообщение AndreiSk » 21 май 2010, 15:53

Каких успехов нет?
В чем именно проблема?
Может коллективный разум поможет... :roll:
Напиши вкратце, что получил, как обработал, куда результат сунул, что не получилось.
Аватара пользователя
AndreiSk
 
Сообщения: 2639
Зарегистрирован: 23 апр 2009, 17:03
Откуда: Москва, Самара
прог. языки: C#

Re: Робот DemoVisionRobot с техническим зрением

Сообщение artymen » 21 май 2010, 18:15

Видео с камеры рабоатет стабильно, колор-трекинг работает отлично в тепличных условиях, прямая и обратная кинематика вычисляются нормально. Но все это по отдельности. Вместе же - демонстрируется плохое качество системы в целом. Математика вычисления положения шарика неверная, потом поправлю, но это ненамного улучшит результат. Плавность движений вообще никакая, я даже не могу добиться ее ограничением скорости движения. Оптика камеры дерьмовая, т.к. она для применения в мобильниках, для фотосъемки, а не видео, у нее при малейшем движении картинка геометрически искаженная, т.к. частоту мне пришлось понизить для увеличения экспозиции (иначе картинка темная). А при более сереьзном движении изображение вообще размазанное. Микроконтроллер тоже меня разочаровал, я совсем не ожидал настолько медленного выполнения вычислений. Ну и так далее. Я догадывался, что все будет хреновенько, но оказалось хуже.
Вот мой монитор, написанный на Qt:
Аватара пользователя
artymen
 
Сообщения: 353
Зарегистрирован: 06 окт 2009, 10:44
Откуда: Омск
Skype: artymen1
ФИО: Артем Константинович

Re: Робот DemoVisionRobot с техническим зрением

Сообщение =DeaD= » 21 май 2010, 18:18

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

Re: Робот DemoVisionRobot с техническим зрением

Сообщение artymen » 21 май 2010, 18:55

Обеспечивается, но толку мало ! О какой плавности может быть речь, когда управление осуществляется по положению, да еще и дискретность которого имеет очень низкое разрешение. Я что на 90 градусов поверну серву, что на 2 градуса, один фиг она резко начнет движение и резко остановится. Я пробовал менять интервалы времени и шаги приращения положения - бесполезно - получается дрожащее движение. А механические свойства соединений звеньев еще больше усугубляют дело.
Аватара пользователя
artymen
 
Сообщения: 353
Зарегистрирован: 06 окт 2009, 10:44
Откуда: Омск
Skype: artymen1
ФИО: Артем Константинович

Re: Робот DemoVisionRobot с техническим зрением

Сообщение AndreiSk » 21 май 2010, 19:17

Жаль конечно что так вышло. Столко слез пролито, столько камер сломано :cry:
По своей сути у тебя получилась плохонькая вебкамера.
Аватара пользователя
AndreiSk
 
Сообщения: 2639
Зарегистрирован: 23 апр 2009, 17:03
Откуда: Москва, Самара
прог. языки: C#

Re: Робот DemoVisionRobot с техническим зрением

Сообщение Angel71 » 21 май 2010, 19:29

да не так уж и плохо всё на самом деле, 5 из 5 на экзамене вполне реально получить. на будущее - ssc32 (самделашная примерно в 3-6$ обходится) вполне сносно может сервы без резких движений вращать. с особенностями работы OR плат близко не знаком, но врядли там дела хуже. +or плата при необходимости вполне может помочь разгрузить второй контроллер от работы с различной перефирией
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Робот DemoVisionRobot с техническим зрением

Сообщение artymen » 21 май 2010, 20:38

ну если ssc32 может, то почему я не могу ? интерфейс то тот же
Аватара пользователя
artymen
 
Сообщения: 353
Зарегистрирован: 06 окт 2009, 10:44
Откуда: Омск
Skype: artymen1
ФИО: Артем Константинович

Re: Робот DemoVisionRobot с техническим зрением

Сообщение Angel71 » 21 май 2010, 21:44

интерфейс тот же, а управление другое. и вы при желании сможете. а вот учитывая ограниченность по времени яб не стал сейчас с этим заморачиваться. дописал бы до заключения и если еще останеться время, то только тогда чтот пробовал. маленькая поправка - я стороник идеи, что сервами должен управлять отдельный контроллер, да так больше потребление и места больше нужно, но... зато все импульсы гарантировано выдерживаются, да код не нужно усложнять.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Робот DemoVisionRobot с техническим зрением

Сообщение artymen » 21 май 2010, 22:29

Я рассматривал такой вариант, но тогда я еще не догадывался, насколько сложным окажется код, когда я объединю всю исполнительную логику в единую программу. Я полагаю, что если плавного движения и возможно добиться, то только при очень большой занятости проца сервами. Это не только невозможно из-за синхронной работы с камерой, но и просто отберет кучу процессорного времени, а робот итак уже тормознее некуда. Однозначно нужен дополнительный МК, но слишком поздно. Я считал кинематику, динамику проигнорил, и теперь расплачиваюсь. На доп. МК можно было бы и динамику еще реализовать... Что сделано, то сделано. Продолжаю доделывать чертежи и ПЗ...
Аватара пользователя
artymen
 
Сообщения: 353
Зарегистрирован: 06 окт 2009, 10:44
Откуда: Омск
Skype: artymen1
ФИО: Артем Константинович

Пред.След.

Вернуться в Идеи

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

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