Универзитет у Београду. Машински факултет. Пројектни задатак. Мастер академске студије 1. година, II семестар. Шк.год. 2010/2011.

Σχετικά έγγραφα
Предмет: Задатак 4: Слика 1.0

налазе се у диелектрику, релативне диелектричне константе ε r = 2, на међусобном растојању 2 a ( a =1cm

1.2. Сличност троуглова

Tестирање хипотеза. 5.час. 30. март Боjана Тодић Статистички софтвер март / 10

Универзитет у Београду Машински факултет

Теорија електричних кола

1. Модел кретања (1.1)

2. Наставни колоквијум Задаци за вежбање ОЈЛЕРОВА МЕТОДА

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА МАТЕМАТИКА ТЕСТ

θ = rt Sl r КОМПЈУТЕРСКА СИМУЛАЦИЈА И ВЕШТАЧКА ИНТЕЛИГЕНЦИЈА Лист/листова: 1/45 ЗАДАТАК 4 Задатак 4.1.1

1. Математички доказ закона кретања мобилног робота

предмет МЕХАНИКА 1 Студијски програми ИНДУСТРИЈСКО ИНЖЕЊЕРСТВО ДРУМСКИ САОБРАЋАЈ II ПРЕДАВАЊЕ УСЛОВИ РАВНОТЕЖЕ СИСТЕМА СУЧЕЉНИХ СИЛА

Анализа Петријевих мрежа

Теорија електричних кола

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА

7. ЈЕДНОСТАВНИЈЕ КВАДРАТНЕ ДИОФАНТОВE ЈЕДНАЧИНЕ

г) страница aa и пречник 2RR описаног круга правилног шестоугла јесте рац. бр. јесу самерљиве

КРУГ. У свом делу Мерење круга, Архимед је први у историји математике одрeдио приближну вред ност броја π а тиме и дужину кружнице.

МАТРИЧНА АНАЛИЗА КОНСТРУКЦИЈА

САДРЖАЈ ЗАДАТАК 1...

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ И НАУКЕ ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА

2.3. Решавање линеарних једначина с једном непознатом

b) Израз за угиб дате плоче, ако се користи само први члан реда усвојеног решења, је:

Положај сваке тачке кружне плоче је одређен са поларним координатама r и ϕ.

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА ТЕСТ МАТЕМАТИКА

6.2. Симетрала дужи. Примена

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА

Први корак у дефинисању случајне променљиве је. дефинисање и исписивање свих могућих eлементарних догађаја.

Задатак Задатак Задатак Задатак Задатак Списак слика Литература... 86

Когнитивне способности мобилних робота у домену унутрашњег транспорта материјала

8.2 ЛАБОРАТОРИЈСКА ВЕЖБА 2 Задатак вежбе: Израчунавање фактора појачања мотора напонским управљањем у отвореној повратној спрези

ОБЛАСТИ: 1) Тачка 2) Права 3) Криве другог реда

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА

СИСТЕМ ЛИНЕАРНИХ ЈЕДНАЧИНА С ДВЕ НЕПОЗНАТЕ

АТ-5 Вештачке неуронске мреже Проф. др Зоран Миљковић Методе одлучивања 1/35

Универзитет у Београду Машински факултет

Универзитет у Београду, Саобраћајни факултет Предмет: Паркирање. 1. вежба

1. 2. МЕТОД РАЗЛИКОВАЊА СЛУЧАЈЕВА 1

TAЧКАСТА НАЕЛЕКТРИСАЊА

Писмени испит из Метода коначних елемената

Универзитет у Београду Машински факултет

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ И НАУКЕ ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА

Емпиријскo управљање интелигентног мобилног робота на бази машинског учења демонстрацијом и хомографије добијене од некалибрисане камере

Вектори vs. скалари. Векторске величине се описују интензитетом и правцем. Примери: Померај, брзина, убрзање, сила.

2. EЛЕМЕНТАРНЕ ДИОФАНТОВЕ ЈЕДНАЧИНЕ

ТЕСТ МАТЕМАТИКА УПУТСТВО ЗА ПРЕГЛЕДАЊЕ

ВИСОКА ТЕХНИЧКА ШКОЛА СТРУКОВНИХ СТУДИЈА У НИШУ

Школска 2010/2011 ДОКТОРСКЕ АКАДЕМСКЕ СТУДИЈЕ

Упутство за избор домаћих задатака

РЕШЕЊА ЗАДАТАКА - IV РАЗЕД 1. Мањи број: : x,

Факултет организационих наука Центар за пословно одлучивање. PROMETHEE (Preference Ranking Organization Method for Enrichment Evaluation)

ЗАВРШНИ РАД КЛИНИЧКА МЕДИЦИНА 5. школска 2016/2017. ШЕСТА ГОДИНА СТУДИЈА

5.2. Имплицитни облик линеарне функције

ЛИНЕАРНА ФУНКЦИЈА. k, k 0), осна и централна симетрија и сл. 2, x 0. У претходном примеру неке функције су линеарне а неке то нису.

4. Троугао. (II део) 4.1. Појам подударности. Основна правила подударности троуглова

Семинарски рад из линеарне алгебре

Факултет организационих наука Центар за пословно одлучивање. Откривање законитости у подацима Вештачке неуронске мреже

АНАЛОГНА ЕЛЕКТРОНИКА ЛАБОРАТОРИЈСКЕ ВЕЖБЕ

3.1. Однос тачке и праве, тачке и равни. Одређеност праве и равни

6.1. Осна симетрија у равни. Симетричност двеју фигура у односу на праву. Осна симетрија фигуре

Хомогена диференцијална једначина је она која може да се напише у облику: = t( x)

ТРАПЕЗ РЕГИОНАЛНИ ЦЕНТАР ИЗ ПРИРОДНИХ И ТЕХНИЧКИХ НАУКА У ВРАЊУ. Аутор :Петар Спасић, ученик 8. разреда ОШ 8. Октобар, Власотинце

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА

ЛАБОРАТОРИЈСКЕ ВЕЖБЕ ИЗ ФИЗИКЕ ПРВИ КОЛОКВИЈУМ I група

8. ПИТАГОРИНА ЈЕДНАЧИНА х 2 + у 2 = z 2

ТЕСТ МАТЕМАТИКА УПУТСТВО ЗА ПРЕГЛЕДАЊЕ

Стручни рад ПРИМЕНА МЕТОДЕ АНАЛИТИЧКИХ ХИЕРАРХИJСКИХ ПРОЦЕСА (АХП) КОД ИЗБОРА УТОВАРНО -ТРАНСПОРТНЕ МАШИНЕ

Слика 1. Слика 1.2 Слика 1.1

Писмени испит из Теорије површинских носача. 1. За континуалну плочу приказану на слици одредити угиб и моменте савијања у означеним тачкама.

6. ЛИНЕАРНА ДИОФАНТОВА ЈЕДНАЧИНА ах + by = c

Аксиоме припадања. Никола Томовић 152/2011

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ И НАУКЕ ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА

У н и в е р з и т е т у Б е о г р а д у Математички факултет. Семинарски рад. Методологија стручног и научног рада. Тема: НП-тешки проблеми паковања

Факултет организационих наука Центар за пословно одлучивање. Откривање законитости у подацима 3 Вештачке неуронске мреже

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА

4.4. Паралелне праве, сечица. Углови које оне одређују. Углови са паралелним крацима

Математика Тест 3 Кључ за оцењивање

ЗАШТИТА ПОДАТАКА Шифровање јавним кључем и хеш функције. Diffie-Hellman размена кључева

Основе теорије вероватноће

ЕНЕРГЕТСКИ ПРЕТВАРАЧИ 2 (13Е013ЕП2) октобар 2016.

I Линеарне једначине. II Линеарне неједначине. III Квадратна једначина и неједначина АЛГЕБАРСКЕ ЈЕДНАЧИНЕ И НЕЈЕДНАЧИНЕ

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ И НАУКЕ ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА

Cook-Levin: SAT је NP-комплетан. Теодор Најдан Трифунов 305M/12

Нивелмански инструмент (нивелир) - конструкција и саставни делови, испитивање и ректификација нивелира, мерење висинских разлика техничким нивелманом

I Тачка 1. Растојање две тачке: 2. Средина дужи y ( ) ( ) 2. II Права 1. Једначина прамена правих 2. Једначина праве кроз две тачке ( )

Једна од централних идеја рачунарства Метода која решавање проблема своди на решавање проблема мање димензије

ИНТЕЛИГЕНТНИ ТЕХНОЛОШКИ СИСТЕМИ АТ-1 Хибридни интелигентни технолошки системи

ЕЛЕКТРОНИКЕ ЗА УЧЕНИКЕ ТРЕЋЕГ РАЗРЕДА

7.3. Површина правилне пирамиде. Површина правилне четворостране пирамиде

Количина топлоте и топлотна равнотежа

Нумеричко решавање парцијалних диференцијалних једначина и интегралних једначина

Терминирање флексибилних технолошких процеса

др Драган Алексендрић, ванредни професор, МФ Бгд др Вељко Поткоњак, редовни професор, ЕТФ Бгд др Бојан Бабић, редовни професор, МФ Бгд

Осцилације система са једним степеном слободе кретања

6.5 Површина круга и његових делова

Висока техничка школа струковних студија Београд Математика 2 Интервали поверења и линеарна регресија предавач: др Мићо Милетић

ТРЕЋЕ ОТВОРЕНО ПРВЕНСТВО СРБИЈЕ У РЕШАВАЊУ ОПТИМИЗАТОРА 29. НОВЕМБАР ДЕЦЕМБАР ГОДИНЕ

РЕШЕНИ ЗАДАЦИ СА РАНИЈЕ ОДРЖАНИХ КЛАСИФИКАЦИОНИХ ИСПИТА

Transcript:

Универзитет у Београду Машински факултет Мастер академске студије 1. година, II семестар Шк.год. 2010/2011. Модул: Дизајн у машинству Пројектни задатак Предмет: Методе одлучивања Предметни наставник: Предметни сарадници: проф. др Зоран Миљковић доц. др Божица Бојовић Најдан Вуковић, дипл.инж.маш. Марко Митић, дипл.инж.маш. Милица Петровић, дипл.инж.маш. РБ Име и презиме Број индекса Потпис студента 1. Борис Похулек 472/06 2. Александар Радојковић 411/06 3. Марко Ранђеловић 425/06 4. Милош Станчић 431/06 Оцена Потпис предметног наставника

Поставка задатка Применом знања и вештина стечених током курса Методе одлучивања одредити пројектно решење инжењерских проблема у домену пројектовања интелигентног понашања агента - мобилног робота. За потребе кретања мобилног робота конфигурисаног по LEGO Mindstorms NXT технологији потребно је развити и извршити имплементацију софтверског решења, базираног на методама одлучивања, које ће са унапред задатом тачношћу извршити одговарајуће пресликавање одређено избором акција које робот треба да оствари у домену изабраног задатка, уз реализацију критеријума дефинисаних функционалним захтевима. Применом вештачких неуронских мрежа, односно концепта машинског учења, одредити оне параметре пројектовања дефинисане алтернативним решењима ( дрво одлучивања ) који ће са унапред задатом тачношћу омогућити решавање следећег проблема: Имплементација метода одлучивања базираних на машинском учењу у домену класификације изгледа окружења мобилног робота Решењем пројектног задатка обухватити: 1. Дефинисати основни циљ пројектовања; 2. Анализу и теоријску поставку проблема; 3. Усвојити фукционалне захтеве (ниво концепцијског пројектовања); 4. Дефинисати сва алтернативна решења која задовољавају постављени циљ пројектовања (ниво детаљног пројектовања); 5. Формирати дрво одлучивања постављеног проблема; 6. Усвојити критеријум(е) на чијим основама ће се одредити одговарајуће решење; 7. Развити и имлементирати модел кретања у Matlab окружењу; 8. Применом концепта машинског учења базираног на вештачким неуронским мрежама одредити скуп параметара који задовољавају функционалне захтеве сходно усвојеном критеријуму пројектовања; 9. Тестирати и верификовати перформансе решења; 10. Формирати матрицу одлучивања; 11. Дискутовати решења и дати закључак; Одабрано пројектно решење мора да омогући роботу да на основу одређеног и имплементираног решења, базираног на методама одлучивања и на принципима вештачке интелигенције, несметано обави постављени задатак у домену континуираног решавања проблема класификације. 2

Напомене: 1. Емпиријске податке прикупити уз асистенцију наставника и предметних сарадника; 2. Применом концепта машинског учења изабрати одговарајућу архитектуру вештачке неуронске мреже са простирањем сигнала унапред (Feedforward Neural Network); 3. Обучавање извршити са свим понуђеним алгоритмима обучавања вештачких неуронских мрежа у оквиру софтверског пакета Matlab - Neural Network Toolbox; 4. Анализирати моделе и генерисана решења; 5. Имплементирати два најбоља решења на моделу мобилног робота, тестирати изабрана решења и дискутовати излазе ; 6. Изабрати оптимално решење проблема; 7. Одређивање тежинских односа измећу одговарајућих неурона одредити у Matlab окружењу (Neural Network Toolbox) и коришћењем BPnet софтвера; 8. Пројекат ће бити позитивно оцењен ако и само ако приликом одбране пројектних задатака пројектно решење проблема одлучивања базирано на примени техника вештачке интеллигенције омогући несметано функционисање мобилног робота у окружењу; 9. Сва питања, сугестије и евентуалне проблеме предочити у директном контакту са предметним наставником проф. др Зораном Миљковићем и путем електронске поште на zmiljkovic@mas.bg.ac.rs, као и кроз консултације са сарадницима у настави и путем е-поште: nvukovic@mas.bg.ac.rs, bbojovic@mas.bg.ac.rs, mmitic@mas.bg.ac.rs и mmpetrovic@mas.bg.ac.rs; 10. Студенти су у обавези да на предавања и вежбе дођу припремљени јер ће у супротном коначан исход пројектних активности бити негативан; 11. Иницијатива студената у погледу предлога решења проблема, као и у погледу рада на додатним проблемима је више него пожељна, па ће стога сваки додатни рад бити узет у обзир приликом формирања завршне оцене; 12. Рокови израде појединачних пројектних целина дефинисани су планом и програмом предмета (Course Outline); Датум издавања задатка: 01.04.2011. Рок завршетка задатка: 27.05.2011. Задатак издали: (Марко М. Митић) (Милица М. Петровић) 3

