PROGRAM "MINI-SUMO ROBOT. Závěrečný článek o sestavení mini-sumo robota. V první části článku "Podvozek pro mini-sumo robota" bylo podrobně popsáno, jak vyrobit podvozek robota. V tomto článku podrobně rozebereme sestavení programu pro robota.Náš robot připraven.Má podvozek,funkci "mozků" bude plnit mikrokontrolér a komunikaci s vnějším světem budou provádět čidla.Ale , přes to všechno bude stále nehybně stát na stole. A aby se tak nestalo, je na čase vdechnout našemu stvoření život, abychom se cítili jako „stvořitel“ úplně.Program, který vytvoříme, bude robota nejen oživit, ale také přimět, aby se v ringu choval smysluplně a logicky.


1. Základem programu je algoritmus.

Stejně jako dříve se neobejdeme bez plánu. V předchozím článku byl náš plán zásadní Kruhový diagram. V programování se plán nazývá algoritmus. Někteří z vás vědí, co to je, někdo to právě slyšel, ale jsou i tací, kteří nevěděli a slyšeli poprvé.

Nebudu používat vědecké termíny, jednoduše řeknu, že Algoritmus je popis posloupnosti určitých akcí. Celý náš život jsou různé činy; chodíme, mluvíme, pohybujeme rukama a nohama, otáčíme hlavou. To vše má svůj význam – algoritmus, posloupnost, která určuje naše chování a dá se sestavit a popsat. Pro názornost uvedu příklad ze života. Každé ráno si čistíš zuby. Zkuste popsat, jak to děláte, jak si pro sebe napsat program. Co se stane: „Vezmeme si zubní kartáček. Vymačkejte pastu. Zuby si čistíme levo-pravými pohyby. vypláchnu si ústa. Můj štětec."

V zásadě je vše správně, ale tento malý program můžeme provádět v době oběda, večer nebo po každém jídle. Ale nebrali jsme v úvahu důležité faktory, které mohou anulovat veškeré naše úsilí. Zpočátku jsme mluvili o ránu. To je důležitý faktor, a pokud s ním nebudete počítat, pak si budete muset čistit zuby vleže v posteli a se zavřenýma očima. Každý program tedy musí mít vždy nějaký začátek a konec s možností opakování cyklu. Opakující se cyklus pro člověka je další den, kdy bude opět ráno a bude potřeba znovu vyčistit zuby. Proto jsme do našeho programu přidali následující algoritmus (pořadí akcí).

"Vzbudit. Vstaň z postele...“ Pokud v této fázi přestanete vytvářet algoritmus a přejdete rovnou k čištění zubů, program se zastaví (zasekne). Proč? Protože jsme opět nebrali v úvahu všechny faktory. Stojíte uprostřed své ložnice a nemůžete provést další příkaz; „Vezmeme si kartáček“, protože kartáček je v koupelně a stále se do něj musíte dostat. Pokud spíte v koupelně, pak žádný problém - program poběží! Ale ve většině případů normální lidé spí v jiné místnosti. Tento přístup se nazývá logický, to je smysluplné. Veškeré naše jednání musí být rozumné a obsahovat určitý smysl, jinak nebude cíle dosaženo. Takže „Probuď se. Vstávej. Jít na záchod“ by byla nejlepší možnost.

Vraťme se do práce. Jak nyní naplánujeme akce mini-sumo robota v ringu? Máme pravidla, kde je jasně označen cíl - "Vytlačit soupeře z ringu." Ale k jeho dosažení je třeba vzít v úvahu určité faktory. Hlavním faktorem je nepřekročit samotný kruh, nebo přesněji nepřekročit bílý okraj kruhu. Zde je to, co máme:

Rýže. 1 Algoritmus chování robota v ringu.

Na obrázku 1 vidíte blokové schéma. Podle všeho je to tak, jak je zvykem skládat algoritmy. Jasné a srozumitelné.

První blok je "Start". Od tohoto okamžiku začne program po zapnutí provádět akce robota. První věc, kterou bude muset udělat, je najít nepřítele, blok „Target Search“. Další blok našeho schématu je ve formě kosočtverce „Target found?“. To znamená, že budeme mít na výběr akce k dosažení určité události. Pokud je cíl nalezen (Ano), pokračujeme v programu a přejdeme k další části programu „Útok“, ale pokud není cíl nalezen (Ne), je nejlogičtější pokračovat v jeho hledání . Program bude v tuto chvíli opakovat, dokud robot nepřítele nezjistí. Při útoku se robot pohybuje vpřed směrem k soupeři, snaží se ho vytlačit z ringu, v tomto okamžiku blok "Dosáhl jsi okraje ringu?", pokud nedosáhne okraje ringu, pak útok pokračuje, ale pokud senzory detekují bílý pruh na okraji, pak se útok zastaví a program pokračuje dalším blokem "Drive back" a "Reversal". Po otočení se cyklus hlavního programu opakuje, to znamená, že začíná úplně od začátku a robot opět hledá nepřítele. Bylo tak učiněno z nějakého důvodu. Pokud se v době útoku nepříteli podařilo uniknout našemu robotovi, pak se musíme vrátit k jeho hledání, aniž bychom opustili okraj prstenu. Vše s teorií. Pojďme k praxi.

2. Pravidla pro psaní programů pro Arduino.

Sice jsem řekl, že teoretická část je u konce, ale měli bychom si prostudovat princip sestavení programu pro Mikrokontroléry Arduino, ačkoli tyto principy budou platit pro ostatní MK v rodině AVR.

Rýže. 2 Způsob psaní programu pro Arduino.

Toto blokové schéma nám jasně ukazuje co důležité body a v jakém pořadí by se mělo při psaní programu dodržovat.

Na samém začátku programu jsou v případě potřeby připojeny další moduly. Poté jsou deklarovány globální proměnné. Následuje blok inicializace regulátoru. Definuje přiřazení portů, zda se jedná o vstup nebo výstup, a další nastavení. Z tohoto bloku lze také volat další pomocné rutiny. Stručně řečeno, v tomto bodě program produkuje předvolby ovladač. Tento blok se provede jednou při spouštění nebo restartu ovladače. Upozorňujeme, že do bloku byl přidán řádek „zpoždění 5 sekund“. Na hlavní pravidla to neplatí pro psaní programu, ale mini-sumo robot je nezbytný. Pravidla říkají, že po povelu rozhodčího se musí roboti po 5 sekundách dát do pohybu. Toto zpoždění nelze provést v hlavní smyčce programu, protože se bude neustále opakovat a chování robota se nezmění k lepšímu.

