Мазмұны:

LEGO EV3 лабиринт-роботтағы AI: 13 қадам
LEGO EV3 лабиринт-роботтағы AI: 13 қадам

Бейне: LEGO EV3 лабиринт-роботтағы AI: 13 қадам

Бейне: LEGO EV3 лабиринт-роботтағы AI: 13 қадам
Бейне: Урок #1 | Комплект Lego Ev3 и принципы робототехники | Основы робототехники Lego Ev3 2024, Шілде
Anonim
Image
Image
Лабиринт қалай шешіледі
Лабиринт қалай шешіледі

Бұл жасанды интеллекті бар қарапайым автономды робот. Ол лабиринтті зерттеуге және кіре берісте орналастырылғанда, шығуға дейін жетуге және тығырықтан аулақ болуға арналған. Бұл менің лабиринтті жайлап жіберген алдыңғы жобама қарағанда әлдеқайда күрделі. Мұнда робот өзінің жүріп өткен жолын есте сақтап, тұйық жерлерді алып тастап, жаңа жолды сақтап, содан кейін жаңа жолмен жүруі керек.

Менің бұрынғы роботым мына жерде сипатталған:

Робот LEGO Mindstorms EV3 көмегімен жасалған. EV3 бағдарламалық қамтамасыз ету компьютерде жұмыс істейді және бағдарлама жасайды, содан кейін ол EV3 кірпіш деп аталатын микроконтроллерге жүктеледі. Бағдарламалау әдісі белгіге негізделген және жоғары деңгейлі. Бұл өте қарапайым және әмбебап.

Жабдықтар

БӨЛІКТЕР

  1. LEGO Mindstorms EV3 жиынтығы
  2. LEGO Mindstorms EV3 ультрадыбыстық сенсоры. Ол EV3 жинағына кірмейді.
  3. Лабиринтке арналған гофр картон. Екі қорап жеткілікті болуы керек.
  4. Кейбір бұрыштар мен қабырғаларды тұрақтандыруға көмектесетін жұқа картонның кішкене бөлігі.
  5. Картоннан жасалған бөлшектерді біріктіру үшін желім мен таспа.
  6. Лабиринттің шығуын анықтайтын қызыл сәлемдесу карточкасы.

ҚҰРАЛДАР

  1. Картонды кесуге арналған қызметтік пышақ.
  2. Болат сызғыш кесу процесіне көмектеседі.

БАҒДАРЛАМА

Бағдарлама мына жерде:

1 -қадам: лабиринт қалай шешіледі

АЖЫРАТУ ӘДІСІ

Лабиринтті шарлаудың бірнеше әдістері бар. Егер сіз оларды зерттеуге қызығушылық танытсаңыз, олар келесі Уикипедия мақаласында жақсы суреттелген:

Мен сол жақ қабырғаға іліну әдісін таңдадым. Идея - робот лабиринт кезінде келесі шешімдерді қабылдай отырып, қабырғаны сол жағында сақтайды:

  1. Егер солға бұрылу мүмкін болса, мұны жасаңыз.
  2. Әйтпесе, мүмкін болса, тура жүріңіз.
  3. Егер ол солға немесе тура жүре алмаса, мүмкіндігінше оңға бұрылыңыз.
  4. Егер жоғарыда айтылғандардың ешқайсысы мүмкін болмаса, бұл тығырыққа тірелуі керек. Айналдыру.

Бір сақтық, егер лабиринтте цикл болса, әдіс сәтсіз болуы мүмкін. Циклдың орналасуына байланысты робот айналдыруды жалғастыра алады. Бұл мәселені шешудің ықтимал шешімі, егер ол циклде жүріп жатқанын түсінсе, роботтың оң жақ қабырға ережесіне ауысуы еді. Мен бұл жетілдіруді жобама енгізген жоқпын.

ТҮЗ ЖОЛДЫ ТАБУҒА МАЗАҚАНЫ ШЕШУ