Борис Похулек 1, Александар Радојковић 2, Марко Ранђеловић 3, Милош Станчић 4 ИМПЛЕМЕНТАЦИЈА МЕТОДА ОДЛУЧИВАЊА БАЗИРАНИХ НА МАШИНСКОМ УЧЕЊУ У ДОМЕНУ КЛАСИФИКАЦИЈЕ ИЗГЛЕДА ОКРУЖЕЊА МОБИЛНОГ РОБОТА Резиме У овом елаборату приказана је примена метода одлучивања базираних на принципима вештачке интелигенције у домену класификације изгледа технолошког окружења. Пројектни задатак се састојао од обучавања мобилног робота, у циљу успешног обилажења препрека у моделу технолошког окружења, статичне природе. Решавању задатка се приступило применом вештачких неуронских мрежа, како би се постигло захтевано понашање робота. Прикупљање потребних података је извршено експерименталним путем у лабораторији Центра за Нове Технологије (ЦеНТ). У току рада на пројетном задатку коришћен је мобилни робот конфигурисан по LEGO Mindstorms NXT технологији, програмски пакет Matlab и апликативни софтвер са додатком основном пакету LEGO MINDSTORNS NXT Firmware V1.05. Након анализе добијених резултата закључено је да су испуњени сви постављени захтеви да је успешно савлађивање препрека 100%. Кључне речи: одлучивање, агент, вештачке неуронске мреже, интелигентни мобилни робот. 1 Борис Похулек 411/06, Универзитет у Београду Машински факултет, студент прве године Мастер академских студија. Е-пошта: dzankss@gmail.com 2 Александар Радојковић 425/06, Универзитет у Београду Машински факултет, студент прве године Мастер академских студија. Е-пошта: aleksandar.radojkovic@yahoo.com 3 Марко Ранђеловић 431/06, Универзитет у Београду Машински факултет, студент прве године Мастер академских студија. Е-пошта: ranja87@hotmail.com 4 Милош Станчић 472/06, Универзитет у Београду Машински факултет, студент прве године Мастер академских студија. Е-пошта: mstanchic@yahoo.com 4

Списак слика Слика 2.1: Процесор NXT... 9 Слика 2.2: Ултразвучни сензор... 10 Слика 2.3: Серво мотор... 10 Слика 4.1: Пример архитектуре вештачке неуронске мреже... 13 Слика 4.2: Упрошћени модел технолошког постројења... 13 Слика 4.3: Пример очитавања ултразвучног сензора... 14 Слика 4.4: Принцип рада ултразвучног сензора... 14 Слика 4.5: Приказ карактеристичних положаја за које су вршена мерења... 15 Слика 4.6: Приказ тока информацијa... 16 Слика 5.1: Дрво одлучивања... 17 Слика 7.1: Мобилни робот са два независна погонска точка... 19 Слика 6.1: Дијаграм поклапања... 21 Слика 6.2: Дијаграм тренирања, теста, валидације и резултата... 22 Слика 9.1: Резултати обучаване ВНМ... 23 Слика9.2: Приказ тока обуке, валидације и тестирања мреже... 23 Слика 10.1: Приказ тока обуке, валидације и тестирања мреже... 25 5

Списак табела Табела 3.1: Матрица пројектовања... 12 Табела 4.1: Карактеристични положаји за које су вршена мерења... 15 Табела 9.1: Приказ тестираних мрежа... 24 Табела 10.1: Матрица одлучивања... 26 6

Садржај: Поставка задатка... 2 ИМПЛЕМЕНТАЦИЈА МЕТОДА ОДЛУЧИВАЊА БАЗИРАНИХ НА МАШИНСКОМ УЧЕЊУ У ДОМЕНУ КЛАСИФИКАЦИЈЕ ИЗГЛЕДА ОКРУЖЕЊА МОБИЛНОГ РОБОТА... 4 Резиме... 4 Списак слика...5 Списак табела... 6 Садржај:... 7 1. Основни циљ пројектовања... 8 2. Поставка проблема... 9 3. Усвојити функционалне захтеве (ниво концепцијског пројектовања)... 11 4. Детаљно пројектовање решења... 13 5. Дрво одлучивања... 17 6. Усвајање критеријума на чијим основама се одређује одговарајуће решење... 18 7. Развити и имплементирати модел кретања у Matlab окружењу... 19 8. Применом концепта машинског учења базираног на вештачким неуронским мрежама одредити скуп параметара који задовољавају функционалне захтеве сходно усвојеном критеријуму пројектовања... 21 10. Матрица одлучивања... 25 11. Дискусија и закључак... 27 Литература... 28 Прилог... 29 7

1. Основни циљ пројектовања Основни циљ пројектовања је могућност да интелигентни агент (мобилни робот) пронађе пут кроз лабораторијски модел технолошког окружења, а да при томe успешно избегне препреке које му се нађу на путу. То доприноси спознаји о томе на ком принципу функционишу интелигентни системи. Потребно је да мобилни робот, користећи вештачке неуронске мреже као основни део интелигентног система, препозна препреке и донесе одлуку о начину на који ће да их избегне и настави кретање ка задатом циљу. Другим речима, потребно је остварити несметано функционисање робота у окружењу, применом машинског учења и одлучивања, базираних на принципима вештачке интелигенције. Препознавање препрека и генерисање мапе окружења треба остварити формирањем, обучавањем и применом вештачких неуронских мрежа, користећи информације добијене очитавањем са ултразвучног сензора (сонара). Такође, неопходно је формирати (обучити, тестирати) већи број вештачких неуронских мрежа (у даљем тексту ВНМ), а затим анализирати резултате и применом метода одлучивања изабрати оптимално решење. Процес пројектовања обухвата доношење одлука на основу функционалних захтева и услова у којима пројектно решење егзистира (ограничења). Као и сваки интелигентни мобилни робот, тако и агент који се посматра у овом пројектном задатку мора по завршетку пројектовања да буде способан да у сваком тренутку одговори на следећа основна питања: Где сам? Где сам био? Где идем? Где ми је циљ? Како да дођем до циља? [1] Тип процеса одлучивања који који је потребно развити је одлучивање са ризиком, код кога је вероватноћа остваривања (излаза) непозната, а то се остварује применом емпиријског машинског учења (примена техника вештачке интелигенције). 8

2. Поставка проблема Задати проблем пројектног задатка је подразумевао развој метода одлучивања мобилног робота на бази ВНМ, са циљем несметаног кретања кроз модел технолошког окружења и избегавања препрека. Конкретно, у задатку се тражило од студената да током једног семестра обуче мобилног робота тако да у окружењу у ком се налази успешно стигне од задате тачке А до тачке Б и уз то препозна" и избегне препреку која му се нађе на путу. Студенти су подељени у четири групе, а као окружење у коме су вршени сви потребни експерименти коришћен је модел технолошког окружења (слике 4.2 и 4.5), који се налази у Центру за Нове Технологије (ЦеНТ), на Машинском факултету. О апаратури и методама које су коришћене током израде пројектног задатка биће више речи у наредним тачкама овог извештаја, али битно је истаћи да главни алат за решавање задатог проблема представљају ВНМ, које имају способност да уче, памте и генерализују на основу обучавајујег скупа. Поменути скуп је формиран од података добијених мерењем очитавања са сензора за различите положаје робота, као што је детаљније описано у даљем тексту (тачка 4.). При изради пројекта коришћен је мобилни робот типа LEGO Mindstorms NXT у склопу са ултразвучним сензором. Подаци за сензор су процесуирани у програмском пакету МАТLAB који је коришћен за генерисање мапе окружења. Основни делови LEGO Mindstorms NXT робота коришћени у изради пројекта су: - Управљачка јединица NXT, која представља интелигентнтну, компјутерски контролисану компоненту Mindstorms робота. Састоји се од 4 улазна порта на које се прикључују сензори, 3 порта за прикључивање мотора и USB порта преко којег се робот повезује са рачунаром. Слика 2.1: Управљачка јединица NXT 9

