PROGRAM "MINI-SUMO ROBOT. Záverečný článok o zostavení mini-sumo robota. Prvá časť článku "Podvozok pre mini-sumo robota" podrobne popísala, ako vyrobiť podvozok robota. V tomto článku rozoberieme detailne zostavenie programu pre robota.Náš robot pripravený.Má podvozok,funkciu "mozgov" bude vykonávať mikrokontrolér a komunikáciu s okolitým svetom budú vykonávať senzory.Ale napriek všetkému toto, stále bude nehybne stáť na stole. A aby sa tak nestalo, je načase vdýchnuť nášmu stvoreniu život, takpovediac, cítiť sa ako „tvorca“ úplne.Program, ktorý vytvoríme, nielenže oživí robota, ale aj prinútiť ho správať sa v ringu zmysluplne a logicky.


1. Základom programu je algoritmus.

Tak ako predtým, bez plánu sa nezaobídeme. V predchádzajúcom článku bol náš plán základný schému zapojenia. V programovaní sa plán nazýva algoritmus. Niektorí z vás vedia, čo to je, niekto to práve počul, no sú aj takí, ktorí to nevedeli a počujú prvýkrát.

Nebudem používať vedecké termíny, jednoducho poviem, že Algoritmus je popis postupnosti určitých akcií. Celý náš život sú rôzne činy; chodíme, rozprávame sa, hýbeme rukami a nohami, otáčame hlavou. To všetko má svoj vlastný význam – algoritmus, postupnosť, ktorá určuje naše správanie a dá sa zostaviť a popísať. Pre názornosť uvediem príklad zo života. Každé ráno si čistíte zuby. Skúste popísať, ako to robíte, ako si napísať program pre seba. Toto sa stane: „Vezmeme si zubnú kefku. Vytlačte pastu. Zuby si čistíme ľavo-pravými pohybmi. vypláchnem si ústa. Moja kefa."

V zásade je všetko správne, ale tento malý program môžeme vykonávať na obed, večer alebo po každom jedle. Ale nebrali sme do úvahy dôležité faktory, ktoré môžu anulovať všetko naše úsilie. Spočiatku sme hovorili o ráne. Toto je dôležitý faktor a ak ho neberiete do úvahy, potom si budete musieť čistiť zuby v posteli a so zatvorenými očami. Každý program preto musí mať vždy nejaký začiatok a koniec s možnosťou opakovania cyklu. Opakujúci sa cyklus pre človeka je nasledujúci deň, kedy bude opäť ráno a bude potrebné znovu vyčistiť zuby. Preto do nášho programu pridávame nasledujúci algoritmus (postupnosť akcií).

"Zobudiť sa. Vstaň z postele...“ Ak v tejto fáze prestanete vytvárať algoritmus a prejdete rovno na čistenie zubov, program sa zastaví (zamrzne). prečo? Pretože sme opäť nebrali do úvahy všetky faktory. Stojíte uprostred svojej spálne a nemôžete vykonať ďalší príkaz; "Vezmeme si zubnú kefku", pretože kefka je v kúpeľni a stále sa do nej musíte dostať. No, ak spíte v kúpeľni, potom žiadny problém - program sa spustí! Ale vo väčšine prípadov normálni ľudia spia v inej miestnosti. Tento prístup sa nazýva logický, to je zmysluplné. Všetky naše činy musia byť rozumné a obsahovať určitý zmysel, inak sa cieľ nedosiahne. Takže „zobuď sa. Vstať. Choď na záchod“ by bola najlepšia možnosť.

Vráťme sa k práci. Ako teraz naplánujeme akcie mini-sumo robota v ringu? Máme pravidlá, kde je cieľ jasne vyznačený - "Vytlačiť súpera z ringu." Ale na jeho dosiahnutie je potrebné vziať do úvahy určité faktory. Hlavným faktorom je neprekročiť samotný kruh, alebo presnejšie neprekročiť biely okraj kruhu. Tu je to, čo máme:

Ryža. 1 Algoritmus správania sa robota v kruhu.

Na obrázku 1 vidíte blokovú schému. V každom prípade, takto je zvykom zostavovať algoritmy. Jasné a zrozumiteľné.

Prvý blok je "Štart". Od tohto momentu program po zapnutí začne vykonávať akcie robota. Prvá vec, ktorú bude musieť urobiť, je nájsť nepriateľa, blok „Target Search“. Ďalší blok našej schémy je vo forme kosoštvorca „Nájdený cieľ?“. To znamená, že budeme mať na výber akcie na dosiahnutie určitej udalosti. Ak sa cieľ nájde (Áno), budeme pokračovať vo vykonávaní programu a prejdeme na ďalšiu časť programu „Útok“, ale ak sa cieľ nenájde (Nie), je najlogickejšie pokračovať hľadať to. Program sa bude v tomto momente opakovať, kým robot nezistí nepriateľa. Pri útoku sa robot pohybuje dopredu smerom k súperovi a snaží sa ho vytlačiť z ringu, v tomto momente „Dosiahli ste okraj ringu?“ prejde na ďalší blok „Drive back“ a „Reversal“. Po otočení sa cyklus hlavného programu opakuje, to znamená, že začína úplne od začiatku a robot opäť hľadá nepriateľa. Bolo to urobené z nejakého dôvodu. Ak sa v čase útoku nepriateľovi podarilo uniknúť z nášho robota, musíme sa vrátiť k jeho hľadaniu bez toho, aby sme opustili okraj kruhu. Všetko s teóriou. Prejdime k praxi.

2. Pravidlá pre písanie programov pre Arduino.

Síce som povedal, že teoretická časť sa skončila, ale mali by sme si naštudovať princíp konštrukcie programu pre Mikrokontroléry Arduino, aj keď tieto zásady budú platiť aj pre ostatné MK v rodine AVR.

Ryža. 2 Spôsob písania programu pre Arduino.

Tento blokový diagram nám jasne ukazuje, čo dôležité body a v akom poradí by sa malo dodržiavať pri písaní programu.

Na samom začiatku programu sú v prípade potreby pripojené ďalšie moduly. Potom sú deklarované globálne premenné. Ďalej prichádza blok inicializácie ovládača. Definuje priradenie portov, či ide o vstup alebo výstup a ďalšie nastavenia. Z tohto bloku možno volať aj ďalšie pomocné rutiny. Stručne povedané, v tomto bode program produkuje predvoľby ovládač. Tento blok sa vykoná raz pri spustení alebo reštarte ovládača. Upozorňujeme, že do bloku bol pridaný riadok „meškanie 5 sekúnd“. Komu všeobecné pravidlá to neplatí pre písanie programu, ale mini-sumo robot je nevyhnutný. Pravidlá hovoria, že po príkaze rozhodcu sa musia roboty po 5 sekundách dať do pohybu. Toto oneskorenie nie je možné vykonať v hlavnej slučke programu, pretože sa bude neustále opakovať a správanie robota sa nezmení k lepšiemu.

