Talaan ng mga Nilalaman:

AI sa LEGO EV3 Maze-Driving Robot: 13 Mga Hakbang
AI sa LEGO EV3 Maze-Driving Robot: 13 Mga Hakbang

Video: AI sa LEGO EV3 Maze-Driving Robot: 13 Mga Hakbang

Video: AI sa LEGO EV3 Maze-Driving Robot: 13 Mga Hakbang
Video: Растущий пропуск под носом ► 4 Прохождение Super Mario Galaxy 2 (Nintendo Wii) 2024, Hulyo
Anonim
Image
Image
Paano Malulutas ang isang Maze
Paano Malulutas ang isang Maze

Ito ay isang simple, autonomous robot na may ilang artipisyal na katalinuhan. Ito ay dinisenyo upang galugarin ang isang maze at kapag inilagay pabalik sa pasukan, upang humimok sa pamamagitan ng exit at maiwasan ang mga patay na dulo. Ito ay mas kumplikado kaysa sa aking nakaraang proyekto, na simpleng nagdulot sa pamamagitan ng maze. Dito, dapat tandaan ng robot ang landas na nilakbay nito, alisin ang mga dead-end, iimbak ang bagong landas, at pagkatapos ay sundin ang bagong landas.

Ang aking nakaraang robot ay inilarawan dito:

Ang robot ay binuo gamit ang LEGO Mindstorms EV3. Ang EV3 Software ay tumatakbo sa isang computer at bumubuo ng isang programa, na na-download sa isang microcontroller na tinatawag na EV3 Brick. Ang pamamaraan ng programa ay batay sa icon at mataas na antas. Napakadali at maraming nalalaman.

Mga gamit

BAHAGI

  1. Itakda ang LEGO Mindstorms EV3
  2. LEGO Mindstorms EV3 ultrasonic sensor. Hindi ito kasama sa hanay ng EV3.
  3. Corrugated na karton para sa maze. Dalawang karton ay dapat sapat.
  4. Ang isang maliit na piraso ng manipis na karton upang makatulong na patatagin ang ilang mga sulok at dingding.
  5. Pandikit at tape upang ikonekta ang mga piraso ng karton nang magkasama.
  6. Isang pulang sobre ng kard ng pagbati upang makilala ang paglabas ng maze.

TOOLS

  1. Utility kutsilyo upang i-cut ang karton.
  2. Bakal na bakal upang tulungan ang proseso ng paggupit.

SOFTWARE

Narito ang programa:

Hakbang 1: Paano Malulutas ang isang Maze

PARAAN NG MAZE-DRIVING

Mayroong maraming mga paraan ng pag-navigate sa isang maze. Kung interesado kang pag-aralan ang mga ito, mahusay na inilalarawan ang mga ito sa sumusunod na artikulo sa Wikipedia:

Pinili ko ang kaliwang pamamaraan sa pagsunod sa pader. Ang ideya ay ang robot ay panatilihin ang isang pader sa kaliwang bahagi sa pamamagitan ng paggawa ng mga sumusunod na desisyon habang napupunta ito sa maze:

  1. Kung posible na kumaliwa, gawin ito.
  2. Kung hindi man, dumiretso kung maaari.
  3. Kung hindi ito makakaliwa o dumidiret, kumanan pakanan, kung maaari.
  4. Kung wala sa itaas ang posible, ito ay dapat na isang patay na wakas. Umikot.

Ang isang pag-iingat ay ang pamamaraan na maaaring mabigo kung ang maze ay mayroong isang loop dito. Nakasalalay sa pagkakalagay ng loop, ang robot ay maaaring magpatuloy sa paligid at paligid ng loop. Ang isang posibleng solusyon para sa problemang ito ay para sa robot na lumipat sa kanang panuntunan ng tagasunod sa dingding kung napagtanto na ito ay pupunta sa isang loop. Hindi ko isinama ang pagpipino na ito sa aking proyekto.

Paglutas ng MAZE upang makahanap ng isang direktang pat

Habang nagmamaneho sa pamamagitan ng maze ang robot ay dapat kabisaduhin ang landas na paglalakbay nito at alisin ang mga patay. Natutupad ito sa pamamagitan ng pag-iimbak ng bawat pagliko at intersection sa isang array, pagsuri para sa mga tukoy na kumbinasyon ng mga liko at interseksyon habang papunta ito, at pinapalitan ang mga kumbinasyon na may kasamang dead-end. Ang pangwakas na listahan ng mga liko at interseksyon ay ang direktang landas sa pamamagitan ng maze.