- Ултразвучни сензор блискости, сензор помоћу којег робот добија информације о томе колико је удаљен од одређеног предмета и реагује на покрете. Овај сензор се повезује са LEGO Mindstorms NXT роботом прикључивањем на 1 од 4 предвиђена порта који су означени редним бројевима 1, 2, 3 и 4. Слика 2.2: Ултразвучни сензор - Серво мотори, који омогућавају прецизно кретање робота и ротирање сонара. Они се повезују са LEGO Mindstorms NXT роботом прикључивањем на 3 предвиђена порта који су обележени словима А, B и C. Слика 2.3: Серво мотор Као софтверска подршка у сваком кораку пројектовања коришћен је програмски пакет МАТLAB. Да би мобилни робот у реалном времену и реалном окружењу остварио свако понашање које се од њега захтевало, било је потребно написати и имплементирати различите алгоритме у окружењу поменутог програма, као што су: стандардни алгоритам за повезивање робота и МАТLAB софтвера, алгоритам за активирање сензора, покретање точкова, обучавање мрежа коришћењем Neural Network Tool модула, затим за модел кретања, дрво одлучивања итд. Сви кодови (алгоритми) који су коришћени су дати у прилогу овог извештаја. 10

3. Усвојити функционалне захтеве (ниво концепцијског пројектовања) Koнцепцијско пројектовање класификације изгледа окружења мобилног робота обухвата селекцију неуронске мреже на основу које ће мобилни робот функционисати. Приказан је мобилни робот са одговарајућим сензорима (ултразвучни сензор). Приликом кретања мобилног робота ултразвучни сензор емитује звучни талас који (не)бива одбијен од објеката који се налази испред робота (у зависности да ли постоји објекат непосредно испред робота) [2]. На тај начин робот сазнаје да ли непосредно испред њега на дефинисаној путањи постоји препрека која се мора избећи. Са друге стране, да би се информација о постојању препреке могла процесирати на прихватљив начин, неопходно је развити одговарајући модел који ће на основу сензорске информације препознати врсту препреке. То значи да информација о постојању препреке није довољна, посматрана са становишта мобилног робота. Наиме, информација о изгледу тог окружења, да ли је у питању препрека одређене удаљености са леве или десне стране, или зид испред робота итд. су информације од велике важности када је планирање путање у питању. На основу углова, мобилни робот (тачније ВНМ) треба да изврши генерализацију и да након примљених информација са ултразвучног сензора генерише угао под којим мобилни робот наилази на непокретни препреку. Након прикупљања података, које је обављено експериментално, постављањем мобилног робота испред сваке могуће непокретне препреке, и очитавањем резултата датих са сензора, мобилни робот треба да изврши препознавање изгледа окружења (класификација). При генерисању вештачких неуронских мрежа посебно треба обратити пажњу на проценат успешности препознавања изгледа окружења. Да би функционалност била на нивоу морају бити испуњени следећи функционални захтеви: 1) Препознати задату препреку са захтеваном тачношћу, 2) избећи контакт (судар) са објектима из окружења, 3) прећи задату путању. У односу на дефинисане функционалне захтеве даље се врши декомпозиција на функционалне подзахтеве и њима одговарајуће параметре пројектовања: ФЗ1 препознати задату препреку са захтеваном тачношћу ФЗ11 прикупити податке ФЗ12 формирати обучавајуће парове ФЗ13 формирати ВНМ ФЗ14 обучити ВНМ ФЗ15 остварити захтевану тачност ФЗ2 избећи контакт (судар) са објектима из окружења ФЗ21 донети одлуку о правцу кретања ФЗ22 извршити кретање ФЗ3 прећи задату путању 11

ПП1 интелигентни систем за препознањање препрека ПП11 сонар ПП12 MATLAB код ПП13 архитектура мреже ПП14 Neural Network Tool (модул у MATLAB програмском пакету) ПП15 параметри обучавања ПП2 систем за избегавање препрека ПП21 дрво одлучивања ПП22 мотори са енкодерима ПП3 модел кретања. Табела 3.1: Матрица пројектовања О.M.П. ФЗ11 ФЗ12 ФЗ1 ФЗ13 ФЗ14 ФЗ15 ФЗ21 ФЗ2 ФЗ22 ФЗ3 ПП1 ПП2 ПП11 ПП12 ПП13 ПП14 ПП15 ПП21 ПП22 X X X X X X X ПП3 X Као што се види у табели 3.1 матрица пројектовања је неспрегнута, ште представља идеалан случај. Уз помоћ примене метода аксиоматског пројектовања може се доћи до одабира најбољег варијантног решења, у циљу одабира неуронске мреже са највећим процентом успешности препознавања окружења (неопходно >80%, у супротном се мреже одбацују као незадовољавајуће). 12

I = [i1, i2, i3,.in] O = [o1, o2, o3,.on] 4. Детаљно пројектовање решења Захтеви пројекта су да мобилни робот који се креће кроз модел технолошког окружења, са дефинисаном тачношћу препозна препреку на коју наиђе и донесе исправну одлуку о начину на који ће да је избегне. Како би се обезбедило захтевано понашање мобилног робота и испунили постављени функционални захтеви, приступа се процесу надгледаног машинског учења коришћењем Backpropagation вештачких неуронских мрежа. Backpropagation вештачке неуронске мреже са простирањем грешке уназад се користе како би се решио проблем пресликавања из задатог улазног простора у излазни простор по принципу минимизације грешке између актуелног излаза и захтеваног излаза. повратна веза рекурентна веза Слика 4.1: Пример архитектуре вештачке неуронске мреже Како би се дошло до скупа обучавајућих парова вештачке неуронске мреже приступило се прикупљању података експерименталним путем мерењем. Мерења су вршена у лабораторији Центра за Нове Технологије (ЦеНТ) коришћењем мобилног робота LEGO Mindstorm NXT који се кретао кроз модел технолошког постројења приказаном на слици 4.2. Слика 4.2: Упрошћени модел технолошког постројења 13

Комуникација робота са рачунаром се остварује путем USB кабла. Пре покретања робота инсталира се потребни софтвер LEGO NXT као и апликативни софтвер за рад у Matlab окружењу. Робот се затим поставља у радно окружење и покреће се коришћењем кодa задатог у Matlab-у, као што је дато у прилогу. Када се робот нађе у задатом положају, окретањем ултрзвучног сензора за 180 врши се очитавање 9 вредности, где је угао између два очитавања једнак и износи 20. Слика 4.3: Пример очитавања ултразвучног сензора Ултразвучни сензор ради по принципу емитовања таласа. Талас се емитује и када наиђе на препреку рефлектује се и враћа на извор. На основу временске разлике између емитовања сигнала и примања одбијеног сигнала, процесор врши прорачун помоћу кога се долази до информације колико је та препрека удаљена од извора таласа. Слика 4.4: Принцип рада ултразвучног сензора 14

За постављени проблем улаз у вештачку неуронску мрежу представља очитавање са ултразвучног сензора. Обзиром да се од робота захтева да препозна више типова препрека, мерења су вршена за сваки тип препреке. Како би робот са што већим процентом успешности препознао препреку на коју наиђе потребно имати што већи узорак. Дакле, са повећањем броја мерења, добија се већи број обучавајућих парова и тиме постиже бољи резултат мреже и већа тачност при препознавању препреке. Сходно томе, вршено је по 20 мерења за сваки од 5 карактеристичних положаја у којима би робот могао да се нађе. Табела 4.1: Карактеристични положаји за које су вршена мерења Препрека Положај за који се врши мерење Десни зид Робот се поставља тако да му зид буде са десне стране Леви зид Робот се поставља тако да му зид буде са леве стране Десни коси зид Робот се поставља тако да му зид буде са десне стране под углом од 45 Леви коси зид Робот се поставља тако да му зид буде са леве стране под углом од 45 Слово П Робот се поставља тако да му зид буде са леве, десне стране и испред њега Препрека у облику слова П Коси зид са леве стране Коси зид са десне стране Десни зид Леви зид Слика 4.5: Приказ карактеристичних положаја за које су вршена мерења 15

Добијене вредности са сензора су чуване и касније искоришћене као улазни вектори у процесу тренирања вештачке неуронске мреже. Тренирано је 50 различитих мрежа и на основу усвојених критеријума одабрана je најбоља мрежа. Затим је комплетно решење које подразумева кретање робота по моделу кретања, препознавање препреке коришћењем трениране ВНМ као и начин избегавања препреке имплементирано у Matlab окружење [3]. Као резултат, робот препознаје препреку и доноси одлуку о томе како ће да се креће и успешно избегава препреку. Слика 4.6: Приказ тока информацијa 16

5. Дрво одлучивања Дрво одлучивања представља алгоритам који ће мобилни робот пратити и на тај начин одлучивати путању кретања до одређеног циља. Дрво одлучивања ће се имплементирати у Matlab окружењу у главни код за кретање робота и самим тим му омогућити логично кретање до крајње задате тачке. Уједно, дрво одлучивања представља и класификацију података који су у директној повезаности са ВНМ. Као први корак, за сваку од пет препрека, мерено је по 20 узорака који представљају улазне податке за ВНМ која ће након обучавања, на основу тих подата препознати препреку са коју први пут наиђе. На основу узорака и тога колико је ВНМ добро истренирана мобилни робот ће са већом тачношћу моћи да препозна препреке. Излазни резултати су девет цифара које имају вредности од 0 до 1, где првих 5 цифара представљају тих пет препрека. Што је излазна вредност ближа јединици то је већа тачност да је препрека коју је препознао одговарајућа. Користећи податке на излазу из мреже формирано је дрво одлучивања. Постоји више начина за пројектовање дрвета одлучивања, у зависности од услова са којима се располаже. Дрво одлучивања у овом пројекту је засновано на излазним резултатима, који су директно везани за ВНМ и на могућност препознавања препрека. Алгоритам кретања је приказан на слици 5.1, на којој се врло једноставно може видети начин рада. Мобилни робот прво покреће мотор ултразвучног сензора и сними првих девет мерења, затим путем ВНМ препознаје препреку и у односу на то коју је препреку препознао наставља даље кретање. Излазни подаци из ВНМ представљају основне елементе у алгоритму дрвета одлучивања. Алгоритам је формиран тако да акција мобилног робота зависи од вредности излаза из ВНМ, да ли вредност прелази задати праг активације 0.6 и коју препреку представља та вредност. На пример да ли је препознао препреку 1 (десни зид). То се у Matlab коду пише if y(1,1) > 0.6 онда следи акција. Величина 0.6 је одређена емпиријски у односу на више мерења и препознавања. Даље у односу на одговор (тј. препознавање) робот врши кретање ( кретање напред, кретање назад или ротацију, у зависности од препреке). И то се понавља док не дође до циља. Слика 5.1: Дрво одлучивања 17

6. Усвајање критеријума на чијим основама се одређује одговарајуће решење Критеријуми који су који су служили за одабир мреже која је употребљена за решавање проблема су: грешка тачности неуронске мреже градијент грешке Грешка која настане на сваком од излазних елемената мреже се израчунава. Backpropagation је тип вештачке неуронске мреже који је коришћен у овом пројектном задатку, и он поседује метод за утврђивање грешке у скривеним слојевима. Како је обучавање итеративни поступак у коме се коригују вредности тежинских коефицијената, обука траје док излаз мреже не направи најмање могуће одступање са жељеним вредностима [2]. Та одступања нису увек идеална и зато постоји наведена грешка. Што је грешка мања, мања је разлика жељене и остварене вредности, тј. мрежа је боље обучена, и зато нам је то примарни критеријум за одабир. Градијент грешке из тога зависи од саме грешке и тежинских односа, тј. одговара што мањи број. Он у директној зависности са грешком, па је стога изабран као критеријум. 18

7. Развити и имплементирати модел кретања у Matlab окружењу За дати проблем формиран је модел кретања интелигентног робота за равно кретање, где x и y представљају координате тежишта мобилног робота у односу на неки спољашњи координатни систем, а угао одређује оријентацију робота у односу на x осу. Модел је изведен на основу пређеног пута који се мери помоћу енкодера од неког положаја у коме је мобилни робот био у тренутку t 1 до неког положаја у тренутку t 2. Енкодери су позиционирани на осовинама точкова и служе за мерење углова ротације точкова мобилног робота. Слика 7.1: Мобилни робот са два независна погонска точка Одређивање позиције и оријентације своди се на коришћење података очитаних са енкодера, што значи сумирање пређеног пута погонских точкова у сваком повећаном временском интервалу t: x = s cos( + /2) y = s sin( + /2) = 19

С обзиром да овакав тип мобилног робота има три степена слободе, x, y и представљају величине које дефинишу путању мобилног робота у току интервала t, док b представља размак између точкова. s = s d = r s l= r ( s d, s l ) пређени пут десног и левог погонског точка, s укупан пређени пут, α угао ротације десног погонског точка, β - угао ротације левог погонског точка, r полупречник погонског точка. Модел је након формирања имплементиран у Matlab окружење који је дат у прилогу. 20

8. Применом концепта машинског учења базираног на вештачким неуронским мрежама одредити скуп параметара који задовољавају функционалне захтеве сходно усвојеном критеријуму пројектовања Приликом одабира мреже приступано је рачунању вредности суме квадрата грешке (SSE), на најмању могућу вредност: (6.1) (6.2) (6.3) На основу једначине 6.1, рачуна се сума квадрата грешке, па се затим рачуна (једначина 6.2) перформанса функције (MSE). Вредност RMSE се користи да би се вредности минимизирале ради лакшег поређења мрежа, тј. одредити која има најбоље перформансе. Генерално у једначини 6.1 члан y(x1) представља жељени излаз из мреже, а члан net(x) је реалан излаз који је добијен. На основу њихових разлика настаје грешка мреже за жељене излазе. Велико N представља број излаза неуронске мреже који је у нашем случају број 5. Валидација мреже треба у најбољем случају да прати линију тестирања, која треба да тежи да буде што мањим вредностима (тј. задатим). А такође постоји и дијаграм поклапања жељених и добијених вредности на коме је то дато у виду црвених и плавих тачака које треба што мање да се расипају и тиме покажу поклапање резултата. Слика 6.1: Дијаграм поклапања 21

Слика 6.2: Дијаграм тренирања, теста, валидације и резултата 22

9. Тестирање и верификовање перформанси решења Током израде пројектног задатка обучено је 50 мрежа различитих архитектура (различити број скривених слојева и различити број неурона у скривеним слојевима). Током процеса обучавања варирани су параметри обучавања. Бројеви слојева, неурона у слојевима као и параметри представљају факторе који утичу на перформансе ВНМ и приказани су за све тестиране мреже у табели 9.1. На основу најбољих перформанси (које се бирају матрицом одлучивања) и градијента који су приказани у табели, мрежа под редним бројем 9 је изабрана као мрежа која ће моћи најбоље да се носи са задатим проблемом и приказана је на сликама 9.1 и 9.2. Слика 9.1: Резултати обучаване ВНМ Слика9.2: Приказ тока обуке, валидације и тестирања мреже 23

