Përmbajtje:

Robot Kaotik i vetë-mësuar: 3 hapa
Robot Kaotik i vetë-mësuar: 3 hapa

Video: Robot Kaotik i vetë-mësuar: 3 hapa

Video: Robot Kaotik i vetë-mësuar: 3 hapa
Video: ОГНЕМЁТ ПРОТИВ СЛЕПОГО ОХОТНИКА! ТЕСТ ОГНЕМЁТА НА БОССЕ – Last Day on Earth: Survival 2024, Dhjetor
Anonim
Robot Kaotik i vetë-mësuar
Robot Kaotik i vetë-mësuar

A jeni të interesuar për mësimin e makinerisë, robotë AI dhe och? Nuk keni nevojë të punoni në ndonjë universitet të mrekullueshëm. Ky është një përshkrim i robotit tim kaotik. Shtë një robot shumë i thjeshtë për të demonstruar se si të përdorësh vetë kodin e të mësuarit dhe si ta zbatosh atë në një platformë arduino, në këtë rast një shkak Arduino. Platformshtë një platformë shumë e lirë!

Kodi evolon robotin në mënyrë që roboti të mësojë të zvarritet. Ai merr reagime nga miu që tërhiqet prapa. Kodi është "gjenetik". Kjo do të thotë që një numër individësh janë testuar dhe më të mirët mbahen dhe do të kenë fëmijë. Kjo do të thotë që kodi evolon në një mënyrë evolucionare.

Hapi 1: Hardware AKA Robot

Hardware AKA Robot
Hardware AKA Robot
Hardware AKA Robot
Hardware AKA Robot
Hardware AKA Robot
Hardware AKA Robot

Ju duhet:

- 1 Arduino Due

- 8 mikroservos

- 1 mi PS/2

- 1 ndërrues niveli

- disa variante të një mburoje të sensorit ose të ngjashme, u lodha nga mburoja e sensorit dhe ngjita timen.

-tela

-furnizim i jashtëm 5V për servos

- disa copa hekuri, disa zam dhe disa fije çeliku. Dhe kasetë!

Pra, vendosni due në dysheme. Vendosni servot në një unazë rreth tij. Vendosini ato së bashku me hekurishte, ngjitës dhe fije. Kjo është pjesa e kaosit! Meqenëse është kaotike në hartimin e tij, është e paparashikueshme të përcaktohet se si të lëvizet për ta bërë atë të zvarritet. Kjo është arsyeja pse kodi i vetë-mësimit është rruga për të shkuar!

Këshilla: përdorni disa pjesë mjaft të rënda metalike, e bën më të lehtë lëvizjen e robotit.

Lidhni servot me atë që duhet, në rastin tim ata janë të lidhur me D39, 41, 43, 45, 47, 49, 51, 53.

Lidhni servot me furnizimin me energji të jashtme 5V. Për këtë, ndërtoni një lloj mburoje, ose përdorni një mburojë sensor ose të ngjashme. MOS i ushqeni servot nga kunja e detyrimit 5V, nuk është e mjaftueshme, shkaku do të digjet. Kam përdorur një bord prototip të vogël për të shpërndarë 5 V në të gjitha servos. Ky bord mban gjithashtu ndërruesin e nivelit për orën e miut PS/2 dhe linjat e të dhënave. Bordi gjithashtu ushqen miun me 5V. Mos harroni të lidhni tokën nga fuqia e jashtme me tokën e duhur Arduino! skematika tregon se si t'i lidhni të gjitha.

Lidhni PS/2 me fuqinë (5V) dhe tokëzimin. Lidhni orën dhe vijën e të dhënave të PS/2 me Due përmes një ndërruesi të nivelit. (për shkak shkon 3.3V, PS/2 shkon 5V). Lidhni orën në D12 dhe të dhënat në D13.

Për detaje mbi protokollin PS/2, kjo është një udhëzues shumë i mirë:

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

Biblioteka PS/2 nga jazzycamel që kam përdorur:

Hapi 2: Kodi

Kodi
Kodi

Në fillim më lejoni të them: NUK jam programues. Disa pjesë janë shumë të gjera, një programues i aftë sigurisht që mund ta shkurtojë atë dhe kështu e kështu.

Kodi është duke mësuar vetë dhe ky është thelbi i projektit. Kjo është pjesa argëtuese e saj! Do të thotë që roboti evolon dhe bëhet gjithnjë e më i mirë, në këtë rast bëhet më mirë në zvarritje. Gjëja e mahnitshme në lidhje me këtë është se roboti do të evoluojë në atë që e ushqeni atë. Në këtë rast ai tërheq një mi PS/2 dhe sa më gjatë të tërhiqet miu, aq më shumë pikë merr.

Kjo gjithashtu do të thotë që ju mund ta përdorni këtë kod për të trajnuar robotin tuaj të bëjë diçka tjetër, për sa kohë që matet dhe i jepet përsëri robotit!

Siç mund ta shihni në imazhe, miu zvarritet në një kordon të hollë. Në fillim ajo u tërhoq në kabllon e miut. Sidoqoftë, kablli është disi i ngurtë, kështu që roboti mësoi të tundte miun, në vend që ta tërhiqte atë. Dridhja prodhoi pikë të larta…

Kodi përdor 50 individë. Thelbi i kësaj është një grup prej 50x50 bytes.

Një individ është një grup i bajtëve. Kur individi përdoret për të drejtuar robotin, ky individ i dërgohet një funksioni në kodin e quajtur "tolken".

Në fillim të vrapimit ka 8 ndryshore m1, m2, m3, m4, m5, m6, m7 dhe m8 (një për secilën servo). Në këtë robot ata të gjithë kanë vlera fillestare konstante. Në "tolken" mś shndërrohen në një lak rasti/swich në varësi të vlerave të individit. për shembull një vlerë prej "1" ekzekuton sa vijon: m1 = m1 + m2.

Nëse një individ është: 1, 2, 3, 0, 0, 0, 0….. atëherë mś do të transformohet në mënyrën e mëposhtme:

m1 = m1 + m2;

m1 = m1 + m3;

m1 = m1 + m4;

Tolken është një listë me 256 operacione të ndryshme matematikore, kështu që çdo vlerë e mundshme e grupit të individëve përfaqëson një ndryshim matematikor të vlerave m.

Procesi i pagesës bëhet 4 herë, me leximin mes çdo xhiro, duke gjeneruar katër kode të ndryshme motorike për secilën "m". Kodet motorike janë vlerat që më vonë u dërgohen servos.

Në çdo hap të evolucionit, 4 individë konkurrojnë në zvarritje. Dy individët më të mirë do të jenë prindër të dy foshnjave, foshnjat do të zëvendësojnë dy individët më të këqij. Kur bebet bëhen, një pjesë e "kodit gjenetik" nga njëri prind tregtohet për një fetë nga prindi tjetër, kjo krijon dy individë të rinj.

Nëse asnjë individ nuk performon fare, mutacioni i individëve do të ndodhë për të gjeneruar të reja.

Kodin mund ta gjeni në GitHub:

Hapi 3: Si ta stërvitni atë?

Kjo është pjesa e ndërlikuar. Në mënyrë që të stërviteni siç duhet, duhet ta "rivendosni" atë pas çdo vrapimi. Kjo do të thotë që ju duhet ta vendosni në të njëjtin pozicion çdo herë.

Kam vendosur disa pika kontrolli brenda kodit për të siguruar që roboti është në pozicionin e tij fillestar.

Pra, rreshtoni robotin dhe lëreni të funksionojë.

Teston 4 individë dhe më pas zgjedh 2 më të mirët për të qenë prindër. Pasi zëvendëson më të keqen me foshnjat, printon disa të dhëna mbi performancën e individëve. Gjithashtu printon grupin 50x50. Wiseshtë e mençur ta kopjoni këtë në një fletë excel ose të ngjashme. (ose shkruani ndonjë kod të nevojshëm në përpunim) Nëse Rivendosni shkakun (kjo ndodh për arsye të ndryshme) atëherë nuk do ta humbni punën tuaj të trajnimit. Ju mund të kopjoni/ngjisni grupin në kod dhe të vazhdoni stërvitjen nëse keni mbetur.

Roboti im mësoi të zvarritet pas disa orësh. Shkarkoni videon për ta parë të zvarritet. Nuk shkoi në drejtimin që mendova!

Provoni gjithashtu dysheme të ndryshme! Roboti im performoi më mirë në një qilim najloni.

Përmirësimet e mundshme:

1. Do të ishte më mirë të kishit një nano të veçantë për të lexuar miun PS/2, dhe të dërgoni distancën e përpunuar të zhvendosur mbi serial tek nano. Leximi i miut tim PS/2 është pak i lëkundur. Kjo është arsyeja e leximit/pastrimit të pjesëve të kodit nga miu.

2. një lloj testimi që e tërhoqi robotin në pozicionin e tij fillestar do të përshpejtonte trajnimin.

3. Mendoj se është e mençur ta stërvitësh atë pak më ngadalë se sa unë. Trajnimi më i ngadalshëm siguron që ai të stërvitet "në drejtimin e duhur". Performanca mesatare e disa testeve mund të jetë një mënyrë e mundshme.

Recommended: