Výzva pro balíček Dash - C++

Výzva k balíčku Dash
V této výzvě naprogramujete svého robota tak, aby co nejrychleji zvedl balíky a dovezl je na nakládací rampu!
Pravidla výzvy:
- Robot musí zahájit výzvu ve startovní zóně.
- Balíčky (hliníkové plechovky) se mohou dotknout pouze knih, drápu Clawbota a nakládací rampy.
- Pokud je balík shozen na pozemku skladu, musíte resetovat pole a začít znovu.
- Čas pro každý běh začíná, jakmile se robot pohne.
- Čas se zastaví, jakmile je poslední balík vhozen do nakládací rampy.
- Při resetování pole by se vše mělo vrátit na přesné místo, odkud začalo.
- Bavte se!
Tipy pro učitele
-
Zvyšte zapojení tím, že vytvoříte příběh nebo účel skladu! O jaký druh skladu se jedná? Jaké typy balíků se nacházejí ve skladu? Komu patří sklad?
-
Umožněte studentům vytvářet různé trasy nebo strategie, které jim umožní efektivněji přepravovat plechovky.
-
Porovnejte nejen časy potřebné k dokončení, abyste určili vítěze této výzvy (pokud ji organizujete jako soutěžní), ale také použité navigační techniky, aby studenti mohli zvážit řešení ostatních týmů.
Řešení
–
pro učitele – sada nástrojů
Programovací rubriku pro hodnocení studentů naleznete zde.
Následuje jedno možné řešení problému. Řešení se mohou lišit v závislosti na počáteční poloze robota a zvolené dráze. Existuje několik cest, které mohou vést k přesunu všech balíčků.
int main() {
// Inicializace konfigurace robota. NEODSTRAŇUJTE!
vexcodeInit();
// Bezpečné spuštění motoru Claw a vyzvednutí prvního balíku
ClawMotor.setTimeout(2, sekundy);
Drivetrain.driveFor(vpřed, 900, mm);
Drivetrain.turnFor(vpravo, 90, stupně);
ArmMotor.spinFor(vpřed, 315, stupně);
ClawMotor.spinFor(vzad, 180, stupně);
Drivetrain.driveFor(vpřed, 215, mm);
ClawMotor.spinFor(vpřed, 120, stupně);
// Jeďte k nakládací rampě pro vyložení prvního balíku
Drivetrain.driveFor(vzad, 110, mm);
Drivetrain.turnFor(vpravo, 90, stupně);
Drivetrain.driveFor(vpřed, 920, mm);
Drivetrain.turnFor(vlevo, 90, stupně);
Drivetrain.driveFor(vpřed, 2300, mm);
Drivetrain.turnFor(vlevo, 90, stupňů);
Drivetrain.driveFor(vpřed, 750, mm);
ArmMotor.spinFor(vzad, 315, stupňů);
ClawMotor.spinFor(vzad, 120, stupňů);
// Vyzvednutí druhého balíčku
Drivetrain.driveFor(vzad, 200, mm);
Drivetrain.turnFor(vlevo, 170, stupňů);
Drivetrain.driveFor(vpřed, 900, mm);
Drivetrain.turnFor(vpravo, 90, stupňů);
Drivetrain.driveFor(vpřed, 2300, mm);
ArmMotor.spinFor(vpřed, 315, stupňů);
ClawMotor.spinFor(vpřed, 120, stupňů);
// Jeďte k nakládací rampě a vyložte druhý balík
Drivetrain.driveFor(forward, 900, mm);
Drivetrain.turnFor(right, 90, degrees);
Drivetrain.driveFor(forward, 960, mm);
ArmMotor.spinFor(reverse, 315, degrees);
ClawMotor.spinFor(reverse, 120, degrees);
// Vyzvedněte třetí balík
Drivetrain.driveFor(reverse, 150, mm);
Drivetrain.turnFor(left, 90, degrees);
ArmMotor.spinFor(forward, 315, degrees);
Drivetrain.driveFor(forward, 490, mm);
ClawMotor.spinFor(forward, 120, degrees);
// Jeďte k nakládací rampě a vyložte třetí balík
Drivetrain.driveFor(reverse, 490, mm);
Drivetrain.turnFor(right, 90, degrees);
Drivetrain.driveFor(forward, 150, mm);
ArmMotor.spinFor(reverse, 315, degrees);
ClawMotor.spinFor(reverse, 120, degrees);
}