Ang mga posibleng liko ay: Kaliwa, Kanan, Bumalik (sa isang dead-end), at Straight (na isang intersection).

Ang mga kumbinasyon ay pinalitan tulad ng sumusunod:

  • Ang "Kaliwa, Balik, Kaliwa" ay nagiging "Straight."
  • Ang "Kaliwa, Bumalik, Kanan" ay nagiging "Bumalik."
  • Ang "Kaliwa, Bumalik, Tuwid" ay nagiging "Kanan."
  • Ang "Kanan, Balik, Kaliwa" ay nagiging "Balik."
  • Ang "Straight, Back, Left" ay nagiging "Kanan."
  • Ang "Straight, Back, Straight" ay nagiging "Back."

PAANO KUMUHAY NG ROBOT ANG MAZE KO

  1. Kapag nagsimulang magmaneho ang robot nakakita ito ng puwang sa kanan at nag-iimbak ng Straight sa listahan sa array.
  2. Pagkatapos ay lumiliko ito sa kaliwa at idinagdag ang Kaliwa sa listahan. Naglalaman na ngayon ang listahan ng: Straight, Left.
  3. Sa isang patay na dulo, lumiliko ito at nagdaragdag Bumalik sa listahan. Naglalaman na ngayon ang listahan ng: Straight, Left, Back.
  4. Pagpasa sa lane na ginamit nito mula sa pasukan, nagdaragdag ito ng Straight sa listahan. Naglalaman na ngayon ang listahan ng: Straight, Left, Back, Straight. Kinikilala nito ang isang kumbinasyon at binabago ang Kaliwa, Bumalik, Straight to Right. Naglalaman ang listahan ngayon ng Straight, Right.
  5. Sa isang patay na dulo, lumiliko ito at nagdaragdag Bumalik sa listahan. Naglalaman na ngayon ang listahan ng: Straight, Right, Back.
  6. Matapos ang kaliwa, ang listahan ay naglalaman ng Straight, Right, Back, Left. Kinikilala nito ang isang kumbinasyon at binabago ang Kanan, Balik, Kaliwa sa Balik. Naglalaman ang listahan ngayon ng Straight, Back.
  7. Matapos ang susunod na kaliwa i-on ang listahan ay naglalaman ng Straight, Back, Left. Binabago nito ang kombinasyong iyon sa Kanan. Naglalaman lamang ngayon ng tama ang listahan.
  8. Nagpapasa ito ng isang puwang at nagdaragdag ng diretso sa listahan. Naglalaman ang listahan ngayon ng Tamang, Straight.
  9. Matapos ang kanang pagliko sa listahan ay naglalaman ng Tamang, Straight, Right na ang direktang landas.

Hakbang 2: Mga Pagsasaalang-alang Kapag Pinaprograma ang Robot

PAG-IISIPAN PARA SA ANUMANG MICROCONTROLLER

Kapag nagpasya ang robot na buksan ito dapat na gumawa ng isang malawak na pagliko, o magpatuloy sa isang maikling distansya bago lumiko at pagkatapos ng pagliko ay pasulong muli ng isang maliit na distansya nang hindi sinusuri ang sensor. Ang dahilan para sa unang maikling distansya ay ang robot ay hindi dapat bumangga sa pader pagkatapos ng pagliko, at ang dahilan para sa pangalawang maikling distansya ay na pagkatapos ng robot ay lumiko, makikita ng sensor ang mahabang puwang na ito ay nagmula., at maiisip ng robot na dapat itong lumiko muli, na hindi tamang gawin.

Kapag ang robot ay nakakaramdam ng isang intersection sa kanan ngunit hindi ito isang tamang pagliko, nalaman ko na mabuti na ang robot ay magpatakbo ng humigit-kumulang 10 pulgada (25 cm) nang hindi sinusuri ang mga sensor nito.

KONSIDERASYON AY LALAKING SA LEGO MINDSTORMS EV3

Bagaman ang LEGO Mindstorms EV3 ay napaka-maraming nalalaman, pinapayagan nito ang hindi hihigit sa isa sa bawat uri ng sensor na konektado sa isang Brick. Dalawa o higit pang mga brick ay maaaring may kadena na kadena, ngunit hindi ko nais na bumili ng isa pang Brick, at sa gayon ay ginamit ko ang mga sumusunod na sensor (sa halip na tatlong mga ultrasonikong sensor): infrared sensor, color sensor, at ultrasonic sensor. Naging maayos ito.

Ngunit ang sensor ng kulay ay may isang napakaikling saklaw, na halos 2 pulgada (5 cm), na hahantong sa ilang mga espesyal na pagsasaalang-alang tulad ng inilarawan sa ibaba:

  1. Kapag nakita ng color sensor ang isang pader sa harap at nagpasya ang robot na lumiko pakanan o lumingon, dapat muna itong mag-back up, upang bigyan ang sarili nito ng sapat na puwang upang lumiko nang hindi mauntog sa dingding.
  2. Ang isang kumplikadong isyu ay nangyayari sa ilang mga "Straight" intersection. Dahil sa maikling saklaw ng color sensor, hindi matukoy ng robot kung nakakaintindi ito ng tamang interseksyon na "Straight" o ang lead-up sa isang kanang pagliko. Sinubukan kong ayusin ang isyung ito sa pamamagitan ng pagtatakda ng programa upang mag-imbak ng isang "Straight" sa listahan tuwing nadarama ng robot ang isa, at pagkatapos ay tinanggal ang higit sa isang "Straight" sa isang hilera sa listahan. Inaayos nito ang sitwasyon kung saan ang isang kanang pagliko ay sumusunod sa isang "Straight" sa maze ngunit hindi ang sitwasyon kung saan mayroong isang tamang pagliko nang walang isang "Straight" bago ito. Sinubukan ko ring itakda ang programa upang maalis ang isang "Straight" kung bago ito bago ang isang "Kanan" ngunit hindi ito gagana kung ang isang kanang pagliko ay sumusunod sa isang "Straight". Hindi ako nakahanap ng isang solusyon na umaangkop sa lahat ng mga kaso, kung sa palagay ko posible para sa robot na tumingin sa distansya na nalakbay (sa pamamagitan ng pagbabasa ng mga sensor ng rotasyon ng motor) at magpasya kung ito ay isang "Straight" o isang kanan lumiko. Hindi sa palagay ko ang komplikasyon na ito ay sulit gawin para sa mga layunin ng pagpapakita ng konsepto ng AI sa proyektong ito.
  3. Ang isang kalamangan ng color sensor ay ang pagkakilala nito sa pagitan ng kayumanggi ng isang pader at ng pula ng hadlang na ginamit ko sa exit, at nagbibigay ng isang madaling paraan para sa robot na magpasya kung kailan natapos ang maze.

Hakbang 3: Ang Pangunahing Program

Ang Pangunahing Program
Ang Pangunahing Program

Ang LEGO Mindstorms EV3 ay may napaka-maginhawang pamamaraan ng programa na nakabatay sa icon. Ang mga bloke ay ipinapakita sa ilalim ng display screen sa computer at maaaring i-drag-and-drop sa window ng programa upang makabuo ng isang programa. Ang EV3 Brick ay maaaring konektado sa computer sa pamamagitan ng alinman sa isang USB cable, Wi-Fi o Bluetooth, at ang programa ay maaaring mai-download mula sa computer patungo sa Brick.

Ang programa ay binubuo ng isang pangunahing programa at maraming mga "My Blocks" na mga subroutine. Naglalaman ang na-upload na file ng buong programa, na narito:

Ang mga hakbang sa pangunahing programa ay ang mga sumusunod:

  1. Tukuyin at simulan ang variable ng turn-counting at ang array.
  2. Maghintay ng 5 segundo at sabihin ang "Pumunta."
  3. Magsimula ng isang loop.
  4. Magmaneho sa pamamagitan ng maze. Kapag naabot ang exit, ang loop ay lumabas.
  5. Ipakita sa screen ng Brick, ang mga intersection na matatagpuan sa maze sa ngayon.
  6. Suriin kung ang landas ay dapat na paikliin.
  7. Ipakita ang mga interseksyon sa pinaikling landas.
  8. Mag-loop pabalik sa hakbang 4.
  9. Pagkatapos ng loop, himukin ang direktang landas.

Ipinapakita ng screen shot ang pangunahing program na ito.

Hakbang 4: Ang Aking Mga Bloke (Subroutine)