V bloku hlavného cyklu programu sa vykoná hlavný algoritmus správania sa robota v kruhu, ktorý sme uvažovali na obr. 1. Počas prevádzky hlavnej slučky bude možné pristupovať k podprogramom. Programátori veľmi často používajú podprogramy na optimalizáciu a redukciu kódu. Napríklad program na pohyb dopredu alebo dozadu je logickejšie vybrať jednotlivé moduly a nie sú zahrnuté v hlavnej časti programu. Z toho sa stane obrovský, úplne nečitateľný a bude veľmi problematické nájsť chybu alebo urobiť malú zmenu.

3. Vývojový nástroj Arduino IDE.

Stiahnite si z webovej stránky Arduino.ru Najnovšia verzia Arduino IDE. Program nevyžaduje žiadnu špeciálnu inštaláciu, stačí obsah archívu rozbaliť Správne miesto. Na konci tohto článku je súbor knižnice ultrazvukových diaľkomerov. Mal by byť rozbalený do priečinka Libraries.

Spustíme aplikáciu. Skontrolujeme správnu inštaláciu knižnice, prejdite do ponuky "Súbor" - "Príklady". Takmer úplne dole by sa mala objaviť položka Ultrasonic ako na obr. 3.

Ryža. 3 Skontrolujte, či je knižnica Ultrasonic správne nainštalovaná.

Ak je všetko v poriadku, prejdite na položku "Služba" - "Zaplatiť". Musíme si vybrať našu dosku - Arduino Pro Mini 5v.

Ryža. 4 nastavenie riadiacej dosky

Sériový port musí byť vybraný ako ten, ktorý sa zobrazí za Arduino pripojenia do počítača. Trochu by sa malo povedať o Arduino Pro Mini. Na rozdiel od iných ovládačov z rodiny Arduino, Pro Mini nemá vstavaný modul na pripojenie počítača. Dodáva sa samostatne ako doska. USB adaptér na UART(TTL) a je pripojený k riadiacej doske pomocou štyroch vodičov.

Ryža. 5 USB-UART (TTL) adaptér.

Na obr. 6 ukazuje, ako správne pripojiť ovládač a adaptér.

Ryža. 6. Pripojenie ovládača k adaptéru USB-UART.

Na rozdiel od prijímaného pripojenia signálnych liniek, namiesto RX-TX a TX-RX je potrebné tieto linky pripojiť priamo: RX-RX, TX-TX. Pri prvom pripojení adaptéra k počítaču sa automaticky začnú inštalovať ovládače zariadení. Mali by ste počkať na dokončenie inštalácie. Ďalšou vlastnosťou ovládača je nedostatok softvéru Resetovať v čase programovania. To je samozrejme trochu nepohodlné, ale nestačí to na odmietnutie Pro Mini. Po zmene nápisu „Compiling“ na „Download“ stačí stlačiť tlačidlo Reset na ovládači, obr. 7.

Ryža. 7. Zobrazovanie informácií o priebehu programovania MK.

4. Napíšeme kód.

V tejto kapitole sa nebudem zdržiavať popisom príkazov, príkazov a operátorov. Predpokladá sa, že už máte nejaké základné znalosti. V opačnom prípade sa musíte odvolať na dokumentáciu na oficiálnej webovej stránke alebo z iných zdrojov v sieti. Programový kód napíšeme jasne podľa plánu alebo algoritmu, ktorý sme zostavili. Do určitých blokov algoritmu som pridal kód, ktorý teraz podrobnejšie zvážime na obr. osem.

Ryža. 8. Zápis úvodného bloku programu.

Prvý blok: direktíva # spája riadiacu knižnicu modulu s naším projektom.

Druhý blok: Deklarujeme premenné a zapíšeme do nich počiatočné hodnoty rovné nule. Upozorňujeme, že nebudeme vytvárať názvy výstupných portov MK. Zámerne som ich nechal v digitálnej podobe, aby ste sa na ne mohli ľahko odvolať schému zapojenia. V tomto bloku deklarujeme iba tri premenné - sú to ľavý a pravý snímač prstenca (_ a _), budú ukladať hodnoty ADC. Okrem premennej vzdialenosti ultrazvukového diaľkomeru (_) zaznamená aj vzdialenosť od prekážky v centimetroch.

Riadok Ultrasonic ultrazvuk (4, 2) nie je nič iné ako deklarácia premennej pre ultrazvukový diaľkomer, prevzatá z príkladu priloženej knižnice. V zátvorkách sú porty, ku ktorým sú pripojené nohy a senzory.

Tretí blok: (), v ňom konfigurujeme všetky vstupy a výstupy mikrokontroléra. Prichádzajúce signály budeme prijímať na portoch 15, 17, preto im priradíme (Input). Máme štyri porty ovládajúce motory: 3,5 pre ľavý motor a 6,9 pre pravý motor, priradíme ich ako výstup.

Prečo používame dva porty pre jeden motor? Všetko je jednoduché; Ak je na kontakty motora privedené napätie, motor sa začne otáčať v jednom zo smerov, povedzme v smere hodinových ručičiek. Ak ale zmeníte polaritu, t.j. zmeňte "plus" a "mínus" - hriadeľ motora sa bude otáčať v opačnom smere. Túto vlastnosť využijeme na plnohodnotné manévre.

5. Hlavná slučka slučky.

V tomto cykle sa vykonáva hlavný program regulátora. Nedá sa z toho úplne dostať ani ho dokončiť. Z neho sú možné len volania na externé procedúry, takzvané podprogramy.

Zvážte štruktúru nášho cyklu na základe algoritmu na obr. 9

Ryža. 9. Algoritmus hlavnej slučky Slučka.

Od samého začiatku musíme získať hodnoty všetkých senzorov, preto nazývame podprogram:

void check_sensor() // Podprogram na kontrolu senzorov.

R_Sensor=analogRead(15); // prečítať správne hodnoty snímača

L_Sensor=analogRead(17); // odčíta hodnoty ľavého snímača

oneskorenie(10); //oneskorenie dokončenia konverzie ADC

dist_cm = ultrazvuk.Ranging(CM); // odčítajte hodnoty ultrazvukového diaľkomeru

oneskorenie(10); // Oneskorenie dokončenia konverzie

Po prijatí údajov ich musíme spracovať. Najprv musíme určiť našu polohu, či sme v ringu alebo nie. Ak skontrolujeme prítomnosť súpera do 40 cm v ringu, ak tam žiadny protivník nie je, hľadáme ho otočením doľava:

void go_left() // vyhľadajte cieľ alebo choďte doľava

analogWrite(5, 100); //ĽAVÝ MOTOR

analogWrite(6, 100); //PRAVÝ MOTOR

Hodnota výkonu motorov je takmer polovičná, ak sa točíme príliš rýchlo, môžeme zotrvačnosťou prekĺznuť cez detekovaný cieľ.

Ak je cieľ detekovaný, musíme naň zaútočiť a pohnúť sa vpred plnou rýchlosťou.

void go_forward() //Attack - postup vpred

analogWrite(3, 0); //ĽAVÝ MOTOR

Ak sme v čase útoku narazili na okraj kruhu a našli biely pruh, potom musíme zastaviť, vycúvať, otočiť sa a ísť trochu dopredu, potom znova pokračovať v hľadaní. Ak to chcete urobiť, volajte postupy v tomto poradí:

go_stop(); // stop

oneskorenie(100); //čakajte 10 ms

vráť sa(); // Vrátiť späť

oneskorenie(1000); //1 sekunda.

Choď vpravo(); //Odbočte vpravo

oneskorenie(300); //300 ms

Choď dopredu(); //Pohnúť sa vpred

oneskorenie(300); //300 ms

void go_stop() //stop

analogWrite(5, 255); //ĽAVÝ MOTOR

analogWrite(9, 255); //PRAVÝ MOTOR

void go_back () //choď späť

analogWrite(3, 255); //ĽAVÝ MOTOR

analogWrite(6, 255); //PRAVÝ MOTOR

analogWrite(9, 0); //PRAVÝ MOTOR

void go_right () //vyhľadajte cieľ alebo sa posuňte doprava

analogWrite(3, 100); //ĽAVÝ MOTOR

analogWrite(5, 0); //ĽAVÝ MOTOR

analogWrite(6, 0); //PRAVÝ MOTOR

analogWrite(9, 100); //PRAVÝ MOTOR

void go_forward() //Útok vpred

analogWrite(3, 0); //ĽAVÝ MOTOR

analogWrite(5, 255); //ĽAVÝ MOTOR

analogWrite(6, 0); //PRAVÝ MOTOR

analogWrite(9, 255); //PRAVÝ MOTOR

Časové oneskorenia medzi postupmi určujú trvanie motorov v rôznych smeroch pohybu. Ak ho zvýšite alebo znížite, môžete dosiahnuť rôzne uhly otočenie alebo vzdialenosť, ktorú robot prejde pred vykonaním ďalšieho príkazu.

Celý náčrt na stiahnutie je na konci článku.

Predložený kód, samozrejme, nie je konečný ani najväčší správna možnosť, každý z vás má právo si ho doplniť alebo opraviť podľa svojich požiadaviek, pretože všeobecnou podstatou článku je naučiť začínajúcich robotikov logicky a systematicky myslieť, správne riešiť úlohy s využitím všetkých dostupných zdrojov.

Archív 1

Archív 2 k článku „Program robota minisumo“.

Ak máte nejaké otázky, napíšte na FÓRUM alebo do Online chatu o robotike, prediskutujeme ich!

Pozor! Úplné alebo čiastočné kopírovanie materiálu bez súhlasu správy je zakázané!

Ahoj! Chceli by ste zostaviť robota, ktorý nie je náročný na zostavenie? Ste na správnom mieste! =) Práve na našej stránke nájdete podrobné články o postupnej montáži vášho prvého robota, ale aj mnohých ďalších robotov a dokonca aj pre súťaže.

Sme veľmi radi, že vám, začiatočníkom v robotike, pomôžu naše články zvládnuť túto najzaujímavejšiu oblasť a napumpovať vaše schopnosti v tomto smere. Chceme tiež poznamenať, že podľa týchto článkov my, vývojári webovej stránky SERVODROID, vedieme kurzy v zadarmo krúžky robotiky a veľmi radi učíme a každému hovoríme, čo je robotika BEAM.

Pomôžte nášmu projektu! Zaregistrujte sa na našej webovej stránke a príďte na náš Online chat alebo fórum a podeľte sa o svoje remeslá a pokroky - koniec koncov je to vaša činnosť, ktorá priťahuje čoraz väčšiu pozornosť k robotike pre začiatočníkov - pozerajú sa na váš úspech a chcú sa stať rovnako cool , a my naozaj Je pekné vidieť, že vám všetko vychádza. A ak sa niečo nepodarí, pomôžeme ;)

Sumo- jeden z najvzrušujúcejších Súťaž robotov Lego Ev3. V tejto súťaži musí robot vytlačiť súperovho robota z kruhu bez toho, aby opustil samotný kruh.

Na samom začiatku súťaže sa roboty umiestnia do stredu kruhu, po vrstve sa spustia programy a roboty musia počkať 3 sekundy, potom musia roboty dosiahnuť hranicu kruhu a až potom majú možnosť zaútočiť na nepriateľa. Portál obsahuje schémy robotov pre Lego sumo a montážny návod

Poďme popísať Algoritmus a program sumo pre robot EV3

1 Akcia.

Robot čaká 3 sekundy, odvezieme sa od stredu kruhu k hranici, ideme vpred, točíme sa, hľadáme nepriateľa, ideme k nepriateľovi, ak ideme od hranice, tak sa vraciame späť.

Nastavte čakanie na 3 sekundy.

2 Akcia. Vraciame sa späť k hraniciam.


3 akcia. Keď sa robot dostane na hranicu, musí sa pohnúť vpred. Pohyb vpred.

4 Akcia. Vytvorili sme nekonečnú slučku. Robot bude útočiť na nepriateľa, kým nebude vytlačený alebo kým sa neskončí súťažný čas.

Vložíme do nej rotačný cyklus s ultrazvukovým snímačom. (môžete použiť aj infračervený senzor)


5 Akcia. Ideme dopredu, kým farebný senzor neuvidí čiernu čiaru, okraj kruhu.

6. Akcia Po zhliadnutí hranice sa vezieme späť.

Cvičenie.

Zapíšte si odchod späť sami pomocou lekcie 1.

Ahoj Geektimes!

Úvod

Už dávno vieme, že roboty sú naša budúcnosť. Existuje mnoho odvetví robotiky. Vojenský rozvoj, spoločenské, zábavné a len pracovné roboty.
Ale tentoraz chcem v mene College tímu v MIREA povedať o súťažnej zložke, ale presne o sumo robotoch.

Niečo málo o našom tíme

Existujeme od roku 2014. Víťazi a víťazi väčšiny súťaží Robofinist, Robofest, spartakiády MIPT a menších turnajov a tiež sme absolútnymi majstrami Ruska na roky 2016-2017 v nominácii mini-sumo.

Kto sú vlastne títo sumo roboti?

Spočiatku, keď sme sa prvýkrát dozvedeli o takýchto súťažiach, boli sumo zápasníci vyrábaní hlavne z Lega. Ale to je dosť zlý nápad, o tom neskôr.

Na tento moment ten správny sumo zápasník je opísaný veľmi jednoducho: úplne autonómny kus železa na kolesách, s mozgom a dvojicou senzorov, ktorý z ringu vyklepáva podobný kus železa.

Existujú 4 typy:

1. Zápasník mega sumo
2. Mini zápasník sumo
3. Zápasník mikro sumo
4. Zápasník nano sumo

Každý je iný nielen navonok, ale aj vnútorne.

Mega - najväčší a najnebezpečnejší roboti. Maximálna váha je do 3 kg, možnosť položiť rôzne "prísavky", čo pri iných robotoch nie je dovolené.

