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

Проекти за роботи => Други роботи => Темата е започната от: sv_shady в Февруари 26, 2010, 08:12:25 pm

Титла: Самообучаващ се робот
Публикувано от: sv_shady в Февруари 26, 2010, 08:12:25 pm
Докато си бях в България миналата ваканция започнах работа по един робот, за който искам да ви разкажа. Проектът все е още не е завършен - трябва му софтуер, но все пак смятам, че ще е интересен.
Проектът представлява робот, който се самообучава да избягва препядствия. Изграден е върху платформата разработена в клуба по роботика - метално шаси, 2 модифицирани сервота, гуми и трета опора. Електрониката на работа е моя разработка - роботът притежава 7 инфрачервени сензора за обекти, които се управляват от микроконтролер чрез мултиплексори. Контролерът е PIC 18F4620. На платката се намират и два H-моста изградени с MOSFET транзистори, които също се управляват от контролера. Друг основен модул, който роботът притежава, е 3-осен цифров акселерометър SMB-380 на BOSH, аз го купих от Olimex с платка, тъй като е изключително ситен за запояване. Акселерометърът поддържа i2c и spi, в случая избрах i2c.
Роботът ще използва вероятностно обучение, идеята е следната: всяка ситуация, в която се намира робота, се характеризира от сензорите му, тоест може да различава 2^7 ситуации, което са общо 128. Във всяка ситуация вероятността робота да предприеме каквото и да е действие (да завие под определен ъгъл наляво, надясно, да тръгне назад) първоначално е еднаква. След като предприеме това действие той ще се блъсне или ще избегне препядствието. Ако се блъсне, това ще бъде отчетено от акселерометъра и вероятността втори път в такава ситуация да предприеме същото действие се намалява. Така след известен брой блъскания роботът ще започне да избягва препядствия. Интересното при този метод за обучение е, че роботът може да се адаптира изцяло сам към промени в средата. Например ако се обърне захранването на някой от моторите или пък някой сензор се повреди и не подава коректна информация. В края на март, когато се прибера продължавам работа по софтуера и ще го кача и него. Имам дори и идея, ако ми остане време, да сложа едно XBee и да напиша някаква програмка, която визуализира показанията на акселерометъра в реално време. Също така мисля да направя и една симулация накрая на MS Robotics Studio и С# и да сравня резултатите, но това сигурно ще е след изпитите ми май месец. Ето снимки и очаквам всякакви въпроси и коментари :)
Снимка1 (http://docs.google.com/leaf?id=0B2LHCwSaCw-MODk5NDI3YjUtYzgzNC00ZGYyLWIxMTAtNWJlOWMxYTI1MmU1&hl=en)
Снимка2 (http://docs.google.com/leaf?id=0B2LHCwSaCw-MNmFlOGNjYzktOWRiNS00ZWEzLTk0OGUtYWI3ZWM5YTk1OWI2&hl=en)
Снимка3 (http://docs.google.com/leaf?id=0B2LHCwSaCw-MMzY2M2JlYTQtZmRjYS00MGRjLWI3OTctZTM4MTIxY2VmZTE1&hl=en)
Снимка4 (http://docs.google.com/leaf?id=0B2LHCwSaCw-MZmY5NWE4NmYtMmZiNy00NzNlLWEyNzYtN2FhYjkwN2UxZTUx&hl=en)
Снимка5 (http://docs.google.com/leaf?id=0B2LHCwSaCw-MYzU1NTMzNGUtNGJlMC00MGU2LWFmMDctZjUzYjdmMGM5YmU5&hl=en)
Снимка6 (http://docs.google.com/leaf?id=0B2LHCwSaCw-MYWZkN2MwZGQtZTVjMi00NTYxLTk2NGItMjhmM2RiZDZmY2Zk&hl=en)
Снимка7 (http://docs.google.com/leaf?id=0B2LHCwSaCw-MNThjNjk4NmUtOTM1YS00NWVkLTk5MGQtOWRlNzQyNGM0MWI5&hl=en)
Схема (http://docs.google.com/leaf?id=0B2LHCwSaCw-MZjExYjRhMjQtOWVjNS00MGM1LWFmNDUtMTA0MWM4M2NhY2Vk&hl=en)
Схемата е стандартен уиндоуски векторен файл, защото битмап щеше да е прекалено голям, а пък jpeg губи някои детайли.
Титла: Самообучаващ се робот
Публикувано от: kotaraka в Февруари 26, 2010, 10:00:39 pm
Добре изглежда.
Ще очаквам финалната версия.
Успех.
Титла: Самообучаващ се робот
Публикувано от: hunter в Февруари 26, 2010, 11:29:38 pm
Поздравления за идеята ти, наистина товае добро. Електрониката със платформата изглежда превъзходно както винаги си се постарал  :D Тука класата си личи. Имам само едно допълнение което може би не си предвидил но не е за подценяване ситуация когато робота се навре на тясно. Споредмен такава не е изключено да има етозащо аз мисля че стрябва да има и сензори отзад подобен тип робот самоубочаващ се трябва да е адекватен във всяка ситуация а подобен проблем без такива сензори би го объркало  ;)
Титла: Самообучаващ се робот
Публикувано от: sv_shady в Февруари 26, 2010, 11:53:45 pm
Ами и аз си мислих за сенозр отзад, само, че не е необходим, защото когато всички сензори засичат обек, то това означава, че евентуално отзад е свободно. Ако е свободно и тръгне назад няма да се удари, ако се удари с времето ще се научи да се завърта и да проверява накъде може, ако не може на никъде може просто да реши да спре...Така на една лекция по мшинен интелект ми разказваше лекторът как е наблюдавал един робот с невронна мрежа, чиято задача била да се движи напред и да избягва препядствия. Пуснали го на някакво изложение и имало толкова много хора, съответно препядствия, та робота се "самоубил", просто спрял да се движи :) И все пак ако се наложи ще сложа още един или два сензора отзад, но не вярвам да трябва :)
Титла: Самообучаващ се робот
Публикувано от: spp в Февруари 27, 2010, 01:55:02 pm
Светльо,идеята ти е много интересна,но имам няколко въпроса .
-Ако обектите се разместят и променят разстоянието си между тях,как робота ще реагира?Мислил ли си?
Пример:
При обучението си робота вижда крака на стола,който е на 150 мм от крака на масата,но разстоянието по между им е 100мм.Генерира случайно посоката и решава,че може да мине,между двата крака.И минава спокойно.Отчита,че при този тип препятсвие това ще му е алгоритъма,но някой минава и побутва стола.Разстоянието между крака на стола и карка на масата все още е в рамките на 150мм,но между тях вече не е 100мм а 40,което няма да позволи преминаването на платформата.
-Освен,че ще трябва да определи препятсвията,мислиш ли  да му зададеш твърд маршрут с "карта"?Ако върви безцелно има вероятнос да се върти в малко пространство и всеки път да вижда едни и същи препятствия,но под различен ъгъл.Това ще доведе до много бързо запълване на 127-те комбинации и до блокирането му.
Това,което ти предлагам е нещо,което обмислях за моя робот,но за момента съм на тема ЦНЦ и робота ми е на заден план.
Предложението ми е следното:
-Да определиш поле на движение.Полето можеш да го определиш с поне 3бр датчици(например ултразвук)разположени на еднакво разстояние и достатъчно мощни да покрията областа на работа.Така робота ще има ясна работна зона.В работната зона вече ,ще получи задача да премине от точка А до точка Б,като алгоритъмът му може да му позволи или строго определен маршрут или да избере такъв сам.
Сега вече и в двата случая няма нужда да му се указва нищо друго.Той сам ще трябва да се справи с препятствията вътре в зоната си.
Титла: Самообучаващ се робот
Публикувано от: sv_shady в Февруари 27, 2010, 05:17:50 pm
Ами проблемът със масата и стола мисля, че робота ще се усети, че не може да мине защото, отпред има 3 бр. датчици, от които поне един ще се активира и директно попада в друга ситуация. А пък дори и да има някакво "знание" за една ситуация, ако то доведе до лош изход, т.е. робота се блъсне, то и съответно "знанието" се променя. Идеята за сега на робота е да се учи да избягва препядствия, не да следва какъвто и да е маршрут. Иначе една реална ситуация, т.е. нареждане на препядствията по един начин, може да се възприеме по различни начини от робота, т.е. да я вижда по различен ъгъл и съответно да са активирани различни сензори. Единствения проблем е, че ако наистина се върти в малко пространство, може да се научи да прави неща, които не важат винаги, а само в конкретния случай. Но това е само на теория, какво ще стане наистин не знам, а пък и лесно може да се избегне като се пуска в разнообразни конфигурации на препядствията. Иначе, ако реша да го правя по-умен да следва маршрут от т.А до т.Б ще имам предвид идеята с работната зона. :)
П.С. Сега видях, че в първия пост съм написал, че 2^7 е 127, а то си е 128 както и да го гледа човек така, че ще го коригирам.
Титла: Самообучаващ се робот
Публикувано от: hunter в Февруари 27, 2010, 10:26:56 pm
Имам въпросче, гледам MOSFET си ги монтирал на цокъл може би и от там на друг цокъл как го правиш че ми се струва много добра идея :) И какви сензори си ползвал за инфрареда имам предвит.
Титла: Самообучаващ се робот
Публикувано от: sv_shady в Февруари 28, 2010, 12:29:02 am
Ами за инфрачервените датчици си пише на схемата - TSOP2438. Иначе номера с мосфетите го бях видял много отдавна. Ползва се цангов цокъл, върху който мосфета може да се запои, след като се разтворят малко краката на SO8 корпуса. Ще потърся статията и ще пусна линка, ако я намеря.
Едит: Успях да намеря снимка, която май е достатъчна: ТУК (http://www.headphoneamp.co.kr/ftp/sijosae/Gallery/Tip/SMD-4.jpg)
Титла: Самообучаващ се робот
Публикувано от: hunter в Февруари 28, 2010, 10:41:06 am
Благодаря :)  искам да те питам TSOP при черен предмет няма ли да е неадикватен? На моя робот от много тъмно кафява мебел се бъркаше смисъл светлината не се отразяваше и TSOP убисваше.
Титла: Самообучаващ се робот
Публикувано от: sv_shady в Февруари 28, 2010, 11:48:33 am
Ами всичко е въпрос на излъчена светлина. Тъй като управлявам светодиодите в импулсен режим, тока който минава през тях е доста голям, от порядъка на 0.5-0.7А (зависи от настройката на тримера), но за съвсем кратко, някъде около 1-2 милисекунди. Това позволява на диодите да излъчват доста голямо количество енергия. Цвета наистина оказва влияние върху разстоянието, от което ще се засече даден обект. Например 3те сензора отпред засичат бял предмвет на максимална дистанция 60см, а черен на 15см, но въпреки това го засичат. Така, че единствения проблем е, че не можеш да кажеш на какво разстояние е даден обект от робота, освен ако не знаеш цвета му. Но сензорите в случая просто са да казват има или няма обект така, че това не е проблем за този робот.
Титла: Самообучаващ се робот
Публикувано от: hunter в Февруари 28, 2010, 01:09:43 pm
Светльо може ли като ти остане време да обясниш каква е ролята на мултиплексора смисъл сигнала който постъпва в него как се преработва и изпраща към контролера и от там контролера как реагира и ако моженякаква блокова схема на кода който мислиш да съсзадеш интересно ми е как ще пресмята ситуациите. Ясно е че при дадена ситуация записва резултата но как като 1 или 0 или по друг принцип. А при друга ситуация как би променило вече записан резултат в памета си. Нещо такова ако може, за да се вникне по на дълбоко в замисъла. Доколкото разбрах след като прочетах в гугъл мултиплексора ще го ползваш като един вид неврона мрежа или бъркам.
Титла: Самообучаващ се робот
Публикувано от: sv_shady в Март 01, 2010, 12:14:54 am
Мултиплексорът е интегрална схема, която позволява да изпратиш дадане сигнал до различен приемник, който може да се избере. Така на схемата, която съм дал U2 e мултиплексор, пинът, на който се подава входния сигнал, е Х, а самият входен сигнал е квадратен сигнал с честота 38kHz. Чрез пиновете А, B, C се избира номерът на изходния пин от X0 до Х7, на който да бъде препратен входа Х. Така, за да накарам някой сензор да излъчи светлина, например сензор 5 - 101 в двоична, просто трябва да сетна А-1, В-0, С-1. Това означава, че сигналът 38kHz се ипраща на пин Х5 и диода светва. Тъй като генерирането на сигнала се извършва в PWM периферията на микроконторлера, много по-лесно е да се настрои веднъж и да си работи постоянно, отколкото при всяко светкане на светодиод да се настройва и да се пуска. За това се ползва пинът INH (Inhibit, Забрани), когато е в активно логическо ниво входният сигнал от Х не се изпраща на нито един от изходите Х0 до Х7. Абсолютно по същия начин работи и мултиплексорът U3, при него обаче като сетнеш АВС не избираш къде да отиде Х, ами кой вход от Х0 до Х7 да бъде свързан с изхода Х. И двата мултиплексора са абсолютно идентични, въпросът е чисто концептуален. Попринцип, ако ползваш мултиплексори се печелят пинове. В случая ми трябват 6 пина вместо 16, за да управлявам максимум 8 сензора. Освен това ми трябва само един пин, на който да се генерират 38kHz, както и само един пин с външно прекъсване, който да слуша избрания в момента сензор. Ето как и работи цялата схема:
1. Задават се ABC т.е. избира се светодиод, където да бъде пратен сигнала 38kHz(единия мултиплескор) и кой TSOP да бъде слушан(другия мултиплексор)
2. Деактивира се INH.
3. Илзъчва се светлинен импулс, ТSOP-a се активира и контолера съответно обработва генерираното прекъсване.
Надявам се да е станало ясно, ако трябва още ще обяснявам :)  Идеята е, че всяка ситуация си има номер от 0 до 127. Да кажем, че роботът може да направи само четири неща в дадена ситуация, това означава, че за всяка една ситуация трябва да се помни вероятността да се извърши едно от 4те действия. Представи си 128 структури, които отговарят на всяка една ситуация и в тях е записана вероятността за всяко едно дейтствие да бъде изпълнено в тази ситуация. Иначе щом ми остане малко свободно време ще направя една блок схема на софтуера и ще я кача, най - късно като кача и кода :Р, но ще гледам да е по рано :)
Титла: Самообучаващ се робот
Публикувано от: hunter в Март 01, 2010, 02:17:39 pm
Стана ми ясно :D , но от това което ми стана ясно разбрах че сигнала няма да се излъчва едновремено по всички свето диоди както и няма едновремено да слушат всички приемници. Според зависи от АВС ще е избрана само една двойка (излъчвател и приемник), тогава обаче ако е избрана да излъчва и слуша лявата двойка а имаш предмет от дясно как става номера. Или през определен инервал от време се сменят последователно двойките за да проверява навсякъде или трябва да спира и да проверява това как си го замислил?
Титла: Самообучаващ се робот
Публикувано от: Alternative в Март 01, 2010, 11:02:21 pm
Според мен просто ще се посетят всеки от 8-те сензора последователно(т.е. няма да слушаш само за точно един определен), практически без да се изчаква излишно време м/у тяx (всъщност какво е необходимото време на мултиплексорите да изменят избрания пин- може ли да се пренебрегне?). След това по вече изцяло създадената картина на околността ще се вземе решение какво да се направи. Това  поне ми се струва логичният вариант.
За мен е по интересно какъв тип ще са вземаните решения, от колко ще може да избира(напред/назад/ 90'ляво/ 90' дясно или ще бъде завой на Х градуса на тази страна - което би вдигнало възможните решения поне според мен прекалено много), и кога всъщност ще се счете едно решение за правилно (т.е например сензорите предизвикали това събитие да се променят(намалеят), или изцяло всички сензори да виждат празното пространство, или Х време след вземането на решение да няма сблъсък).
Титла: Самообучаващ се робот
Публикувано от: sv_shady в Март 02, 2010, 03:50:25 pm
Ами сензорите просто ще се обхождат последователно. На сензор му трябва около 1-2 мс да реагира, което прави сканирането на 7те сензора не повече 15мс, което е достатъчно кратък период. Ами това са двата въпроса, на които и аз се чудя. Мисля да може да избира в дадена ситуация следните действия: напред, назад, завой 45 градуса наляво, завой 45 градуса надясно, завой 90 градуса надясно, завой на 90 градуса наляво. За завиването ще има и допълнителен фактор дали да завие около оста си, тоест да движи двете колела в противоположни посоки, или просто да спира едното колело. В ситуациите с повече от един изход с толкова възможности роботът ще може да развива по-сложно поведение, отколкото ако бяха само 4 - напред, назад, наляво и надясно. Иначе нова ситуация е когато състоянието на някой сензор се промени. Това означава, че ако до тогава роботът не се е блъснал, значи последното решение е било правилно.
Титла: Самообучаващ се робот
Публикувано от: hunter в Март 02, 2010, 07:05:29 pm
А къде ще се отчитат всички резултати във външна памет или в памета на контролера, съдейки по схемата няма външна памет но според мен ще е добре да има. И как ще става записването и съответно триенето на вече записан резултат но указал се грешен това ми е много инт. :D
Титла: Самообучаващ се робот
Публикувано от: Alternative в Март 02, 2010, 07:21:02 pm
Най-вероятно в ЕЕПРОМ паметта (има 1024 byte-а). 128 ситуации с по 8 решения за всяко = 1024
Според мен няма да има триене, ще има намаляване на вероятността това движение да се повтори. Т.е. ако може да се извършат 8 действия(И според мен тези , който sv_shady посочи са най-удачните), то първоначално всяко действие ще има вероятност да се изпълни 12,5%(12.5*8=100). Създава се ситуация, ако взетото решение е вярно, то вероятността ще се увеличи пропорционално(например на 15-20%), ако е грешно - ще се намали, съпответно под 12,5%.
Титла: Самообучаващ се робот
Публикувано от: sv_shady в Март 02, 2010, 09:13:57 pm
Дамм Дани ме е изпреварил с отговора. Точно така, нещата ще се помнят в EEPROM-a на процесора като при включване ще се зареждат в RAM паметта. Нищо няма да се трие, ами ще се коригират вероятностите, както Дани го е написал. При изключване на робота, има бутон, който трябва да се натисне, за да си запмни новото поведение, тоест да запише всички вероятности в EEPROM-a. Само, че съм дал 7 действия, та 128 байта ще хартисат, а пък за друго разумно действие не се сещам. Някакви предложения?

Едит: Мисля, че ще е добре, ако заложа и 180 градуса обръщане?
Титла: Самообучаващ се робот
Публикувано от: Alternative в Март 02, 2010, 09:33:35 pm
Да, 7 са. Аз съм броил движение на 45 градуса назад ляво/дясно(реално 135'), вместо обръщането на 180 градуса.
Титла: Самообучаващ се робот
Публикувано от: hunter в Март 03, 2010, 08:45:51 pm
Добре, да го кажа по друг начин понеже вие сте по-наясно с програмирането а аз изкам и на мен да ми се изясни защото ми е инт за това питам вероятноста как ще се коригира и тази вероятност като какво ще се отбелязва тоест 1 ли 0 ли какво. Просто ако може малко по-подробно надявам се не е досадно.
Титла: Здравей, не схващам идеята ти...
Публикувано от: EmilEG в Юли 01, 2010, 04:43:57 pm
Здравей, не схващам идеята ти Светльо. Доколкото разбрах учиш навън. Ще ти дам един съвет. Не слушай преподавателите си. Преди около 6-години, общувах за кратко с един от "най-големите" специалисти по Изкутвен Интелект в света. Слагам кавички, защото аз нямам такова отношение към него, и обърканите им ИДОЛОПОКЛОНИЧЕСКИ комплекси навън, не ме вълнуват. От няколкомесечната ни кореспонденция стигнах до извода, че това е един ДЪРВЕН ФИЛОСОФ и нищо повече. (От ДИСКАВЪРИ ЧЕНЪЛ мислят друго, но и те са същите смешници). Та той ми обясняваше подобни неща като НЕВРОННИ МРЕЖИ и т-н. Истината е, че ВСИЧКО, което може да се направи с НЕВРОННИ МРЕЖИ, лесно може да се осъществи и с ПОСЛЕДОВАТЕЛНИ АЛГОРИТМИ. Предимството на "хипотетичните" невронни мрежи е "хипотетичната им" бързина. А тези кавички, могат да се махнат при положение, че се създаде достатъчно рентабилен невронен процесор и което е по-важно, се измислят ПОДХОДЯЩИ НЕВРОННИ АЛГОРИТМИ. Засега това са НЕКАДЪРНИ СИМУЛАЦИИ. Лошото е, че "специалисти", като въпросният ти ПРЕПОДАВАТЕЛ по машинен интелект - имат някаква ЗАМЪГЛЕНА ФИЛОСОФСКА ПРЕДСТАВА ЗА ВЪЗМОЖНОСТИТЕ НА ТЕЗИ НЕВРОННИ МОДЕЛИ. А човек е склонен към САМОЗАБЛУДИ с цел да си направи живота по ТАЙНСТВЕН и НЕОБИКНОВЕН, отколкото в действителност Е.  Колко ВЪЛНУВАЩО - робота се е САМОУБИЛ - като не е могъл да вземе решение - ей, този робот е излязал от някоя творба на Станислав Лем  :D . А сигурно не са ти обяснили защо е станало така. Аз имам хипотеза, която не изглежда толкова вълнуваща, както на преподавателя ти - но няма и нотка на приказност в нея. Не знам дали ще ти хареса. Истината е, че вероятно са използвали "НЕВРОННАТА МРЕЖА", като един вид МАРШРУТИЗАТОР ИЛИ КАРТА, в математиката се нарича ГРАФ - и просто не са му достигнали "АКСОНИТЕ", УЛИЦИТЕ или РЕБРАТА(математически). Този твой преподавател не е наясно с термина "НЕВРОННА МРЕЖА" и го употребява за да си създава някаква тайнственост пред студентите с цел да получи уважение от тях, както някога са правили шаманите, разказвайки измислици на балъците покрай огъня  :-D  .

Схващаш на къде бия, нали? Не бъди като него Светльо. Програмата която искаш е изключително ПРОСТА.  Дай ми пример за това, как се управляват моторите, как се получава информация от сензорите и какви са им възможносттите - ще ти я напиша. Или ми прати, копие от програмата, която ти си написал за да я разгледам.

Какво искаш да направиш - РОБОТ ЗА ПРЕОДОЛЯВАНЕ НА ЛАБИРИНТИ, който да компенсира възможна неизправност и промяна в положението на предметите, чрез промяна на програмата си за управление ли? Както казах това е лесно.

"Във всяка ситуация вероятността робота да предприеме каквото и да е действие (да завие под определен ъгъл наляво, надясно, да тръгне назад) първоначално е еднаква. След като предприеме това действие той ще се блъсне или ще избегне препядствието. Ако се блъсне, това ще бъде отчетено от акселерометъра и вероятността втори път в такава ситуация да предприеме същото действие се намалява. Така след известен брой блъскания роботът ще започне да избягва препядствия. "

Между другото SPP ти каза нещо много на място. Има опасност, робота ти да се врътка в малка област, ако селектираш само едно "ПРАВИЛНО" Действие в определена ситуация. Представи си че имаш лабиринт с два изхода - ляв и десен. Ако случайно първото ти движение е било напред - неуспешно, а второто надясно - успешно. Следващият път, когато робота попадне в същата ситуация - ще кара само НАДЯСНО, за него ЛЯВО, което също е УСПЕШНО, но той не го "ЗНАЕ" - НЯМА ДА СЪЩЕСТВУВА понеже не го е опитал. Точно това ще доведе до моментно и необратимо вкарване в ЦИКЛИ на МАЛКО пространство, за което говори SPP. Другият му въпрос също беше на място. Под различен ъгъл, няма ли да вижда една ситуация - също различно. Ако е така, ясно ли ти е, че запаметяването на ситуацията и оптималното действие, което трябва да предприеме при нея е безсмислено?! Трябва да ми дадеш подробности за СЕНЗОРИТЕ - за да ти кажа със сигурност дали това е така - трябва ми само на какво разстояние действат, какво засичат, къде се намират на робота и т-н. Както и да ми кажеш ТОЧНО КАКВО ИСКАШ ДА ПРАВИ РОБОТА. Може би ще се наложи да промениш малко дизайна му, за да не стане така както ти предрича SPP

Аз съм пуснал в общият форум едно съобщение. Ще го пусна и тук. За всички, които имат проблеми с ПРОГРАМАНИТЕ АЛГОРИТМИ за УПРАВЛЕНИЕ НА РОБОТА СИ - мога да ви помогна си ИДЕИ, как да ги разрешите!

Много ми се иска да разбирам, колкото вие от ЕЛЕКТРОНИКА И РОБОТОСТРОЕНЕ, за съжаление нямам условия да науча тези неща. Но пък мога да съм ви полезен с други.
[email protected]
Титла: Самообучаващ се робот
Публикувано от: sv_shady в Юли 02, 2010, 01:28:54 am
Здравей,
Прочетох много внимателно 3те ти поста. Предполагам си постигнал успех с робо-футбола и изправянето на роботите, но май самоувереността ти е дошла малко в повече. Не знам дали си прочел по-сериозни четива свързани невронните мрежи. Занимавам се професионално в момента с две неща - едното е разпознаване на обекти в изображения, а другото е разпознаване на ръкописен текст. Мога да ти кажа, че решенията за разпознаване на текста, които са изградени с невронни мрежи достигат точност над 90%, а аналитичните решения с последователни алгоритми едва 60%-70%. Поясни какво имаш предвид под "ПОДХОДЯЩИ НЕВРОННИ АЛГОРИТМИ"? Предимството на невронните мрежи не е толкова в бързодействието им, макар че невронна мрежа изпълнена с двоични дискриминативни неврони, може да сработи за няколко наносекунди, което смятам е достатъчно бързо, за да махне кавичките на "хипотетична бързина". Идеята е, че невронните мрежи с времето започват да интерполират информацията, чрез която са обучени и независимо дали работят в режим на класифициране или асоцииране, могат да изведат правилен резултат, за входен информационен шаблон, който не е е бил представен по време на обучението.
Идеята за робота самоубиец просто го споменах, защото звучи интересно, защото нещата се развиват и роботите ще започнат да заемат нова част в обществото - това беше и причината лекторът ми да го разтълкува като самоубийство, но зад всичко седеше теоритичното описание на модела на поведение. Напълно ми е ясно защо е спрял робота и съм един от последните хора в този форум на когото е необходимо да му се обяснява какво е ГРАФ, РЕБРО, ВРЪХ и така нататък. Целта на робота е била просто да се движи напред, не имало никаква маршрутизация, но дори и да е имало, то аксоните и ребрата нямат нищо общо помежду си, защото невронната мрежа не се ползва, за представяне на информация (карта), а за обработка. Нима когато, човек наистина се самоубие всичките фактори и процеси, които са довели до това, не са обясними с рационални закони? И въпреки това казваме, че човек се е самоубил, а не че невронната му мрежа е довела до неблагоприятен изход...
Темата, която съм започнал не съм я написал, защото мисля, че програмта е сложна или защото не мога да я направя, написал съм я, за да споделя с какво се занимавам и да бъде някакъв източник на информация. Благодаря за предложението, но не съм молил за помощ, нито мисля че ми трябва. Още по-малко смятам, че се нуждая от помощ, от човек, който започва поста си с изречение "не схващам идеята ти".
Именно поради тази причина и критиката ти не е правилна, както и забележката на Слави (spp). Опитах се да отговоря на нея, но явно не съм се справил, затова ще се опитам отново. Когато роботът вземе добро решение, то вероятността да бъде взето отнова това решение в същата ситуация се увеличава. Колкото и да се увеличава тази вероятност, то изхода от ситуацията никога на е 100% сигурен, може останалите изходи да са с по 1% вероятност, но могат да се случат, така че робота, ще завие и наляво. Особено в началото, когато двете вероятности са близки и ако това е благоприятен изход, то решението за него също ще бъде стимулирано. Същото е с хората, с времето свикваме да минаваме по даден маршрут от точка А до точка Б. Маршрута ни харесва и дори не се замисляме да го сменим, докато не се случи нещо, например не можем да минем по него или някой друг ни преведе през друг по-кратък маршрут, който е по-благоприятен. Вероятността да минем по втория маршрут е малка, но въпреки това може да се случи. Цялата идея е, че роботът ще се самонаучи да избягва препядствия, без да съм написал грам код, който да съотнасия информацията от сензорите към управлението на моторите. Роботът сам ще се научи - може би ще кажеш, че научи е прекалено силна дума, но дори и ние се учим как да караме кола, как да ходим, което е аналогично. Относно въпроса със ситуацията - ситуация е просторанството около робота + положението на робота српямо това пространство и ориентацията му. Дори да вижда едно и също кубче от два ъгъла, това не означава че сутацията е еднаква. Представи си, че срещу теб има врата - единия път я виждаш от едната страна и трябва например да я отвориш към теб, втория път виждаш същата врата, но от другата и страна и трябва да буташ - което са си две различни ситуации, независимо от факта, че са свързани с един и същ предмет.
Не виждам защо процес, който води до един и същ резултат при хората и роботите, да го наричаме с различни имена - самообучаване за хора и изменение на управляващата програма за робот... Изглежда ми прекалено насилено и необосновано.
Цитат
Трябва да ми дадеш подробности за СЕНЗОРИТЕ - за да ти кажа със сигурност дали това е така - трябва ми само на какво разстояние действат, какво засичат, къде се намират на робота и т-н. Както и да ми кажеш ТОЧНО КАКВО ИСКАШ ДА ПРАВИ РОБОТА. Може би ще се наложи да промениш малко дизайна му, за да не стане така както ти предрича SPP
Това само, ще кажа, че е прекалено нахално и дори арогантно. Не виждам защо да "ТРЯБВА" да се съобразявам с твоите виждания, като ти дори не си се опитал да разберш моите.
Не знам на какъв професор си попаднал, може да си прав, че е бил дървен философ, но не всички са такива...порови се из интернет, както и по академичните публикации за Kevin Warwick и ще си говорим тогава.
След като твоето виждане противоречи с масовото, и нямаш конкретни доказателства за твоята правота - то може би просто съзнателно или несъзнателно се опитваш да се бориш срещу системата. Това помага само до някъде (не трябва никога човек да е кон с капаци и да вярва безусловно в нещо заради другите, трябва сам да се увери в нещата, в които вярва), но ако прекалиш, ще загубиш целия си живот в безмислена борба.
Ще вложа всички усилия роботът да е готов за сбирката при Роботев на 4ти юли и ако дойдеш ще може да го видиш, да се запознаем и да поговрим на каквато тема пожелаеш.
P.S. Един съвт към всички, които са прочели поста ми: Свалете гарда, спрете да отричате непознатото, признайте пред себе си, че има много неща, които не знаете и започнете да ги опознавате!
Титла: Самообучаващ се робот
Публикувано от: anio в Юли 02, 2010, 02:40:00 pm
Аз си признавам! Още нищо не знам и даже не знам от къде да започна :)
Титла: Re: Самообучаващ се робот
Публикувано от: Chaze в Юли 26, 2010, 11:11:54 pm
Цитат на: "sv_shady"
2^7 ситуации, което са общо 128.


Или аз не мога да смятам, или ти..Ако 2^7 означава 2 на 7-ма степен, тогава не се ли получава 256 ?..Или греша ?
Титла: Самообучаващ се робот
Публикувано от: zoro1 в Юли 27, 2010, 08:15:40 am
2*2 =4*2=8*2=64*2=128*2=256*2=?
А сега преброй двойките.
Титла: Самообучаващ се робот
Публикувано от: cech в Август 22, 2010, 12:25:03 am
Здравей, много съм заинтригуван от проекта ти! И аз смятам да направя нещо подобно като си купя ардуиното. Имам няколко идеи , които се нядавам че ще ти бъдат от полза:

1. Вместо да награждаваш робота за положително действие (да увеличаваш процентите) , ги намалявай при негативно действие. По този начин се избягва това гадно зацикляне при дадени ситуации. Например: датчиците отчитат 0000000 (няма препядствиа наоколо). това значи че напрактика няма действие, което да довед до сбъсък . Затова ако го награйдаваш за полойително действие в този случай, робота ще затвърди първото действие което направи (и ако е завой на 180 градуса става кофти). Вместо това го наказвай за негативни действя- по този начин в отворено пространство, вероятността да направи което и да е от осемте действия се запазва равна (12.5%). Като направи действие, което да доведе до сблъсък, просто изваждаш 7% (примерно) от това действие в тази ситуация и добавяш по 1% за всички други.


2. Това предложение може да се стори на някои като мамене ,но всеки със собственото си мнение!!!
Вместо в началото вероятността за всички действия да е еднаква (12.5%) ,да се увеличи вероятността за движение напред, за сметка на 180 градусовия завой (защото напрактика няма как да се блъсне в нищо при този завой, и тъй като взимаме проценти само при негативно действие, в крайна сметка завоя на 180 градуса може да се окаже "най-доброто" (според робота) действие).А като увеличим процентите за действието придвижване напред , теоритично ще  усигорим по целенасочено движение , а не просто хаотично движение.

С нетърпение очаквам да чуя мнението ви за моето предложение , и също така бих искал да чуя как се развива проекта (снимките от първия пост немога да ги отворя).
Титла: Самообучаващ се робот
Публикувано от: sv_shady в Август 23, 2010, 10:34:23 am
Здравей,

Ами и в двете ти предложения има логика, но ограничават развитието на поведението на робота.
1. Смятам робота да изменя поведението си при положителен и отрицателен изход от ситуацията.
2. Интересното е какво ще стане, дали ще се движи хаотично, дали ще се движи целеустремено напред, настрани и т.н.

Иначе проект е замръзен стадии, защото трябва да приложа по - сериозена обработка от върху данните от акселеротметъра, за да може да се засичат сблъсъците. За тази цел трябва да сложа радио връзка с робота и съответно да получавам данни в реално време и да ги визуализирам. Снимките в първия линк не работят, защото гугъл докс спряха публичните линкове. Ако имаш интерес дай имейл и ще ти пратя снимки. :)
Титла: Самообучаващ се робот
Публикувано от: zoro1 в Август 23, 2010, 03:40:49 pm
Струва ми се че с Ардуино малко може и да не станат нещата,много е по бавно смятането пи усложие ,че имаме числа след десетична запетая,и програмата може и да не се напасне на контролера./Все пак 32К не са толкоз много.../Може на две пък да стане -вие ще кажете.
Свтльо,пусни ги снимките в Имаджето -там поне не се губят ,пък и те нали само с това се занимават ,не мисля че ще изчезнат.