Форум по Роботика

Проекти за роботи => Line Tracer => Темата е започната от: yasko в Септември 14, 2009, 09:17:17 am

Титла: Хай-тек Line Tracer
Публикувано от: yasko в Септември 14, 2009, 09:17:17 am
Отдавна ми се върти идеята да направя един лайн трейсър, който вместо датчици да използва камера за следене на линията. Досега ме спираше това че нямах подходяща механична платформа, но този проблем вече е решен и  мога да пристъпя към реализация на проекта.
Идеята е следната, имаме оптичен сензор, който в реално време заснема пистата и предава получената към процесор, който обработва изображението, намира положението на линията и подава управляващи сигнали към моторите, така че да се следва линията.
Първото предизвикателството е как да се събере върху размери 7x11 см целия хардуер необходим затова и при това да се захранва от батерии. В интернет се предлагат някои готови модулчета с камерка, но аз реших да използвам собствен модул. Разбира се проектирането на такъв модул би отнело доста време, но тук ми помогна моята професионална дейност и се оказа, че вече имам разработен подобен модул, който би свършил работа. И така с какво разполагам върху него:
- процесор ADSP-BF537 -500MHz
-32 MB SDRAM, 8MB FLASH
- възможност за включване на CMOS оптичен сензор
- възможност да се стартира Linux (uClinux) на него
- захранване 3.3V плюс ниска консумация <2W
За мой късмет и самата платка се събира точно върху платформата.
С още малко допълнителна електроника ще имам всичко необходимо за хардуерната реализация на проекта. Ще ми трябва известно време за да мога да събера всичко това върху шасито, но като цяло няма сериозни технически пречки. Разбира се оства по-сложната и интересна работа със софтуера и алгоритмите, но този проблем ще ги изложа в следващите теми.
Титла: Хай-тек Line Tracer
Публикувано от: dzv3r0 в Септември 14, 2009, 04:07:05 pm
Идеята ти ми харесва.
Това е друг начин за решаване на проблема. Звучи като предизвикателство, чакам с нетърпение снимки.
Успех.
Титла: Хай-тек Line Tracer
Публикувано от: hunter в Септември 14, 2009, 05:41:31 pm
Идеята е повече от страхотна, аз от доста време се надявам някой от вас които се занимават по усърдно с програмиране да сътвори някъква подобна машинария преди и sv_shady в една от темите каза че го сърбят рацете за нещо подобно но явно издържа на сърбел защото поне тука не е отбелязал проект :D  но се надявам скоро да има развитие по темата мисля че на доста хора тук ще им предсавлява огромен интерес. Все пак това е един много сериозен проект и би украсил доста форума за да не се въртим в редовните теми за най-лесни роботи смисъл като форума е от години вече а и клубът да има и сериозен проект, успех аз съм един от многото които ще следят темата с интерес :D
Титла: Хай-тек Line Tracer
Публикувано от: yasko в Септември 14, 2009, 10:40:07 pm
Радвам се че има интерес към темата, защото малко  се притеснявам проекта да не остане като глас в пустиня. И мен отдавна ме сърбят ръцете за някой по-сериозен проект. Всъщност проекта за мобилния робот е достатъчно сериозен, но при него разбрахме че се иска сериозна механика и реално в това загубихме доста време.  В този проект ще бъде повече електроника и основно програмиране. Всъщност смятам че хардуера ще бъде по лесната част от задачата, а и там натрупания досега опит ще ми помогне да се реализира хардуера. Не бих казал същото за алгоритъм за управление, там имам само някои идеи как да се направят нещата, но се надявам в процеса на работа  да се изяснят и смятам че със съвместни услия на клуба и форума да успеем да решим задачата. Разбира се основнат цел на пороекта е да увеличи познанието на хората във форума отнсно роботи и системи от такъв клас и да се изяснят основните алгоритми на работа. Давам си сметка че задачата съвсем не е проста, но вярвам че с достъчно постоянство и общи усилия ще можем да я решим  и да покажем че и тук в България може да се конструира един робот на доста добро ниво.
Титла: Хай-тек Line Tracer
Публикувано от: Georgi в Септември 14, 2009, 10:43:59 pm
съгласен сам с теб с удоволствие ще следя темата и ако мога ще помагам.
Титла: Хай-тек Line Tracer
Публикувано от: Vexorian в Септември 15, 2009, 02:07:39 am
Интересна идея.. тук наскоро с колегите от университета, коментирахме как може да се направи робот, който разпознава живи същества, и стреля по тях с пейнт-бол оръжие... Попринцип начина е да се сканира всеки пиксел за цветове в определен спектър от всеки кадър... за Linetracer... само трябва да се определи някъде "позицията" на робота в изображението, както и при инфрачервените сензори... имаме 1 или 2 централни и странични... С камера бих казал, че ще е по-ефикасно определено. В YouTube са направили такъв робот който е по-бърз и от обикновените linetracer-и. http://www.jrobot.net/Projects/AVRcam.html това ми се струва интересно.
Титла: Хай-тек Line Tracer
Публикувано от: dzv3r0 в Септември 15, 2009, 10:49:11 am
http://puredata.info/

//offtopic

За пейнтбола мисля че това определено не е правилният начин
Титла: Хай-тек Line Tracer
Публикувано от: nunep в Септември 15, 2009, 05:53:29 pm
Това е което Ви трябва за анализ на картинката от камерата. Окаде съм свалял сайта незнам. Ето го и файла:
http://www.skatafka.com/download.php?file=fd94ccc5fc620624d5d7371693e23533
Титла: Хай-тек Line Tracer
Публикувано от: sv_shady в Септември 15, 2009, 07:33:38 pm
Здравейте на всички :) Виждам, че се очертава една интересна тема. Преди наистина бях обещал да направя нещо такова, но просто не ми остана време, нали се стягам да заминавам и за Англия, та то са документи, разправии, и няколко проекта по работа имам, та никакво време за любителските начинания. НО от другата неделя 27-ми септември превключвам на изследователска тематика :) Плюс това ще имам доста проекти по време на обучението ми и обещавам да качвам всичко тук.
Сега по идеята - наистина е интересна и определено е реализируема :) Но според мен ключов фактор е ъгълът под който камерата ще гледа. Ако е прекалено малък и насочена почити централно надолу, няма да има по-големи предимства от оптроните, а дори  поради времето необходимо за изчисления ще бъде по-бавно. Ако обаче камерата гледа например под ъгъл 45градуса, то тогава ще може да вижда доста напред по пистата и ще може да се смята по оптимална скорост и маневриране.
Титла: Хай-тек Line Tracer
Публикувано от: sando_712 в Септември 15, 2009, 09:05:08 pm
Темата наистина е много интересна и ще бъде супер да се направи един Linetracer с камера, но ще обогати и форума за него, браво  :clap:
Титла: Хай-тек Line Tracer
Публикувано от: dzv3r0 в Септември 16, 2009, 01:03:12 am
Цитат на: "sv_shady"
Здравейте на всички :) Виждам, че се очертава една интересна тема. Преди наистина бях обещал да направя нещо такова, но просто не ми остана време, нали се стягам да заминавам и за Англия, та то са документи, разправии, и няколко проекта по работа имам, та никакво време за любителските начинания. НО от другата неделя 27-ми септември превключвам на изследователска тематика :) Плюс това ще имам доста проекти по време на обучението ми и обещавам да качвам всичко тук.
Сега по идеята - наистина е интересна и определено е реализируема :) Но според мен ключов фактор е ъгълът под който камерата ще гледа. Ако е прекалено малък и насочена почити централно надолу, няма да има по-големи предимства от оптроните, а дори  поради времето необходимо за изчисления ще бъде по-бавно. Ако обаче камерата гледа например под ъгъл 45градуса, то тогава ще може да вижда доста напред по пистата и ще може да се смята по оптимална скорост и маневриране.


Насочена право на долу е голям ъгъл(90). Според ме за да има полза, трябва да се съобрази и височината за да може след нагласяна на ъгъла да се анализира вазможно най-далечна част от линията, така може да се разбере дали има `мегдан да тича напред или трябва да даржи ниска скорост за да види завоя и т.н.

Друго за което си мисля е калибровка - при стартиране робота вижда колко `аджеба е широка линията, което може да използва ако камерата е под малак ъгъл (повтарям - по-малък от 90, че защо не и от 45).