Табела 9.1: Приказ тестираних мрежа Mрежа Број слојева Број неурона Перформансе Градијент Λ µ 1 2 (9-7) 0.082 1.64e-05 0.1 0.9 2 1 (5) 0.0129 6.26e-06 0.1 0.9 3 1 (7) 0.0129 0.00329 0.1 0.9 4 1 (10) 0.0036 0.0002 0.1 0.9 5 1 (14) 0.0044 0.0002 0.1 0.9 6 1 (27) 0.124 4.90e-05 0.1 0.9 7 1 (31) 7.94e-05 3.32e-06 0.1 0.9 8 1 (40) 0.0124 8.97e-07 0.1 0.9 9 2 (6-4) 5.18e-11 2.15e-06 0.2 0.2 10 1 (50) 0.0103 7.73e-05 0.1 0.9 11 2 (4-5) 0.0023 0.00098 0.05 0.5 12 2 (6-8) 0.003 0.00099 0.05 0.5 13 2 (9-13) 0.0314 0.00032 0.05 0.5 14 2 (15-14) 0.016 0.0014 0.05 0.5 15 2 (31-28) 0.053 0.00068 0.05 0.5 16 2 (10-9) 0.004 6.49e-05 0.05 0.5 17 2 (7-8) 0.00086 0.00061 0.5 0.1 18 2 (2-3) 0.064 0.002 0.5 0.1 19 2 (4-5) 0.0048 0.0028 0.5 0.1 20 2 (15-16) 0.00077 7.94e-05 0.5 0.1 21 2 (20-23) 0.00014 3.02e-06 0.5 0.1 22 2 (13-13) 0.021 9.77e-05 0.5 0.1 23 2 (16-16) 0.00098 3.77e-05 0.5 0.5 24 2 (31-31) 0.0047 4.43e-05 0.5 0.5 25 2 (8-8) 0.0023 3.37e-05 0.5 0.5 26 3 (6-9-6) 1.78e-08 3.65e-05 0.1 0.1 27 3 (9-6-9) 0.000726 4.32e-05 0.9 0.1 28 3 (9-9-9) 0.000405 0.000210 0.9 0.1 29 3 (6-6-6) 7.99e-05 6.62e-05 0.9 0.1 30 3 (6-6-6) 9.21e-08 0.000112 0.1 0.1 31 3 (6-6-6) 0.00504 6.98e-05 0.1 0.9 32 3 (6-6-9) 3.57e-07 9.56e-07 0.1 0.1 33 3 (9-9-9) 9.48e-07 6.18e-05 0.1 0.1 34 3 (9-8-7) 1.82e-06 2.18e-05 0.9 0.1 35 3 (9-8-7) 9.23e-09 4.72e-05 0.1 0.1 36 3 (10-9-8) 1.47e-05 4.89e-05 0.2 0.2 37 3 (10-9-8) 3.86e-06 1.92e-05 0.1 0.9 38 3 (10-9-9) 3.17e-05 6.93e-05 0.1 0.9 39 3 (5-4-5) 0.0312 0.000152 0.1 0.1 40 3 (5-4-5) 0.00755 4.53e-05 0.2 0.2 41 3 (3-5-7) 0.00933 7.66e-05 0.9 0.2 42 3 (3-5-7) 0.00441 3.25e-06 0.2 0.9 43 3 (5-6-7) 0.00324 0.000280 0.2 0.2 44 3 (5-6-7) 0.0135 0.000215 0.9 0.9 45 3 (10-10-10) 5.94e-05 7.89e-05 0.9 0.9 46 3 (10-10-10) 5.33e-06 1.46e-05 0.2 0.2 47 3 (31-8-31) 0.000268 0.000360 0.2 0.2 48 3 (31-8-31) 0.000265 7.00e-05 0.9 0.1 49 3 (8-31-8) 0.0102 1.00e-10 0.1 0.1 50 3 (8-31-8) 0.000186 0.000396 0.1 0.9 24

10. Матрица одлучивања Доношење одлуке за постављени проблем одлучивања мобилног робота на бази вештачких неуронских мрежа, представља вредновање скупа могућих решења или алтернатива. Процес доношења одлуке се састоји од: аквизиција свих расположивих података и информација путем сонара формирање обучавајућих парова обучавање вештачке неуронске мреже доношење одлуке о правцу кретања У овом пројектном задатку матрица одлучивања је коришћена као метод процене степена обучености ВНМ при препознавању задатих препрека. На основу дефинисаног критеријума најмање разлике између реалних и предвиђених вредности излаза, одабрана је мрежа 4 са два скривена слоја, 6 неурона у првом и 4 неурона у другом скривеном слоју и са параметрима обучавања = µ = 0.2. Слика 10.1: Приказ тока обуке, валидације и тестирања мреже 25

Прикупљању података потребних за формирање матрице одлучивања приступило се експериметалним путем. Вршено је по 20 очитавања за сваки од могућих 5 положаја у коме робот може да се нађе. За свако мерење бележен је тип препреке који се очитава на излазу из ВНМ. Излаз представља вектор са пет вредности од 0 до 1 које описују степен препознавања пет могућих типова препрека, за препознати тип узима се онај који има вредност најближу јединици. По завршетку мерења за сваки положај се уписује проценат препознавања за сваки тип препреке и те вредности се уносе у матрицу одлучивања. Табела 10.1: Матрица одлучивања Положај Тип препреке Леви зид Десни зид Леви коси зид Десни коси зид Слово П Леви зид 100% 0% 0% 0% 0% Десни зид 0% 100% 0% 0% 0% Леви коси зид 0% 0% 100% 0% 0% Десни коси зид 0% 0% 0% 100% 0% Слово П 0% 0% 0% 0% 100% Добијена матрица је дијагонална што представља идеалан случај, из чега се закључује да је одабрана мрежа задовољила све задате услове и постигла завидан степен обучености. То даље значи да мобилни робот може без проблема да обавља постављени задатак и да притом сваку препреку препознаје са 100% успешности. 26

11. Дискусија и закључак При изради пројектног задатка први корак је био прикупљање података који су служили за формирање обучавајућих парова вештачке неуронске мреже. Кроз мерење и процес обучавања мреже, закључeно је да квалитет и ниво обучености мреже у великој мери зависе од квалитета узорака обучавајућих парова. Одређене потешкоће су настале при прикупљању одговарајућих података са сонара и формирања обучавајућих парова који би обезбедили квалитетно обучавање мреже. Након првог мерења, услед недовољног пазнавања руковања мобилним роботом, прикупљени су подаци који нису довољно добро описивали препреке за које је мерење вршено. Као последица, мреже нису биле обучене са довољном тачношћу и робот није био у могућности да изврши препознавање са захтеваним процентом успешности. Одлучено је да се сва мерења понове ради добијања бољих резултата. Након поновног обучавања мрежа, као резултат, мобилни робот препознаје препреке са 100 процената успешности. У овом извештају је описан ток рада који се односи на случај поновног мерења. Потенцијална корист интелигентних система је велика и тешко је данас замислити грану људске делатности у којој се такав систем не би могао применити. У оквиру овог пројекта изложен је пример у којем се вештачка неуронска мрежа користи као основни део интелигентног система, и где се показала као веома добар алат због својих нелинеарних својстава и једноставног тренирања. Овај пројектни задатак је показао добре резултате, и можемо закључити да се овакав интелигентни систем, уз нека подешавања може применити на велики број других проблема који се тичу одлучивања. 27

Литература [1] Скрипта из предмета Методе одлучивања, Мастер академске студије, 1. година, II семестар, Машински факултет, Београд, 2011. [2] Миљковић З., Александрић Д.; Вештачке неуронске мреже, Збирка решених задатака са изводима из теорије; Универзитет у Београду Машински факултет; Београд 2009. [3] Миљковић З.; Системи вештачких неуронских мрежа у производним технологијама; Универзитет у Београду Машински факултет; Београд 2002. 28

Прилог Matlab кодови Главни код clc; clear; close all; load smreza4 x = [0 0 0/57.3]' b = 11; %rastojanje izmedju tockova r = 3; %poluprecnik tocka path = [30 0] %putanja sizpath = size(path,1) dmax = 5 StopMotor all off for k = 1 : sizpath d_wp = ITS_compute_distance(x, path(k,:)) while d_wp > 5 % go straight forward SetPower -30 % SetTurnRatio 0% SetAngleLimit 100% %pause(1) SMotorSettings %pause(1) WaitForMotor(MOTOR_B); ; ; ; ; 29

d_wp = ITS_compute_distance(x, path(k,:)) %while %for %Program za ocitavanje 9 podataka sa ultrazvucnog senzora %prvih pet redova su standard i uvek se navode ResetMotorAngle(MOTOR_A, handle); Ust = [] %vektor u kome ce se vrsiti upis ocitanih podataka OpenUltrasonic(SENSOR_1); % otvaranje ultrazvucnog senzora for i = 1 : 9 %petlja sa 9 ponavljanja (ocitavanja ultrazvucnog senzora na svakih 20 [stepeni]) ResetMotorAngle(MOTOR_A); % resetovanje ugla motora SetMotor(MOTOR_A); % setovanje motora SetPower (8); % snaga pokretanja motora SetAngleLimit (20); % ugao pomeranja u svakom ciklusu SetTurnRatio (0); % ugao skretanja robota SMotorSettings(); % slanje podataka motorima pause(1) % vreme zadrzavanja u svakom polozaju ust = GetUltrasonic(SENSOR_1); % ocitavanje sa ultrazvucnog senzora Ust = [Ust;ust] % zapis podataka u vektor StopMotor ('all', 'brake'); % zaustavljanje svih motora ResetMotorAngle(MOTOR_A); % StopMotor ('all', 'off'); for n=1:6 % ciklus od 6 ponavljanja SetMotor(MOTOR_A); SetPower (-9); %vracanje motora u prethodni polozaj SetAngleLimit (30); SMotorSettings(); pause(2) y = sim(smreza4,ust) if y(1,1) > 0.6 && y(5,1) > 0.6 % primer kontrole motora SetPower -20 % power is 50 (0-100) 30

SetTurnRatio -50 % if == 0 => straight forward SetAngleLimit 60% how much to rotate motor shaft; SMotorSettings % primer kontrole motora SetPower -20 % power is 50 (0-100) SetTurnRatio 0 % if == 0 => straight forward SetAngleLimit 100% how much to rotate motor shaft; SMotorSettings elseif y(1,1) > 0.6 31

SetPower -20 % power is 50 (0-100) SetTurnRatio 0 % if == 0 => straight forward SetAngleLimit 100% how much to rotate motor shaft; SMotorSettings % primer kontrole motora SetPower -20 % power is 50 (0-100) SetTurnRatio 0 % if == 0 => straight forward SetAngleLimit 100% how much to rotate motor shaft; SMotorSettings 32

elseif y(2,1) > 0.6 SetPower -20 % power is 50 (0-100) SetTurnRatio -50 % if == 0 => straight forward SetAngleLimit 37% how much to rotate motor shaft; SMotorSettings % primer kontrole motora SetPower -20 % power is 50 (0-100) SetTurnRatio 0 % if == 0 => straight forward SetAngleLimit 100% how much to rotate motor shaft; SMotorSettings 33

elseif y(3,1) > 0.6 && y (5,1) > 0.6 SetPower -20 % power is 50 (0-100) SetTurnRatio 50 % if == 0 => straight forward SetAngleLimit 37% how much to rotate motor shaft; SMotorSettings % primer kontrole motora 34

SetPower -20 % power is 50 (0-100) SetTurnRatio 0 % if == 0 => straight forward SetAngleLimit 100% how much to rotate motor shaft; SMotorSettings elseif y(3,1) > 0.6 SetPower -20 % power is 50 (0-100) SetTurnRatio 0 % if == 0 => straight forward SetAngleLimit 100% how much to rotate motor shaft; SMotorSettings % primer kontrole motora 35

SetPower -20 % power is 50 (0-100) SetTurnRatio 0 % if == 0 => straight forward SetAngleLimit 100% how much to rotate motor shaft; SMotorSettings elseif y(4,1) > 0.6 SetPower -20 % power is 50 (0-100) SetTurnRatio 50 % if == 0 => straight forward SetAngleLimit 37% how much to rotate motor shaft; SMotorSettings 36

% primer kontrole motora SetPower -20 % power is 50 (0-100) SetTurnRatio 0 % if == 0 => straight forward SetAngleLimit 100% how much to rotate motor shaft; SMotorSettings else y(5,1) > 0.6 37

SetPower 20 % power is 50 (0-100) SetTurnRatio 0 % if == 0 => straight forward SetAngleLimit 100% how much to rotate motor shaft; SMotorSettings % primer kontrole motora SetPower 20 % power is 50 (0-100) SetTurnRatio 0 % if == 0 => straight forward SetAngleLimit 100% how much to rotate motor shaft; SMotorSettings ResetMotorAngle(MOTOR_A, handle); Ust = [] %vektor u kome ce se vrsiti upis ocitanih podataka 38

OpenUltrasonic(SENSOR_1); % otvaranje ultrazvucnog senzora for i = 1 : 9 %petlja sa 9 ponavljanja (ocitavanja ultrazvucnog senzora na svakih 20 [stepeni]) ResetMotorAngle(MOTOR_A); % resetovanje ugla motora SetMotor(MOTOR_A); % setovanje motora SetPower (8); % snaga pokretanja motora SetAngleLimit (20); % ugao pomeranja u svakom ciklusu SetTurnRatio (0); % ugao skretanja robota SMotorSettings(); % slanje podataka motorima pause(1) % vreme zadrzavanja u svakom polozaju ust = GetUltrasonic(SENSOR_1); % ocitavanje sa ultrazvucnog senzora Ust = [Ust;ust] % zapis podataka u vektor StopMotor ('all', 'brake'); % zaustavljanje svih motora ResetMotorAngle(MOTOR_A); % StopMotor ('all', 'off'); for n=1:6 % ciklus od 6 ponavljanja SetMotor(MOTOR_A); SetPower (-20); %vracanje motora u prethodni polozaj SetAngleLimit (30); SMotorSettings(); pause(2) load smreza4 y = sim(smreza4,ust) if y(1,1) > 0.6 && y(5,1) > 0.6 % primer kontrole motora SetPower -20 % power is 50 (0-100) SetTurnRatio -50 % if == 0 => straight forward SetAngleLimit 38% how much to rotate motor shaft; SMotorSettings 39

% primer kontrole motora SetPower -20 % power is 50 (0-100) SetTurnRatio 0 % if == 0 => straight forward SetAngleLimit 50% how much to rotate motor shaft; SMotorSettings elseif y(1,1) > 0.6 SetPower -20 % power is 50 (0-100) SetTurnRatio 0 % if == 0 => straight forward SetAngleLimit 35% how much to rotate motor shaft; SMotorSettings 40

% primer kontrole motora SetPower -20 % power is 50 (0-100) SetTurnRatio 0 % if == 0 => straight forward SetAngleLimit 50% how much to rotate motor shaft; SMotorSettings elseif y(2,1) > 0.6 41

SetPower -20 % power is 50 (0-100) SetTurnRatio -50 % if == 0 => straight forward SetAngleLimit 35% how much to rotate motor shaft; SMotorSettings % primer kontrole motora SetPower -20 % power is 50 (0-100) SetTurnRatio 0 % if == 0 => straight forward SetAngleLimit 50% how much to rotate motor shaft; SMotorSettings elseif y(3,1) > 0.6 && y (5,1) > 0.6 42