Mini - príjemné, malé roboty do 500 gramov 10 x 10 cm, nenáročné na spájkovanie, jednoduché nastavenie a zloženie. Sú najobľúbenejšou nomináciou v sumo.

Micro a nano - zmenšené mini kópie. Micro 5x5x5, nano 2,5x2,5x2,5. Náročné na spájkovanie a vyberanie dielov. Populárnejšie ako mega sumo.

Z čoho sú vyrobené?

Vráťme sa k Legu. S najväčšou pravdepodobnosťou mnohí z vás skúsili niečo urobiť s programovateľným Lego konštruktorom alebo aspoň videli, ako sa to robí. Na takéto roboty 15 na 15 je dokonca samostatná nominácia, no je to strašne nudné a vhodné len pre úplných začiatočníkov alebo malých robotikov. Oproti podomácky vyrobeným vzorkám tento stráca vo všetkom okrem náročnosti montáže.

Najprv to pomalá rychlosť. Po druhé, veľkosť je obrovská. Po tretie, nízka rýchlosť odozvy snímačov. A tiež samotný ovládač ponecháva veľa požiadaviek.

Viac o montáži a balení

Sumo zápasníci, ktorí súťažia, robia na arduine. Používajú k nemu textolitové dosky, spájkovacie senzory, ovládač, ovládač atď.. Široký výber je aj senzorov na detekciu nepriateľa, ale oplatí sa použiť infračervené alebo laserové, pretože sonary sú veľmi pomalé a objemné. Na pohyb robota sú samozrejme potrebné motory a kolesá. Môžete ich dať do neobmedzeného počtu, ale prax ukazuje, že robotovi sa najlepšie jazdí na dvoch kolesách umiestnených vzadu. A samozrejme, robot nemôže žiť bez vedra a háku. Vedro je len puzdro, obal a ochrana dosky a prvkov. Najčastejšie oceľ alebo železo. Háčiky sú vyrobené z čepelí pre kancelárske nože, existujú však prípady s neštandardným prístupom, napríklad brúsené drevené pravítko alebo vata, ale tento prístup je málo užitočný.

Najťažšie (okrem programovania) je navrhnúť robota.

Prvé štádium



Tomu sa hovorí úplne prvá etapa – umiestnenie motorov a senzorov. Môžete tu tiež pozorovať dva malé senzory pred háčikom, takže ide o senzory vlasca.

Používajú sa na detekciu bielej čiary na dosahu, aby sa predišlo náhodnému vypadnutiu z krúžku, nie sú však povinným komponentom a v skutočnosti sa nepoužívajú príliš často. vysoké rýchlostičasto neumožňujú zastaviť čas.

Druhá fáza



A tu je už aplikovaný ovládač, ovládač, spínače a konektor batérie.
Zostáva len vytlačiť stopu a preniesť ju na textolitovú dosku a potom vypracovať stopy.

Takto to vyzerá na hotovej doske:

Hotová doska



Robot pripravený na spustenie:

Ako vidíte, nie je tu nič mimoriadne zložité. O problémoch nižšie.

Prejdime k programovaniu

Najjednoduchším spôsobom je použiť arduino alebo ovládače kompatibilné s arduino. Tiež nám pomôže Arduino IDE. Autor: štandardná schéma robot má 5 senzorov. Štáty teda môžu byť

Vylučujeme situáciu, keď bočné senzory vidia nepriateľa súčasne (pretože sa to nemôže stať, a ak áno, potom došlo k poruche jedného zo senzorov), ako aj situáciu, keď bočné a dva predné senzory dávajú 0 (t.j. pozri), pretože to tiež nemôže byť, alebo je šanca príliš malá.

Aby sme sa dostali k nepriateľovi, musíme len nainštalovať kolíky, priviesť napätie na motory a prečítať hodnoty snímača:

Kód robota

// Nastavenie pinov pre senzory int pin_left=10; int pin_center_left=11; int pin_center_right=4; int pin_center=12; int pin_right=7; // Piny k motorom int pin_motor_left_forward=9; int pin_motor_left_back=6; int pin_motor_right_forward=3; int pin_motor_right_back=5; // Premenné na uloženie výsledku pollingových senzorov int cl,cc,cr,l,r; // Funkcia pre pollingové senzory void GLAZ() ( cl = digitalRead(pin_center_left); cc = digitalRead(pin_center); cr = digitalRead(pin_center_right); l = digitalRead(pin_left); r = digitalRead(pin_right); ) // Funkcia pohyb, prijímajúc rýchlosti od 0 do 255 na napájanie každého motora void MOVE(int a, int b) ( if(a<0) { digitalWrite(pin_motor_left_forward,LOW); analogWrite(pin_motor_left_back,0-a); } else { analogWrite(pin_motor_left_forward,a); digitalWrite(pin_motor_left_back,LOW); } if(b<0) { digitalWrite(pin_motor_right_forward,LOW); analogWrite(pin_motor_right_back,0-b); } else { digitalWrite(pin_motor_right_back,LOW); analogWrite(pin_motor_right_forward,b); } } void setup() { pinMode (pin_center,INPUT);//центральный pinMode (pin_right, INPUT);//правый датчик pinMode (pin_left,INPUT);//левый датчик pinMode (pin_center_right, INPUT);//передний правый датчик pinMode (pin_center_left,INPUT);//передний левый датчик pinMode (pin_line_left, INPUT); pinMode (pin_line_right, INPUT); pinMode (pin_start,INPUT);//старт pinMode (13,OUTPUT);//старт digitalWrite(13,HIGH); pinMode (pin_motor_left_back, OUTPUT);//мотор лево назад pinMode (pin_motor_right_forward, OUTPUT);//мотор право вперед pinMode (pin_motor_right_back, OUTPUT);//мотор правый назад pinMode (pin_motor_left_forward,OUTPUT);//мотор лево вперед // ожидание сигнала к началу схватки while(!digitalRead(pin_start))continue; MOVE(200,200); } void loop() { GLAZ(); if(l && r) { if((cl + cc + cr) < 2 || !cc){ MOVE(255,255); } if(cc) { if(!cl && cr) MOVE(0-180,180); if(cl && !cr) MOVE(180,0-180); } } else if(cc + cr + cl == 3) { if(!l && r) MOVE(0-200,200); if(!r && l) MOVE(200,0-200); } else if(cc) { if(!l && !cl && cr && r) MOVE(0-150,150); if(l && cl && !cr && !r) MOVE(150,0-150); } if(!digitalRead(pin_start))while(1){MOVE(0,0);} }


Musíte len vylepšiť kód.

Dôležité!
Senzory vrátia 1, ak nič nevidia, a 0, ak sa vyskytne prekážka.

Po stiahnutí kódu cez usb je robot pripravený súťažiť.

Stojí za zváženie

Po prvé, sú tu prvky. Senzory, ktoré používame (ostré 340), sú pomerne zriedkavé alebo neexistujú. Preto, ak je to možné, musíte si vziať veľa naraz alebo nájsť analóg, ktorý je vhodný z hľadiska parametrov.