Ang Aking Mga Bloke (Subroutine)
Ang Aking Mga Bloke (Subroutine)

Ang Pag-navigate sa Aking Block, na kumokontrol kung paano ang robot ay nagdadala sa pamamagitan ng maze, ay ipinakita. Napakaliit ng pag-print at maaaring hindi mabasa. Ngunit ito ay isang magandang halimbawa ng kung gaano maraming nalalaman at malakas ang mga if-statement (tinatawag na Switches sa LEGO EV3 system).

  1. Ang arrow # 1 na puntos sa isang Switch na sumusuri kung ang infrared sensor ay nakakita ng isang bagay na higit sa isang tukoy na distansya ang layo. Kung gayon, ang nangungunang serye ng mga bloke ay naisakatuparan. Kung hindi, ang kontrol ay ipinapasa sa malaki, ilalim na serye ng mga bloke, kung saan matatagpuan ang arrow # 2.
  2. Ang arrow # 2 na puntos sa isang Switch na sumusuri kung anong kulay ang nakikita ng color sensor. Mayroong 3 mga kaso: walang kulay sa tuktok, pula sa gitna, at kayumanggi sa ilalim.
  3. Dalawang arrow # 3 ang tumuturo sa Mga switch na suriin kung nakikita ng ultrasonic sensor ang isang bagay na higit sa isang tukoy na distansya ang layo. Kung gayon, ang nangungunang serye ng mga bloke ay naisakatuparan. Kung hindi, pagkatapos ang kontrol ay ipinapasa sa ilalim ng serye ng mga bloke.

Ang My Blocks para sa pagpapaikli ng landas at para sa pagmamaneho ng direktang landas ay mas kumplikado at magiging ganap na hindi magaan, at sa gayon hindi sila kasama sa dokumentong ito.

Hakbang 5: Simula sa Pagbuo ng Robot: ang Base

Simula sa Bumuo ng Robot: ang Batayan
Simula sa Bumuo ng Robot: ang Batayan
Simula sa Bumuo ng Robot: ang Batayan
Simula sa Bumuo ng Robot: ang Batayan

Tulad ng nabanggit dati, pinapayagan ng LEGO Mindstorms EV3 na hindi hihigit sa isa sa bawat uri ng sensor na konektado sa isang Brick. Ginamit ko ang mga sumusunod na sensor (sa halip na tatlong mga ultrasonic sensor): infrared sensor, color sensor, at ultrasonic sensor.

Ipinapakita ng mga pares ng larawan sa ibaba kung paano bumuo ng robot. Ang unang larawan ng bawat pares ay nagpapakita ng mga bahaging kinakailangan, at ang pangalawang larawan ay nagpapakita ng magkatulad na mga bahagi na magkakaugnay.

Ang unang hakbang ay upang itayo ang base ng robot, gamit ang ipinakitang mga bahagi. Ang base ng robot ay ipinapakita ng baligtad. Ang maliit na bahagi ng hugis L ay sa likuran ng robot ay isang suporta para sa likod. Dulas ito habang gumagalaw ang robot. Gumagana ito okay. Ang kit na EV3 ay walang bahagi na rolling-ball-type.

Hakbang 6: Itaas ng Batayan, 1

Itaas ng Batayan, 1
Itaas ng Batayan, 1
Itaas ng Batayan, 1
Itaas ng Batayan, 1

Ang hakbang na ito at ang susunod na 2 mga hakbang ay para sa tuktok ng base ng robot, ang sensor ng kulay, at ang mga cable, na lahat ay 10 pulgada (26 cm) na mga cable.

Hakbang 7: Itaas ng Batayan, 2

Itaas ng Batayan, 2
Itaas ng Batayan, 2
Itaas ng Batayan, 2
Itaas ng Batayan, 2

Hakbang 8: Itaas ng Batayan, 3

Itaas ng Batayan, 3
Itaas ng Batayan, 3
Itaas ng Batayan, 3
Itaas ng Batayan, 3

Hakbang 9: Mga Infrared at Ultrasonic Sensor

Mga Infrared at Ultrasonic Sensor
Mga Infrared at Ultrasonic Sensor
Mga Infrared at Ultrasonic Sensor
Mga Infrared at Ultrasonic Sensor

Susunod, ang infrared sensor (sa kaliwang bahagi ng robot) at ang ultrasonic sensor (sa kanan). Gayundin, ang 4 na mga pin para sa paglakip ng Brick sa itaas.

