roboforum.ru

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

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

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

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

Сообщение Levsha128 » 06 июн 2010, 13:31

Я тут немного не в теме, но хочу сказать, смотря на видео, что с одной камерой ничего путного не получится.
Я бы заюзал две камеры и сделал управление по такому алгоритму:
1) Находим объект на обоих камерах
2)С помощью датчиков на манипуляторе определяем текущие сгибы суставов
3)На основе данных о суставах (длина и угол поворота) делаем микромодель мира относительно некой центральной точки(например, центра основания робо-руки)
4)Вычисляем положение объекта относительно камер
5)Привязываем положение камер к микромодели
6)Вычисляем абсолютное положение объекта относительнео центральной точки
7)Инверсной кинематикой высчитываем конечное состояние суставов
8)Делаем проверочку на предмет отсутсвия на "пути" преград и если все ок, то включаем серваки и поехали!


Кстати, по поводу трекинга шара если известно что он не будет слишком быстро двигаться, то советую применить боле "интелектуальный" алгоритм поиска- сначала искать ближе к тому месту, где он был раньше. Вот мысля пришла :D

P.S. Все, начинаю свою систему зрения делать как раз и опробую новую структуру нейронных сетей, основанную на биологическом зрении. Только соотношения амакриновых/горизонтальных/ганглиозных нужно продумать.
Смотри в корень!
Аватара пользователя
Levsha128
 
Сообщения: 22
Зарегистрирован: 08 мар 2010, 20:19
Откуда: Херсон
прог. языки: C++, Delphi, ASM, Си
ФИО: Шульга Алексей

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

Сообщение Angel71 » 06 июн 2010, 14:13

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

"ты просто не умееш их готовить" :crazy: 8) пораскинь сам знаешь чем, над тем, что размер шара можно знать заранее.
нейронки это круто, ну раз уж бионикой интересуешься, то может уже сразу замахнёшся на реализацию тысячь слоёв для предобработки и всех микродвижений камерой? а если серьёзно - оооочень громадное количество вычислений в сети с отношениями многиеи ко многим. даже новые soho`вские 6ти ядерные phenom`ы (кста оч даже недорогие) легко загнутся, пытаясь столько обрабатывать. полезно уже задуматься над использованием opencl. у ати нормально с ним работать можно уже начиная с бюджетной 5000й серии (50-60$)
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

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

Сообщение galex1981 » 06 июн 2010, 15:05

У меня такое ощущение что распознает шарик оно замечательно - неверно определяет расстояние до него
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

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

Сообщение Levsha128 » 06 июн 2010, 19:49

пораскинь сам знаешь чем, над тем, что размер шара можно знать заранее.

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

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

Это слишком.

Кстати, интересный факт: Разрешение глаза человек- 125 МПикселей, но из самого глаза нервных волокон выходит намного меньше - около миллиона, то есть сетчатка "сжимает" информацию в 125 раз. Кстати, для того что бы возбудить палочку иногда достаточно 1-3 фотона. Это так, маленькое лирическое отступление =)


Кстати, скоро я в в журнале программист http://www.procoder.info/ (я являюсь его создателем(совместно с друзьями- программистами) и главным редактором) хочу опубликовать серию статей касающегося зрению и ИНС.
Последний раз редактировалось Levsha128 06 июн 2010, 20:14, всего редактировалось 2 раз(а).
Смотри в корень!
Аватара пользователя
Levsha128
 
Сообщения: 22
Зарегистрирован: 08 мар 2010, 20:19
Откуда: Херсон
прог. языки: C++, Delphi, ASM, Си
ФИО: Шульга Алексей

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

Сообщение artymen » 06 июн 2010, 19:51

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

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

Сообщение Angel71 » 06 июн 2010, 21:22

Levsha128, я не про "слои" как таковые писал. :pardon: просто хз, как назвать всё это разнообразие из различных типов нейронов, групп, путей, полей, ...
Levsha128 писал(а):Кстати, интересный факт: Разрешение глаза человек- 125 МПикселей, но из самого глаза нервных волокон выходит намного меньше - около миллиона, то есть сетчатка "сжимает" информацию в 125 раз.

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

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

Сообщение artymen » 07 июн 2010, 11:52