Гледайки напред и правейки точните изчисления  робота ще бъде наистина бърз.
Титла: Хай-тек Line Tracer
Публикувано от: Vexorian в Септември 16, 2009, 03:45:36 am
http://www.jrobot.net/Projects/EyeBo.html камерата е поставена под ъгъл 30-45 градуса ако смятаме, че 90 градуса е когато камерата "гледа" напред..... и е на доста голяма височина... yasko защо не пробваш да направиш нещо като EyeBo, въпреки, че имаш готов модул?
Титла: Хай-тек Line Tracer
Публикувано от: yasko в Септември 16, 2009, 01:37:22 pm
Тази камерка на jrоbot изглежда интересна, въпреки че ми се струва че проекта е не се развива вече. Иначе ето това е един доста популярен проект за роботска камера:  http://www.cmucam.org/
Моята идея е да се направи нещо като това по-скоро: http://www.surveyor.com/SRV_info.html  Като виждате хамериканците са вече едни гърди напред.
Така че в нета има най-ралични проекти, но не ми се взима нещо готово и  ще действам с това което имам. Процесора ADSP-BF537 e от серията BlackFin на фирмата Anlog Devices и постига 1000MIPS, което мисля че ще стигне за обработката на изображението. Другото готино нещо е че има Open Source подръжка включително и uClinux OS за този процесор.
Въпроса с ъгъла под който се закрепя камерата е интересен, в момента камерата гледа право напред, което не знам дали е  най-удачния вариант. Може би ще трябва да се помисли за вариант при който този ъгъл да се променя. Но сега пръво трябва да опитам да закрепя всичко върху платформата, довечера на сбирката ще пробваме някои варианти.
Благодаря на nunep  за алгоритъма, който е дал, като стигнем да софтуера ще го разгледам по-подробно.
Титла: Хай-тек Line Tracer
Публикувано от: Vexorian в Септември 16, 2009, 04:38:50 pm
Във всички случаи... робота няма да е малък.. така, че няма нужда от притеснения относно количеството електроника. Щом имаш готов модул, ползваш него.... но ми се струва по-лесно с AVRCam... а и по-интересно :) Иначе.. да ЦМУ-то беше много често използван модул.. ама AVR-то го замeсти.. jro използваше за първия си EyeBo CMU..
Титла: Хай-тек Line Tracer
Публикувано от: Georgi в Септември 18, 2009, 06:37:00 pm
Имам идея относно ъгъла на камерата - може да я направиш подвижна, т.е. да направиш една малка платформа за камерата и да я управляваш с акселометър (гледах едно клипче как с акселометър и Ардуино май беше управляват серво ) и вместо да фиксираш камерата за определена повърхност може да добавиш и препятсвия на пътя като с акселометъра да се регулира ъгъла на камерата и съответно да преодолява препятсвията. Но не съм сигурен дали ще стане, просто давам идея :)
Титла: Хай-тек Line Tracer
Публикувано от: Vexorian в Септември 18, 2009, 07:39:32 pm
Идея е ама не си заслужава, тъй като ще отнеме доста време за настройка и ресурси. Най-лесно за Linetracer е да се фиксира ръчно... робота няма да катери планини все пак.

Извън темата: Георги акселометър не се пише с 'ц' ... управлявам не се пише с 'о' 13 грешки в един пост...
Титла: Хай-тек Line Tracer
Публикувано от: yasko в Септември 23, 2009, 11:16:29 pm
Пробвха да закрепя основната  платка върху платформата. Ето резултата:

