Автор Тема: Робот играещ тенис на маса.  (Прочетена 16334 пъти)

sv_shady

  • Administrator
  • *****
  • Публикации: 636
    • Профил
Робот играещ тенис на маса.
« -: Декември 30, 2011, 01:13:37 am »
Здравейте,

Искам да ви покажа с какво се занимавам тази година в университета. Става въпрос за робот, който трябва да може да играе тенис на маса.
Роботът е разделен на няколко абстрактни части:

- зрение
- глава
- мозък
- гръбначен стълб
- крайници

Зрението трябва да може да засича топката и да изчислява позицията и спрямо робота. Главата движи двете камери по две оси, като позлволява следене на топката. Мозъкът трябва да взима тази информация и да преценява какво ще е следващото действие. Информацията за следващото действие се праща до крайниците чрез гръбначния стълб. Гръбначният стълб трябва да осигурява свъзаността на всички компоненти в системата.

Тъй като трябва доста сериозни сметки да се изпълняват в реално време,  решихме да ползваме 6 компютъра, вместо един голям. Това е една от причините да изберем Robot Operating System (ROS) за проекта. ROS предлага пращане на събщения между различни компютри плюс много други разични екстри - от симулация на целия робот до автоматично конвертиране на иформацията в различни координатни системи по време на предаване на съощенията.

Моята задача в този проект е зрението и управлението на главата.
Всичко свързанео със зрението е написано на OpenCV и С++. Първо трябваше да се калибрират камерите по отделно, а след това като една стерео камера, за да може да се реконструира позицията на топката в 3Д координати спрямо робота. За да може да се сметне позицията на топката, то тя трябва да бъде намерена в изображенията от лявата и дясната камера. За сегментирането на топката ползвам както цвета, така и формата. След като се намери разликата в позицията на топката в лявото и дясното изображение, 3Д позицията на топката може бъде пресметната. Постигнатата точност е +-1мм по X и Y и +-3мм по Z oста. Всичко това работи в реално време за двете камери с по 16 фрейма за секунда.

Триангулираната позиция се праща на компютъра, който управлява главата. Компютърът е хPC Target, което означава, че върху него се пускат модели на системи проектирани чрез SIMULINK и MATLAB. Системата, която върви върху компютъра, включва два ПИД контролера за всеки мотор, като обратната връзка се осъществява чрез оптични ротационни енкодери.

На това филмче се вижда част от компютрите, както и как робота следи топката: http://www.youtube.com/watch?v=vGCVWb4WEm0

Следващата стъпка е да разработя алгоритъм, чрез който роботът ще предвижда къде ще бъде топката след няколко секунди, както и каква е равнината, върху която е топката.

За пълнота ще разкажа малко и за останалите модули.

На клипчето се вижда само една от ръцете на робота (другата още се прави), която е хаптик ръка и може да постигне изключително високи скорости. Тя също се контролира чрез xPC Target, като управлението ще се извършва от мозъка.
Планираме да ползваме два модела за мозъка на робота - единият класически, а другият изграден на базата на невронни мрежи.
Всички тези модули вървят върху различни машини и трябва да обменят информация в реално време. ROS е един отличен избор за решение на този проблем.

Надявам се като започне следващия семестър да има какво още да ви покажа :)
Imagination is the only limit.......

Светлин Пенков
София / Рединг, Великобритания

Тош

  • Новодошъл
  • *****
  • Публикации: 2
    • Профил
Такава "глава" ми трябва и на мен... :)
« Отговор #1 -: Декември 30, 2011, 02:05:10 am »
Готино звучи. :)

//Забавно е, че за такъв тип глава си мислех преди няколко дни за едни мои експерименти, даже си я "нарисувах". Само дето е добре да е мобилна (с кабел към компютър), и ми  трябват и два микрофона, но няма изисквания за такава висока точност на триангулация и реално време, то даже не би правила триангулация с готови алгоритми и директни изчисления.

USB уебкамери на мен биха ми свършили работа.

Иначе видеото ти ми напомня за едно, което бях видял преди доста години от някаква изследователска група, с подобна "глава" с камери, но онази беше адски бърза - следеше произволни движещи се предмети с всякаква текстура със скоростта на котка. :)

sv_shady

  • Administrator
  • *****
  • Публикации: 636
    • Профил
Робот играещ тенис на маса.
« Отговор #2 -: Декември 30, 2011, 08:33:41 am »
В момемта им два основни фактора, които ограничават скоростта на следене. Първият е, че ПИД контролерите не са настроени все още и системата много лесно става нестаблина. Другият проблем е, че самите камери са бавни и ако движа топката по-бъзро тя се размазва прекалено много и не може да бъде сегментирана. Този проблем ще го разреща като в алгоритъма за намиране на топката заложа и предвижданите координати на топката. Така ще мога да търса в по-малък регион и много по-бързо, което очаквам да подобри скоростта на следене.
Разбира се и не на последно място това въри на един Pentium 4 на около 2 GHz, което може би също ограничава скоростта.
Imagination is the only limit.......

Светлин Пенков
София / Рединг, Великобритания

Alternative

  • Вече знае какво е робот!
  • *****
  • Публикации: 48
    • Профил
Робот играещ тенис на маса.
« Отговор #3 -: Декември 30, 2011, 01:48:18 pm »
Много добре изглежда вече подкаран :) Макар да се замисля малко при по-бързи движения.
*Игнорирайки изчислението на тракеторията на топката.* Ако винаги се опитва да я държи в центъра на изображението, това не е ли достатъчно да се предположи в каква област се намира?
Каква резолюция използвате? Какво би било увеличението на грешката в позицията на топката, ако се намали? Фрейм рейта би трябвало да се увеличи и да подобри следенето при по-бързо движение.
Даниел Ангелов, гр. София

Тош

  • Новодошъл
  • *****
  • Публикации: 2
    • Профил
Цитат на: "Alternative"
Много добре изглежда вече подкаран :) Макар да се замисля малко при по-бързи движения.
*Каква резолюция използвате? Какво би било увеличението на грешката в позицията на топката, ако се намали? Фрейм рейта би трябвало да се увеличи и да подобри следенето при по-бързо движение.


И аз мисля, че такава точност може да е излишна и по-бързо опресняване би донесло повече предимства, защото траекторията на топчето е приблизително предвидима за много време след удар (до удар, дори и ако има някакъв фалц, но да, фалцът по-трудно ще го измерите визуално докато не се топне). Освен това топчето се удря с палка, там е допустима известна грешка в уцелването.

Между другото, мислил ли си за това: траекторията и скоростта могат да се мерят по размазването на образа на топчето при по-дълга експонация. Едновременно да се снима с високоскоростна камера с голяма точност и с ниска скорост с голяма експонация и да се обучи системата да намери корелацията между двете.

Тенисистите и бейзболистите, които посрещат зверски силен начален удар предвиждат траекторията общо взето по тоя начин, защото нито окото има висок фреймрейт, нито пък мозъкът може да реагира толкова бързо съзнателно.

orlin369

  • Вече знае какво е робот!
  • *****
  • Публикации: 59
    • Профил
    • http://www.pravetz8.com/Robko_TNTM.html
Робот играещ тенис на маса.
« Отговор #5 -: Януари 17, 2012, 12:25:45 am »
Би ли постнал кода за ПИД регулаторите лиубопитен съм ... :)
Орлин Димитров 21г.
skype: orlin159753

Роботиката не е хоби, а религия.