Ang mga infrared at ultrasonikong sensor ay matatagpuan patayo sa halip na ang normal na pahalang. Nagbibigay ito ng mas mahusay na pagkakakilanlan ng mga sulok o dulo ng mga dingding.

Hakbang 10: Mga Cable

Mga kable
Mga kable

Ang mga cable ay kumonekta sa Brick tulad ng sumusunod:

  • Port B: kaliwang malaking motor.
  • Port C: tamang malaking motor.
  • Port 2: ultrasonic sensor.
  • Port 3: sensor ng kulay.
  • Port 4: infrared sensor.

Hakbang 11: Pangwakas na Hakbang sa Pagbuo ng Robot: Palamuti

Pangwakas na Hakbang sa Pagbuo ng Robot: Palamuti
Pangwakas na Hakbang sa Pagbuo ng Robot: Palamuti
Pangwakas na Hakbang sa Pagbuo ng Robot: Palamuti
Pangwakas na Hakbang sa Pagbuo ng Robot: Palamuti

Ang mga pakpak at palikpik ay para lamang sa dekorasyon.

Hakbang 12: Bumuo ng isang Maze

Bumuo ng isang Maze
Bumuo ng isang Maze
Bumuo ng isang Maze
Bumuo ng isang Maze

Dalawang corrugated karton karton ay dapat na sapat para sa maze. Ginawa kong mataas ang mga pader ng maze na 5 pulgada (12.5 cm), ngunit ang 4 na pulgada (10 cm) ay dapat na gumana rin kung wala ka sa corrugated na karton.

Una, pinutol ko ang mga dingding ng mga karton, 10 pulgada (25 cm) mula sa ilalim. Pagkatapos ay pinutol ko ang mga pader ng 5 pulgada mula sa ilalim. Nagbibigay ito ng maraming mga pader na 5-pulgada. Gayundin, pinutol ko ang paligid ng mga ilalim ng mga karton, na iniiwan ang halos 1 pulgada (2.5 cm) na nakakabit sa mga pader para sa katatagan.

Ang iba`t ibang mga piraso ay maaaring i-cut at nakadikit o naka-tape saan man kinakailangan upang mabuo ang maze. Dapat mayroong isang 11 o 12 pulgada (30 cm) na puwang sa pagitan ng mga dingding sa gilid sa anumang daanan na may isang patay na dulo. Ang haba ay dapat na hindi mas mababa sa 10 pulgada (25 cm). Ang mga distansya na ito ay kinakailangan upang ang robot ay lumingon.

Ang ilan sa mga sulok ng maze ay maaaring kailanganing palakasin, Gayundin, ang ilang mga tuwid na pader ay kailangang itago mula sa baluktot kung nagsasama sila ng isang straightened na karton na sulok. Ang maliliit na piraso ng manipis na karton ay dapat na nakadikit sa ilalim ng mga lugar na iyon, tulad ng ipinakita.

Ang exit ay may pulang hadlang na binubuo ng kalahati ng isang pulang sobre ng kard ng kard at isang base na ginawa mula sa 2 piraso ng manipis na karton, tulad ng ipinakita.

Hakbang 13: Ang Maze

Ang Maze
Ang Maze

Ang isang pag-iingat ay ang maze ay hindi dapat malaki. Kung ang mga liko ng robot ay nasa isang bahagyang anggulo mula sa tamang isa, ang mga pagkakaiba ay nagdaragdag pagkatapos ng ilang mga liko at ang robot ay maaaring tumakbo sa mga pader. Kailangan kong makalikot ng maraming beses sa mga setting ng Pag-ikot ng mga liko upang makakuha ng isang matagumpay na drive sa pamamagitan ng kahit na ang maliit na maze na ginawa ko.

Ang isang paraan sa paligid ng isyung iyon ay upang magsama ng isang regular na pag-straightening ng landas na panatilihin ang robot ng isang tukoy na distansya mula sa kaliwang pader. Hindi ko ito sinama. Ang programa ay sapat na kumplikado tulad nito, at sapat ito para sa pagpapakita ng konsepto ng AI sa proyektong ito.

KASUNDUAN NG KASUNDUAN

Ito ay isang nakakatuwang proyekto at mahusay na karanasan sa pag-aaral. Sana maging interesante ka rin.

Inirerekumendang: