Talaan ng mga Nilalaman:

Pag-aaral ng Sarili Chaotic Robot: 3 Mga Hakbang
Pag-aaral ng Sarili Chaotic Robot: 3 Mga Hakbang

Video: Pag-aaral ng Sarili Chaotic Robot: 3 Mga Hakbang

Video: Pag-aaral ng Sarili Chaotic Robot: 3 Mga Hakbang
Video: MAHAL MO BA ANG SARILI MO? (10 TIPS PAANO MAHALIN NG TUNAY ANG SARILI) | BRAIN POWER 2177 2024, Hulyo
Anonim
Pag-aaral ng Sarili na Robot
Pag-aaral ng Sarili na Robot

Interesado ka ba sa pag-aaral ng makina, mga robot ng AI och? Hindi mo kailangang magtrabaho sa ilang magarbong unibersidad. Ito ay isang paglalarawan ng aking magulong robot. Ito ay isang napaka-simpleng robot upang ipakita kung paano gamitin ang sarili sa pag-aaral ng code at kung paano ipatupad ito sa isang arduino platform, sa kasong ito ay dapat bayaran ang Arduino. Ito ay isang napaka-murang platform!

Ang code ay nagbabago ng robot upang ang robot ay matutong gumapang. Nakakakuha ito ng feedback mula sa mouse na naituro sa likuran. Ang code ay "genetic". Nangangahulugan ito na ang isang bilang ng mga indibidwal ay nasubok at ang pinakamahusay na mga ito ay pinananatili at magkakaroon ng mga babys. Nangangahulugan ito na ang code ay umuusbong sa isang evolutionaryong paraan.

Hakbang 1: Hardware AKA ang Robot

Hardware AKA ang Robot
Hardware AKA ang Robot
Hardware AKA ang Robot
Hardware AKA ang Robot
Hardware AKA ang Robot
Hardware AKA ang Robot

Kailangan mo:

- 1 Arduino Dahil

- 8 microservos

- 1 PS / 2 mouse

- 1 levelshifter

- ilang mga pagkakaiba-iba ng isang sensor-kalasag o katulad, napagod ako sa kalasag ng sensor at hinangin ang aking sarili.

-wires

-Panlabas na 5V supply ng kuryente para sa mga servos

- ilang piraso ng scrap metal, ilang pandikit at ilang bakal na thread. At tape!

Kaya't ilagay ang Dahil sa sahig. Ilagay ang mga servo sa isang singsing sa paligid nito. Isama ang mga ito kasama ang scrap metal, pandikit at thread. Ito ang bahagi ng kaguluhan! Dahil magulo ito sa disenyo nito, hindi mahuhulaan na matukoy kung paano lilipat upang magapang ito. Ito ang dahilan kung bakit ang pag-aaral ng sarili na code ay ang paraan upang pumunta!

Mga Tip: gumamit ng ilang medyo mabibigat na bahagi ng metal, ginagawang mas madali para sa robot na gumalaw.

Ikonekta ang mga servos sa dapat bayaran, sa aking kaso ay konektado sila sa D39, 41, 43, 45, 47, 49, 51, 53.

Ikonekta ang mga servos sa panlabas na 5V power supply. Para dito, bumuo ng ilang uri ng kalasag, o gumamit ng isang sensor na panangga o katulad. HUWAG pakainin ang servos mula sa mga dapat bayaran na 5V pin, hindi ito sapat, Susunugin ang dahil. Gumamit ako ng isang maliit na board ng prototype upang ipamahagi ang 5 V sa lahat ng mga servo. Ang board na ito ay nagtataglay din ng antas ng shifter para sa PS / 2 mouse na orasan at mga linya ng data. Pinakain din ng board ang mouse gamit ang 5V. Tandaan na ikonekta ang lupa mula sa panlabas na lakas patungo sa Arduino dahil sa ground! ipinapakita ng mga iskema kung paano ikonekta ang lahat ng ito.

Ikonekta ang PS / 2 sa kapangyarihan (5V) at ground. Ikonekta ang linya ng orasan at data ng PS / 2 sa Dahil sa pamamagitan ng isang shifter sa antas. (dahil napupunta sa 3.3V, PS / 2 napupunta 5V). Ikonekta ang orasan sa D12 at ang data sa D13.

Para sa mga detalye sa PS / 2 na protocol, ito ay napakahusay na maituturo:

www.instructables.com/id/Optical-Mouse-Od…

Ang PS / 2 library ng jazzycamel na ginamit ko:

Hakbang 2: Ang Code

Ang Code
Ang Code

Sa una hayaan mong sabihin ko: HINDI ako isang programer. Ang ilang mga bahagi ay napakalawak, ang isang dalubhasang programmer ay maaaring siyempre paikliin ito at iba pa.

Ang code ay pag-aaral ng sarili at ito ang core ng proyekto. Ito ang nakakatuwang bahagi nito! Nangangahulugan ito na ang robot ay umuusbong at nagiging mas mahusay at mas mahusay, sa kasong ito ay nagiging mas mahusay sa pag-crawl. Ang kamangha-manghang bagay tungkol dito ay ang robot ay magbabago sa kung ano ang iyong feed-back ito sa. Sa kasong ito ay nag-drag ito ng isang PS / 2 mouse at kung mas mahaba ang mouse ay na-drage, mas mataas ang mga puntos na nakukuha nito.

Nangangahulugan din ito na maaari mong gamitin ang code na ito upang sanayin ang iyong robot na gumawa ng iba pa, hangga't sinusukat ito at ibinalik sa robot!

Tulad ng nakikita mo sa mga imahe, ang mouse ay na-drag sa isang manipis na kurdon. Sa una ay hinila ito sa mouse-cable. Gayunpaman, ang cable ay medyo matigas, kaya't natutunan ng robot na kalugin ang mouse, sa halip na i-drag ito. Nanginginig na ginawa mataas na puntos …

Gumagamit ang code ng 50 indibidwal. Ang core ng ito ay isang array ng 50x50 bytes.

Ang isang indibidwal ay isang hanay ng mga byte. Kapag ginamit ang indibidwal upang patakbuhin ang robot ang indibidwal na ito ay ipinapadala sa isang pagpapaandar sa code na tinatawag na "tolken".

Sa simula ng isang run mayroong 8 mga variable m1, m2, m3, m4, m5, m6, m7 at m8 (isa para sa bawat servo). Sa robot na ito lahat sila ay may pare-pareho na mga halagang nagsisimula. Sa "tolken" ang mś ay binago sa isang case / swich loop depende sa mga halaga ng indibidwal. halimbawa ang halagang "1" ay nagpapatupad ng mga sumusunod: m1 = m1 + m2.

Kung ang isang indibidwal ay: 1, 2, 3, 0, 0, 0, 0….. kung gayon ang mś ay mababago sa sumusunod na paraan:

m1 = m1 + m2;

m1 = m1 + m3;

m1 = m1 + m4;

Ang Tolken ay isang listahan ng 256 na magkakaibang pagpapatakbo ng matematika, kaya't ang bawat posibleng halaga ng array ng mga indibidwal ay kumakatawan sa isang pagbabago sa matematika ng mga halagang m.

Ang proseso ng tolken ay tapos na ng 4 na beses, na may read-out sa pagitan ng bawat lap, na bumubuo ng apat na magkakaibang mga motor-code para sa bawat "m". Ang mga motorcode ay ang mga halaga na sa paglaon ay ipinadala sa mga servos.

Sa bawat hakbang ng pag-unlad, 4 na indibidwal ang nakikipagkumpitensya sa pag-crawl. Ang pinakamahusay na dalawang indibidwal ay magiging magulang sa dalawang sanggol, papalitan ng mga bata ang dalawang pinakapangit na indibidwal. Kapag ginawa ang mga baby, isang splice ng "genetic code" mula sa isang magulang ang ipinagpapalit para sa isang hiwa mula sa ibang magulang, lumilikha ito ng dalawang bagong indibidwal.

Kung wala man lang gumanap, ang pagbago ng mga indibidwal ay magaganap upang makabuo ng mga bago.

Mahahanap mo ang code sa GitHub:

Hakbang 3: Paano Ito Sanayin?

Ito ang nakakalito na bahagi. Upang makapagsanay nang maayos, kailangan mong "i-reset" ito pagkatapos ng bawat pagtakbo. Nangangahulugan ito na kailangan mong ilagay ito sa parehong posisyon sa bawat oras.

Naglagay ako ng ilang mga check-point sa loob ng code upang matiyak na ang robot ay nasa panimulang posisyon nito.

Kaya ihanay ang robot at hayaang tumakbo ito.

Sinusubukan nito ang 4 na indibidwal at pagkatapos ay pinili nito ang pinakamahusay na 2 na maging magulang. Matapos mapalitan ang pinakapangit sa mga babys naglilimbag ito ng ilang data sa pagganap ng mga indibidwal. Nagpi-print din ito ng 50x50 na array. Maalam na kopyahin ito sa isang excel sheet o katulad. (o sumulat ng ilang mga kailangan ng code sa pagproseso) Kung ang reset ng Takdang (naganap ito sa iba't ibang mga kadahilanan) hindi mo malaluwag ang iyong gawaing pagsasanay. Maaari mong kopyahin / i-paste ang array sa code at magpatuloy sa pagsasanay naiwan ka.

Natuto ang aking robot na mag-crawl pagkatapos ng ilang oras. I-download ang video upang ma-crawl ito. Hindi ito pumunta sa direksyong naisip kong gagawin nito!

Subukan din ang iba't ibang mga sahig! Ang aking robot ay pinakamahusay na gumanap sa isang nylon carpet.

Mga posibleng pagpapabuti:

1. Mas mahusay na magkaroon ng isang hiwalay na nano upang mabasa ang PS / 2 mouse, at ipadala ang proseso ng distansya na inilipat sa serial sa nano. Ang pagbabasa ng aking PS / 2 mouse na ito ay medyo nanginginig. Ito ang dahilan para sa pagbasa ng mouse / pag-clear ng mga bahagi ng code.

2. ilang uri ng test rigg na hinila ang robot pabalik sa panimulang posisyon nito ay magpapabilis sa pagsasanay.

3. Sa palagay ko matalino na sanayin ito nang medyo mas mabagal kaysa sa ginawa ko. Tinitiyak ng mas mabagal na pagsasanay na sinanay ito "sa tamang direksyon". Ang ibig sabihin ng pagganap ng maraming mga pagsubok-run ay maaaring isang posibleng paraan.

Inirerekumendang: