Съдържание:

AI в LEGO EV3 робот-лабиринт: 13 стъпки
AI в LEGO EV3 робот-лабиринт: 13 стъпки

Видео: AI в LEGO EV3 робот-лабиринт: 13 стъпки

Видео: AI в LEGO EV3 робот-лабиринт: 13 стъпки
Видео: Программа для лабиринта самый короткий путь Lego EV3 среда Classroom 2024, Юли
Anonim
Image
Image
Как се решава един лабиринт
Как се решава един лабиринт

Това е прост, автономен робот с известен изкуствен интелект. Той е проектиран да изследва лабиринт и когато се постави обратно на входа, да кара през изхода и да избягва задънените улици. Той е много по -сложен от предишния ми проект, който просто премина през лабиринта. Тук роботът трябва да запомни пътя, който е изминал, да премахне задънените улици, да съхрани новия път и след това да следва новия път.

Моят предишен робот е описан тук:

Роботът е изграден с помощта на LEGO Mindstorms EV3. Софтуерът EV3 работи на компютър и генерира програма, която след това се изтегля в микроконтролер, наречен EV3 Brick. Методът на програмиране е базиран на икони и на високо ниво. Много е лесно и универсално.

Консумативи

ЧАСТИ

  1. LEGO Mindstorms EV3 комплект
  2. LEGO Mindstorms EV3 ултразвуков сензор. Не е включен в комплекта EV3.
  3. Велпапе за лабиринта. Две кашони трябва да са достатъчни.
  4. Малко парче тънък картон за стабилизиране на някои ъгли и стени.
  5. Лепило и лента за свързване на картонени парчета заедно.
  6. Червен плик с поздравителна картичка за идентифициране на изхода от лабиринта.

ИНСТРУМЕНТИ

  1. Помощен нож за рязане на картона.
  2. Стоманена линийка за подпомагане на процеса на рязане.

СОФТУЕР

Програмата е тук:

Стъпка 1: Как се решава един лабиринт

МЕТОД ЗА ШАЙБИРАНЕ НА МАЗ

Има няколко метода за навигация в лабиринт. Ако се интересувате от изучаването им, те са описани много добре в следната статия в Уикипедия:

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

  1. Ако е възможно да завиете наляво, направете го.
  2. В противен случай отидете направо, ако е възможно.
  3. Ако не може да отиде наляво или направо, завийте надясно, ако е възможно.
  4. Ако нищо от горното не е възможно, това трябва да е задънена улица. Обърни се.

Едно предупреждение е, че методът може да се провали, ако лабиринтът има цикъл в него. В зависимост от разположението на контура, роботът може да продължи да се движи около и около цикъла. Възможно решение на този проблем би било роботът да премине към правилото за следване на стената от дясната страна, ако осъзнае, че върви в цикъл. Не включих това усъвършенстване в моя проект.

РЕШЕНИЕ НА лабиринта, за да се намери пряк път

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

Възможните завои са: наляво, надясно, назад (в задънена улица) и направо (което е кръстовище).

Комбинациите се заменят, както следва:

  • „Наляво, назад, наляво“става „Прав“.
  • „Наляво, назад, надясно“става „назад“.
  • „Наляво, назад, право“става „дясно“.
  • „Надясно, назад, наляво“става „Назад“.
  • „Направо, назад, наляво“става „дясно“.
  • „Прав, назад, прав“става „Назад“.

КАК РОБОТЪТ СЕ ДРЪЖВА С МОЯТ ЛАБИНИР

  1. Когато роботът започне да кара, той вижда пространство вдясно и съхранява Straight в списъка в масива.
  2. След това завива наляво и добавя Left към списъка. Списъкът сега съдържа: Прав, Ляв.
  3. С задънена улица се обръща и добавя Назад към списъка. Списъкът сега съдържа: Прав, Наляво, Назад.
  4. Преминавайки през платното, което е използвал от входа, той добавя Straight към списъка. Списъкът сега съдържа: Прав, Наляво, Назад, Прав. Той разпознава комбинация и променя наляво, назад, направо надясно. Списъкът сега съдържа направо, надясно.
  5. С задънена улица се обръща и добавя Назад към списъка. Списъкът сега съдържа: Прав, Вдясно, Назад.
  6. След завой наляво списъкът съдържа направо, надясно, назад, наляво. Той разпознава комбинация и променя надясно, назад, отляво до гърба. Списъкът вече съдържа Прав, Назад.
  7. След следващия завой наляво списъкът съдържа Прав, Назад, Наляво. Това променя тази комбинация в дясно. Списъкът сега съдържа само надясно.
  8. Той предава интервал и добавя Straight към списъка. Списъкът вече съдържа надясно, направо.
  9. След десния завой списъкът съдържа надясно, право, дясно, което е директният път.

Стъпка 2: Съображения при програмиране на робота

Съображения за всеки микроконтролер

Когато роботът реши да се обърне, той трябва или да направи широк завой, или да тръгне напред на кратко разстояние преди да завие и след завъртане да върви напред на кратко разстояние, без да проверява сензора. Причината за първото кратко разстояние е, че роботът не трябва да се блъска в стената след завоя, а причината за второто кратко разстояние е, че след като роботът се е обърнал, сензорът ще види дългото пространство, от което току -що е дошъл, и роботът би си помислил, че трябва да се завърти отново, което не е правилното нещо.

