Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Než začneme
Co je sumo robot?
Jedná se o samočinně ovládané roboty se specifickými rozměry a vlastnostmi a je také navržen v nepřátelských tvarech, které ho kvalifikují k účasti na soutěžích a soutěžích s jinými roboty.
Název „sumo“pochází ze starého japonského sportu, což jsou dva soupeři bojující v ringu, z nichž se každý snaží vytlačit druhého soupeře, a právě to by měli roboti dělat také v robotických soutěžích sumo, kde dva roboti umístěni v ringu a navzájem se snaží vytlačit svého protivníka.
Idea:
Postavte robota s určitými specifikacemi a úměrně zákonům dané soutěže (Sumo), tento robot musí být v přesných rozměrech, aby mohl bojovat a přežít, aby nebyl žádným způsobem vyškrtnut z kruhu.
Podívejme se tedy na zákony o soutěži robotů The Sumo:
Vysvětlím některé důležité role, které byste měli při budování vlastního SUMO zvážit, ale také vám to může pomoci Představte si a inovujte svůj vlastní Nápad, aniž byste se pouštěli do podrobností.
1. Rozměry: maximální šířka 20 cm, maximální délka 20 cm, výška není uvedena.
2. Tvar: tvar robota může být po zahájení závodu proměnlivý, ale bez neoddělitelných součástí, které by zůstaly jedním centrálním objektem.
3. Hmotnost: nepřesahuje 3 kg.
4. Robot musí být samočinný.
Krok 1: Součásti
1 Arduino Ano3
2 DC motor
1 L298N Dual H Bridge pro Arduino
1 Ultrazvukový senzor
2 IR TCRT5000
1 baterie 9v
Baterie AA 4 * 1,5 V kusy + bateriový dům
4 robotická kola
propojovací vodiče
Krok 2: Použití pro každou komponentu
Nyní máme požadované komponenty, pojďme se tedy podrobně podívat, k čemu slouží …
1- Arduino Ano3
Je to základní deska, která ovládá všechny části a propojuje je
2- stejnosměrný motor
Které pomáhají robotovi manévrovat a pohybovat se v kruhu SOUTĚŽENÍ
4- L298N Dual H Bridge pro Arduino
Jedná se o malý panel, který poskytuje motorům konstantní napětí a také podporu desky Arduino s dobrou kontrolou pohybu a napětí.
5- Ultrazvukový senzor
Ultrazvukový senzor slouží k lokalizaci soupeřova robota a je obvykle umístěn v horní části robota.
6- IR TCRT5000
Jak jsme již zmínili, soutěžní prsten navržený v určité velikosti a má dvě barvy, výplň je černá a rámeček je bílý. Soutěžící by neměl jít ven. Proto používáme IR senzor, abychom se ujistili, že robot nebude mimo kruh. Tento senzor má schopnost rozlišovat barvy prstenu).
7- Baterie 9v
Podporuje hlavní desku (Arduino) s důležitým napětím.
8- baterie AA 4 * 1,5 V kusy + bateriový dům
Podporuje dva motory (stejnosměrný motor) důležitým napětím a musí být odděleny, aby na kola poskytla plnou sílu.
9- Propojovací vodiče
Krok 3: Design
Vytvořil jsem dva návrhy robotů sumo pomocí Google 3D sketch-up, protože rád vytvářím papírové modely svých robotů, než vystřihnu díly z akrylu na laserové řezačce. Abychom ověřili, že všechny části do sebe správně zapadají, je důležité, aby byly papírové modely vytištěny v přesné velikosti výkresů.
A beru v úvahu konkrétní měření se zákony o hospodářské soutěži, zkuste tedy přemýšlet kreativněji a vytvořit si vlastní model.
Abyste byli citlivější na hmotnost robota v předloženém nebo pak vložte baterie do přední části robota s předním štítem pod úhlem 45 stupňů k formě robota.
Stáhněte si design 1 odtud
Stáhněte si design 2 odtud
Můžete si také stáhnout šablonu papírového modelu
Otevřete soubor PDF pomocí programu Adobe Acrobat Reader (doporučený software)
Krok 4: Hrajte strategii
Jak jsme již zmínili dříve, robot musí mít vlastní schopnost sebeovládání, takže nám dává možnost naprogramovat jej více než jedním způsobem, v závislosti na tom, jak chcete, aby robot hrál na kruhu stejně jako jakýkoli soupeř v skutečná touha vyhrát hru.
Strategie hraní (1):
· Robota kolem sebe budeme nepřetržitě dělat.
· Robot vždy měří vzdálenost nepřetržitě během otáčení.
· Pokud je naměřená vzdálenost soupeře menší než (například 10 cm), znamená to, že soupeř je přímo před robotem.
· Robot se musí přestat otáčet a poté zahájit útok (rychle se pohybovat vpřed plnou silou).
· Robot musí vždy odebírat údaje z IR senzorů, aby si byl jistý, že jsme nepřekročili hranici prstence.
· Pokud je čtení infračervené přítomnosti bílé barvy, musí pohybovat robotem přímo v opačném směru senzoru (například: Pokud se přední senzor, který poskytl indikaci bílé barvy robota, pohybuje zpět)!
Strategie hraní (2):
· Na startu robot změřte vzdálenost vpředu.
· Robot se vrátí zpět o stejnou měřenou vzdálenost.
· Robot se přestane otáčet a poté začne náhle útočit (pohyb vpřed plnou silou).
· V případě soupeře se robot musí otočit o 45 stupňů, aby přežil, pokud vypadne z kruhu.
· Robot musí vždy odebírat údaje z IR senzorů, aby si byl jistý, že jsme nepřekročili hranici prstence.
· Pokud je čtení infračervené přítomnosti bílé barvy, musí pohybovat robotem přímo v opačném směru senzoru (například: Pokud se přední senzor, který poskytl indikaci bílé barvy robota, pohybuje zpět)!
Krok 5: Programování
prosím zkontrolujte obvod a kód
* Aktualizace 26. 3. 2019
Nejprve si stáhněte knihovnu Ultrazvuku a nainstalujte ji:
github.com/ErickSimoes/Ultrasonic/blob/mas…
/*
od Ahmeda Azouze
www.instructables.com/id/How-to-Make-Ardu…
Nejprve si stáhněte lib zde
github.com/ErickSimoes/Ultrasonic/blob/ma…
*/
#include Ultrasonic.h
Ultrazvukové ultrazvukové (4, 3);
const int IN1 = 5;
const int IN2 = 6; const int IN3 = 9; const int IN4 = 10; #define IR_sensor_front A0 // přední senzor #define IR_sensor_back A1 // zadní senzor int vzdálenost;
neplatné nastavení ()
{Serial.begin (9600); zpoždění (5000); // podle rolí kompato sumo} void loop () {int IR_front = analogRead (IR_sensor_front); int IR_back = analogRead (IR_sensor_back); vzdálenost = ultrasonic.read (); OTOČIT (200); // spustit rotete if (vzdálenost <20) {Stop (); while (vzdálenost 650 || IR_back> 650) {break;} zpoždění (10); } if (IR_front <650) // <650 means white line {Stop (); zpoždění (50); ZPĚT (255); zpoždění (500); } if (IR_back <650) // {Stop (); zpoždění (50); VPŘED (255); zpoždění (500); } /* ----------- ladění ---------------- Serial.print (ultrasonic. Ranging (CM)); Serial.println ("cm"); Serial.println ("IR front:"); Serial.println (IR_front); Serial.println ("IR zpět:"); Serial.println (IR_back); */
} //--------------------------------------------
void FORWARD (int Speed) {// Když chceme nechat Motor To Move vpřed, // stačí zrušit tuto část v sekci smyčky. analogWrite (IN1, rychlost); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, rychlost); } // -------------------------------------------- neplatné BACKWARD (int Speed) {// Když chceme nechat Motor To, aby se pohyboval vpřed, // stačí zrušit tuto část v sekci smyčky. analogWrite (IN1, 0); analogWrite (IN2, rychlost); analogWrite (IN3, rychlost); analogWrite (IN4, 0); } // -------------------------------------------- neplatné OTOČIT (int Speed) {// Když chceme nechat Motor to Rotate, // stačí zrušit tuto část v sekci smyčky. analogWrite (IN1, rychlost); analogWrite (IN2, 0); analogWrite (IN3, rychlost); analogWrite (IN4, 0); } // -------------------------------------------- neplatné Zastavit () {// Když chceme zastavit Motor, // prostě tuto část v sekci smyčky zrušíme. analogWrite (IN1, 0); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, 0); }