Po druhé, nemôžete nepriateľskému robotovi spôsobiť žiadne kritické poškodenie alebo použiť na zdvihnutie napríklad magnety. To nás mierne obmedzuje vo výbere prostriedkov na boj.

Tiež nezabudnite na kolesá. Krivky, tenké a posuvné nebudú fungovať, jednoducho nebudete môcť manévrovať a nebude dostatok momentu sily. Pneumatiky určite otestujte.

Pri práci s motormi myslite na to, že budú musieť pracovať pri maximálnej záťaži a dosť často budú horieť.

Má tiež zmysel vyrábať vymeniteľné batérie, pretože. Robot sa vybíja pomerne rýchlo a dlho sa nabíja.

Zoznam potrebných nákupov:

1. Spájkovačka, spájka, tavidlo (voliteľné)
2. Textolitové dosky (na leptanie je potrebné uzavrieť všetky stopy, potom to všetko dať na niekoľko hodín do roztoku peroxid vodíka + kyselina citrónová + soľ a potom odtrhnúť napríklad papier, pod ktorým boli stopy skryté)
3. Ostré 340 senzory
4. Motory, vyberte si podľa chuti, čím viac otáčok, tým lepšie.
Stojí za to vybrať si jednu z nich: polulu. (pridané)
5. Batérie (odporúčam vám vziať lítium polymér) + nabíjacia stanica
6. Kľúč (spínacie tlačidlo, prispájkované k doske) a elektrické prvky (na obrázku je so stopou)
7. Vodič
8. Ovládač, na začiatok môžeš vyskúšať Polulu A-Star 32u4 micro a nahrať tam arduino bootloader
9. Plech na telo
10. Vyvŕtajte otvory do dosky
11. Spúšťací a štartovací modul
P.S. Ak som niečo prehliadol - napíšte, opravím.

konkurencia

Ďalšie súťaže sa budú konať v Petrohrade, Robofinist, takže teraz sa na ne tvrdo pripravujeme a ak sa chcete zúčastniť, musíte urobiť všetko jasne a rýchlo.

Ale tieto súťaže nie sú jediné, v Rusku je ich pomerne veľa, najväčšie sa konajú v Moskve. Približne raz za mesiac alebo dva môžete zažiť šťastie a súťažiť.

Takéto súťaže v zahraničí nie sú ojedinelé a aj my sa tam chceme dostať. Tu je približná mapa súťaží po celom svete:

Naozaj dúfame, že robot sumo sa bude rozvíjať iba u nás a pozývame všetkých, aby sa podieľali na tvorbe nášho robota. Vyzerá to veľmi epické, keď z nejakého robota odlietajú kúsky.

Toto je koniec nášho úvodného článku a prajeme vám veľa úspechov v robotike, radi vás uvidíme na súťažiach!

1. Všeobecné pravidlá

1.1. Robot musí vytlačiť súperovho robota z čiernej čiary (mimo hranice).

1.2. Po začatí súťaže sa musia roboty pohybovať smerom k sebe až do zrážky.

1.3. Po kolízii by sa roboti mali pokúsiť o vzájomný kontakt.

1.4. Počas súťaže by sa členovia tímu nemali dotýkať robotov.

1.5. Dva autonómne roboty sú umiestnené v kruhu (okrúhle pole). Roboti sa snažia vytlačiť súpera z ringu.

1.6. Robot, ktorý vyhrá najviac kôl, vyhráva zápas.

1.7. Pri hre „každý s každým“ sa považuje za najlepšieho robota, ktorý vyhral najviac zápasov.

1.8. Pri veľkom počte účastníkov je možné usporiadať rebríček podľa „olympijského systému“ (pre odchod).

2. Robot

2.1. Roboty musia byť postavené iba z dielov LEGO Mindstorms.

2.2. Počas celého kola:

Veľkosť robota by nemala presiahnuť 25x25x25cm.

Hmotnosť robota nesmie presiahnuť 1 kg.

2.3. Robot, ktorý podľa názoru porotcov úmyselne poškodí iných robotov alebo inak poškodí povrch ihriska, bude diskvalifikovaný na celú dobu trvania súťaže.

2.4. Pri konštrukcii robota je prísne zakázané používať:

Lepidlá.

2.5. Pred zápasom sa robotom skontrolujú rozmery a hmotnosť.

2.6. Robot môže mať množstvo programov, z ktorých si operátor môže vybrať každé kolo.

2.7. Medzi zápasmi je povolené meniť dizajn a programy robotov.

3. Lúka

3.1. Biely kruh s priemerom 1 m s čiernym okrajom hrubým 5 cm.

3.2. V kruhu sú červenými pruhmi označené štartovacie zóny robotov.

3.3. Červená bodka označuje stred kruhu.

3.4. Ihrisko je umiestnené na pódiu s výškou 16 mm.

4. Organizovanie súťaží

4.1. Súťaže pozostávajú zo série zápasov. Zápas určí, ktorý z dvoch robotov, ktorí sa ho zúčastňujú, je najsilnejší. Zápas pozostáva z 3 kôl po 30 sekúnd. Zápas vyhráva robot, ktorý vyhrá najviac kôl. Sudca môže použiť dodatočné kolo na objasnenie sporných situácií.

4.2. Kolá sa konajú za sebou.

4.3. Na začiatku kola sú roboti umiestnení za červenými pruhmi (od stredu kruhu) do svojich štartovacích oblastí, všetky časti robota, ktoré sa dotýkajú poľa, musia byť vo vnútri štartovacej oblasti.

4.4. Na povel rozhodcu je daný signál na spustenie robotov, pričom operátori robotov musia spustiť program na robotoch a do 5 sekúnd sa vzdialiť od ihriska o viac ako 1 meter. Za rovnakých 5 sekúnd sa musia roboty pohybovať v priamom smere a musia sa navzájom zraziť.

4.5. Pre začiatočníkov: Po zrážke nemôžu roboty manévrovať okolo kruhu.

4.6. Pre skúsených: Po kolízii môžu roboty manévrovať po ringu, ako sa im zachce.

4.7. Ak sa roboty nezrazia do 5 sekúnd po začiatku kola, tak robot, kvôli ktorému podľa názoru rozhodcu ku kolízii nedôjde, je považovaný za porazeného v kole. Ak sa roboty pohybujú v priamej línii a nestihnú sa zraziť do 5 sekúnd, potom sa za porazeného v kole považuje robot najbližšie k jeho štartovacej oblasti.

5. Pravidlá výberu víťazov

5.1. Ak sa robot nepohne bez toho, aby bol v kontakte s iným robotom dlhšie ako 10 sekúnd, potom sa považuje za porazeného v kole.

5.2. Keď sa dotknete akejkoľvek časti robota (aj nepripojenej k robotovi) za čiernym okrajom, robot prehráva kolo.

5.3. Ak na konci kola nie je žiadny robot vytlačený z kruhu, potom sa za víťaza kola považuje robot, ktorý je najbližšie k stredu kruhu.

5.4. Ak sa víťaza nepodarí určiť vyššie popísanými spôsobmi, o víťazstve alebo opakovaní rozhoduje porotca súťaže.

6. Rozhodovanie

6.1. Organizátori si vyhradzujú právo na akékoľvek zmeny pravidiel súťaže, ak tieto zmeny nezvýhodňujú niektorý z tímov.

6.2. Kontrolu a sčítanie vykonáva porota v súlade s vyššie uvedenými pravidlami.

6.3. Sudcovia majú plné právomoci počas všetkých súťaží; všetci účastníci musia dodržiavať ich rozhodnutia.

6.4. V prípade akýchkoľvek námietok týkajúcich sa rozhodovania má tím právo ústne sa odvolať proti rozhodnutiu rozhodcov na organizačný výbor najneskôr do konca aktuálneho kola.

6.5. Repríza sa môže uskutočniť na základe rozhodnutia rozhodcov v prípade, keď robot nemohol dokončiť etapu v dôsledku vonkajšieho zásahu, alebo keď k poruche došlo v dôsledku zlého stavu ihriska alebo v dôsledku chyby zo strany porota.

6.6. Členovia tímu a vedúci nesmú fyzicky ani na diaľku zasahovať do činnosti robota svojho tímu alebo robota súpera. Zásah vedie k okamžitej diskvalifikácii.

6.7. Rozhodca môže ukončiť zápas podľa vlastného uváženia, ak robot nie je schopný pokračovať v pohybe do 10 sekúnd.

12.2. Dizajn robota pre súťaž "Sumo".

Základné správanie robota v "sumo" veľmi podobné správaniu robota v "Kegelring". Robot tiež potrebuje nájsť predmet vo vnútri poľa a vytlačiť ho z kruhu. Rozdiely, ako inak, spočívajú v detailoch: teraz tento objekt zase hľadá nášho robota a tiež ho chce čo najskôr vytlačiť.

Napriek tomu sa sústreďme na náš cieľ: jeden zo senzorov schopných detegovať objekty na diaľku (infračervený alebo ultrazvukový) nám predsa len pomôže hľadať protivníka a pomocou farebného senzora včas určíme čierny okraj poľa. Preto vám na vytvorenie a ladenie programu robota sumo odporúčame použiť rovnakého robota, aký sme pripravili pre lekciu č. 11 – Kegelring.

Aby sme ochránili snímač umiestnený vpredu pred interakciou s protivníkom, postavíme nárazník a pripevníme ho na nášho robota. Nižšie sú uvedené podrobné pokyny na zostavenie pre domáce aj vzdelávacie Lego mindstorms EV3. Nebojte sa experimentovať a prísť s vlastným dizajnom.

Lego Mindstorms EV3 Home

Lego Mindstorms EV3 Education

Výsledný prvok upevníme na predný nosník nášho robota.

Lego Mindstorms EV3 Home

Lego Mindstorms EV3 Education

Náš tréningový robot je pripravený. Začnime vytvárať program robota sumo. Je skvelé, ak máte možnosť odladiť program pomocou iného robota! Ak nie, je to v poriadku: ako súpera môžete použiť napríklad rádiom riadený model auta alebo rovnaké kuželky od Kegelringu.

12.3. Vytvorenie programu pre súťaž „Sumo“.

Prvá myšlienka, ktorá vám príde na myseľ, je použiť program "Kegelring" s niekoľkými kozmetickými úpravami. V skutočnosti sú algoritmy správania robota v "Kegelring" a v "sumo" veľmi podobné. Realizujú hľadanie predmetu a jeho vytláčanie z poľa. Môžete si stiahnuť program pre zápasníka sumo "Kegelring", ale taký sumo zápasník nebude fungovať veľmi efektívne. Poznatky získané v predchádzajúcej lekcii sa nám však teraz budú hodiť.

Je čas nahrať náš projekt do programovacieho prostredia "lekcie-2", vytvorte v ňom nový program lekcia-12 a pripojte robota k programovaciemu prostrediu.

Model správania zápasníka sumo možno rozdeliť na dve časti: hľadať súpera a útok súpera. Začnime s implementáciou prvej časti - hľadať súpera.

Poďme si podrobne popísať postupnosť akcií nášho robota, keď je na ihrisku zistený protivník:

  1. otáčajte sa okolo svojej osi, kým snímač umiestnený vpredu nezaznamená súpera;
  2. zastaviť pred súperom.

Táto postupnosť akcií úplne zopakuje robotov vyhľadávací algoritmus pre kolky "Kegelring", ale keďže vzdialenosť medzi robotmi v "sumo" môže prekročiť vzdialenosť od robota po kolík, potom musíme zvoliť inú prahovú hodnotu pre použitý snímač.

Postavte súperov na ihrisko oproti sebe, ako je znázornené na obrázku nižšie.

Táto poloha prakticky zodpovedá maximálnej vzdialenosti medzi robotmi od seba počas súťaže, takže ako prahová hodnota môže byť braný aktuálny údaj snímača, ktorý meria vzdialenosť od súpera. Dôležité: keďže prahová hodnota bude dostatočne veľká, je potrebné, aby sa mimo poľa vo vzdialenosti cca 1 m počas prevádzky robota nenachádzali ani cudzie predmety, ktoré by mohli prekážať pri hľadaní.

Na "Hardvérová stránka", ktorý sa nachádza v pravom dolnom rohu programovacieho prostredia, vyberte kartu "Pohľad na prístav" (obr. 1, 2 poz. 1) a odčítajte údaje zo snímača, ktorý určuje vzdialenosť k protivníkovi, nastavením vhodného režimu zobrazenia údajov.

V našom prípade je ultrazvukový snímač v režime "Vzdialenosť v centimetroch" ukazuje hodnotu - 56.1 (obr. 1 poz. 2) 57 .

Ryža. jeden

Infračervený senzor v režime "aproximácia" ukazuje hodnotu - 68 (obr. 2 poz. 2). Pre prahovú hodnotu vezmeme číslo - 70 .

Ryža. 2

Analogicky s "Kegelring" môžeme naprogramovať robota tak, aby našiel súpera, len aby sme sa trochu vzdialili od predchádzajúcej lekcie, zmeníme smer otáčania robota na opačný:

ultrazvukový senzor

  1. "Zelená paleta" "Zapnúť" "B" nastaviť rovný -30 , hodnota výkonu pre port "C" nastaviť rovný 30 (Obr. 3 poz. 1).
  2. Na vyhľadanie súpera použite programový blok v režime "Ultrazvukový senzor - porovnanie - vzdialenosť v centimetroch" 57 (obr. 3 poz. 2).
  3. vypnite motory (Obr. 3 poz. 3).

Ryža. 3

infračervený senzor

  1. Aby sa robot otáčal okolo svojej osi, používame programový blok "Nezávislé ovládanie motora" "Zelená paleta", Nastavte režim blokovej prevádzky "Zapnúť", hodnota výkonu pre port "B" nastaviť rovný -30 , hodnota výkonu pre port "C" nastaviť rovný 30 (obr. 4 poz. 1).
  2. Na hľadanie súpera využívame programový blok "Čakanie" "Oranžová paleta" v režime "Infračervený senzor - porovnanie - priblíženie", s prahovou hodnotou činnosti snímača rovnou 70 (obr. 4 poz. 2).
  3. Potom, čo je robot oproti súperovi, pomocou programového bloku "Nezávislé ovládanie motora" "Zelená paleta" vypnite motory (Obr. 4 poz. 3).