V bloku hlavního cyklu programu bude proveden hlavní algoritmus chování robota v kruhu, který jsme uvažovali na Obr. 1. Během provozu hlavní smyčky bude možné přistupovat k podprogramům. Programátoři velmi často používají podprogramy k optimalizaci a redukci kódu. Například program pro pohyb vpřed nebo vzad, je logičtější vybrat jednotlivé moduly a není součástí hlavní části programu. Z toho se stane obrovský, zcela nečitelný a bude velmi problematické najít chybu nebo provést malou změnu.

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

Stáhněte si z webu Arduino.ru Nejnovější verze Arduino IDE. Program nevyžaduje žádnou speciální instalaci, stačí obsah archivu rozbalit Správné místo. Na konci tohoto článku je soubor knihovny ultrazvukových dálkoměrů. Měl by být rozbalen do složky Knihovny.

Spouštíme aplikaci. Zkontrolujeme správnou instalaci knihovny, přejděte do nabídky "Soubor" - "Příklady". Téměř úplně dole by se měla objevit položka Ultrasonic jako na obr. 3.

Rýže. 3 Ověřte, zda je knihovna Ultrasonic správně nainstalována.

Pokud je vše v pořádku, přejděte na položku "Služba" - "Zaplatit". Musíme si vybrat naši desku - Arduino Pro Mini 5v.

Rýže. 4 nastavení řídicí desky

Sériový port musí být vybrán ten, který se objeví za Arduino připojení do počítače. Něco málo by se mělo říci o Arduino Pro Mini. Na rozdíl od jiných ovladačů z rodiny Arduino nemá Pro Mini vestavěný modul pro připojení k počítači. Dodává se samostatně jako deska. USB adaptér k UART(TTL) a je připojen k řídicí desce pomocí čtyř vodičů.

Rýže. 5 USB-UART (TTL) adaptér.

Na Obr. 6 ukazuje, jak správně připojit ovladač a adaptér.

Rýže. 6. Připojení ovladače k ​​adaptéru USB-UART.

Na rozdíl od přijímaného spojení signálových linek je místo RX-TX a TX-RX potřeba tyto linky připojit přímo: RX-RX, TX-TX. Při prvním připojení adaptéru k počítači se automaticky začnou instalovat ovladače zařízení. Měli byste počkat na dokončení instalace. Další vlastností ovladače je chybějící software Resetovat v době programování. To je samozřejmě trochu nepohodlné, ale nestačí to k odmítnutí Pro Mini. Po změně nápisu „Compiling“ na „Download“ stačí stisknout tlačítko Reset na ovladači, Obr. 7.

Rýže. 7. Zobrazení informací o průběhu programování MK.

4. Napíšeme kód.

V této kapitole se nebudu zdržovat popisem příkazů, direktiv a operátorů. Předpokládá se, že již máte nějaké základní znalosti. V opačném případě se musíte podívat do dokumentace na oficiálních stránkách nebo z jiných zdrojů v síti.. Kód programu napíšeme jasně podle plánu nebo algoritmu, který jsme sestavili. Do určitých bloků algoritmu jsem přidal kód, který nyní budeme podrobněji zvažovat na obr. osm.

Rýže. 8. Zápis počátečního bloku programu.

První blok: direktiva # připojuje řídicí knihovnu modulu k našemu projektu.

Druhý blok: Deklarujeme proměnné a zapisujeme do nich počáteční hodnoty rovné nule. Upozorňujeme, že nebudeme vytvářet názvy pro výstupní porty MK. Záměrně jsem je nechal v digitální podobě, abyste se na ně mohli snadno odkazovat Kruhový diagram. V tomto bloku deklarujeme pouze tři proměnné - jedná se o levý a pravý snímač prstence (_ a _), budou ukládat hodnoty ADC. Stejně jako proměnná vzdálenosti ultrazvukového dálkoměru (_) zaznamená vzdálenost v centimetrech k překážce.

Řádek Ultrasonic ultrazvuk (4, 2) není nic jiného než deklarace proměnné pro ultrazvukový dálkoměr, převzaté z příkladu přiložené knihovny. V závorkách jsou porty, ke kterým jsou připojeny nohy a senzory.

Třetí blok: (), v něm nakonfigurujeme všechny vstupy a výstupy mikrokontroléru. Příchozí signály budeme přijímat na portech 15, 17, takže jim přiřadíme (Input). Máme čtyři porty ovládající motory: 3,5 pro levý motor a 6,9 pro pravý motor, přiřadíme je jako výstup.

Proč používáme dva porty pro jeden motor? Všechno je jednoduché; Pokud je na kontakty motoru přivedeno napětí, motor se začne otáčet v jednom ze směrů, řekněme ve směru hodinových ručiček. Pokud ale změníte polaritu, tzn. změňte "plus" a "mínus" - hřídel motoru se bude otáčet v opačném směru. Tuto vlastnost využijeme pro plnohodnotné manévry.

5. Hlavní smyčka smyčky.

V tomto cyklu se provádí hlavní program regulátoru. Nemůžete se z toho úplně dostat ani to dokončit. Z něj jsou možná pouze volání externích procedur, tzv. podprogramů.

Zvažte strukturu našeho cyklu na základě algoritmu na obr. 9

Rýže. 9. Algoritmus hlavní smyčky Smyčka.

Od samého začátku potřebujeme získat údaje ze všech senzorů, proto nazýváme podprogram:

void check_sensor() // Podprogram pro kontrolu senzorů.

R_Sensor=analogové čtení(15); // čtení správných hodnot senzoru

L_Sensor=analogové čtení(17); // čtení hodnot levého senzoru

zpoždění(10); //zpoždění dokončení převodu ADC

dist_cm = ultrazvuk.Ranging(CM); // odečtěte hodnoty ultrazvukového dálkoměru

zpoždění(10); // Zpoždění dokončení převodu

Po obdržení dat je musíme zpracovat. Nejprve musíme určit naši polohu, ať už jsme v ringu nebo ne. Pokud zkontrolujeme přítomnost soupeře do 40 cm v ringu, pokud žádný soupeř není, hledáme ho otočením doleva:

void go_left() // vyhledejte cíl nebo jděte doleva

analogWrite(5, 100); //LEVÝ MOTOR

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

Hodnota výkonu motorů je téměř poloviční, pokud se roztočíme příliš rychle, můžeme setrvačností proklouznout detekovaným cílem.

Pokud je cíl detekován, musíme na něj zaútočit a postupovat vpřed plnou rychlostí.

void go_forward() //Attack - pohyb vpřed

analogWrite(3, 0); //LEVÝ MOTOR

Pokud jsme v době útoku narazili na okraj kruhu a našli bílý pruh, pak musíme zastavit, vycouvat, otočit se a jet trochu dopředu, pak znovu pokračovat v hledání. Chcete-li to provést, volejte procedury v tomto pořadí:

go_stop(); // stop

zpoždění(100); //čekejte 10 ms

go_back(); // Vrátit zpět

zpoždění(1000); //1 sekunda.

Jdi doprava(); //Odbočit vpravo

zpoždění(300); //300 ms

postupujte dopředu(); //Posun vpřed

zpoždění(300); //300 ms

void go_stop() //stop

analogWrite(5, 255); //LEVÝ MOTOR

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

void go_back () //vrátit se zpět

analogWrite(3, 255); //LEVÝ MOTOR

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

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

void go_right () //vyhledání cíle nebo přesun doprava

analogWrite(3, 100); //LEVÝ MOTOR

analogWrite(5, 0); //LEVÝ MOTOR

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

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

void go_forward() //Útok na pohyb vpřed

analogWrite(3, 0); //LEVÝ MOTOR

analogWrite(5, 255); //LEVÝ MOTOR

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

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

Časové prodlevy mezi postupy určují dobu trvání motorů v různých směrech pohybu. Pokud ji zvýšíte nebo snížíte, můžete dosáhnout různé úhly otočení nebo vzdálenost, kterou robot urazí před provedením dalšího příkazu.

Celý náčrt ke stažení je na konci článku.

Předložený kodex samozřejmě není konečný ani nejlepší správná možnost, každý z vás má právo jej doplnit či opravit dle svých požadavků, protože obecnou podstatou článku je naučit začínající robotiky myslet logicky a systematicky, správně řešit úkoly s využitím všech dostupných zdrojů.

Archiv 1

Archiv 2 k článku "Program robota minisumo".

Máte-li nějaké dotazy, pište na FÓRUM nebo do Online chatu o robotice, probereme je!

Pozornost! Úplné nebo částečné kopírování materiálů bez povolení správy je zakázáno!

Ahoj! Chtěli byste sestavit robota, který není složitý na sestavení? Jste na správném místě! =) Právě na našich stránkách najdete podrobné články o postupném sestavení vašeho prvního robota, ale i mnoha dalších robotů a dokonce i pro soutěže.

Jsme velmi rádi, že vám naše články, začátečníkovi v robotice, pomohou zvládnout tuto nejzajímavější oblast a napumpovat vaše schopnosti tímto směrem. Chceme také poznamenat, že podle těchto článků my, vývojáři webu SERVODROID, vedeme kurzy v volný, uvolnit kroužky robotiky a moc rádi učíme a všem říkáme, co je BEAM robotika.

Pomozte našemu projektu! Zaregistrujte se na našem webu a přijďte na náš Online chat nebo fórum a podělte se o svá řemesla a pokroky - koneckonců je to vaše činnost, která přitahuje stále více pozornosti k robotice pro začátečníky - dívají se na váš úspěch a chtějí být stejně cool , a my opravdu Je hezké vidět, že vám vše klape. A když se něco nepovede, pomůžeme ;)

Sumo- jeden z nejvíce vzrušujících Soutěž robotů Lego Ev3. V této soutěži musí robot vytlačit soupeřova robota z kruhu, aniž by opustil samotný kruh.

Na samém začátku soutěže jsou roboti umístěni do středu kruhu, po stratumu jsou spuštěny programy a roboti musí čekat 3 sekundy, poté musí roboti dosáhnout hranice kruhu a teprve poté mají možnost zaútočit na nepřítele. Portál obsahuje schémata robotů pro Lego sumo a návod k sestavení

Pojďme si popsat Algoritmus a program sumo pro robota EV3

1 Akce.

Robot čeká 3 vteřiny, odjíždíme od středu kruhu k hranici, jedeme vpřed, točíme se, hledáme nepřítele, jedeme k nepříteli, pokud jedeme od hranice, tak jedeme zpět.

Nastavte čekání na 3 sekundy.

2 Akce. Jedeme zpět na hranice.


3 akce. Poté, co robot dojede k hranici, musí se pohnout vpřed. Pohyb vpřed.

4 Akce. Nastavíme nekonečnou smyčku. Robot bude útočit na nepřítele, dokud nebude vytlačen nebo dokud neskončí soutěžní čas.

Vložíme do něj rotační cyklus s ultrazvukovým senzorem. (můžete také použít infračervený senzor)


5 Akce. Jdeme vpřed, dokud barevný senzor neuvidí černou čáru, okraj kruhu.

6. Akce Po zhlédnutí hranic jedeme zpět.

Cvičení.

Zapište si odchod zpět sami pomocí lekce 1.

Ahoj Geektimes!

Úvod

Už dlouho víme, že roboti jsou naše budoucnost. Existuje mnoho odvětví robotiky. Vojenský rozvoj, sociální, zábavní a jen pracovní roboti.
Ale tentokrát chci jménem College týmu v MIREA říct o soutěžní složce, ale přesně o sumo robotech.

Něco málo o našem týmu

Existujeme od roku 2014. Vítězové a vítězové většiny soutěží Robofinist, Robofest, MIPT Spartakiáda a menších turnajů a jsme absolutními mistry Ruska pro roky 2016-2017 v nominaci mini-sumo.

Kdo vůbec jsou tito roboti sumo?

Zpočátku, když jsme se poprvé dozvěděli o takových soutěžích, byli zápasníci sumo vyrobeni hlavně z Lega. Ale to je dost špatný nápad, o tom později.

Na tento moment správný sumo zápasník je popsán velmi jednoduše: zcela autonomní kus železa na kolech, s mozkem a dvojicí senzorů, který podobný kus železa vyrazí z ringu.

