Aandrijving#

Invoering#

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.

Er zijn veel manieren om de aandrijflijn te programmeren. Hieronder vindt u een lijst met alle methoden voor het programmeren van de aandrijflijn:

Acties — Beweeg en draai de robot.

  • 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 — Aandrijfinstellingen aanpassen.

  • 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.

Getters — Controleer de status van de aandrijving.

  • 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.

Acties#

drive#

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

direction

De richting waarin de robot beweegt: FORWARD of REVERSE.

def main():
    # Drive forward then stop
    drivetrain.drive(FORWARD)
    wait(2, SECONDS)
    drivetrain.stop()

# 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

direction

De richting waarin de robot beweegt: FORWARD of REVERSE.

distance

De afstand die de robot aflegt. Dit kan een geheel getal integer ) of een decimaal getal (float ) zijn.

units

Optioneel. De afstandseenheid: INCHES (standaard) of MM (millimeter).

wait

Optioneel. wait=True (standaard) zorgt ervoor dat het project wacht totdat de robot klaar is met bewegen voordat de volgende regel code wordt uitgevoerd. wait=False zorgt ervoor dat de volgende regel code direct wordt uitgevoerd.

def main():
    # Drive forward and backward
    drivetrain.drive_for(FORWARD, 200, MM)
    drivetrain.drive_for(REVERSE, 200, MM)

# VR threads — Do not delete
vr_thread(main)

turn#

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

direction

De richting waarin de robot draait: LEFT of RIGHT.

def main():
    # Turn right and left, then stop
    drivetrain.turn(RIGHT)
    wait(2, SECONDS)
    drivetrain.turn(LEFT)
    wait(2, SECONDS)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

turn_for#

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

direction

De richting waarin de robot draait: LEFT of RIGHT.

angle

Het aantal graden dat de robot draait. Dit kan een geheel getal integer ) of een decimaal getal (float ) zijn.

units

Optioneel. De rotatie-eenheid: DEGREES (standaard).

wait

Optioneel. wait=True (standaard) zorgt ervoor dat het project wacht totdat de robot klaar is met draaien voordat de volgende regel code wordt uitgevoerd. wait=False zorgt ervoor dat de volgende regel code direct wordt uitgevoerd.