Ryža. štyri

Vo fáze ladenia tohto algoritmu budete musieť vybrať hodnoty "Moc" motory "B" a "C" ako aj prahovú hodnotu snímača, aby ste dosiahli presnú detekciu od vášho robota a zastavili sa priamo pred protivníkom. Až potom bude možné pristúpiť k softvérovej implementácii útočného algoritmu.

Ak je hľadanie súpera v "sumo" veľmi podobné hľadaniu kolkov v "Kegelring", potom zatlačenie súpera má dôležitý rozdiel! Začatie útoku, prvá vec, ktorú musíte urobiť, je vrhnúť sa priamo na maximálny výkon motorov smerom k detekovanému súperovi a skontrolovať detekciu okraja prstenca pomocou farebného senzora. Ale pohnúť sa môže aj náš súper! Preto je dosť možné, že súper pod réžiou nášho útoku ustúpi. V tomto prípade sa náš robot, ktorý minul, presunie smerom k hranici kruhu, čím stratí súpera a drahocenný čas.

Preto musíme analyzovať oba senzory počas priameho pohybu vpred a zastaviť útok robota stratí súpera ALEBO robot dosiahne hranicu kruhu. Preto musíme prestať používať programový blok "Čakanie" "Oranžová paleta" a nezávisle v cykle na príjem a spracovanie údajov dvoch snímačov.

Poďme k fázovej implementácii algoritmu súperove útoky: na to vytvoríme v projekte dočasný program lekcia-12-1 a začnite ho plniť programovými blokmi.

  1. Zoberme si programový blok "Cyklus" "Oranžová paleta".
  2. Vo vnútri bloku "Cyklus" vložte programový blok "Nezávislé ovládanie motora" "Zelená paleta" "Zapnúť" (Obr. 5 poz. 1), výkon motora "B" a "C" nastaviť na maximálnu hodnotu - 100 (Obr. 5 poz. 2).

Ryža. 5

  1. Za blokom "Nezávislé ovládanie motora" umiestnite blok programu. Nastavte režim blokovej prevádzky na "Porovnanie - intenzita odrazeného svetla" (obr. 6)

Ryža. 6

V tomto režime programový blok "Farebný snímač" "Žltá paleta" vizuálne veľmi podobný softvérovému bloku "Čakanie" "Oranžová paleta" v režime "Farebný snímač - porovnanie - intenzita odrazeného svetla". Ale na rozdiel od bloku "očakávania", tento blok programu nečaká na podmienku určenú parametrami "Typ porovnania" (obr. 7 poz. 1) a "Hodnota prahu" (obr. 7 poz. 2) a okamžite poskytne boolovskú hodnotu ( "pravda" alebo "klamať") vo výstupnom parametri a nameraná hodnota vo výstupnom parametri "Osvetlenie" (obr. 7 poz. 4).

možnosti "Typ porovnania" a "Prah" na Ryža. 7 poz. 12 "Výsledok porovnania" (obr. 7 poz. 3) dal boolovskú hodnotu "pravda" keď snímač farieb prekročí čierny okraj prsteňa.

Ryža. 7

  1. V prípade použitia ultrazvukového snímača za jednotkou "Farebný senzor" nainštalujte softvérový blok "Ultrazvukový snímač" "Žltá paleta". Nastavte režim blokovej prevádzky na "Porovnanie - Vzdialenosť v centimetroch" (obr. 8 poz. 1). Parameter "Typ porovnania" (obr. 8 poz. 2), parameter "Hodnota prahu" (obr. 8 poz. 3) nastavte tak, že výstupný parameter "Výsledok porovnania" (obr. 8 poz. 4) dal boolovskú hodnotu "pravda"

Ryža. osem

V prípade použitia infračerveného senzora za jednotkou "Farebný senzor" nainštalujte softvérový blok "Infračervený senzor" "Žltá paleta". Nastavte režim blokovej prevádzky na "Porovnanie - aproximácia" (obr. 9 poz. 1). Parameter "Typ porovnania" (obr. 9 poz. 2), parameter "Hodnota prahu" (obr. 9 poz. 3) nastavte tak, že výstupný parameter "Výsledok porovnania" (obr. 9 poz. 4) dal boolovskú hodnotu "pravda" v prípade straty zraku robotom súpera.

Ryža. 9

Poďme ešte raz analyzovať prechodný kód nášho útočného algoritmu: zapli sme motory na maximálny výkon a pohli sa vpred, pričom sme neustále cyklicky oslovovali senzory. Ak náš robot prekročí čiernu čiaru okraja prstenca, tak hodnotu výstupného parametra "Výsledok porovnania" "Snímač farieb" nadobudne význam "pravda". Ak náš robot prehrá súpera, tak hodnotu výstupného parametra "Výsledok porovnania" hodnotu nadobudne aj senzor sledujúci protivníka "pravda". V každom z týchto prípadov by sme mali zastaviť útok ukončením našej slučky. Pomôže nám v tom programový blok. Zoznámime sa s týmto blokom podrobnejšie: programový blok "Logické operácie" určené na vykonávanie operácií s logickými údajmi (Obr. 10).

Ryža. desať

Zvolený režim blokovania programu "Logické operácie" "Červená paleta" definuje jednu zo štyroch operácií s boolovskými údajmi: "A (A)", "ALEBO (ALEBO)", "XOR" a "Výnimka (NIE)". D va vstupné parametre "a" a "b"(na prevádzku "Výnimka (NIE)"- jeden vstupný parameter "a") odovzdať vstupné hodnoty do programového bloku a výslednú hodnotu vytvorí výstupný parameter "výsledok". Ak ste sa doteraz s logickými operáciami nestretli, so základnými poznatkami sa môžete zoznámiť v priloženom pomocníkovi pod spojlerom.

Booleovské operácie

Logické operácie sa vykonávajú iba s logickými hodnotami (údajmi), ktoré sú tiež logickou hodnotou. Boolovská hodnota môže byť v jednom z dvoch stavov: "pravda" alebo "klamať". Logické operácie sa veľmi často píšu v tabuľkovej forme ako: "vstupný parameter 1" - "vstupný parameter 2" = "výsledok". Logické operácie realizované programovým blokom "Logické operácie" "Červená paleta" v tabuľkovej forme možno zapísať takto:

Logická operácia "AND (AND)"

Výsledok logickej operácie "A (A)" bude tam hodnota "pravda" "pravda" "klamať".

"a" prevádzka "b" výsledok
"klamať" "A (A)" "klamať" = "klamať"
"klamať" "A (A)" "pravda" = "klamať"
"pravda" "A (A)" "klamať" = "klamať"
"pravda" "A (A)" "pravda" = "pravda"

Logická operácia "ALEBO (ALEBO)"