Existují 4 typy:

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

Každý je jiný nejen navenek, ale i uvnitř.

Mega - největší a nejnebezpečnější roboti. Maximální váha je do 3 kg, možnost položit různé "přísavky", což u jiných robotů není povoleno.

Mini - příjemní, malí roboti do 500 gramů 10 x 10 cm.Nenáročné na pájení, snadné nastavení a sestavení. Jsou nejoblíbenější nominací v sumo.

Micro a nano - zmenšené mini kopie. Micro 5x5x5, nano 2,5x2,5x2,5. Obtížné pájení a sbírání dílů. Více populární než mega sumo.

Z čeho jsou vyrobeny?

Vraťme se k Legu. S největší pravděpodobností mnozí z vás zkusili něco udělat s programovatelným Lego konstruktorem nebo alespoň viděli, jak se to dělá. Na takové roboty 15 na 15 existuje dokonce samostatná nominace, ale je to strašně nudné a vhodné jen pro úplné začátečníky nebo malé robotiky. Oproti podomácku vyrobeným vzorkům tento ztrácí ve všem kromě složitosti montáže.

Nejprve to nízká rychlost. Za druhé, velikost je obrovská. Za třetí, nízká rychlost odezvy senzorů. A také samotný ovladač ponechává mnoho přání.

Více o montáži a balení

Sumo zápasníci, kteří soutěží, dělají na arduinu. Používají na něj textolitové desky, připájejí senzory, ovladač, driver atd. Široký výběr je i senzorů pro detekci nepřítele, ale vyplatí se použít infračervené nebo laserové, protože sonary jsou velmi pomalé a objemné. Aby se robot mohl pohybovat, jsou samozřejmě potřeba motory a kola. Můžete jich dát neomezený počet, ale praxe ukazuje, že robot nejlépe jezdí na dvou kolech umístěných vzadu. A robot samozřejmě nemůže žít bez kbelíku a háku. Kyblík je jen pouzdro, obal a ochrana desky a prvků. Nejčastěji ocel nebo železo. Háčky jsou vyrobeny z čepelí pro kancelářské nože, ale existují případy s nestandardním přístupem, například nabroušené dřevěné pravítko nebo vata, ale tento přístup je málo užitečný.

Nejtěžší (kromě programování) je navrhnout robota.

První etapa



Tomu se říká úplně první fáze – umístění motorů a senzorů. Také zde můžete pozorovat dva malé senzory před háčkem, jedná se tedy o senzory vlasce.

Používají se k detekci bílé čáry na dosahu, aby se zabránilo náhodnému vypadnutí z prstence, ale nejsou povinnou součástí a ve skutečnosti se nepoužívají příliš často. vysoké rychlostičasto nedovolí, aby se čas zastavil.

Druhá fáze



A zde je již použit ovladač, ovladač, spínače a konektor baterie.
Zbývá pouze vytisknout stopu a přenést ji na textolitovou desku a poté stopy vypracovat.

Takto to vypadá na hotové desce:

Hotová deska



Robot připraven ke spuštění:

Jak vidíte, není zde nic zvlášť složitého. O problémech níže.

Pojďme k programování

Nejjednodušší způsob je použít arduino nebo arduino kompatibilní ovladače. Také nám pomůže Arduino IDE. Podle standardní schéma robot má 5 senzorů. Státy tedy mohou být

Vylučujeme situaci, kdy boční senzory vidí nepřítele současně (protože to se nemůže stát, a pokud ano, pak došlo k poruše jednoho ze senzorů), stejně jako situaci, kdy boční a dva přední senzory dávají 0 (tj. viz), protože to také nemůže být, nebo je šance příliš malá.

Abychom se dostali k nepříteli, stačí nainstalovat kolíky, přivést napětí na motory a přečíst hodnoty senzoru:

Kód robota

// Nastavení pinů pro 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 motorům int pin_motor_left_forward=9; int pin_motor_left_back=6; int pin_motor_right_forward=3; int pin_motor_right_back=5; // Proměnné pro uložení výsledku dotazování senzorů int cl,cc,cr,l,r; // Funkce pro 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); ) // Funkce pohyb, přijímá rychlosti od 0 do 255 pro napájení každého motoru 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 jen vylepšit kód.

Důležité!
Senzory vrátí 1, pokud nic nevidí, a 0, pokud existuje překážka.

Po stažení kódu přes usb je robot připraven soutěžit.

Stojí za zvážení

Za prvé jsou to prvky. Senzory, které používáme (ostré 340), jsou poměrně vzácné nebo neexistují. Proto, pokud je to možné, musíte vzít hodně najednou nebo najít analog, který je vhodný z hlediska parametrů.

Za druhé, nemůžete způsobit žádné kritické poškození nepřátelskému robotovi nebo použít například magnety k sebrání. To nás mírně omezuje ve výběru prostředků pro boj.

Nezapomeňte také na kola. Oblouky, tenké a posuvné nebudou fungovat, jednoduše nebudete schopni manévrovat a nebude dostatečný moment síly. Určitě otestujte pneumatiky.

Při práci s motory myslete na to, že budou muset pracovat v maximální zátěži a poměrně často budou hořet.

Má také smysl vyrábět vyměnitelné baterie, protože. Robot se vybíjí poměrně rychle a nabíjení trvá dlouho.

Seznam potřebných nákupů:

1. Pájka, pájka, tavidlo (volitelné)
2. Textolitové desky (pro leptání je třeba zavřít všechny stopy, poté to celé dát na několik hodin do roztoku peroxid vodíku + kyselina citrónová + sůl a poté odtrhnout například papír, pod kterým byly stopy skrytý)
3. Ostré 340 senzory
4. Motory, vybírejte podle chuti, čím více otáček, tím lépe.
Vyplatí se vybrat jeden z těchto: polulu. (přidal)
5. Baterie (doporučuji vzít lithium polymer) + nabíjecí stanice
6. Klíč (spínací tlačítko, připájený na desku) a elektrické prvky (na obrázku je se stopou)
7. Řidič
8. Ovladač, pro začátek můžete zkusit Polulu A-Star 32u4 micro a nahrát tam arduino bootloader
9. Plech na tělo
10. Vyvrtejte otvory v desce
11. Spouštěcí a startovací modul
P.S. Pokud jsem něco přehlédl - napište, opravím.