Лабиринтті жүргізу кезінде робот өзінің жүріп өткен жолын есте сақтап, тығырықтан шығуы керек. Ол мұны әр бұрылыс пен қиылысты массивте сақтау, бұрылыстар мен қиылыстардың нақты комбинациясын тексеру және тығырыққа тіркесімді ауыстыру арқылы жүзеге асырады. Бұрылыстар мен қиылыстардың соңғы тізімі - бұл лабиринт арқылы өтетін тікелей жол.

Мүмкін болатын бұрылыстар: солға, оңға, артқа (тұйықта) және түзу (бұл қиылыс).

Комбинациялар келесідей ауыстырылады:

  • «Солға, Артқа, Солға» «Тікелей» болады.
  • «Солға, Артқа, Оңға» «Артқа» айналады.
  • «Солға, Артқа, Тікелей» «Оңға» айналады.
  • «Оңға, Артқа, Солға» «Артқа» айналады.
  • «Тура, артқа, солға» «оңға» айналады.
  • «Тікелей, Арқа, Тікелей» «Артқа» айналады.

РОБОТ ҚАБЫЛЫМДЫ ҚАЛАЙ ҚОЛДАНАДЫ

  1. Робот жүргізуді бастаған кезде ол оң жақтағы бос орынды көреді және массивтегі тізімде Straight сақтайды.
  2. Содан кейін солға бұрылып, солға тізімге қосылады. Тізімде енді бар: Тікелей, Сол жақ.
  3. Тығырыққа тірелгенде, ол бұрылып, тізімге Артқа қосылады. Тізімде енді бар: Тікелей, Солға, Артқа.
  4. Кіреберістен қолданылған жолақтан өтіп, ол тізімге Straight қосады. Тізімде енді бар: Тікелей, Солға, Артқа, Тікелей. Ол комбинацияны таниды және солға, артқа, тура оңға өзгертеді. Тізім енді түзу, оңды қамтиды.
  5. Тығырыққа тірелгенде, ол бұрылып, тізімге Артқа қосылады. Тізімде енді бар: Тікелей, Оңға, Артқа.
  6. Солға бұрылғаннан кейін тізімде түзу, оңға, артқа, солға болады. Ол комбинацияны таниды және оңға, артқа, солдан артқа өзгертеді. Тізімде енді Straight, Back бар.
  7. Келесі солға бұрылғаннан кейін тізімде түзу, артқа, солға болады. Бұл комбинацияны Оңға өзгертеді. Тізім енді тек Оңды ғана қамтиды.
  8. Ол бос орын береді және тізімге Straight қосады. Тізімде енді Оң, Тікелей бар.
  9. Оңға бұрылғаннан кейін тізімде тура жол болып табылатын Оң, Түз, Оң болады.

2 -қадам: роботты бағдарламалау кезінде ескеру

МИКРОКОНТРОЛЬДЕРДІҢ ҚАЙСЫСЫНА ҚАРАУ

Робот бұрылуға шешім қабылдаған кезде, ол кең бұрылыс жасауы керек, немесе бұрылмас бұрын қысқа қашықтықта алға айналуы керек, ал бұрылғаннан кейін сенсорды тексермей -ақ қайтадан қысқа қашықтыққа алға жүру керек. Алғашқы қысқа қашықтықтың себебі - робот бұрылудан кейін қабырғаға соғылмауы керек, ал екінші қысқа қашықтықтың себебі - робот бұрылғаннан кейін сенсор жаңа келген кеңістікті көреді. және робот қайтадан айналуы керек деп ойлайды, бұл дұрыс емес.

Егер робот оң жақтағы қиылысты сезсе, бірақ бұл бұрылыс емес болса, мен сенсорларды тексерместен роботтың 25 дюйм (25 дюйм) алға қарай қозғалуы жақсы екенін байқадым.

LEGO MINDSTORMS EV3 ЕРЕКШЕЛІ ҚАРАУЛАР

LEGO Mindstorms EV3 өте әмбебап болғанымен, ол бір кірпішке жалғанған сенсорлардың әрқайсысының бір түрінен артық емес рұқсат береді. Екі немесе одан да көп кірпішті шынжырмен байлап қоюға болады, бірақ мен басқа кірпіш алғым келмеді, сондықтан мен келесі сенсорларды қолдандым (үш ультрадыбыстық сенсордың орнына): инфрақызыл сенсор, түс сенсоры және ультрадыбыстық сенсор. Бұл жақсы нәтиже берді.

Бірақ түс сенсорының 5 см -ге жуық өте қысқа диапазоны бар, бұл төменде сипатталғандай бірнеше арнайы ойларға әкеледі:

  1. Түс сенсоры алдыңғы қабырғаны анықтаған кезде және робот оңға бұрылуға немесе бұрылуға шешім қабылдаған кезде, қабырғаға соғылмай бұрылу үшін өзіне жеткілікті кеңістік беру үшін алдымен резервтік көшірмесін жасауы керек.
  2. Кейбір «Тікелей» қиылыстарда күрделі мәселе туындайды. Түсті сенсордың қысқа диапазонына байланысты робот өзінің «тура» қиылысын немесе оңға бұрылуға жетуін сезетінін анықтай алмайды. Мен бұл мәселені робот сезінген сайын тізімде «Тікелей» сақтау бағдарламасын орнату арқылы түзетуге тырыстым, содан кейін тізімде қатарынан бірнеше «Түзу» жойылды. Бұл оңға бұрылу лабиринттегі «Тікелей» жүретін жағдайды түзетеді, бірақ алдында «Тікелей» жоқ оңға бұрылыс болған жағдайды емес. Мен сондай -ақ «Оңға» дейін болса, «Тікелей» жою бағдарламасын орнатуға тырыстым, бірақ егер оңға бұрылу «Тікелей» кейін жүрсе, бұл жұмыс істемейді. Мен барлық жағдайларға сәйкес келетін шешімді таба алмадым, бірақ робот жүріп өткен қашықтыққа (қозғалтқыштың айналу сенсорларын оқу арқылы) қарап, оның «тура» немесе дұрыс екенін шешуі мүмкін деп ойлаймын. бұру Мен бұл жобада AI тұжырымдамасын көрсету үшін бұл қиындықты жасау керек деп ойламадым.
  3. Түс сенсорының артықшылығы - бұл қабырғаның қоңыр түсі мен шығыста қолданған тосқауылдың қызыл түсі арасындағы айырмашылық және роботқа лабиринтті аяқтауды шешудің оңай әдісін ұсынады.

3 -қадам: Негізгі бағдарлама

Негізгі бағдарлама
Негізгі бағдарлама

LEGO Mindstorms EV3-те белгішеге негізделген өте ыңғайлы бағдарламалау әдісі бар. Блоктар дисплей экранының төменгі жағында компьютерде көрсетілген және оны құру үшін бағдарламалау терезесіне апарып тастауға болады. EV3 кірпішін компьютерге USB кабелі, Wi-Fi немесе Bluetooth арқылы қосуға болады, содан кейін бағдарламаны компьютерден кірпішке жүктеуге болады.

Бағдарлама негізгі бағдарламадан және бірнеше «Менің блоктарымнан» тұрады, олар кіші бағдарламалардан тұрады. Жүктелген файлда бүкіл бағдарлама бар:

Негізгі бағдарламадағы қадамдар келесідей:

  1. Айналуды санау айнымалысы мен массивін анықтаңыз және инициализациялаңыз.
  2. 5 секунд күтіңіз және «Барыңыз» деп айтыңыз.
  3. Циклды бастаңыз.
  4. Лабиринтті жүргізіңіз. Шығуға жеткенде цикл шығады.
  5. Кірпіштің экранында осы уақытқа дейін лабиринттен табылған қиылыстарды көрсетіңіз.
  6. Жолды қысқарту керектігін тексеріңіз.
  7. Қысқартылған жолда қиылыстарды көрсетіңіз.
  8. 4 -қадамға оралыңыз.
  9. Циклдан кейін тура жолды жүргізіңіз.

Скриншот осы негізгі бағдарламаны көрсетеді.

4 -қадам: Менің блоктарым (қосалқы бағдарламалар)

Менің блоктарым (кіші бағдарламалар)
Менің блоктарым (кіші бағдарламалар)

Роботтың лабиринттен қалай айдайтынын басқаратын Navigate My Block көрсетіледі. Баспа өте кішкентай және оқылмайтын болуы мүмкін. Бірақ бұл if-операторларының қаншалықты жан-жақты және күшті екендігінің жақсы мысалы (LEGO EV3 жүйесінде қосқыштар деп аталады).

  1. №1 көрсеткі инфрақызыл сенсор белгілі бір қашықтықта орналасқан объектіні көретінін тексеретін қосқышты көрсетеді. Олай болса, блоктардың жоғарғы сериясы орындалады. Егер олай болмаса, онда басқару №2 көрсеткі орналасқан үлкен, төменгі блоктар сериясына беріледі.
  2. №2 көрсеткі түс сенсорының қандай түс көретінін тексеретін қосқышты көрсетеді. 3 жағдай бар: жоғарғы жағында түс жоқ, ортасында қызыл, төменгі жағында қоңыр.
  3. №3 екі көрсеткі ультрадыбыстық сенсор белгілі бір қашықтықта орналасқан объектіні көретінін тексеретін қосқыштарды көрсетеді. Олай болса, блоктардың жоғарғы сериясы орындалады. Олай болмаған жағдайда басқару блоктардың төменгі сериясына беріледі.

Жолды қысқартуға және тікелей жүруге арналған менің блоктарым күрделі және мүлдем оқылмайтын болады, сондықтан олар бұл құжатқа кірмейді.

5 -қадам: роботты құруды бастау: база

Роботты құруға кірісу: база
Роботты құруға кірісу: база
Роботты құруға кірісу: база
Роботты құруға кірісу: база

Жоғарыда айтылғандай, LEGO Mindstorms EV3 бір кірпішке жалғанған сенсорлардың әрқайсысының түріне рұқсат етпейді. Мен келесі сенсорларды қолдандым (үш ультрадыбыстық сенсордың орнына): инфрақызыл сенсор, түс сенсоры және ультрадыбыстық сенсор.

Төмендегі фотосуреттер жұбы роботты қалай жасау керектігін көрсетеді. Әр жұптың бірінші фотосуреті қажетті бөлшектерді көрсетеді, ал екінші фотосуретте бір -біріне қосылған бөлшектер көрсетілген.

Бірінші қадам - көрсетілген бөлшектерді қолдана отырып, роботтың негізін құру. Робот негізі төңкеріліп көрсетілген. Роботтың артқы жағындағы L-тәрізді кішкене бөлік-артқы жағына тірек. Ол робот қозғалғанда сырғып кетеді. Бұл жақсы жұмыс істейді. EV3 жинағында домалақ тәрізді бөлік жоқ.

6 -қадам: базаның жоғарғы жағы, 1

Базаның жоғарғы жағы, 1
Базаның жоғарғы жағы, 1
Базаның жоғарғы жағы, 1
Базаның жоғарғы жағы, 1

Бұл қадам және келесі 2 қадам робот негізінің жоғарғы жағына, түс сенсорына және кабельдерге арналған, барлығы 10 дюймдік (26 см) кабельдер.

7 -қадам: базаның жоғарғы жағы, 2

Базаның жоғарғы жағы, 2
Базаның жоғарғы жағы, 2
Базаның жоғарғы жағы, 2
Базаның жоғарғы жағы, 2

8 -қадам: базаның жоғарғы жағы, 3

Базаның жоғарғы жағы, 3
Базаның жоғарғы жағы, 3
Базаның жоғарғы жағы, 3
Базаның жоғарғы жағы, 3

9 -қадам: инфрақызыл және ультрадыбыстық сенсорлар

Ультрадыбыстық және инфрақызыл сенсорлар
Ультрадыбыстық және инфрақызыл сенсорлар
Ультрадыбыстық және инфрақызыл сенсорлар
Ультрадыбыстық және инфрақызыл сенсорлар

Келесі - инфрақызыл сенсор (роботтың сол жағында) және ультрадыбыстық сенсор (оң жақта). Сонымен қатар, кірпішті үстіне бекітуге арналған 4 түйреуіш.

Инфрақызыл және ультрадыбыстық датчиктер қалыпты көлденең емес, тігінен орналасқан. Бұл қабырғалардың бұрыштарын немесе ұштарын жақсы анықтауға мүмкіндік береді.

10 -қадам: кабельдер

Кабельдер
Кабельдер

Кабельдер кірпішке келесі түрде қосылады:

  • В порт: сол жақ үлкен қозғалтқыш.
  • С порт: оң жақ үлкен қозғалтқыш.
  • 2 порт: ультрадыбыстық сенсор.
  • 3 порт: түс сенсоры.
  • 4 -порт: инфрақызыл сенсор.

11 -қадам: Робот құрастырудың соңғы кезеңі: безендіру

Роботты құрудың соңғы кезеңі: безендіру
Роботты құрудың соңғы кезеңі: безендіру
Робот құрастырудың соңғы кезеңі: безендіру
Робот құрастырудың соңғы кезеңі: безендіру

Қанаттары мен қанаттары тек әшекейлеуге арналған.

12 -қадам: лабиринт жасаңыз

Лабиринт жасаңыз
Лабиринт жасаңыз
Лабиринт жасаңыз
Лабиринт жасаңыз

Лабиринт үшін екі гофр картон қорап жеткілікті болуы керек. Мен лабиринт қабырғаларын 5 дюйм (12,5 см) биіктікте жасадым, бірақ егер сізде гофр картон жетіспесе, 4 дюйм (10 см) жақсы жұмыс істеуі керек.

Алдымен мен қораптардың қабырғаларын төменнен 10 дюйм (25 см) қиып алдым. Содан кейін мен қабырғаларды төменнен 5 дюймге айналдырдым. Бұл бірнеше 5 дюймдік қабырғаларды қамтамасыз етеді. Сонымен қатар, мен тұрақтылық үшін қабырғаға 1 дюйм (2,5 см) бекітіп, қораптардың түбін кесіп тастадым.

Лабиринтті қалыптастыру үшін әр түрлі бөліктерді кесуге, желімдеуге немесе таспамен жабуға болады. Тұйық болатын кез келген жолда бүйір қабырғалар арасында 30 см 11 немесе 12 дюйм бос орын болуы керек. Ұзындығы 25 дюймден кем болмауы керек. Бұл қашықтықтар роботтың айналуы үшін қажет.

Лабиринттің кейбір бұрыштарын күшейту қажет болуы мүмкін, сонымен қатар, егер оларда картоннан жасалған бұрышы болса, кейбір түзу қабырғаларды майыстырмау керек. Жіңішке картонның кішкене бөліктерін суретте көрсетілгендей түбіне жабыстыру керек.

Шығуда қызыл тосқауыл бар, ол жарты қызыл сәлемдесу конвертінен және суретте көрсетілгендей 2 дана жұқа картоннан жасалған негізден тұрады.

13 -қадам: лабиринт

Лабиринт
Лабиринт

Бір ескерту - лабиринт үлкен болмауы керек. Егер роботтың бұрылысы дұрыс бұрылысқа қарағанда сәл бұрылыста болса, сәйкессіздіктер бірнеше айналымнан кейін қосылады және робот қабырғаға соғылуы мүмкін. Мен жасаған кішкене лабиринт арқылы жетістікке жету үшін маған бұрылыстардың айналу параметрлерімен бірнеше рет айналысу керек болды.

Бұл мәселені шешудің жолы-роботты сол жақ қабырғадан белгілі бір қашықтықта ұстайтын жолды түзету тәртібін қосу. Мен бұны қоспадым. Бағдарлама жеткілікті күрделі, және бұл жобада AI тұжырымдамасын көрсету үшін жеткілікті.

Қорытынды қорытынды

Бұл қызықты жоба және үлкен оқу тәжірибесі болды. Сізге де қызықты болады деп үміттенемін.

Ұсынылған: