Robotspecifieke Python#
Invoering#
De Hero Bot, Flex, bevat een klauwmotor, een armmotor, een AI-visiesensor, een afstandssensor en een GPS-sensor (Game Positioning System).
Alle standaard VEXcode VR-methoden zijn beschikbaar voor gebruik in de V5 26-27 Override Playground.
Hieronder vindt u een lijst met alle beschikbare robotspecifieke methoden:
Aandrijving – Beweeg en stuur de robot.
Acties
drive— Laat de robot oneindig vooruit of achteruit bewegen.drive_for— Verplaatst de robot vooruit of achteruit over een specifieke afstand.turn— Draait de robot permanent naar links of rechts.turn_for— Draait de robot naar links of rechts over een specifiek aantal graden.turn_to_heading— Draait de robot naar een specifieke richting tussen -359 en 359 graden.turn_to_rotation— Draait de robot naar een specifieke rotatie.stop— Stopt de beweging van de robot.
Mutators
set_heading— Wijzigt de huidige richting van de robot naar een nieuwe richting.set_rotation— Wijzigt de huidige rotatie van de robot naar een nieuwe rotatie.set_timeout— Stelt in hoeveel tijd de robot nodig heeft om een beweging te voltooien.set_drive_velocity— Vertelt de robot hoe snel hij moet rijden.set_turn_velocity— Vertelt de robot hoe snel hij moet draaien.
Verdieners
heading— Geeft de huidige richting van de robot weer, van 0 tot 359,99 graden.rotation— Geeft de huidige rotatie van de robot terug.is_done— Geeft als Booleaanse waarde aan of de robot klaar is met bewegen.is_moving— Geeft als Booleaanse waarde aan of de robot beweegt.velocity— Geeft aan hoe snel de robot rijdt.
Beweging – Beweeg en volg de motoren van de robot.
Acties
spin— Laat een motor oneindig lang vooruit of achteruit draaien.spin_for— Laat een motor een specifieke afstand draaien.spin_to_position— Draait een motor naar een specifieke positie.stop— Stopt een motor met draaien.
Mutators
set_position— Wijzigt de huidige positie van de motor naar een nieuwe waarde.set_velocity— Vertelt een motor hoe snel hij moet draaien.set_timeout— Stelt in hoeveel tijd een motor nodig heeft om een beweging te voltooien.
Verdieners
is_done— Geeft als Booleaanse waarde aan of de motor klaar is met bewegen.is_spinning— Geeft als Booleaanse waarde aan of de motor draait.position— Geeft de huidige positie van de motor terug.velocity— Geeft aan hoe snel de motor draait.
AI Vision – Leg objecten vast en analyseer ze met behulp van de AI Vision-sensor.
Verdieners
take_snapshot– Retourneert een tuple van gedetecteerde objecten voor een specifieke signatuur.
Eigenschappen
.width– Breedte van het gedetecteerde object in pixels..height– Hoogte van het gedetecteerde object in pixels..centerX– X-positie van het middelpunt van het object in pixels..centerY– Y-positie van het middelpunt van het object in pixels..originX– X-positie van de linkerbovenhoek van het object in pixels..originY– Y-positie van de linkerbovenhoek van het object in pixels..id– Classificatie-ID van het gedetecteerde object.
Console – Waarden afdrukken naar de console en monitoren.
Afdrukken
brain.screen.print— Geeft tekst, getallen of variabele waarden weer in de console.brain.screen.next_row— Verplaatst de consolecursor naar het begin van de volgende regel.brain.screen.clear_screen— Verwijdert alle rijen uit de console.
Monitor
monitor_variable— Voegt een of meer vooraf gedefinieerde variabelen toe aan het tabblad Monitor.monitor_sensor— Voegt een of meer sensorwaarden toe aan het tabblad Monitor.
Waarneming – Gebruik de verschillende sensoren van de robot.
Afstand
found_object– Geeft aan of de afstandssensor een object binnen bereik detecteert.object_distance– Geeft de afstand terug tussen de afstandssensor en het dichtstbijzijnde gedetecteerde object.
GPS
x_position– Geeft de huidige x-coördinaat van de GPS-sensor in het veld terug.y_position– Geeft de huidige y-coördinaat van de GPS-sensor in het veld terug.heading– Geeft de huidige kijkrichting van de robot weer op basis van de GPS-sensor.
De voorbeelden op deze pagina gebruiken startlocatie C uit de checklist voor de voorbereiding op de wedstrijd op het speelveld.
Aandrijving#
De aandrijving bepaalt hoe de VR-robot rijdt en stuurt. De aandrijving kan vooruit of achteruit bewegen, naar links of rechts draaien, koersen volgen en zijn rotatie bijhouden.
Acties#
drijfveer#
drive de robot beweegt oneindig vooruit of achteruit. De robot blijft bewegen totdat er een andere actie wordt gegeven, zoals draaien of stoppen.
Usage:
drivetrain.drive(direction)
Parameters |
Beschrijving |
|---|---|
|
De richting waarin de robot beweegt: |
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive(FORWARD)
wait(0.5, SECONDS)
drivetrain.stop()
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
drive_for#
drive_for verplaatst de robot vooruit of achteruit over een bepaalde afstand. Het project wacht tot de robot klaar is met bewegen voordat de volgende regel code wordt uitgevoerd.
Usage:
drivetrain.drive_for(direction, distance, units, wait)
Parameters |
Beschrijving |
|---|---|
|
De richting waarin de robot beweegt: |
|
De afstand die de robot aflegt. Dit kan een geheel getal |
|
Optioneel. De afstandseenheid: |
|
Optioneel. |
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
draai#
turn de robot draait oneindig naar links of rechts. De robot blijft draaien totdat er een andere actie wordt uitgevoerd, zoals rijden of stoppen.
Usage:
drivetrain.turn(direction)
Parameters |
Beschrijving |
|---|---|
|
De richting waarin de robot draait: |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn(LEFT)
wait(0.78, SECONDS)
drivetrain.stop()
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
beurt_voor#
turn_for draait de robot naar links of rechts over een specifiek aantal graden. De draaiing is relatief ten opzichte van de huidige positie van de robot. Het project wacht totdat de robot klaar is met draaien voordat de volgende regel code wordt uitgevoerd.
Usage:
drivetrain.turn_for(direction, angle, units, wait)
Parameters |
Beschrijving |
|---|---|
|
De richting waarin de robot draait: |
|
Het aantal graden dat de robot draait. Dit kan een geheel getal |
|
Optioneel. De hoekeenheid: |
|
Optioneel. |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_for(LEFT, 110, DEGREES)
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
koptekst#
Een koers is de richting waarin de robot kijkt, gemeten in graden. turn_to_heading draait de robot in een specifieke richting tussen -359 en 359 graden. De robot draait in de kortste richting om de doelkoers te bereiken.
De beginrichting is 0 graden.
Usage:
drivetrain.turn_to_heading(heading, units, wait)
Parameters |
Beschrijving |
|---|---|
|
De richting waarin de robot moet kijken, ligt tussen -359 en 359 graden. |
|
Optioneel. De hoekeenheid: |
|
Optioneel. |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_to_heading(-110, DEGREES)
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
draai_naar_rotatie#
turn_to_rotation draait de robot naar een specifieke rotatie.
Rotatie geeft aan hoeveel de robot is gedraaid, gemeten in graden. Aan het begin van een project wordt de rotatiewaarde ingesteld op 0 graden. Draaien naar rechts vergroot de rotatie, draaien naar links verkleint de rotatie.
Als de robot bijvoorbeeld begint bij 0 graden en een rotatie van 720 graden maakt, draait hij twee keer naar rechts. Als hij vervolgens een rotatie van 360 graden maakt, draait hij één keer naar links, omdat 360 minder is dan 720.
Usage:
drivetrain.turn_to_rotation(rotation, units, wait)
Parameters |
Beschrijving |
|---|---|
|
De rotatiewaarde, in graden, waarnaar de robot zal draaien. Dit kan een geheel getal |
|
Optioneel. De hoekeenheid: |
|
Optioneel. |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_to_rotation(-110, DEGREES)
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
stop#
stop stopt de beweging van de robot.
Usage:
drivetrain.stop()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn(LEFT)
wait(0.78, SECONDS)
drivetrain.stop()
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Mutators#
set_heading#
Een koers is de richting waarin de robot kijkt, gemeten in graden. set_heading verandert de huidige koers van de robot naar een nieuwe koerswaarde.
Als de robot bijvoorbeeld naar rechts is gedraaid, zorgt het instellen van de richting op 0 graden ervoor dat die naar rechts gerichte positie de nieuwe 0 graden wordt. Vervolgens kan de robot zich op basis van die nieuwe richting naar andere posities draaien.
Usage:
drivetrain.set_heading(heading, units)
Parameters |
Beschrijving |
|---|---|
|
De richtingswaarde, in graden, die voor de robot moet worden ingesteld. |
|
Optioneel. De hoekeenheid: |
def main():
# Make facing the Neutral Goal the new heading
drivetrain.set_heading(110, DEGREES)
drivetrain.turn_to_heading(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_rotation#
Rotatie geeft aan hoeveel de robot is gedraaid, gemeten in graden. set_rotation verandert de huidige rotatie van de robot naar een nieuwe waarde.
Usage:
drivetrain.set_rotation(rotation, units)
Parameters |
Beschrijving |
|---|---|
|
De rotatiewaarde in graden die voor de robot moet worden ingesteld. Dit kan een geheel getal |
|
Optioneel. De hoekeenheid: |
def main():
# Make facing the Neutral Goal the new rotation
drivetrain.set_rotation(110, DEGREES)
drivetrain.turn_to_rotation(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_timeout#
set_timeout bepaalt hoeveel seconden de robot de tijd krijgt om een beweging te voltooien. Als de robot de beweging niet binnen die tijd kan voltooien, stopt hij met proberen en gaat hij verder met de volgende regel code. Dit voorkomt dat de robot vastloopt tijdens een beweging.
Usage:
drivetrain.set_timeout(time, units)
Parameters |
Beschrijving |
|---|---|
|
Het aantal seconden dat de robot de tijd heeft om een beweging te voltooien. Dit kan een positief geheel getal zijn |
|
Optioneel. De tijdseenheid: |
def main():
# Turn to face the Neutral Goal
drivetrain.set_timeout(0.8, SECONDS)
drivetrain.turn_for(LEFT, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_drive_velocity#
set_drive_velocity vertelt de robot hoe snel hij moet rijden. Een hoger percentage zorgt ervoor dat de robot sneller rijdt en een lager percentage zorgt ervoor dat de robot langzamer rijdt.
Elk project begint standaard met de robot die op 50% van zijn maximale snelheid rijdt.
Let op: Een hogere snelheid zorgt ervoor dat de robot sneller rijdt, maar mogelijk minder nauwkeurig. Een lagere snelheid zorgt ervoor dat de robot langzamer rijdt, maar mogelijk nauwkeuriger.
Usage:
drivetrain.set_drive_velocity(velocity, units)
Parameters |
Beschrijving |
|---|---|
|
De snelheid waarmee gereden moet worden, van 0% tot 100%. Dit kan een geheel getal |
|
Optioneel. De snelheidseenheid: |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_for(LEFT, 110, DEGREES)
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_turn_velocity#
set_turn_velocity vertelt de robot hoe snel hij moet draaien. Een hoger percentage zorgt ervoor dat de robot sneller draait en een lager percentage zorgt ervoor dat de robot langzamer draait.
Elk project begint standaard met de robot die met 50% snelheid draait.
Let op: Een hogere snelheid zorgt ervoor dat de robot sneller draait, maar mogelijk minder nauwkeurig. Een lagere snelheid zorgt ervoor dat de robot langzamer draait, maar mogelijk nauwkeuriger.
Usage:
drivetrain.set_turn_velocity(velocity, units)
Parameters |
Beschrijving |
|---|---|
|
De snelheid waarmee je draait, van 0% tot 100%. Dit kan een geheel getal |
|
Optioneel. De snelheidseenheid: |
def main():
# Turn to face the Neutral Goal faster
drivetrain.set_turn_velocity(100, PERCENT)
drivetrain.turn_for(LEFT, 110, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Getters#
kop#
Een koers is de richting waarin de robot kijkt, gemeten in graden. heading geeft de huidige koers van de robot weer, van 0 tot 359,99 graden.
De beginrichting van de robot is 0 graden.
Usage:
drivetrain.heading(units)
Parameters |
Beschrijving |
|---|---|
|
Optioneel. De richtingseenheid: |
def main():
# Turn to the Goal, then show heading
drivetrain.turn_for(LEFT, 110, DEGREES)
brain.screen.print("Heading: ")
brain.screen.print(drivetrain.heading(DEGREES))
# VR threads — Do not delete
vr_thread(main)
rotatie#
Rotatie geeft aan hoeveel de robot is gedraaid, gemeten in graden. Aan het begin van een project wordt de rotatiewaarde ingesteld op 0 graden. rotation geeft de huidige rotatie van de robot weer.
Naar rechts draaien vergroot de rotatie, en naar links draaien verkleint de rotatie. Twee volledige draaien naar rechts resulteren bijvoorbeeld in een rotatie van 720 graden.
Usage:
drivetrain.rotation(units)
Parameters |
Beschrijving |
|---|---|
|
Optioneel. De rotatie-eenheid: |
def main():
# Spin to find a Pin, then show rotation
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Rotation: ")
brain.screen.print(drivetrain.rotation(DEGREES))
# VR threads — Do not delete
vr_thread(main)
is_klaar#
is_done geeft als Booleaanse waarde aan of de robot klaar is met bewegen. Dit kan worden gebruikt om de timing van andere acties te sturen op basis van de beweging van de robot.
True— De robot is klaar met bewegen.False— De robot beweegt nog steeds.
Deze methode werkt samen met de volgende Drivetrain-methoden die de parameter wait hebben: drive_for, turn_for, turn_to_heading, en turn_to_rotation.
Usage:
drivetrain.is_done()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_for(LEFT, 110, DEGREES)
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES, wait=False)
wait(0.5, SECONDS)
while not drivetrain.is_done():
wait(5, MSEC)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
is_bewegend#
is_moving geeft als Booleaanse waarde aan of de robot beweegt. Dit kan worden gebruikt om de timing van andere gedragingen te regelen op basis van de beweging van de robot.
True— De robot beweegt.False— De robot beweegt niet.
Usage:
drivetrain.is_moving()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
def main():
# Raise the Arm once stopped near the Goal
drivetrain.turn_for(LEFT, 110, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES, wait=False)
wait (0.5, SEC)
while drivetrain.is_moving():
wait(5, MSEC)
arm_motor.spin_for(FORWARD, 800, DEGREES)
# VR threads — Do not delete
vr_thread(main)
snelheid#
velocity geeft aan hoe snel de robot rijdt, als een percentage van -100% tot 100%.
Usage:
drivetrain.velocity(units)
Parameters |
Beschrijving |
|---|---|
|
Optioneel. De snelheidseenheid: |
def main():
# Show speed while driving to the Goal
drivetrain.drive_for(FORWARD, 150, MM)
brain.screen.print("Velocity: ")
brain.screen.print(drivetrain.velocity(PERCENT))
# VR threads — Do not delete
vr_thread(main)
Beweging#
Flex gebruikt de armmotor om de arm omhoog en omlaag te bewegen, en de klauwmotor om de klauw te openen en te sluiten.
Elke motor heeft zijn eigen bewegingsrichting. De beschrijvingen van de bewegingsrichtingen leggen uit hoe elke richting de motor op de Flex beweegt.
Acties#
draaien#
spin laat een motor oneindig in één van twee richtingen draaien. De motor blijft draaien totdat er een andere actie wordt ondernomen, zoals in een andere richting draaien of stoppen.
Gebruik:
Een van de twee beschikbare motorobjecten kan met deze methode worden gebruikt, zoals hieronder weergegeven:
motor |
Commando |
|---|---|
|
|
|
|
Parameters |
Beschrijving |
|---|---|
|
De draairichting van de motor:
|
def main():
# Raise the Arm before driving toward a Pin
arm_motor.spin(FORWARD)
wait(1, SECONDS)
arm_motor.stop()
# VR threads — Do not delete
vr_thread(main)
spin_for#
spin_for laat een motor een specifieke afstand draaien. De draaiing is relatief ten opzichte van de huidige positie van de motor. Het project wacht tot de motor klaar is met draaien voordat de volgende regel code wordt uitgevoerd.
Gebruik:
Een van de twee beschikbare motorobjecten kan met deze methode worden gebruikt, zoals hieronder weergegeven:
motor |
Commando |
|---|---|
|
|
|
|
Parameters |
Beschrijving |
|---|---|
|
De draairichting van de motor:
|
|
De afstand die de motor aflegt. |
|
Optioneel. De afstandseenheid: |
|
Optioneel.
|
def main():
# Raise the Arm to carry the Pin to the Goal
arm_motor.spin_for(FORWARD, 800, DEGREES)
# VR threads — Do not delete
vr_thread(main)
spin_to_position#
spin_to_position laat een motor naar een specifieke positie draaien.
De positie van een motor geeft aan hoe ver deze is gedraaid, gemeten in DEGREES of TURNSEén omwenteling is gelijk aan 360 graden. Aan het begin van een project wordt de positie van de armmotor ingesteld op 0 graden. De klauwmotor is hierop een uitzondering: deze begint op 467 graden (volledig gesloten). De motorpositie kan ook worden ingesteld met behulp van de set_position methode.
Positiewaarden zijn absoluut. Dit betekent dat de draairichting afhangt van de huidige positie van de motor.
Als de motor bijvoorbeeld begint bij 0 graden en draait naar een positie van 720 graden, draait hij twee omwentelingen vooruit. Als hij vervolgens draait naar een positie van 360 graden, draait hij één omwenteling achteruit, omdat 360 minder is dan 720.
Gebruik:
Een van de twee beschikbare motorobjecten kan met deze methode worden gebruikt, zoals hieronder weergegeven:
motor |
Commando |
|---|---|
|
|
|
|
Parameters |
Beschrijving |
|---|---|
|
De positiewaarde waarnaar de motor zal draaien. |
|
Optioneel. De positie-eenheid: |
|
Optioneel.
|
def main():
# Raise the Arm, then release the Pin
arm_motor.spin_to_position(800, DEGREES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
stop#
stop zorgt ervoor dat een motor stopt met draaien.
Gebruik:
Een van de twee beschikbare motorobjecten kan met deze methode worden gebruikt, zoals hieronder weergegeven:
motor |
Commando |
|---|---|
|
|
|
|
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
def main():
# Raise the Arm partway to hold the Pin
arm_motor.spin(FORWARD)
wait(1, SECONDS)
arm_motor.stop()
# VR threads — Do not delete
vr_thread(main)
Mutators#
set_position#
De positie van een motor geeft aan hoeveel omwentelingen hij heeft gemaakt, gemeten in DEGREES of TURNSEén omwenteling is gelijk aan 360 graden. set_position verandert de huidige positie van de motor naar een nieuwe waarde.
Als een motor bijvoorbeeld 180 graden heeft gedraaid, zal het instellen van de positie op 0 graden die positie resetten van 180 naar 0 graden. Vervolgens kan de motor naar posities draaien op basis van die nieuwe waarde.
Gebruik:
Een van de twee beschikbare motorobjecten kan met deze methode worden gebruikt, zoals hieronder weergegeven:
motor |
Commando |
|---|---|
|
|
|
|
Parameters |
Beschrijving |
|---|---|
|
De positiewaarde die voor de motor moet worden ingesteld. |
|
Optioneel. De positie-eenheid: |
def main():
# Reset encoder, raise Arm, place Pin
arm_motor.set_position(0, DEGREES)
arm_motor.spin_to_position(800, DEGREES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_velocity#
set_velocity geeft aan hoe snel een motor moet draaien. Een hoger percentage zorgt ervoor dat de motor sneller draait en een lager percentage zorgt ervoor dat de motor langzamer draait.
Elk project begint standaard met elke motor op 50% snelheid.
Let op: Een hogere snelheid zorgt ervoor dat de motor sneller draait, maar de precisie kan lager zijn. Een lagere snelheid zorgt ervoor dat de motor langzamer draait, maar de precisie kan hoger zijn.
Gebruik:
Een van de twee beschikbare motorobjecten kan met deze methode worden gebruikt, zoals hieronder weergegeven:
motor |
Commando |
|---|---|
|
|
|
|
Parameters |
Beschrijving |
|---|---|
|
De rotatiesnelheid van 0% tot 100%. Dit kan een geheel getal |
|
De snelheidseenheid: |
def main():
# Raise the Arm fast to release the Pin
arm_motor.set_velocity(100, PERCENT)
arm_motor.spin_for(FORWARD, 800, DEGREES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_timeout#
set_timeout bepaalt hoeveel tijd een motor krijgt om een beweging te voltooien. Als de motor de beweging niet binnen die tijd kan voltooien, stopt hij met proberen en gaat hij verder met de volgende regel code. Dit voorkomt dat de motor vastloopt tijdens een beweging.
Gebruik:
Een van de twee beschikbare motorobjecten kan met deze methode worden gebruikt, zoals hieronder weergegeven:
motor |
Commando |
|---|---|
|
|
|
|
Parameters |
Beschrijving |
|---|---|
|
De hoeveelheid tijd die de motor kan proberen om een beweging te voltooien. Dit kan een positief geheel getal zijn |
|
De tijdseenheid: |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_for(LEFT, 110, DEGREES)
arm_motor.set_timeout(1, SECONDS)
arm_motor.spin_for(FORWARD, 1800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Getters#
is_klaar#
is_done geeft als Booleaanse waarde aan of de motor klaar is met bewegen. Dit kan worden gebruikt om de timing van andere acties te regelen op basis van de beweging van de motor.
True— De motor is klaar met bewegen.False— De motor draait nog steeds.
Deze methode werkt samen met de volgende bewegingsmethoden die de parameter wait hebben: spin_for en spin_to_position.
Gebruik:
Een van de twee beschikbare motorobjecten kan met deze methode worden gebruikt, zoals hieronder weergegeven:
motor |
Commando |
|---|---|
|
|
|
|
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
def main():
# Raise the Arm while driving to the Goal
arm_motor.spin_to_position(800, DEGREES, wait=False)
wait(0.1, SECONDS)
while not arm_motor.is_done():
drivetrain.drive(FORWARD)
wait(5, MSEC)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
draait#
is_spinning geeft als Booleaanse waarde aan of de motor draait. Dit kan worden gebruikt om de timing van andere gedragingen te regelen op basis van de beweging van de motor.
True— De motor draait.False— De motor draait niet.
Deze methode werkt samen met de volgende bewegingsmethoden die de parameter wait hebben: spin_for en spin_to_position.
Gebruik:
Een van de twee beschikbare motorobjecten kan met deze methode worden gebruikt, zoals hieronder weergegeven:
motor |
Commando |
|---|---|
|
|
|
|
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
def main():
# Raise the Arm while driving to the Goal, then release the Pin
arm_motor.spin_to_position(800, DEGREES, wait=False)
wait(0.1, SECONDS)
while arm_motor.is_spinning():
drivetrain.drive_for(FORWARD, 25, MM)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
positie#
De positie van een motor geeft aan hoeveel omwentelingen hij heeft gemaakt, gemeten in DEGREES of TURNSEén omwenteling is gelijk aan 360 graden. position geeft de huidige positie van de motor weer.
Aan het begin van een project staat de armmotor ingesteld op 0 graden. De klauwmotor vormt hierop een uitzondering: deze begint op 467 graden (volledig gesloten). Als de motor één volledige slag vooruit draait, neemt de positie toe. Als de motor de andere kant op draait, neemt de positie af.
Gebruik:
Een van de twee beschikbare motorobjecten kan met deze methode worden gebruikt, zoals hieronder weergegeven:
motor |
Commando |
|---|---|
|
|
|
|
Parameters |
Beschrijving |
|---|---|
|
De eenheid om de motorpositie terug te brengen naar: |
def main():
# Raise the Arm, then release the Pin
while arm_motor.position(DEGREES) < 800:
arm_motor.spin(FORWARD)
wait(2, MSEC)
arm_motor.stop()
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
snelheid#
velocity geeft aan hoe snel de motor draait.
Een positieve waarde betekent dat de motor vooruit draait. Een negatieve waarde betekent dat de motor achteruit draait.
Gebruik:
Een van de twee beschikbare motorobjecten kan met deze methode worden gebruikt, zoals hieronder weergegeven:
motor |
Commando |
|---|---|
|
|
|
|
Parameters |
Beschrijving |
|---|---|
|
De snelheidseenheid die moet worden geretourneerd: |
def main():
# Show Arm Motor velocity while raising
arm_motor.set_velocity(100, PERCENT)
arm_motor.spin_to_position(800, DEGREES, wait=False)
wait(0.2, SECONDS)
brain.screen.print(arm_motor.velocity(PERCENT))
# VR threads — Do not delete
vr_thread(main)
AI-visie#
Getters#
momentopname maken#
take_snapshot filtert gegevens uit het frame van de AI Vision Sensor tot één enkele signatuur — een opgeslagen beschrijving van iets dat de sensor kan herkennen, zoals een spelelement op het veld — en retourneert een tuple.
De tuple slaat objecten op, gesorteerd van groot naar klein op basis van breedte, beginnend bij index 0. De eigenschappen van elk object kunnen worden benaderd via de index. Er wordt een lege tuple geretourneerd als er geen overeenkomende objecten worden gevonden.
Usage:
ai_vision.take_snapshot(signature)
Parameters |
Beschrijving |
|---|---|
|
Filtert de dataset zodat alleen gegevens met de opgegeven signatuur worden weergegeven. Beschikbare signaturen zijn:
|
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Turn to face the Pin
drivetrain.set_turn_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].centerX < 140:
drivetrain.turn(LEFT)
elif ai_objects[0].centerX > 180:
drivetrain.turn(RIGHT)
else:
drivetrain.stop()
break
# VR threads — Do not delete
vr_thread(main)
Eigenschappen#
Er zijn zeven eigenschappen die worden opgenomen bij elk object dat in een tuple is opgeslagen nadat take_snapshot is gebruikt.
Alle eigenschapswaarden behalve .id beschrijven de positie en grootte van het gedetecteerde object in het gezichtsveld van de AI Vision Sensor op het moment dat take_snapshot werd gebruikt. Deze waarden worden gemeten in pixels, gebaseerd op de resolutie van de sensor van 320 bij 240 pixels.
.breedte#
.width retourneert de breedte van het gedetecteerde object in pixels, wat een geheel getal is tussen 1 en 320.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Approach the next Cup and Pin
drivetrain.set_drive_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].width > 140:
drivetrain.stop()
break
else:
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)
.hoogte#
.height retourneert de hoogte van het gedetecteerde object in pixels, wat een geheel getal is tussen 1 en 240.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Approach the next Cup and Pin
drivetrain.set_drive_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].height > 200:
drivetrain.stop()
break
else:
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)
.centerX#
.centerX retourneert de x-coördinaat van het middelpunt van het gedetecteerde object in pixels, een geheel getal tussen 0 en 320.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Turn and approach the next Cup and Pin
drivetrain.set_turn_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].centerX < 140:
drivetrain.turn_for(LEFT, 5, DEGREES)
else:
drivetrain.drive_for(FORWARD, 25, INCHES)
break
# VR threads — Do not delete
vr_thread(main)
.centerY#
.centerY retourneert de y-coördinaat van het middelpunt van het gedetecteerde object in pixels, een geheel getal tussen 0 en 240.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Approach the next Cup and Pin
drivetrain.set_drive_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].centerY > 230:
drivetrain.stop()
break
else:
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)
.originX#
.originX retourneert de x-coördinaat van de linkerbovenhoek van de begrenzingsbox van het gedetecteerde object in pixels, wat een geheel getal tussen 0 en 320 is.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Turn and approach the next Cup and Pin
drivetrain.set_turn_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].originX < 100:
drivetrain.turn_for(LEFT, 5, DEGREES)
else:
drivetrain.drive_for(FORWARD, 25, INCHES)
break
# VR threads — Do not delete
vr_thread(main)
.originY#
.originY retourneert de y-coördinaat van de linkerbovenhoek van het begrenzingskader van het gedetecteerde object in pixels, wat een geheel getal tussen 0 en 240 is.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Approach the next Cup and Pin
drivetrain.set_drive_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].originY > 140:
drivetrain.stop()
break
else:
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)
.id#
.id retourneert de ID van de gedetecteerde AI-classificatie als een geheel getal.
AI-classificatie |
id |
Handtekening |
|---|---|---|
RoodBlauwSpeld |
0 |
|
BlauwGelePin |
1 |
|
RoodGelePin |
2 |
|
Gele Speld |
3 |
|
Beker |
4 |
|
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Display the ID of the next closest object
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
brain.screen.print(ai_objects[0].id)
break
# VR threads — Do not delete
vr_thread(main)
Troosten#
De console toont tekst, getallen en variabele waarden terwijl een project wordt uitgevoerd. Consolemethoden kunnen ook de cursor naar een nieuwe regel verplaatsen, de console leegmaken en variabelen of sensorwaarden toevoegen aan het tabblad Monitor.
Afdrukken#
hersenen.scherm.print#
brain.screen.print geeft tekst, getallen of variabele waarden weer in de console, gebruikmakend van de huidige cursorpositie.
Gebruik brain.screen.next_row wanneer je wilt dat de volgende afgedrukte waarde op een nieuwe regel begint.
Usage:
brain.screen.print(value)
Parameters |
Beschrijving |
|---|---|
|
De tekst, het getal of de variabelewaarde die in de console moet worden weergegeven. |
def main():
# Display a message in the Console
brain.screen.print("Hello, robot!")
# VR threads — Do not delete
vr_thread(main)
hersenen.scherm.volgende_rij#
brain.screen.next_row verplaatst de cursor naar kolom 1 op de volgende regel in de console. De volgende waarde die wordt afgedrukt, verschijnt op die regel.
Usage:
brain.screen.next_row()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
def main():
# Print on two rows
brain.screen.print("Row 1")
brain.screen.next_row()
brain.screen.print("Row 2")
# VR threads — Do not delete
vr_thread(main)
hersen.scherm.scherm wissen#
brain.screen.clear_screen wist alle rijen uit de console en verplaatst de cursor terug naar rij 1.
Usage:
brain.screen.clear_screen()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
def main():
# Display text, then clear it after two seconds
brain.screen.print("This will disappear...")
wait(2, SECONDS)
brain.screen.clear_screen()
# VR threads — Do not delete
vr_thread(main)
Monitor#
monitor_variabele#
monitor_variable voegt een of meer vooraf gedefinieerde variabelen toe aan het tabblad Monitor in VEXcode. Hiermee kunt u de waarde van een variabele zien veranderen terwijl een project wordt uitgevoerd.
Variabelen moeten globaal zijn om ze succesvol te kunnen monitoren met monitor_variable . Geef elke variabelenaam op als een tekenreeks.
Usage:
monitor_variable(“variable”)
monitor_variable(“variable1”, “variable2”)
Parameters |
Beschrijving |
|---|---|
|
De naam van een vooraf gedefinieerde globale variabele die moet worden bewaakt, gegeven als een tekenreeks. Om meerdere variabelen te bewaken, scheidt u de variabelenamen met een komma. |
def main():
# Monitor the number of loops
global loops
monitor_variable("loops")
# Turn in a full circle 3 times
for loops in range(12):
drivetrain.turn_for(RIGHT, 90, DEGREES)
# VR threads — Do not delete
vr_thread(main)
monitor_sensor#
monitor_sensor voegt een of meer sensorwaarden toe aan het tabblad Monitor in VEXcode. Hiermee kunt u de wijzigingen in sensorwaarden volgen terwijl een project wordt uitgevoerd.
Geef elke sensorwaarde op als een tekenreeks.
Usage:
monitor_sensor(“sensor”)
monitor_sensor(“sensor1”, “sensor2”)
Parameters |
Beschrijving |
|---|---|
|
The sensor value to monitor, given as a string. To monitor more than one sensor value, separate each sensor value with a comma. Supported sensor identifiers include:
|
def main():
# Monitor the robot's heading
monitor_sensor("drivetrain.heading")
drivetrain.turn_for(RIGHT, 450, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Waarneming#
Afstand#
gevonden_object#
found_object geeft aan of de afstandssensor momenteel een object binnen 2000 mm detecteert.
True— De afstandssensor detecteert een object.False— De afstandssensor detecteert geen object.
Usage:
distance.found_object()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
def main():
# Turn until something is detected, then release the Pin
drivetrain.turn(RIGHT)
while True:
wait(5, MSEC)
if distance.found_object():
drivetrain.stop()
break
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
object_distance#
object_distance retourneert de afstand tussen de afstandssensor en het dichtstbijzijnde gedetecteerde object.
Usage:
distance.object_distance(units)
Parameters |
Beschrijving |
|---|---|
|
De afstandseenheid: |
def main():
# Drive until 200 mm from the Goal, then release the Pin
while distance.object_distance(MM) > 200:
wait(5, MSEC)
drivetrain.drive(FORWARD)
drivetrain.stop()
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
GPS#
x_positie#
x_position geeft de huidige x-coördinaat van een GPS-sensor (Game Positioning System™) op het veld terug.
Usage:
gps.x_position(units)
Parameters |
Beschrijving |
|---|---|
eenheden |
De eenheid van de offsetwaarde: |
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive(FORWARD)
while not gps.x_position(MM) > -1370:
wait(2, MSEC)
drivetrain.stop()
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
y_positie#
y_position geeft de huidige y-coördinaat van een GPS-sensor (Game Positioning System™) op het veld terug.
Usage:
gps.y_position(units)
Parameters |
Beschrijving |
|---|---|
eenheden |
De eenheid van de offsetwaarde: |
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive(FORWARD)
while not gps.y_position(MM) < -450:
wait(2, MSEC)
drivetrain.stop()
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
kop#
heading geeft de huidige kijkrichting van de robot weer, gebaseerd op de metingen van de GPS-sensor (Game Positioning System™) van 0 tot 359 graden.
Usage:
gps.heading()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
def main():
# Raise the Arm, drive to the Goal, release the Pin
monitor_sensor("gps.heading")
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# Turn left to face the Neutral Goal
drivetrain.set_turn_velocity(30, PERCENT)
drivetrain.turn(LEFT)
while not gps.heading() < 18:
wait(2, MSEC)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)