Soutěž

Další závody se budou konat v Petrohradě, Robofinist, takže se na ně nyní usilovně připravujeme a pokud se chcete zúčastnit, musíte vše udělat jasně a rychle.

Tyto soutěže ale nejsou jediné, v Rusku jich je poměrně hodně, největší se konají v Moskvě. Přibližně jednou za měsíc nebo dva můžete zažít štěstí a soutěžit.

Takové soutěže v zahraničí nejsou neobvyklé a my se tam chceme také dostat. Zde je přibližná mapa soutěží po celém světě:

Opravdu doufáme, že robot sumo se bude vyvíjet pouze u nás a zveme všechny, aby se podíleli na vytvoření našeho robota. Vypadá to velmi epické, když od nějakého robota odlétají kusy.

Toto je konec našeho úvodního článku a přejeme vám všem úspěchy v robotice, rádi vás uvidíme na soutěžích!

1. Hlavní pravidla

1.1. Robot musí vytlačit protivníka z černé čáry (mimo hranice).

1.2. Po zahájení soutěže se musí roboti pohybovat směrem k sobě až do srážky.

1.3. Po srážce by se roboti měli pokusit o vzájemný kontakt.

1.4. Během soutěže by se členové týmu neměli dotýkat robotů.

1.5. Dva autonomní roboti jsou umístěni v kruhu (kulaté pole). Roboti se snaží vytlačit soupeře z ringu.

1.6. Robot, který vyhraje nejvíce kol, vyhrává zápas.

1.7. Při hře „každý s každým“ se má za to, že nejlepší robot vyhrál nejvíce zápasů.

1.8. Při velkém počtu účastníků je možné uspořádat pořadí podle „olympijského systému“ (pro odjezd).

2. Robot

2.1. Roboti musí být postaveni pouze z dílů LEGO Mindstorms.

2.2. Během celého kola:

Velikost robota by neměla přesáhnout 25x25x25cm.

Hmotnost robota nesmí přesáhnout 1 kg.

2.3. Robot, který podle názoru rozhodčích úmyslně poškodí jiné roboty nebo jinak poškodí povrch hřiště, bude po celou dobu soutěže diskvalifikován.

2.4. Při konstrukci robota je přísně zakázáno používat:

Lepidla.

2.5. Před zápasem jsou roboti zkontrolováni na rozměry a hmotnost.

2.6. Robot může mít množství programů, ze kterých si operátor může vybrat každé kolo.

2.7. Mezi zápasy je povoleno měnit design a programy robotů.

3. Pole

3.1. Bílý kruh o průměru 1 m s černým okrajem o tloušťce 5 cm.

3.2. V kruhu jsou startovní zóny robotů označeny červenými pruhy.

3.3. Červená tečka označuje střed kruhu.

3.4. Hřiště je umístěno na pódiu o výšce 16 mm.

4. Pořádání soutěží

4.1. Soutěže se skládají ze série zápasů. Zápas určí, který ze dvou zúčastněných robotů je nejsilnější. Zápas se skládá ze 3 kol po 30 sekundách. Zápas vyhrává robot, který vyhraje nejvíce kol. Soudce může využít dodatečné kolo k objasnění sporných situací.

4.2. Kola se konají po sobě.

4.3. Na začátku kola jsou roboti umístěni za červenými pruhy (ze středu kruhu) ve svých startovních oblastech, všechny části robota, které se dotýkají pole, musí být uvnitř startovního prostoru.

4.4. Na povel rozhodčího je dán signál ke spuštění robotů, přičemž operátoři robotů musí spustit program na robotech a do 5 sekund se vzdálit od hřiště o více než 1 metr. Za stejných 5 sekund musí roboti cestovat v přímé linii a vzájemně se srazit.

4.5. Pro začátečníky: Po srážce nemohou roboti manévrovat kolem kruhu.

4.6. Pro zkušené: Po srážce mohou roboti kolem ringu manévrovat, jak chtějí.

4.7. Pokud se roboti nesrazí do 5 sekund po začátku kola, je robot, kvůli kterému podle názoru rozhodčího nedojde ke kolizi, považován za poraženého kola. Pokud se roboti pohybují v přímé linii a nestihnou se do 5 sekund srazit, považuje se za poraženého v daném kole robot nejblíže k jeho startovní oblasti.

5. Pravidla výběru vítězů

5.1. Pokud se robot nepohybuje, aniž by byl v kontaktu s jiným robotem déle než 10 sekund, je považován za poraženého v kole.

5.2. Když se dotknete jakékoli části robota (i nepřipojené k robotovi) za černým okrajem, robot kolo prohrává.

5.3. Pokud na konci kola není žádný robot vytlačen z kruhu, pak je za vítěze kola považován robot nejblíže středu kruhu.

5.4. Pokud nelze výherce určit výše popsanými způsoby, rozhoduje o vítězství nebo opakování porotce soutěže.

6. Rozhodčí

6.1. Pořadatelé si vyhrazují právo na jakékoli změny pravidel soutěže, pokud tyto změny nezvýhodní některý z týmů.

6.2. Kontrolu a sčítání provádí sbor rozhodčích v souladu s výše uvedenými pravidly.

6.3. Rozhodčí mají plné pravomoci ve všech soutěžích; všichni účastníci se musí řídit jejich rozhodnutími.

6.4. V případě jakýchkoli námitek ohledně rozhodčího má tým právo se proti rozhodnutí rozhodčích ústně odvolat k organizačnímu výboru nejpozději do konce aktuálního kola.

6.5. Přehrání může být provedeno na základě rozhodnutí rozhodčích v případě, kdy robot nebyl schopen dokončit etapu kvůli vnějšímu rušení, nebo když došlo k poruše kvůli špatnému stavu hřiště nebo kvůli chybě způsobené porota.

6.6. Členové týmu a vedoucí nesmí zasahovat do akcí robota svého týmu ani robota soupeře, ať už fyzicky nebo na dálku. Zásah vede k okamžité diskvalifikaci.

6.7. Rozhodčí může ukončit zápas podle vlastního uvážení, pokud robot není schopen pokračovat v pohybu do 10 sekund.

12.2. Návrh robota pro soutěž "Sumo".