Что твориться в голове у моего киборга, когда он творит продемонстрированное на видео ?
А вот что. Привожу часть кода с интеллектуального уровня управления:
Код: Выделить всёРазвернуть
/* Распознаем объект */
      ct_recognize();
      if (ct_object.found) {
/* Следим за объектом */
         /* Кинематика... */
         determine_object_coords(-(((float)(ct_object.centerX-2))-((float)(IMG_WIDTH))/2.0), -(((float)(ct_object.centerY))-((float)(IMG_HEIGHT))/2.0), ct_object.size);
         bool try_catch = object_in_capture_zone();
         update_servo_pos();
         determine_grip_position(distA, q1a, q2a, q3a, Xn, Yn, Zn);
         next_position(Xn, Yn, Zn, q1a, q2a, q3a, try_catch);

         uint8_t result = reverse_objective(distA, Xn, Yn, Zn, q1, q2, q3);
         switch (result) {
            case RO_OK:      // если объект достижим
               if (try_catch) {   // и если он находится в зоне захвата, то
                  if (grip_catch()) {   // дико кидаемся на него, цапаем, и если сцапали, то
                     reverse_objective(a3, X_BASKET, Y_BASKET, Z_BASKET+35.0, q1, q2, q3);   // вычисляем кинематику для движения на корзину
                     disable_movement_shaper();   // отключаем шейпер (ну а че медлить)
                     move_grip();   // молнией мчимся в корзину
                     init_ms_timer();   // заново инициализируем таймер, т.к. он юзался раньше шейпером
                     wait_ms(1000);      // путь до корзины большой, подождем :)
                     grip_release();      // отпускаем шарик... или палец бедолаги-оператора :D
                     return;         // ну вот и все, the end ;)
                  } else {      // ну а если не удалось сцапать, то
                     grip_release();      // разжимаем наши смертельные челюсти
                     disable_movement_shaper();   // отключаем шейпер
                     init_ms_timer();
                     wait_ms(400);      // ждем, пока массивные зубы вытащатся из окровавленной плоти пальца оператора
                     q2 = q2a;      // возвращаемся в засаду, откуда накинулись
                     q3 = q3a;
                     enable_movement_shaper();   // включаем шейпер, торопитсья некуда, продолжаем охоту....
                  }
               }
               break;
            case RO_TOOFAR:   // если объект далеко, то
               target_orientation(Xn, Yn, Zn, q1, q2, q3);   // тянемся, тянемся до него, авось удастся порвать цепи и вырваться %)
               break;
         }

         move_grip();   // че-то там выше навычисляли, двигаемся туды...
      }

:D
Последний раз редактировалось Vooon 07 июн 2010, 13:43, всего редактировалось 1 раз.
Причина: [code=cpp]!!!
Аватара пользователя
artymen
 
Сообщения: 353
Зарегистрирован: 06 окт 2009, 10:44
Откуда: Омск
Skype: artymen1
ФИО: Артем Константинович

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

Сообщение =DeaD= » 07 июн 2010, 12:06

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

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

Сообщение artymen » 07 июн 2010, 12:25

Да, все верно. "хватание" и "тянемся" я сделал за несколько часов. "где мячик" я отдельно отлаживал последние два месяца, решение этой задачи представлено в самой первой функции приведенного кода :) Этот участок кода я написал за 10 мин., когда все низкоуровневые операции были отлажены по-отдельности.
Последний раз редактировалось artymen 07 июн 2010, 12:36, всего редактировалось 1 раз.
Аватара пользователя
artymen
 
Сообщения: 353
Зарегистрирован: 06 окт 2009, 10:44
Откуда: Омск
Skype: artymen1
ФИО: Артем Константинович

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

Сообщение =DeaD= » 07 июн 2010, 12:33

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

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

Сообщение artymen » 07 июн 2010, 12:37

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

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

Сообщение =DeaD= » 07 июн 2010, 12:49

Вот ничего себе :)

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

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

Сообщение artymen » 08 июн 2010, 16:27

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

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

Сообщение =DeaD= » 08 июн 2010, 16:54

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

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

Сообщение artymen » 08 июн 2010, 17:36

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

Пред.След.

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

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

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