Výsledok logickej operácie "ALEBO (ALEBO)" bude tam hodnota "klamať" iba ak sú obe vstupné hodnoty rovnaké "klamať", vo všetkých ostatných prípadoch je hodnota operácie "pravda".

"a" prevádzka "b" výsledok
"klamať" "ALEBO (ALEBO)" "klamať" = "klamať"
"klamať" "ALEBO (ALEBO)" "pravda" = "pravda"
"pravda" "ALEBO (ALEBO)" "klamať" = "pravda"
"pravda" "ALEBO (ALEBO)" "pravda" = "pravda"

Logická operácia "XOR"

Výsledok logickej operácie "XOR" bude tam hodnota "pravda" iba ak je jedna zo vstupných hodnôt rovnaká "pravda", vo všetkých ostatných prípadoch je hodnota operácie "klamať".

"a" prevádzka "b" výsledok
"klamať" "XOR" "klamať" = "klamať"
"klamať" "XOR" "pravda" = "pravda"
"pravda" "XOR" "klamať" = "pravda"
"pravda" "XOR" "pravda" = "klamať"

Logická operácia "Výnimka (NIE)"

Booleovská operácia "Výnimka (NIE)" platí len pre jednu vstupnú hodnotu. Výsledok logickej operácie "Výnimka (NIE)" nad vstupnou hodnotou je opačná hodnota.

  1. Za programovacím blokom "Ultrazvukový senzor" alebo "Infračervený senzor" vložte programový blok "Logické operácie" "Červená paleta".
  • výstupný parameter "Výsledok porovnania" programový blok "Snímač farieb" (obr. 11, 12 poz. 1) "a" programový blok "Logické operácie" (obr. 11, 12 poz. 4).
  • výstupný parameter "Výsledok porovnania" programový blok "Ultrazvukový (infračervený) snímač" (obr. 11, 12 poz. 2) spojiť so vstupným parametrom "b" programový blok "Logické operácie" (obr. 11, 12 poz. 5).
  • Režim prevádzky programového bloku "Logické operácie" vsadiť "ALEBO (ALEBO)" (Obr. 11, 12 poz. 3). V tomto prípade bude mať hodnotu výsledok logickej operácie "pravda", iba ak je splnená jedna z podmienok: farebný snímač prekročil čiernu čiaru, robot stratil súpera.
  • Nastavením režimu programového bloku "Cyklus" do významu "Boolovská hodnota" (Obr. 11, 12 poz. 7), výstupný parameter "výsledok" programový blok "Logické operácie" (obr. 11, 12 poz. 6) spojiť so vstupným parametrom "Kým nebude pravda" programový blok "Cyklus" (Obr. 11, 12 poz. 8). Tieto nastavenia dokončia cyklus, keď "pravda" výsledok logickej operácie.

Ryža. jedenásť


Ryža. 12

Poďme otestovať výsledný algoritmus útoku! Aby sme to urobili, umiestnime nášho robota do kruhu, naopak, nainštalujeme nehybného súpera a spustíme útočný program na vykonanie. Náš robot musí s istotou vytlačiť súpera z ringu a zastaviť sa nad čiernym okrajom ihriska. Stalo? Takže náš sumoista správne kontroluje hranicu ringu.

Urobme druhý experiment: opäť nainštalujeme nehybného protivníka pred robota a spustíme útočný program. Keď sa náš robot prirúti k súperovi a dostane sa dostatočne blízko, prudko odstránime súpera na stranu. Náš robot sa musí po strate súpera zastaviť.

Aby sme to zhrnuli: implementovali sme algoritmus vyhľadávania protivníka a úspešne ho otestovali a bol otestovaný aj algoritmus útoku.

Dokončený program zápasníka sumo musí postupne hľadať súpera v nekonečnej slučke a potom zaútočiť na súpera. Bolo by možné spojiť obe časti nášho programu, nebyť jedného malého doplnku. Ak sa náš robot zastavil nad hranicou krúžku, potom by sa pred začatím hľadania mal robot vrátiť späť do krúžku. Náš útočný program doplníme nasledujúcim kódom: mimo útočnej slučky použijeme programový blok " Prepínač "Oranžová paleta". Režim blokovania prevádzky "prepnúť" vsadiť "Farebný snímač - porovnanie - intenzita odrazeného svetla". možnosti "Typ porovnania" a "Prah" nastaviť rovnakým spôsobom, ako sa predtým používalo v programovom bloku "Farebný snímač" "Žltá paleta". Ak sa teda náš robot zastavil nad čiernou čiarou, vykonanie sa prenesie do horného kontajnera programového bloku "prepnúť". Práve do horného kontajnera umiestňujeme programový blok "Riadenie" "Zelená paleta", s nastaveniami parametrov, ktoré spôsobia, že sa robot vráti o jednu otáčku motorov späť. Do spodnej nádoby programového bloku "prepnúť" umiestnite programový blok, ktorý vypne motory (Obr. 13). Po opätovnom otestovaní útočného algoritmu sa uistíme, že po tom, ako sumo robot vytlačil súpera z ringu, vrátil sa trochu späť.

Ryža. 13

Teraz môžete dokončiť vývoj programu pre robota sumo. Vo vnútri nekonečnej slučky postupne vnoríme program na hľadanie protivníka a potom program na útok na súpera. Skúste túto prácu urobiť sami bez toho, aby ste nahliadli do riešenia.

Záver:

Program, o ktorom sme s vami diskutovali v tejto lekcii, implementuje iba jeden algoritmus priamej sily pre správanie sumo robota. Z toho vyplýva, že v priamej mocenskej konfrontácii musí robot určite poraziť svojho súpera. Ale náš tréningový robot, samozrejme, nie je nič ako svalnatý zápasník sumo. Aby sme mohli s istotou vystupovať v tejto súťaži, je potrebné venovať najväčšiu pozornosť predovšetkým dizajnu robota, vytvoriť pevnú, chránenú platformu, zvýšiť trakciu s povrchom kruhu pomocou prídavné hnacie kolesá alebo pásy. Populárny hosting videa Youtube.com NA ZNAMENIE "roboty sumo lego" nájdete veľa videí zo skutočných súťaží robotov, z ktorých určite načerpáte zaujímavé nápady na implementáciu do svojich vlastných návrhov.

Hlavným cieľom tejto lekcie je na praktickom príklade ukázať vám metódu kontinuálneho spracovania hodnôt z dvojice senzorov. Dá sa náš program zlepšiť? Nepochybne! Napríklad pomocou programového bloku "Náhodná hodnota" "Červená paleta", zmeniť algoritmus na nájdenie súpera tak, aby sa nastavilo náhodné otáčanie robota doľava alebo doprava, čím sa protivník dezorientoval. Skúste sami zabudovať tento dodatočný kód do nášho programu. Myslite aj na to, aké zmeny musíte v programe urobiť, v prípade súťaže na čiernom krúžku s bielym okrajom. Môžete mať svoje vlastné nápady na zlepšenie: podeľte sa o ne v komentároch k lekcii!