Základní chování robota v "sumo" velmi podobné chování robota v "Kegelring". Robot také potřebuje najít předmět uvnitř pole a vytlačit ho z kruhu. Rozdíly jako obvykle spočívají v detailech: nyní tento objekt zase hledá našeho robota a také touží jej co nejdříve vytlačit.

Přesto se zaměřme na náš cíl: jeden ze senzorů schopných detekovat objekty na dálku (infračervený nebo ultrazvukový) nám stále pomůže hledat protivníka a pomocí barevného senzoru včas určíme černý okraj pole. Proto vám k vytvoření a odladění programu robota sumo doporučujeme použít stejného robota, kterého jsme připravili pro lekci #11 – Kegelring.

Abychom ochránili senzor umístěný vpředu před interakcí s protivníkem, postavíme nárazník a připevníme jej na našeho robota. Níže jsou uvedeny podrobné pokyny ke stavbě pro domácí i vzdělávací Lego mindstorms EV3. Nebojte se experimentovat a přijít s vlastním designem.

Lego Mindstorms EV3 Home

Lego Mindstorms EV3 Education

Výsledný prvek upevníme na přední nosník našeho robota.

Lego Mindstorms EV3 Home

Lego Mindstorms EV3 Education

Náš tréninkový robot je připraven. Začněme vytvářet program sumo robota. Je skvělé, pokud máte možnost ladit program pomocí jiného robota! Pokud ne, pak je to v pořádku: jako protivníka můžete použít například rádiem řízený model auta nebo stejné kuželky od Kegelringu.

12.3. Vytvoření programu pro soutěž "Sumo".

První myšlenka, která vás napadne, je použít program "Kegelring" s některými kosmetickými úpravami. Ve skutečnosti jsou algoritmy chování robota v "Kegelring" a dovnitř "sumo" velmi podobný. Realizují hledání předmětu a jeho vytlačení z terénu. Můžete si stáhnout program pro zápasníka sumo "Kegelring", ale takový sumo zápasník nebude fungovat příliš efektivně. Poznatky získané v předchozí lekci se nám však nyní budou hodit.

Je čas nahrát náš projekt do programovacího prostředí "lekce-2", vytvořte v něm nový program lekce-12 a připojte robota k programovacímu prostředí.

Model chování zápasníka sumo lze rozdělit na dvě části: hledat protivníka a soupeřův útok. Začněme s implementací první části - hledat protivníka.

Pojďme si podrobně popsat sekvenci akcí našeho robota, když je na hřišti detekován protivník:

  1. otáčet se kolem své osy, dokud senzor umístěný vpředu nedetekuje soupeře;
  2. zastavit před soupeřem.

Tato sekvence akcí zcela opakuje robotův vyhledávací algoritmus pro kuželky "Kegelring", ale protože vzdálenost mezi roboty v "sumo" může překročit vzdálenost od robota k pinu, pak musíme pro použitý senzor zvolit jinou prahovou hodnotu.

Postavte soupeře na pole proti sobě, jak je znázorněno na obrázku níže.

Tato pozice prakticky odpovídá maximální vzdálenosti mezi roboty od sebe během soutěže, takže jako prahovou hodnotu lze brát aktuální odečet senzoru, který měří vzdálenost k soupeři. Důležité: protože prahová hodnota bude dostatečně velká, je nutné, aby mimo pole ve vzdálenosti asi 1 m během provozu robota nebyly také žádné cizí předměty, které by mohly narušovat vyhledávání.

Na "Hardwarová stránka", který se nachází v pravém dolním rohu programovacího prostředí, vyberte záložku "Pohled na port" (obr. 1, 2 poz. 1) a odečtěte hodnotu senzoru, který určuje vzdálenost k protivníkovi, nastavením vhodného režimu zobrazení hodnot.

V našem případě je ultrazvukový senzor v režimu "Vzdálenost v centimetrech" ukazuje hodnotu - 56.1 (obr. 1 poz. 2) 57 .

Rýže. jeden

Infračervený senzor v režimu "Přiblížení" ukazuje hodnotu - 68 (obr. 2 poz. 2). Pro prahovou hodnotu vezmeme číslo - 70 .

Rýže. 2

Analogicky s "Kegelring" můžeme robota naprogramovat tak, aby našel protivníka, jen abychom se trochu vzdálili od předchozí lekce, změníme směr otáčení robota na opačný:

ultrazvukový senzor

  1. "Zelená paleta" "Zapnout" "B" nastavit rovno -30 , hodnota výkonu pro port "C" nastavit rovno 30 (Obr. 3 poz. 1).
  2. Pro hledání protivníka použijte programový blok v režimu "Ultrazvukový senzor - Porovnání - Vzdálenost v centimetrech" 57 (obr. 3 poz. 2).
  3. vypněte motory (Obr. 3 poz. 3).

Rýže. 3

infračervený senzor

  1. Aby se robot otáčel kolem své osy, používáme programový blok "Nezávislé ovládání motoru" "Zelená paleta", Nastavte režim blokování "Zapnout", hodnota výkonu pro port "B" nastavit rovno -30 , hodnota výkonu pro port "C" nastavit rovno 30 (obr. 4 poz. 1).
  2. K hledání protivníka využíváme programový blok "Čekání" "Oranžová paleta" v režimu "Infračervený senzor - Porovnání - Přiblížení", s prahovou hodnotou činnosti snímače rovna 70 (obr. 4 poz. 2).
  3. Poté, co je robot naproti soupeři, pomocí programového bloku "Nezávislé ovládání motoru" "Zelená paleta" vypněte motory (obr. 4 poz. 3).

Rýže. čtyři

Ve fázi ladění tohoto algoritmu budete muset vybrat hodnoty "Napájení" motory "B" a "C" stejně jako prahovou hodnotu senzoru, abyste dosáhli přesné detekce od vašeho robota a zastavili se přímo před protivníkem. Teprve poté bude možné přistoupit k softwarové implementaci algoritmu útoku.

Pokud se hledá protivník v "sumo" velmi podobné hledání kuželek v "Kegelring", pak tlačení soupeře má důležitý rozdíl! Zahájení útoku, první věc, kterou musíte udělat, je spěchat přímo na maximální výkon motorů směrem k detekovanému protivníkovi a zkontrolovat detekci hranice prstence pomocí barevného senzoru. Ale náš soupeř se také může pohnout! Proto je dost možné, že soupeř pod vedením našeho útoku ustoupí. V tomto případě se náš robot, který minul, přesune směrem k hranici kruhu a ztratí soupeře a drahocenný čas.