Когато роботът усети кръстовище вдясно, но това не е десен завой, установих, че е добре роботът да кара напред на около 10 инча (25 см), без да проверява сензорите си.

Съображения, специфични за LEGO MINDSTORMS EV3

Въпреки че LEGO Mindstorms EV3 е много гъвкав, той позволява не повече от един от всеки тип сензор, свързан към една тухла. Две или повече тухли могат да бъдат свързани с маргаритка, но не исках да купувам друга тухла и затова използвах следните сензори (вместо три ултразвукови сензора): инфрачервен сензор, цветен сензор и ултразвуков сензор. Това се получи добре.

Но цветният сензор има много малък обхват, от около 2 инча (5 см), което води до няколко специални съображения, описани по -долу:

  1. Когато цветният сензор открие стена отпред и роботът реши да завие надясно или да се обърне, той трябва първо да направи резервно копие, за да си даде достатъчно място, за да се обърне, без да се блъсне в стената.
  2. Сложен проблем възниква при някои „прави“кръстовища. Поради малкия обхват на сензора за цвят, роботът не може да определи дали усеща правилното пресичане „Право“или воденето до десен завой. Опитах се да поправя този проблем, като настроя програмата да съхранява „Прав“в списъка всеки път, когато роботът усети такъв, и след това да премахне повече от един „Прав“подред в списъка. Това поправя ситуацията, при която десен завой следва „Прав“в лабиринта, но не и ситуацията, при която има десен завой без „Прав“преди него. Също така се опитах да настроя програмата да елиминира „Прав“, ако е точно преди „Дясно“, но това не работи, ако десен завой следва „Прав“. Не успях да намеря решение, което да отговаря на всички случаи, въпреки че предполагам, че би било възможно роботът да погледне изминатото разстояние (като прочете сензорите за въртене на двигателя) и да реши дали е „Прав“или десен завой. Не смятах, че това усложнение си струва да се направи с цел демонстриране на концепцията за AI в този проект.
  3. Предимство на цветния сензор е, че той прави разлика между кафявото на стената и червеното на бариерата, която използвах на изхода, и предоставя лесен начин за робота да реши кога е завършил лабиринта.

Стъпка 3: Основната програма

Основната програма
Основната програма

LEGO Mindstorms EV3 има много удобен метод за програмиране, базиран на икони. Блоковете се показват в долната част на екрана на компютъра и могат да бъдат плъзгани и пуснати в прозореца за програмиране, за да се изгради програма. EV3 Brick може да бъде свързан към компютъра чрез USB кабел, Wi-Fi или Bluetooth, а след това програмата може да бъде изтеглена от компютъра в Brick.

Програмата се състои от основна програма и няколко „Моите блокове“, които са подпрограми. Каченият файл съдържа цялата програма, която е тук:

Стъпките в основната програма са както следва:

  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: Кабели

Кабели
Кабели

Кабелите се свързват към тухлата, както следва:

  • Порт B: ляв голям мотор.
  • Порт C: голям десен мотор.
  • Порт 2: ултразвуков сензор.
  • Порт 3: цветен сензор.
  • Порт 4: инфрачервен сензор.

Стъпка 11: Последна стъпка в изграждането на робота: Декорация

Последна стъпка в изграждането на робота: Декорация
Последна стъпка в изграждането на робота: Декорация
Последна стъпка в изграждането на робота: Декорация
Последна стъпка в изграждането на робота: Декорация

Крилата и перките са само за декорация.

Стъпка 12: Изградете лабиринт

Изградете лабиринт
Изградете лабиринт
Изградете лабиринт
Изградете лабиринт

Две картонени опаковки от велпапе трябва да са достатъчни за лабиринта. Направих стените на лабиринта с височина 5 инча (12,5 см), но 4 инча (10 см) трябва да работят също толкова добре, ако ви липсва велпапе.

Първо изрязах стените на кашоните, на 10 инча (25 см) от дъното. След това изрязах стените на 5 инча от дъното. Това осигурява няколко 5-инчови стени. Също така изрязах дъното на картонените кутии, оставяйки около 1 инч (2,5 см), прикрепен към стените за стабилност.

Различните парчета могат да бъдат изрязани и залепени или залепени, където е необходимо, за да образуват лабиринта. Между страничните стени по всяка пътека с задънена улица трябва да има пространство от 11 или 12 инча (30 см). Дължината не трябва да бъде по -малка от 10 инча (25 см). Тези разстояния са необходими, за да може роботът да се обърне.

Някои от ъглите на лабиринта може да се наложи да бъдат подсилени. Освен това някои прави стени трябва да се пазят от огъване, ако включват изправен ъгъл от кашон. Малки парчета тънък картон трябва да бъдат залепени на дъното на тези места, както е показано.

Изходът има червена бариера, състояща се от половин червен плик с поздравителна картичка и основа, направена от 2 парчета тънък картон, както е показано.

Стъпка 13: Лабиринтът

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

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

Един начин да заобиколите този проблем е да включите програма за изправяне на пътеки, която да поддържа робота на определено разстояние от лявата стена. Не включих това. Програмата е достатъчно сложна и е достатъчна за демонстриране на концепцията за AI в този проект.

ЗАКЛЮЧИТЕЛНА ЗАБЕЛЕЖКА

Това беше забавен проект и страхотно учене. Надявам се и на вас да ви е интересно.

Препоръчано: