Skip to main content

Controller: Tank Drive Exploration - Python

Icoon Toolbox voor docenten Toolbox voor docenten - Het doel van deze sectie

Met behulp van het voorbeeldproject Tank Control kunnen de studenten de Clawbot besturen met de Controller. Studenten moeten de parameters in de instructies left_motor.set_velocity(), right_motor.set_velocity(), left_motor.spin(), right_motor.spin(), left_motor_speed = controller_1.axis3.position() en right_motor_speed = controller_1.axis2.position() aanpassen om de snelheid van elk van de motoren van de Clawbot te regelen en de controller in staat te stellen de motorfuncties te regelen.

Voor meer informatie over een van de instructies kunt u de helpsectie Pythonin VEXcode V5 bezoeken.

Hieronder volgt een overzicht van wat de studenten in deze activiteit zullen doen:

  1. Ontdek het voorbeeldproject Tank Control.
  2. Begrijp het gebruik van de while True oneindige lusstructuur.
  3. Voltooi de Robo-Slalom-uitdaging!

Tips voor leraren-pictogram Tips voor leraren

Als dit de eerste keer is dat de student VEXcode V5 gebruikt, heeft hij of zij toegang tot veel nuttigeartikelenin de VEX-bibliotheek.

Benodigde materialen:
Aantal Benodigde materialen
1

VEX V5 Classroom Starter Kit (met up-to-date firmware)

1

VEXcode V5 (nieuwste versie, Windows, macOS)

1

Technisch notitieboekje

1

Voorbeeldproject tankbesturing

2 of meer

Klaslokaalobjecten die als obstakels kunnen worden gebruikt

Tips voor leraren-pictogram Tips voor docenten - Automatisch aanvullen gebruiken

Autocomplete is een functie in VEXcode V5 die de rest van de opdracht die u typt voorspelt. Terwijl studenten met VEXcode V5 werken, moedig je ze aan om de functie Automatisch aanvullen te gebruiken als hulpmiddel bij de Python-syntaxis. Zodra u begint met typen, ziet u mogelijk een functie voor automatisch aanvullen. Gebruik de toetsen ‘Omhoog’ en ‘Omlaag’ om de gewenste naam te selecteren en druk vervolgens op ‘Tab’ of (Enter/Return) op uw toetsenbord om uw selectie te maken. Voor meer informatie over deze functie, zie het Python-artikel

VEXcode V5 met links het begin van een Drivetrain-opdracht getypt. Rechts wordt een scrollende lijst met opties voor automatisch aanvullen voor die opdracht weergegeven.

Met deze activiteit krijgt u de tools in handen om uw controller te programmeren. 

  • VEXcode V5 Python-instructies die in deze verkenning zullen worden gebruikt:
    • left_motor.set_velocity()
    • right_motor.set_velocity()
    • left_motor.spin()
    • right_motor.spin()
    • controller_1.axis2.position()
    • controller_1.axis3.position()
    • terwijl True: 
    • wacht(5, SECONDEN)

Voor meer informatie over een van de instructies kunt u de Python helpsecties in VEXcode V5 bezoeken. 

VEXcode V5 wordt weergegeven met de Toolbox uiterst links geopend en de Help voor de Drive-opdracht uiterst rechts geopend. De Help toont de definitie van de opdracht en informatie over hoe deze wordt gebruikt.

Stap 1: Laten we beginnen met het programmeren van de Controller.

  • Selecteer Bestand en Open Voorbeelden.
  • Werkbalk VEXcode V5 met het menu Bestand geopend en Open Voorbeelden gemarkeerd in een rood vak. Open Voorbeelden is het vierde menu-item onder Nieuw blokkenproject, Nieuw tekstproject en Openen.
  • Blader door de verschillende voorbeeldprojecten. Selecteer het voorbeeldproject Tankcontrole.

Voorbeeldprojecten in VEXcode V5 met een rood vak rond het Sensing-filter bovenaan en het voorbeeldprojectpictogram Tankcontrole rechtsonder.

  • Open het voorbeeldproject Tankbesturing. Het voorbeeldproject configureert de aandrijflijn en controller. De code ziet er als volgt uit:
# Bibliotheek importeert
van VEX-import *

# Begin projectcode
# Lus van hoofdcontroller om motoren in te stellen op asposities van controller
terwijl Waar:
    left_motor.set_velocity (controller_1.axis3.position (), PERCENT)
    right_motor.set_velocity (controller_1.axis2.position (), PERCENT)
    left_motor.spin (FORWARD)
    right_motor.spin (FORWARD)
    wait(5, MSEC)

Doe het volgende in je technische notitieblok:

  1. Voorspel wat het project de Clawbot zal laten doen. Leg meer uit dan het feit dat het project gebruik maakt van de Controller.
  2. Hoe bewegen de joysticks de robot? Wat doet de Clawbot?

Icoon Toolbox voor docenten Toolbox voor leraren - antwoorden

  1. Bij dit project wordt gebruikgemaakt van de oneindige lusstructuur while True om voortdurend te controleren waar de linker- en rechterjoystick zich bevinden. Wanneer de linker (of rechter) joystick omhoog wordt geduwd, wordt de snelheid bepaald voor hoe ver de joystick naar voren wordt geduwd. 
  2. Hoe verder u de joystick naar voren duwt, hoe hoger de snelheid wordt ingesteld en hoe sneller de motoren zullen draaien. Hetzelfde idee geldt voor het naar achteren duwen van de joystick. Hoe verder u de joystick naar achteren duwt, hoe sneller de motoren achteruit zullen draaien.
  • Noem het project TankControl. Sla het Python TankControl-project op, download het en voer het uit.

Het dialoogvenster Projectnaam in VEXcode V5 leest Tankcontrole en toont dat sleuf 1 is geselecteerd.

  • Bekijk voor meer hulp de instructievideo in VEXcode V5 waarin wordt uitgelegd hoe u een project kunt downloaden en uitvoeren.

Werkbalk in VEXcode V5 met een rood vak rond het pictogram Tutorials. De werkbalk toont, van links naar rechts, het V5-logo, een wereldbolpictogram, Bestand en vervolgens Tutorials.

  • Controleer uw uitleg van het project in uw technische notitieblok en voeg notities toe om ze indien nodig te corrigeren.

Stap 2: Controller: Tankbesturing

Icoon Toolbox voor docenten Toolbox voor docenten - De while True Infinite Loop Structures

In deze stap wordt het belang van de oneindige lusstructuur while True besproken. U moet de informatie als klas doornemen. U kunt het gedrag modelleren met uw Clawbot en Controller. Als de tijd het toelaat, kunt u de studenten het programma laten uitvoeren zonder de oneindige lusstructuur while True .

Als de studenten meer hulp nodig hebben bij het begrijpen van de oneindige lus while True , klik dan hier .

​Wat zijn de voordelen van het gebruik van de while True oneindige lusstructuur?

Hier is ons project zonder de while True oneindige lusstructuur:

# Bibliotheek importeert
van VEX-import *

# Begin projectcode
# Hoofdcontrollerlus om motoren in te stellen op controller-asposten left_motor.set_velocity (

controller_1.axis3.position(), PERCENT) right_motor.set_velocity
(controller_1.axis2.position (), PERCENT) left_motor.spin
(FORWARD)
right_motor.spin(FORWARD)


Wat denk je dat er zou gebeuren als dit programma werd uitgevoerd? Bespreek als groep. Noteer je voorspelling in het engineering notebook.

Icoon Toolbox voor docenten Toolbox voor docenten - De structuur begrijpen

Zonder de oneindige lus while True wordt de snelheidswaarde voor elke motor ingesteld zodra het project wordt uitgevoerd, en die waarde blijft constant totdat het project wordt gestopt. Met andere woorden: als u het project uitvoert zonder een van de joysticks te bewegen, blijft de snelheid van beide motoren 0, ook als u de joystick beweegt. De standaardpositie van de joystick op zijn as is namelijk 0.

Stel dat u de linker joystick zo ver mogelijk omhoog beweegt langs as 3 en hem daar vasthoudt. Als u het bovenstaande project uitvoert, zal de linkermotor op volle snelheid draaien en deze snelheid behouden, zelfs als u de joystick langs as 3 omlaag beweegt. Dit komt doordat Clawbot de initiële instructie van de Controller ontvangt zodra het project wordt uitgevoerd. Zonder een Loop kan die initiële waarde echter niet worden bijgewerkt.

De oneindige lus while True vertelt Clawbot om de snelheid voortdurend bij te werken en door te draaien gedurende de duur van het project. Met andere woorden, de oneindige lus while True in dit project maakt het mogelijk om de snelheid van elke motor te veranderen door een van de joysticks langs as 2 of 3 te bewegen. De Clawbot zal hierop reageren totdat u het project stopt of de Clawbot uitschakelt.

# Bibliotheek importeert
van vex import *

# Begin projectcode
# Hoofdcontrollerlus om motoren in te stellen op controllerasposities
while True:
    left_motor.set_velocity(controller_1.axis3.position(), PERCENT)
    right_motor.set_velocity(controller_1.axis2.position(), PERCENT)
    left_motor.spin(FORWARD)
    right_motor.spin(FORWARD)
    wait(5, MSEC)

Navigeer door een slalomcursus!

Icoon Toolbox voor docenten Toolbox voor leerkrachten - De activiteit instellen

Verdeel de studenten in kleine groepjes van 2 of 4 studenten. Één student moet worden aangewezen als de bestuurder. Dit is de persoon die de controller gebruikt om de Clawbot te besturen.

Laat de leerlingen deze slalom voltooien door de Controller te gebruiken om de Clawbot langs de buitenkant van elke 'vlag' te bewegen. De route van de Clawbot moet ervoor zorgen dat hij geen enkele vlag raakt en dat hij de finishlijn kan passeren. Vlaggen kunnen alle materialen/voorwerpen zijn die u in de klas bij de hand hebt (gum, rol plakband, doos tissues) en kunnen worden neergezet voordat u de Clawbot bedient.

Als de tijd het toelaat, laat de leerlingen dan van rol wisselen, zodat anderen de kans krijgen om de Clawbot te besturen. Je kunt er zelfs een wedstrijd van maken binnen of tussen groepen door te kijken hoe snel elke bestuurder de slalom kan afleggen.

Een snowboarder racet bergafwaarts op een besneeuwde helling en navigeert door een reeks rode en blauwe poorten in een zigzagpatroon

Slaloms zijn banen waar de deelnemer rond de ingestelde vlaggen of markeringen moet navigeren. Skislaloms zijn een populaire wintersport en maken deel uit van de Olympische Winterspelen.
Nu de controller is gekoppeld en het project is gedownload, bent u klaar om uw Clawbot met de controller te besturen!

  • Verzamel de vier klaslokaalitems die je als vlaggen in je slalom gaat gebruiken bij de leraar.
  • Werk samen om de vlaggen op hun plaats te zetten voor de chauffeur om met de Clawbot te navigeren, volgens het slalomdiagram.
  • Download het voorbeeldproject Tankbesturing. Als er vragen zijn over het downloaden van een project, bekijk dan de tutorial Download and Run a Project.

Een illustratie van een slalomparcours op sneeuw, met bovenaan een 'Start' -label en onderaan een finishlijn. Tussenin weeft een gestippeld zigzagpad tussen afwisselende blauwe en rode vlaggen.

Gebruik de Controller om uw Clawbot langs de buitenkant van elke "vlag" te verplaatsen. Het pad van de robot moet voorkomen dat hij een vlag raakt en hem de finishlijn laten passeren.

  • Voer het project uit en rijd de Clawbot vooruit en achteruit, en draai links en rechts met beide Joysticks.
  • Tijd hoe lang het duurt voordat de Clawbot de cursus heeft voltooid. Noteer de tijden in het engineeringsnotitieblok.
  • Hoe snel kun je Clawbot door de Slalom-cursus krijgen?
     

Motiveer discussie-icoon Motiveren Discussie - Reflecteren op de activiteit

V: Reageerde de Clawbot op de Controller zoals u verwachtte?

A: De antwoorden zullen variëren. Het doel van deze vraag is echter om het cognitieve denken te bevorderen. Studenten begonnen met het voorspellen van gedrag voordat ze dat gingen testen. Vervolgens documenteerden ze de resultaten en reflecteerden ze erop.

V: Wat is de grootste uitdaging bij het vooruit of achteruit bewegen van de Clawbot in een rechte lijn?

A: Hoewel de antwoorden kunnen verschillen, zou een veelvoorkomend antwoord moeten zijn dat beide joysticks synchroon met elkaar moeten bewegen om ervoor te zorgen dat de motoren van de Clawbot in dezelfde richting en met dezelfde snelheid bewegen

V: Hoe zorgt de oneindige lus while True ervoor dat je de Controller continu kunt gebruiken om de Clawbot te verplaatsen?

A: Zonder de oneindige lus while True zou de Clawbot het gedrag zoals bepaald door de instructies in het project slechts eenmaal uitvoeren. De oneindige lus while True vertelt Clawbot om de snelheid voortdurend bij te werken en door te draaien gedurende de duur van het project. Met andere woorden: dankzij de oneindige lus while True kunt u de Controller gebruiken om de Clawbot onbeperkt te bewegen, of totdat de batterij leeg is.