Skip to main content

Package Dash-uitdaging - C++

Voorbeeldlay-out voor de Package Dash-uitdaging, met in de linkerbenedenhoek het laadperron, drie zones voor het plaatsen van blikken en in de rechterbovenhoek het startgebied met daarin een Clawbot.

Een raster van een robotwedstrijdveld, met een robot in het 'Start'-gebied aan de rechterkant. Het veld bestaat uit een 'laadperron' aan de linkerkant en drie kleinere zones, elk met een afbeelding van een blikje bovenop een boek, verdeeld over het veld. De zones zijn zo ingericht dat er een taakgerichte omgeving ontstaat waarin de robot mogelijk met de objecten in de kleinere zones moet interacteren en deze naar het laadperron moet transporteren.

Package Dash-uitdaging

In deze uitdaging programmeer je jouw robot om pakketten op te pakken en ze zo snel mogelijk naar een laadperron te brengen!

Uitdagingsregels:

  • De robot moet de uitdaging beginnen in de Startzone.
  • De pakketten (aluminium blikjes) mogen alleen in contact komen met de boeken, de klauw van de Clawbot en het laadperron.
    • Als een pakket op de grond van het magazijn valt, moet u het veld opnieuw instellen en opnieuw beginnen.
  • De tijd voor elke run start zodra de robot beweegt.
  • De tijd stopt zodra het laatste pakket in het laadperron is gedropt.
  • Wanneer u het veld opnieuw instelt, moet alles worden teruggezet op de exacte locatie waarop het begon.
  • Veel plezier!

Tips voor leraren-pictogram Tips voor leraren

  • Vergroot de betrokkenheid door een achtergrondverhaal of doel voor het magazijn te creëren! Wat voor soort magazijn is het? Welke soorten pakketten worden er in het magazijn aangetroffen? Wie is de eigenaar van het magazijn?

  • Laat leerlingen verschillende routes of strategieën bedenken waarmee ze de blikken efficiënter kunnen vervoeren.

  • Vergelijk niet alleen de doorlooptijden om de winnaar van deze uitdaging te bepalen (als je het competitief organiseert), maar ook de navigatietechnieken die worden gebruikt, zodat studenten de oplossingen van andere teams kunnen overwegen.

Icoon Toolbox voor docenten Teacher Toolbox - Oplossing

Een programmeerrubriek om studenten te beoordelen is hier te vinden.

Hieronder staat een mogelijke oplossing voor de uitdaging. Oplossingen kunnen variëren afhankelijk van de startpositie van de robot en het gekozen pad. Er zijn meerdere manieren om alle pakketten te verplaatsen.

int main() {
  // Robotconfiguratie initialiseren. NIET VERWIJDEREN!
  vexcodeInit();

  // Laat de klauwmotor veilig draaien en pak het eerste pakket op
  ClawMotor.setTimeout(2, seconden);
  Drivetrain.driveFor(forward, 900, mm);
  Drivetrain.turnFor(right, 90, degrees);
  ArmMotor.spinFor(forward, 315, degrees);
  ClawMotor.spinFor(reverse, 180, degrees);
  Drivetrain.driveFor(forward, 215, mm);
  ClawMotor.spinFor(forward, 120, degrees);

  // Rijd naar het laadperron om het eerste pakket af te leveren
  Drivetrain.driveFor(reverse, 110, mm);
  Drivetrain.turnFor(right, 90, degrees);
  Drivetrain.driveFor(forward, 920, mm);
  Drivetrain.turnFor(left, 90, degrees);
  Drivetrain.driveFor(vooruit, 2300, mm);
  Drivetrain.turnFor(links, 90, graden);
  Drivetrain.driveFor(vooruit, 750, mm);
  ArmMotor.spinFor(achteruit, 315, graden);
  ClawMotor.spinFor(achteruit, 120, graden);

  // Pak het tweede pakket op
  Drivetrain.driveFor(achteruit, 200, mm);
  Drivetrain.turnFor(links, 170, graden);
  Drivetrain.driveFor(vooruit, 900, mm);
  Drivetrain.turnFor(rechts, 90, graden);
  Drivetrain.driveFor(vooruit, 2300, mm);
  ArmMotor.spinFor(vooruit, 315, graden);
  ClawMotor.spinFor(vooruit, 120, graden);

  // Rijd naar het laadperron om het tweede pakket af te leveren
  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);

  // Pak het derde pakket op
  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); 

  // Rijd naar het laadperron om het derde pakket af te leveren
  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);
  
}