def main():
    # Turn the robot right and left
    drivetrain.turn_for(RIGHT, 90, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_for(LEFT, 90, DEGREES)

# VR threads — Do not delete
vr_thread(main)

turn_to_heading#

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 van de robot is 0 graden.

Het project wacht tot de robot klaar is met draaien voordat de volgende regel code wordt uitgevoerd.

Usage:
drivetrain.turn_to_heading(angle, units, wait)

Parameters

Beschrijving

angle

De richting waarin de robot moet kijken, in graden. Dit kan een geheel getal integer of een decimaal getal (float) zijn van -359 tot 359.

units

Optioneel. De rotatie-eenheid: DEGREES (standaard).

wait

Optioneel. wait=True (standaard) zorgt ervoor dat het project wacht totdat de robot klaar is met draaien voordat de volgende regel code wordt uitgevoerd. wait=False zorgt ervoor dat de volgende regel code direct wordt uitgevoerd.

def main():
    # Turn to face the cardinal directions
    drivetrain.turn_to_heading(90, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_to_heading(180, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_to_heading(270, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_to_heading(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

turn_to_rotation#

turn_to_rotation draait de robot naar een specifieke rotatie.

Rotatie is de mate waarin de robot is gedraaid, gemeten in graden. Aan het begin van een project wordt de rotatiewaarde ingesteld op 0 graden. Rotatie kan ook worden ingesteld met behulp van de methode set_rotation.

De rotatiewaarden zijn absoluut. Dit betekent dat de draairichting afhangt van de huidige rotatie van de robot. Naar rechts draaien vergroot de rotatie, naar links draaien verkleint de rotatie.

Als de robot bijvoorbeeld begint bij 0 graden en je draait hem 720 graden, dan draait hij twee keer naar rechts. Als je hem vervolgens 360 graden draait, draait hij één keer naar links, omdat 360 minder is dan 720.

Het project wacht tot de robot klaar is met draaien voordat de volgende regel code wordt uitgevoerd.

Usage:
drivetrain.turn_to_rotation(angle, units, wait)

Parameters

Beschrijving

angle

De rotatiewaarde, in graden, waarnaar de robot zal draaien. Dit kan een geheel getal integer ) of een decimaal getal (float ) zijn.

units

Optioneel. De rotatie-eenheid: DEGREES (standaard).

wait

Optioneel. wait=True (standaard) zorgt ervoor dat het project wacht totdat de robot klaar is met draaien voordat de volgende regel code wordt uitgevoerd. wait=False zorgt ervoor dat de volgende regel code direct wordt uitgevoerd.

def main():
    # Turn left, then spin in a circle
    # clockwise and face right
    drivetrain.turn_to_rotation(-90, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_to_rotation(450, 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():
    # Drive forward then stop
    drivetrain.drive(FORWARD)
    wait(2, SECONDS)
    drivetrain.stop()

# 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

heading

De richtingswaarde, in graden, die voor de robot moet worden ingesteld. Dit kan een geheel getal integer ) of een decimaal getal (float ) zijn.

units

Optioneel. De richtingseenheid: DEGREES (standaard).

def main():
    # Face the new 0 degrees
    drivetrain.set_heading(90, 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. Aan het begin van een project wordt de rotatiewaarde ingesteld op 0 graden. Met de opdracht set_rotation wordt de huidige rotatie van de robot gewijzigd naar een nieuwe waarde.

Als de robot bijvoorbeeld twee volledige draaien naar rechts heeft gemaakt, is de rotatiewaarde 720 graden. Door de rotatie op 0 graden te zetten, wordt die rotatiewaarde gereset van 720 naar 0 graden. De robot kan vervolgens draaien op basis van die nieuwe waarde.

Usage:
drivetrain.set_rotation(rotation, units)

Parameters

Beschrijving

rotation

De rotatiewaarde in graden die voor de robot moet worden ingesteld. Dit kan een geheel getal integer ) of een decimaal getal (float ) zijn.

units

Optioneel. De rotatie-eenheid: DEGREES (standaard).

def main():
    # Spin counterclockwise two times
    drivetrain.set_rotation(720, DEGREES)
    drivetrain.turn_to_rotation(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

set_timeout#

set_timeout bepaalt hoeveel tijd de robot 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(value, units)

Parameters

Beschrijving

value

De hoeveelheid tijd die de robot kan proberen om een ​​beweging te voltooien. Dit kan een positief geheel getal zijn integer ) of een decimaal getal (float).

units

Optioneel. De tijdseenheid: SECONDS (standaard) of MSEC (milliseconden).

def main():
    # Turn right after driving forward
    drivetrain.set_timeout(1, SECONDS)
    drivetrain.drive_for(FORWARD, 25, INCHES)
    drivetrain.turn_for(RIGHT, 90)

# 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

velocity

De snelheid waarmee gereden moet worden, van 0% tot 100%. Dit kan een geheel getal integer of een decimaal getal (float ) zijn.

units

Optioneel. De snelheidseenheid: PERCENT (standaard).

def main():
    # Drive forward at different velocities
    # Default velocity
    drivetrain.drive_for(FORWARD, 150, MM)
    wait(1, SECONDS)
    # Drive slower
    drivetrain.set_drive_velocity(20, PERCENT)
    drivetrain.drive_for(FORWARD, 150, MM)
    wait(1, SECONDS)
    # Drive faster
    drivetrain.set_drive_velocity(100, PERCENT)
    drivetrain.drive_for(FORWARD, 150, MM)

# 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

velocity

De snelheid waarmee je draait, van 0% tot 100%. Dit kan een geheel getal integer ) of een decimaal getal (float ) zijn.

units

Optioneel. De snelheidseenheid: PERCENT (standaard).

def main():
    # Turn at different velocities
    # Default velocity
    drivetrain.turn_for(RIGHT, 120, DEGREES)
    wait(1, SECONDS)
    # Turn slower
    drivetrain.set_turn_velocity(20, PERCENT)
    drivetrain.turn_for(RIGHT, 120, DEGREES)
    wait(1, SECONDS)
    # Turn faster
    drivetrain.set_turn_velocity(100, PERCENT)
    drivetrain.turn_for(RIGHT, 120, DEGREES)

# VR threads — Do not delete
vr_thread(main)

Getters#

heading#

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

units

Optioneel. De richtingseenheid: DEGREES (standaard).

def main():
    # Display the heading after turning
    drivetrain.turn_for(RIGHT, 450, DEGREES)
    brain.print("Heading: ")
    brain.print(drivetrain.heading(DEGREES))

# VR threads — Do not delete
vr_thread(main)

rotation#

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

units

Optioneel. De rotatie-eenheid: DEGREES (standaard).

def main():
    # Display the rotation after turning
    drivetrain.turn_for(RIGHT, 450, DEGREES)
    brain.print("Rotation: ")
    brain.print(drivetrain.rotation(DEGREES))

# VR threads — Do not delete
vr_thread(main)

is_done#

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.

is_moving#

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.