(http://www.robko.net/robotics/Line-Tracer/pict/hi_tracer1.jpg)
Титла: Хай-тек Line Tracer
Публикувано от: Vexorian в Септември 24, 2009, 01:18:20 am
Ехаааа.. Много добре изглежда  :)  Ама малко под-ъгъл камерата май? Най-много ми харесва обаче, как е монтиран модула на платформата, която "уж" е за малки неща, ама всъщност става за всичко! :)
Титла: Хай-тек Line Tracer
Публикувано от: yasko в Септември 25, 2009, 09:40:29 am
Да, платката пасна доста добре. Модула с оптичния сензор в момента е под прав ъгъл спрямо нея, ще трябва да се наколони малко надолу за да гледа пистата, но тове ще се установи при тестовете. Измерих консумацията около 200mA при 5V, което е доста прилично. Това в ненатоварен режим след като линукса е заредил. За управление на двигателите ще използвам този  Н-мост (http://www.robotics-bg.com/forum/viewtopic.php?p=5004#500). Чудя се дали да го вържа директно към големия процесор или да ползвам по-малък микроконтролер за посредник. В първия случай ще ми трябва драйвер за линукса за да мога да управлявам директно двигателите с PWM. Във втория вариант мисля да направя връзка по I2C между двата процесора и системата ще стане по-гъвкава, но ще ми трябва допълнителна платка.
Титла: Хай-тек Line Tracer
Публикувано от: Vexorian в Септември 25, 2009, 02:18:57 pm
Втория е по-удачен според мен, защото можеш да добавиш още неща към управлението, например изчисляване на скоростта, ъгъла.. и т.н. Така се концентрираш върху главната програма в процесора и не се занимаваш с други неща :) А и едва ли ще е много голяма платката за един Атмега СМД...
Титла: Хай-тек Line Tracer
Публикувано от: Alternative в Септември 25, 2009, 04:46:21 pm
И аз гласувам да го направиш чрез посредник. Няма да го усложни, а пък така ще се образува отделно, специализирано модулче. Мислех относно алгоритъма и за следене на линия- според мен по-важно ще бъде намирането на центъра на линията (т.е. средата м/у двата ръба ). Така ще се образуват "точки", които роботът трябва да посети. Също така ще може да се свържат например n-тата точка с n+10, да се изследва, дали няколко от съседните точки се намират в толерансна далечина от тази линия. Ако всичко е напред- получава се реално траектрията на робота, ако ли пък има центри на линията, намиращи се отдалечено (в случай че пистата е по-трудна и с променлива дебелина/ някакво странно отражение ) то се прави същото по-горно изследване за например вектора [n,n+5] или където е намерен проблема.

