Skip to main content

Soutěžní spojení: Bod obratu - Python

Soutěžní pole v robotice Turning Point VEX s herními prvky a bodovacími zónami ve startovních pozicích pro začátek zápasu. Podél zadní stěny je síť s řadou výklopných vlaječek před ní.
VRC 2018-2019 Turning Point Field

Schopnosti robotů

Hra Turning Point ze soutěže VEX Robotics Competition z let 2018–2019 vyžadovala od hráčů mimo jiné přepínání vlaječek. Celkem bylo devět vlajek: tři spodní, které mohl robot přepínat, a šest horních vlajek, které bylo možné přepínat pouze údery herními figurkami. Soutěžní týmy musely vymyslet způsob, jak zasáhnout vyšší vlajky pomocí vrhače míčů. Dovedete si představit, že programování robota tak, aby zasahoval vlajky pomocí figurek na hrací ploše měřením, nemusí být vždy přesné. Pokud robot během autonomního období udělá jednu špatnou odbočku, existuje možnost, že žádný z praporků nebude zasažen, protože výpočty budou chybné. Podobně i v případě výzvy Řidičské dovednosti může být pro týmy obtížné ručně zarovnat robota dostatečně do správné polohy, aby mohl správně odpálit míč. Zkušené týmy by tedy naprogramovaly robota pomocí vizuální senzoru k detekci vlaječek a následnému správnému zarovnání robota, aby mohl pořizovat přesné záběry.

Ikona Rozšiřte si učení Rozšiřte si své znalosti

Pro rozšíření této aktivity požádejte studenty, aby navrhli a načrtli projekt, v němž se robot bude pohybovat směrem k detekovaným žlutým objektům, které by mohli potenciálně použít v této soutěžní hře!
Požádejte studenty, aby udělali následující:

Podívejte se na ukázkové řešení níže:

# Knihovna importuje
z vex import *

# Začátek kódu projektu

check_yellow = Event()

def check_yellow_callback():
    brain.screen.set_font(FontType.MONO40)
    brain.screen.clear_row(3)
    brain.screen.set_cursor(3, 1)
    vision_5_objects = vision_5.take_snapshot(vision_5__YELLOWBOX)

    if (vision_5_objects):
        arm_motor.spin_for(FORWARD, 300, DEGREES)
        claw_motor.spin_for(FORWARD, 100, DEGREES)
        drivetrain.drive_for(FORWARD, 12, INCHES)
        arm_motor.spin_for(REVERSE, 300, DEGREES)
        claw_motor.spin_for(REVERSE, 100, DEGREES)
    
    else:
        brain.screen.print("Žádný žlutý objekt")

# obslužné rutiny systémových událostí
check_yellow(check_yellow_callback)

# krátké zpoždění pro zajištění připravenosti obslužných rutin událostí k použití
wait(15, MSEC)

# neustále kontroluje nová data ze senzorů
while True:
    check_blue.broadcast_and_wait()
    wait(105, MSEC)