Soutěžní spojení: Bod zlomu - C++
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.
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í:
-
Otevřete ukázkový projekt Clawbot (pohon, 2 motory, bez gyroskopu).

- Při programování kamerového senzoru ( ) použijte jako referenci ukázkový projekt Detekce objektů (Vision).
-
Přidejte vizuální senzor do konfigurace Clawbota (pohon, 2 motory, bez gyroskopu) a poté nakonfigurujte vizuální senzor pro detekci červených a modrých objektů. Kliknětepro více informací.

- Naprogramujte Clawbota tak, aby se pohyboval směrem k detekovanému objektu. Clawbota lze dokonce naprogramovat tak, aby zvedl ruku, jako by přepínal vlajku!
- Stáhněte a spusťte (v jazyceC++) projekt, abyste zjistili, zda vizuální senzor dokáže detekovat žluté objekty, jako například žluté míčky ve hře VRC Turning Point. Pokud dokáže vizuální senzor detekovat objekty, pohybuje se robot na základě těchto detekovaných objektů? Pro pomoc si prohlédněte výukové video Stažení a spuštění projektu.
- Pokud to čas dovolí, připravte herní pole podobné hřišti Turning Point. Procvičte si používání vizuální senzoru, aby se robot mohl pohybovat a získávat body!
Podívejte se na ukázkové řešení níže:
// Zahrnutí knihovny V5
#include "vex.h"
// Umožňuje snadnější použití knihovny VEX
pomocí jmenného prostoru vex;
event checkRed = event();
event checkBlue = event();
void hasRedCallback() {
Brain.Screen.setFont(mono40);
Brain.Screen.clearLine(1);
Brain.Screen.setCursor(1, 1);
Vision5.takeSnapshot(Vision5__REDBOX);
if (Vision5.objectCount > 0) {
ArmMotor.spinFor(vpřed, 300, stupňů);
ClawMotor.spinFor(vpřed, 100, stupňů);
Drivetrain.driveFor(vpřed, 12, palců);
ArmMotor.spinFor(reverse, 300, stupňů);
ClawMotor.spinFor(vzad, 100, stupňů);
}
else {
Brain.Screen.print("Žádný červený objekt")
}
}
void hasBlueCallback() {
Brain.Screen.setFont(mono40);
Brain.Screen.clearLine(3);
Brain.Screen.setCursor(3, 1);
Vision5.takeSnapshot(Vision5__BLUEBOX);
if (Vision5.objectCount > 0) {
ArmMotor.spinFor(vpřed, 90, stupňů);
ClawMotor.spinFor(vpřed, 90, stupňů);
Drivetrain.driveFor(vpřed, 12, palců);
ArmMotor.spinFor(vzad, 90, stupňů);
ClawMotor.spinFor(vzad, 90, stupňů);
}
else {
Brain.Screen.print("Žádný modrý objekt")
}
}
int main() {
// Inicializace konfigurace robota. NEODSTRAŇUJTE!
vexcodeInit();
// registrace obslužných rutin událostí
checkRed(hasRedCallback);
checkBlue(hasBlueCallback);
// neustále kontroluje nová data ze senzorů
while (true) {
checkRed.broadcastAndWait();
checkBlue.broadcastAndWait();
wait(0.2, sekundy);
}
}