(http://prikachi.com/files/1081847O.jpg)

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

П.П. Каква е височината на центъра на камерата(предполагам 70-80mm), за да се помисли под какъв ъгъл е хубаво да бъде сложена (ако е под 90' спрямо хорисонталата както е сега ще се вижда прекалено много ненужна информация т.е. полезрението ще бъде ограничено). При ъгъл от 45' и 70 мм височина горния ъгъл на камерата ще вижда 192мм напред, а долния 24 мм пред робота (ако разбира се полезрението на камерата е 52'). При 90' blind зоната ще е на до 144 мм пред робота. Т.е. трябва да кара по памет.

edit : Отностно алгоритъма се замислих, че няма смисъл на се цепи кадъра на части ( от н до н+и ). По-добре да се пусне 1 рекурсивна ф-я (с по-горните условия) от най-горния до най-долния ред в търсенето само на първия вектор. Така или иначе докато го измине, ще е "дошъл" следващият кадър и отново ще се промени траекторията .
Титла: Хай-тек Line Tracer
Публикувано от: yasko в Септември 28, 2009, 12:37:37 pm
Идеята за алгоритъм е добра и ще се върна на нея, като се започне по-сериозна работа по самия софтуер. Разбира се който има идеи може да ги споделя. Сега съм се заел с по-прозаичните технически задачи, като управлението на моторите и комуникацията с робота. Убедихте ме че моторите трябва да се управляват с посредник, така че ще сложа един ATMEGA88, който да си приказва по I2C с по-големия му събрат. От страна на uClinux -a има софтуерна подръжка за I2C, така че не очаквам проблеми.
Трябва ми също канал за комуникация, по който да могат да се пращат команди и програми от PC, т.е комуникация в реално време.  Платката с Blackfin процесора има изведена серийна конзола, по която човек може да си приказва с линукса и мисля да я прехвърля безжично чрез два ZigBee модула до PC. С други думи ще заменя кабела с безжична връзка, която като цяло няма да е много бърза, но за начало стига.  Подобна система използвахме при мобилния робот и работеше добре. Всъщност за да си спестя запояване и правене на платки, ще използвам като донор на части мобилния робот, там има точно платка с ATMEGA88 и ZigBee модулче. Мился че ще мога да я сместя отзад на робота. Има вариант за по високоскоростна комуникация чрез Wireless адаптор, закачен към LAN интерфейса на основната платка, но при този вариант консумацията ще скочи доста, а има и други проблеми.

П.С Височината на камерата в момента е 75мм. Въпроса с положението на камерата предстои за анализ, но ще трябват и малко опитни дани - реални снимки.
Титла: Хай-тек Line Tracer
Публикувано от: sv_shady в Септември 28, 2009, 04:25:30 pm
Ами идеята с центъра на линията е интересна, обаче когато има залъгващи места по пистата траекторията се изменя ненужно и се губи време. Моята идея е следната:
1. картинката се ротира спрямо ъгъла на камерата
2. обхожда се от горе надолу и се намира най-далечната линия
3. намира се най-краткия път по линията до долната централна част на картинката
Малко графове и работа с масиви, така че Яска, чакам само реални картинки, защото така и така сега имам една седмица мотаене :)
Титла: Хай-тек Line Tracer
Публикувано от: Vexorian в Септември 28, 2009, 05:42:04 pm
Защо не SPI, по-бърз е от I2C? И LIN би трябвало да стане.
Титла: Хай-тек Line Tracer
Публикувано от: sv_shady в Септември 28, 2009, 07:16:29 pm
Мисля, че няма драйвер за SPI, а и едва ли ще има толкова голямо значение, защото трансфера на информация няма да е голям.
Титла: Хай-тек Line Tracer
Публикувано от: yasko в Септември 28, 2009, 09:56:35 pm
Всъщност има драйвер и за SPI, но I2C иска само 2 жици, a и в случая трансфера между двата процесора няма да е голям. Освен това настройките на CMOS сензора се правят чрез I2C така, че ще е по удобно всичко да е на един тип шина.
Нека направим една оценка на трансфера. Aко приемем че за управлението на всеки мотор ни трябват по 2 байта и да кежем още 4 байта за допълнителни праметри стават общо 8 байта в един пакет. Да приемем че информацията се обновява 50 пъти в секунда, което ще е достатъчно бързо, тогава цели трансфер излиза 400 bytes/sec - стойност, която не е никакъв проблем за I2C.

П.С.  Светльо, реални снимки се надявам да може да изкраме в сряда на сбирката, ако няма проблеми.
Титла: дамм и снимкии
Публикувано от: zoro1 в Октомври 02, 2009, 11:11:07 pm
За съжаление поради / заради немаливост
{моя} снимките са само две,шот другото са видоклипове.
(http://img156.imageshack.us/img156/1476/30092009793.th.jpg) (http://img156.imageshack.us/i/30092009793.jpg/)

и тук зареждането на Линукс ядрото ,предавано по Зиг Бии
(http://img255.imageshack.us/img255/1723/30092009794.th.jpg) (http://img255.imageshack.us/i/30092009794.jpg/)

http://www.youtube.com/watch?v=zTMEZFAMmNs&feature=player_embedded
Титла: Хай-тек Line Tracer
Публикувано от: sv_shady в Октомври 03, 2009, 12:42:12 am
Яска, докъде докарахте, има ли реални снимки, на които да се нахвърлям :)
Титла: Хай-тек Line Tracer
Публикувано от: yasko в Октомври 03, 2009, 09:10:22 am
Реални снимки още няма. За съжаление. Налегна ме малко работа, но се работи по въпроса.
Титла: Хай-тек Line Tracer
Публикувано от: yasko в Октомври 06, 2009, 04:17:12 pm
Благодаря на zoro1, за качените снимки, ще кача и някоя друга като остана малко врмеме. Както се вижда, отзад закрепихме платката със ZigBee модула и един ATMEGA88.  ZigBee модула е на фирмата Dig  (MaxStream), продават ги в Комет. Този дори e PRO версия и му дават една  миля обхват  на открито.  В момента модула е вързан директно към серийната конзола на BlackFin процесора.  От страната на компютъра има същия модул вързан през USB конвертор. Реално в момента имаме директна връзка с главната палтка, без никакви кабели и след като се пусне захранването на конзолата се наблюдава процеса на зареждане на линукса. Интересното е че тези ZigBee модули закачат много бързо помежду си, следа като се пусне захранването.
Сега остава да се изгради връзка по I2C между големия и малкия процесор и да се монтира платката с двата H-моста.
Титла: Хай-тек Line Tracer
Публикувано от: yasko в Октомври 22, 2009, 10:04:59 am
Малко нова инофрмация по проекта. Вече имаме свързан H-моста към ATMEGA88 и малък софтуер за управлението на моторите през I2C. Остава да се изгради връзка по I2C между големия и малки процесор. Вчера направихме някои тестове с камерката и какво реално вижда робота. Ето една снимкa, повече подробности по-късно.
(http://www.robko.net/robotics/Line-Tracer/pict/robo1.jpg)