Package Dash-uitdaging - C++

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
-
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.
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);
}