Proto musíme analyzovat oba senzory během přímého pohybu vpřed a zastavit útok robota ztratí soupeře NEBO robot dosáhne hranice prstenu. Proto musíme přestat používat programový blok "Čekání" "Oranžová paleta" a nezávisle v cyklu přijímat a zpracovávat údaje ze dvou senzorů.

Pojďme k postupné implementaci algoritmu soupeřovy útoky: za tímto účelem vytvoříme v projektu dočasný program lekce-12-1 a začněte jej plnit programovými bloky.

  1. Vezměme si blok programu "Cyklus" "Oranžová paleta".
  2. Uvnitř bloku "Cyklus" vložte programový blok "Nezávislé ovládání motoru" "Zelená paleta" "Zapnout" (Obr. 5 poz. 1), výkon motoru "B" a "C" nastavit na maximální hodnotu - 100 (obr. 5 poz. 2).

Rýže. 5

  1. Za blokem "Nezávislé ovládání motoru" umístěte blok programu. Nastavte blokový provozní režim na "Porovnání - Intenzita odraženého světla" (obr. 6)

Rýže. 6

V tomto režimu programový blok "Barevný senzor" "Žlutá paleta" vizuálně velmi podobný softwarovému bloku "Čekání" "Oranžová paleta" v režimu "Barevný senzor - Porovnání - Intenzita odraženého světla". Ale na rozdíl od bloku "Očekávání", tento blok programu nečeká na podmínku určenou parametry "Typ srovnání" (obr. 7 poz. 1) a "Hodnota prahu" (obr. 7 poz. 2) a okamžitě poskytne booleovskou hodnotu ( "Skutečný" nebo "Lhát") ve výstupním parametru a naměřená hodnota ve výstupním parametru "Osvětlení" (obr. 7 poz. 4).

Možnosti "Typ srovnání" a "Práh" na Rýže. 7 poz. 12 "Výsledek porovnání" (obr. 7 poz. 3) dal booleovskou hodnotu "Skutečný" když snímač barev překročí černý okraj prstenu.

Rýže. 7

  1. V případě použití ultrazvukového senzoru za jednotkou "Barevný senzor" nainstalovat softwarový blok "Ultrazvukový senzor" "Žlutá paleta". Nastavte blokový provozní režim na "Porovnání - Vzdálenost v centimetrech" (obr. 8 poz. 1). Parametr "Typ srovnání" (obr. 8 poz. 2), parametr "Hodnota prahu" (obr. 8 poz. 3) nastavit tak, že výstupní parametr "Výsledek porovnání" (obr. 8 poz. 4) dal booleovskou hodnotu "Skutečný"

Rýže. osm

V případě použití infračerveného senzoru za jednotkou "Barevný senzor" nainstalovat softwarový blok "Infračervený senzor" "Žlutá paleta". Nastavte blokový provozní režim na "Porovnání - Aproximace" (obr. 9 poz. 1). Parametr "Typ srovnání" (obr. 9 poz. 2), parametr "Hodnota prahu" (obr. 9 poz. 3) nastavit tak, že výstupní parametr "Výsledek porovnání" (obr. 9 poz. 4) dal booleovskou hodnotu "Skutečný" v případě ztráty zraku robotem soupeře.

Rýže. 9

Pojďme ještě jednou analyzovat mezikód našeho útočného algoritmu: zapnuli jsme motory na maximální výkon a jeli vpřed, neustále v cyklu dotazujeme senzory. Pokud náš robot překročí černou čáru okraje prstence, pak hodnotu výstupního parametru "Výsledek porovnání" "Color Sensor" nabere význam "Skutečný". Pokud náš robot prohraje soupeře, pak hodnota výstupního parametru "Výsledek srovnání" senzor sledující protivníka také převezme hodnotu "Skutečný". V každém z těchto případů bychom měli zastavit útok ukončením naší smyčky. K tomu nám pomůže programový blok. Pojďme se s tímto blokem seznámit podrobněji: programový blok "Logické operace" navržený k provádění operací s logickými daty (obr. 10).

Rýže. deset

Zvolený režim programového bloku "Logické operace" "Červená paleta" definuje jednu ze čtyř operací na booleovských datech: "A (A)", "NEBO (NEBO)", "XOR" a "Výjimka (NE)". D va vstupní parametry "A" a "b"(pro provoz "Výjimka (NE)"- jeden vstupní parametr "A") předá vstupní hodnoty do programového bloku a výslednou hodnotu vytvoří výstupní parametr "Výsledek". Pokud jste se s logickými operacemi dříve nesetkali, můžete se se základními znalostmi seznámit v přiložené nápovědě pod spoilerem.

Booleovské operace

Logické operace se provádějí pouze s logickými hodnotami (daty), což je také logická hodnota. Booleovská hodnota může být v jednom ze dvou stavů: "Skutečný" nebo "Lhát". Logické operace se velmi často zapisují v tabulkové formě jako: "vstupní parametr 1" - "vstupní parametr 2" = "výsledek". Logické operace realizované programovým blokem "Logické operace" "Červená paleta" v tabulkové formě lze zapsat takto:

Logická operace "AND (AND)"

Výsledek logické operace "A (A)" tam bude hodnota "Skutečný" "Skutečný" "Lhát".

"A" úkon "b" výsledek
"Lhát" "A (A)" "Lhát" = "Lhát"
"Lhát" "A (A)" "Skutečný" = "Lhát"
"Skutečný" "A (A)" "Lhát" = "Lhát"
"Skutečný" "A (A)" "Skutečný" = "Skutečný"

Logická operace "OR (OR)"

Výsledek logické operace "NEBO (NEBO)" tam bude hodnota "Lhát" pouze pokud jsou obě vstupní hodnoty stejné "Lhát", ve všech ostatních případech je hodnota operace "Skutečný".

"A" úkon "b" výsledek
"Lhát" "NEBO (NEBO)" "Lhát" = "Lhát"
"Lhát" "NEBO (NEBO)" "Skutečný" = "Skutečný"
"Skutečný" "NEBO (NEBO)" "Lhát" = "Skutečný"
"Skutečný" "NEBO (NEBO)" "Skutečný" = "Skutečný"

