Skip to main content

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

Ukázkové rozvržení pro výzvu „Package Dash“ zobrazující nakládací rampu v levém dolním rohu, tři oblasti pro umístění plechovek a startovní oblast v pravém horním rohu s Clawbotem uvnitř.

Mřížkové rozvržení robotického soutěžního pole zobrazující robota umístěného v oblasti „Start“ na pravé straně. Hřiště zahrnuje na levé straně oblast „Nakládací rampy“ a tři menší zóny, z nichž každá obsahuje obrázek plechovky umístěné na knize, rozmístěné po hřišti. Zóny jsou uspořádány tak, aby vytvořily prostředí orientované na úkoly, kde může být robot vyzván k interakci s objekty v menších zónách a jejich přepravě k nakládací rampě.

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!

Ikona tipů pro učitele 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ů.

Ikona sady nástrojů pro učitele Ř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);
  
}