SetPower -20 % power is 50 (0-100) SetTurnRatio 50 % if == 0 => straight forward SetAngleLimit 35% how much to rotate motor shaft; SMotorSettings % primer kontrole motora SetPower -20 % power is 50 (0-100) SetTurnRatio 0 % if == 0 => straight forward SetAngleLimit 50% how much to rotate motor shaft; SMotorSettings 43

elseif y(3,1) > 0.6 SetPower -20 % power is 50 (0-100) SetTurnRatio 0 % if == 0 => straight forward SetAngleLimit 35% how much to rotate motor shaft; SMotorSettings % primer kontrole motora SetPower -20 % power is 50 (0-100) 44

SetTurnRatio 0 % if == 0 => straight forward SetAngleLimit 50% how much to rotate motor shaft; SMotorSettings elseif y(4,1) > 0.6 SetPower -20 % power is 50 (0-100) SetTurnRatio 50 % if == 0 => straight forward SetAngleLimit 35% how much to rotate motor shaft; SMotorSettings % primer kontrole motora 45

SetPower -20 % power is 50 (0-100) SetTurnRatio 0 % if == 0 => straight forward SetAngleLimit 50% how much to rotate motor shaft; SMotorSettings else y(5,1) > 0.6 SetPower 20 % power is 50 (0-100) SetTurnRatio 0 % if == 0 => straight forward SetAngleLimit 35% how much to rotate motor shaft; SMotorSettings 46

% primer kontrole motora SetPower 20 % power is 50 (0-100) SetTurnRatio 0 % if == 0 => straight forward SetAngleLimit 50% how much to rotate motor shaft; SMotorSettings 47

Мрежа clc,clear close all load novidesni1 load novidesni2 load novidesni3 load novidesni4 load novidesni5 load novidesni6 load novidesni7 load novidesni8 load novidesni9 load novidesni10 load novidesni11 load novidesni12 load novidesni13 load novidesni14 load novidesni15 load novidesni16 load novidesni17 load novidesni18 load novidesni19 load novidesni20 load novidesnokosi01 load novidesnokosi02 load novidesnokosi03 load novidesnokosi04 load novidesnokosi05 load novidesnokosi06 load novidesnokosi07 load novidesnokosi08 load novidesnokosi09 load novidesnokosi10 load novidesnokosi11 load novidesnokosi12 load novidesnokosi13 load novidesnokosi14 load novidesnokosi15 load novidesnokosi16 load novidesnokosi17 load novidesnokosi18 load novidesnokosi19 load novidesnokosi20 load novilevi01 load novilevi02 load novilevi03 load novilevi04 load novilevi05 load novilevi06 load novilevi07 load novilevi08 load novilevi09 48

load novilevi10 load novilevi11 load novilevi12 load novilevi13 load novilevi14 load novilevi15 load novilevi16 load novilevi17 load novilevi18 load novilevi19 load novilevi20 load novilevokosi01 load novilevokosi02 load novilevokosi03 load novilevokosi04 load novilevokosi05 load novilevokosi06 load novilevokosi07 load novilevokosi08 load novilevokosi09 load novilevokosi10 load novilevokosi11 load novilevokosi12 load novilevokosi13 load novilevokosi14 load novilevokosi15 load novilevokosi16 load novilevokosi17 load novilevokosi18 load novilevokosi19 load novilevokosi20 load novip01 load novip02 load novip03 load novip04 load novip05 load novip06 load novip07 load novip08 load novip09 load novip10 load novip11 load novip12 load novip13 load novip14 load novip15 load novip16 load novip17 load novip18 load novip19 load novip20 input = [novidesni1 novidesni2 novidesni3 novidesni4 novidesni5 novidesni6 novidesni7 novidesni8 novidesni9 novidesni10 novidesni11 novidesni12 novidesni13 novidesni14 novidesni15 novidesni16 novidesni17 novidesni18 novidesni19 novidesni20 novidesnokosi01 novidesnokosi02 novidesnokosi03 novidesnokosi04 novidesnokosi05 novidesnokosi06 novidesnokosi07 novidesnokosi08 novidesnokosi09 novidesnokosi10 novidesnokosi11 novidesnokosi12 novidesnokosi13 novidesnokosi14 novidesnokosi15 novidesnokosi16 novidesnokosi17 novidesnokosi18 novidesnokosi19 novidesnokosi20 49

novilevi01 novilevi02 novilevi03 novilevi04 novilevi05 novilevi06 novilevi07 novilevi08 novilevi09 novilevi10 novilevi11 novilevi12 novilevi13 novilevi14 novilevi15 novilevi16 novilevi17 novilevi18 novilevi19 novilevi20 novilevokosi01 novilevokosi02 novilevokosi03 novilevokosi04 novilevokosi05 novilevokosi06 novilevokosi07 novilevokosi08 novilevokosi09 novilevokosi10 novilevokosi11 novilevokosi12 novilevokosi13 novilevokosi14 novilevokosi15 novilevokosi16 novilevokosi17 novilevokosi18 novilevokosi19 novilevokosi20 novip01 novip02 novip03 novip04 novip05 novip06 novip07 novip08 novip09 novip10 novip11 novip12 novip13 novip14 novip15 novip16 novip17 novip18 novip19 novip20 ] output = [1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0;]' input_70 = [novidesni1 novidesni3 novidesni5 novidesni7 novidesni9 novidesni11 novidesni13 novidesni15 novidesni17 novidesni19 novidesni2 novidesni4 novidesni6 novidesni8 novidesnokosi01 novidesnokosi03 novidesnokosi05 novidesnokosi07 novidesnokosi09 novidesnokosi11 novidesnokosi13 novidesnokosi15 novidesnokosi17 novidesnokosi19 novidesnokosi02 novidesnokosi04 novidesnokosi06 novidesnokosi08 novilevi01 novilevi03 novilevi05 novilevi07 novilevi09 novilevi11 novilevi13 novilevi15 novilevi17 novilevi19 novilevi02 novilevi04 novilevi06 novilevi08 novilevokosi01 novilevokosi03 novilevokosi05 novilevokosi07 novilevokosi09 novilevokosi11 novilevokosi13 novilevokosi15 novilevokosi17 novilevokosi19 novilevokosi02 novilevokosi04 novilevokosi06 novilevokosi08 novip01 novip03 novip05 novip07 novip09 novip11 novip13 novip15 novip17 novip19 novip02 novip04 novip06 novip08] output_70 = [1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 50

0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0 0;]' input_30 = [novidesni10 novidesni12 novidesni14 novidesni16 novidesni18 novidesni20 novidesnokosi10 novidesnokosi12 novidesnokosi14 novidesnokosi16 novidesnokosi18 novidesnokosi20 novilevi10 novilevi12 novilevi14 novilevi16 novilevi18 novilevi20 novilevokosi10 novilevokosi12 novilevokosi14 novilevokosi16 novilevokosi18 novilevokosi20 novip10 novip12 novip14 novip16 novip18 novip20] testmreza = newff(input,output,[8,7,6],{'tansig'},'trainlm','learngdm') testmreza.trainparam.show = 50; testmreza.trainparam.lr = 0.001; testmreza.trainparam.mc = 0.9; testmreza.trainparam.mu = 0.001 testmreza.trainparam.epochs = 1000; testmreza.trainparam.goal = 1e-10 testmreza.trainparam.max_fail = 500; testmreza = train(testmreza,input_70, output_70) y = sim(testmreza,input_30) disp('y AL input_30 ') %mreza_vs_al=[y' output' input' ] figure(1), plot(input,output,'or'),hold on plot(input_30,y,'b*') % saving the network smreza4 = testmreza save smreza4 51