Logická operace "XOR"

Výsledek logické operace "XOR" tam bude hodnota "Skutečný" pouze pokud je jedna ze vstupních hodnot stejná "Skutečný", ve všech ostatních případech je hodnota operace "Lhát".

"A" úkon "b" výsledek
"Lhát" "XOR" "Lhát" = "Lhát"
"Lhát" "XOR" "Skutečný" = "Skutečný"
"Skutečný" "XOR" "Lhát" = "Skutečný"
"Skutečný" "XOR" "Skutečný" = "Lhát"

Logická operace "Výjimka (NOT)"

Booleovská operace "Výjimka (NE)" platí pouze pro jednu vstupní hodnotu. Výsledek logické operace "Výjimka (NE)" nad vstupní hodnotou je opačná hodnota.

  1. Za programovacím blokem "Ultrazvukový senzor" nebo "Infračervený senzor" vložte programový blok "Logické operace" "Červená paleta".
  • výstupní parametr "Výsledek srovnání" programový blok "Snímač barev" (obr. 11, 12 poz. 1) "A" programový blok "Logické operace" (obr. 11, 12 poz. 4).
  • výstupní parametr "Výsledek srovnání" programový blok "Ultrazvukový (infračervený) senzor" (obr. 11, 12 poz. 2) spojit se vstupním parametrem "b" programový blok "Logické operace" (obr. 11, 12 poz. 5).
  • Provozní režim programového bloku "Logické operace" stanovené v "NEBO (NEBO)" (obr. 11, 12 poz. 3). V tomto případě bude mít hodnotu výsledek logické operace "Skutečný", pouze pokud je splněna jedna z podmínek: barevný senzor překročil černou čáru, robot ztratil svého soupeře.
  • Nastavením režimu programového bloku "Cyklus" do smyslu "Booleovská hodnota" (obr. 11, 12 poz. 7), výstupní parametr "Výsledek" programový blok "Logické operace" (obr. 11, 12 poz. 6) spojit se vstupním parametrem "Dokud nebude pravda" programový blok "Cyklus" (obr. 11, 12 poz. 8). Tato nastavení dokončí cyklus, když "Skutečný" výsledek logické operace.

Rýže. jedenáct


Rýže. 12

Pojďme otestovat výsledný algoritmus útoku! K tomu umístíme našeho robota dovnitř ringu, naopak nainstalujeme nehybného protivníka a spustíme útočný program k provedení. Náš robot musí s jistotou vytlačit soupeře z ringu a zastavit se nad černým okrajem pole. Stalo? Náš sumoista tedy správně ovládá hranici prstenu.

Proveďme druhý experiment: opět nainstalujeme nehybného protivníka před robota a spustíme útočný program. Když se náš robot vrhne k soupeři a dostane se dostatečně blízko, ostře odstraníme soupeře na stranu. Náš robot se po ztrátě soupeře musí zastavit.

Abychom to shrnuli: implementovali jsme a úspěšně otestovali algoritmus pro vyhledávání protivníka a také byl testován algoritmus útoku.

Dokončený program zápasníka sumo musí postupně hledat soupeře v nekonečné smyčce a poté na něj zaútočit. Bylo by možné spojit obě části našeho programu, nebýt jednoho malého doplnění. Pokud se náš robot zastavil nad hranicí prstence, pak by se před zahájením hledání měl robot, poté co trochu popošel, vrátit dovnitř prstenu. Náš útočný program doplníme následujícím kódem: mimo útočnou smyčku použijeme programový blok " Přepínač "Oranžová paleta". Blokový provozní režim "Přepínač" stanovené v "Barevný senzor - Porovnání - Intenzita odraženého světla". Možnosti "Typ srovnání" a "Práh" nastavit stejným způsobem jako dříve použitý v programovém bloku "Barevný senzor" "Žlutá paleta". Pokud se tedy náš robot zastavil nad černou čarou, pak se provedení přenese do horního kontejneru programového bloku "Přepínač". Právě do horního kontejneru umístíme blok programu "Řízení" "Zelená paleta" s nastavením parametrů, které způsobí, že se robot vrátí o jednu otáčku motorů zpět. Do spodního kontejneru programového bloku "Přepínač" umístěte programový blok, který vypne motory (obr. 13). Po opětovném otestování útočného algoritmu se ujistíme, že poté, co sumo robot vytlačil soupeře z ringu, se vrátil trochu zpět.

Rýže. 13

Nyní můžete dokončit vývoj programu pro robota sumo. Uvnitř nekonečné smyčky postupně vnořujeme program pro hledání protivníka a poté program pro útok na protivníka. Zkuste tuto práci udělat sami, aniž byste nahlédli do řešení.

Závěr:

Program, o kterém jsme s vámi diskutovali v této lekci, implementuje pouze jeden algoritmus přímé síly pro chování sumo robota. Z toho vyplývá, že v přímé mocenské konfrontaci musí robot zcela jistě porazit svého protivníka. Ale náš tréninkový robot samozřejmě není nic jako svalnatý zápasník sumo. Aby bylo možné v této soutěži s jistotou vystupovat, je nutné věnovat největší pozornost především designu robota, vytvořit pevnou, chráněnou platformu, zvýšit trakci s povrchem kruhu pomocí přídavná hnací kola nebo pásy. Populární video hosting Youtube.com NA ZNAMENÍ "roboti sumo lego" můžete najít mnoho videí ze skutečných soutěží robotů, ze kterých jistě načerpáte zajímavé nápady pro realizaci ve svých vlastních návrzích.

Hlavním cílem této lekce je na praktickém příkladu ukázat způsob průběžného zpracování odečtů z dvojice senzorů. Lze náš program zlepšit? Nepochybně! Například pomocí programového bloku "Náhodná hodnota" "Červená paleta", změňte algoritmus pro nalezení protivníka tak, abyste nastavili náhodné otáčení robota doleva nebo doprava, čímž protivníka dezorientovali. Pokuste se sami zabudovat tento dodatečný kód do našeho programu. Zamyslete se také nad tím, jaké změny musíte v programu provést, v případě soutěže o černý kroužek s bílým okrajem. Můžete mít své vlastní nápady na zlepšení: podělte se o ně v komentářích k lekci!