Aandrijving#
Invoering#
De aandrijving bestaat uit wielen en motoren die bepalen hoe de robot rijdt en stuurt. Aandrijfsystemen zijn te vinden in modellen zoals de Code Base 2.0, Super Car of een zelfgebouwde robot.
Aandrijflijnen gebruiken de Inertiesensor in de Brain om botsingen te detecteren en de robot te helpen nauwkeurig te bewegen en te draaien. Aan het begin van elk project kalibreert de aandrijflijn de Inertiesensor automatisch. Houd de robot tijdens de kalibratie ongeveer 2 seconden stil, zodat de robot correct kan bewegen en draaien.
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.drive_until— Beweegt de robot vooruit totdat de oogsensor een object detecteert of de robot een botsing detecteert.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. De robot draait in de kortste richting om de doelrichting te bereiken.turn_to_rotation— Draait de robot naar een specifieke rotatie.stop— Stopt de beweging van de robot.
Mutators — Aandrijfinstellingen aanpassen.
set_drive_velocity— Vertelt de robot hoe snel hij moet rijden.set_turn_velocity— Vertelt de robot hoe snel hij moet draaien.set_stopping— Geeft aan hoe de robot stopt met bewegen: door te remmen, uit te rollen of te wachten.set_timeout— Stelt in hoe lang de robot erover doet om een beweging te voltooien.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.
Getters — Controleer de bewegingsstatus.
get_heading— Geeft de huidige richting van de robot weer, van 0 tot 359 graden.get_rotation— Geeft de huidige rotatie van de robot terug.get_velocity— Geeft de snelheid van de robot weer, als een percentage van -100% tot 100%.get_yaw— Retourneert de huidige yaw van de robot.get_roll— Geeft de huidige rol van de robot terug.get_pitch— Geeft de huidige pitch van de robot terug.get_crashed— Geeft als Booleaanse waarde aan of de robot een botsing heeft gedetecteerd.is_stopped— Geeft als Booleaanse waarde aan of de robot klaar is met bewegen.
Acties#
drive#
drive de robot beweegt oneindig vooruit of achteruit. De robot blijft bewegen totdat er een andere actie wordt opgedragen, zoals draaien of stoppen.
Usage:
drivetrain.drive(direction)
Parameters |
Beschrijving |
|---|---|
|
De richting waarin de robot beweegt: |
# Build Used: Code Base 2.0
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# Start threads — Do not delete
start_thread(main)
drive_for#
drive_for laat de robot een bepaalde afstand vooruit of achteruit bewegen.
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 of een decimaal getal zijn. |
|
Optioneel. De afstandseenheid: |
|
Optioneel. |
# Build Used: Code Base 2.0
def main():
# Drive back and forth
drivetrain.drive_for(FORWARD, 100, MM)
drivetrain.drive_for(REVERSE, 4, INCHES)
# Start threads — Do not delete
start_thread(main)
drive_until#
drive_until laat de robot vooruit bewegen totdat de oogsensor een object detecteert of de robot een botsing detecteert.
Usage:
drivetrain.drive_until(condition, wait)
Parameters |
Beschrijving |
|---|---|
|
De voorwaarde die de robot stopt: |
|
Optioneel. |
# Build Used: Code Base 2.0
def main():
# Turn right after a crash
drivetrain.drive_until(CRASH)
drivetrain.turn_for(RIGHT, 90)
# Start threads — Do not delete
start_thread(main)
turn#
turn draait de robot 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: |
# Build Used: Code Base 2.0
def main():
# Turn right and left, then stop
drivetrain.turn(RIGHT)
wait(2, SECONDS)
drivetrain.turn(LEFT)
wait(2, SECONDS)
drivetrain.stop()
# Start threads — Do not delete
start_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.
Usage:
drivetrain.turn_for(direction, angle, wait)
Parameters |
Beschrijving |
|---|---|
|
De richting waarin de robot draait: |
|
Het aantal graden dat de robot draait. Dit kan een geheel getal of een decimaal getal zijn. |
|
Optioneel. |
# Build Used: Code Base 2.0
def main():
# Turn right then left
drivetrain.turn_for(RIGHT, 90)
drivetrain.turn_for(LEFT, 90)
# Start threads — Do not delete
start_thread(main)
turn_to_heading#
Een koers is de richting waarin het brein van 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(angle, wait)
Parameters |
Beschrijving |
|---|---|
|
De richting waarin de robot moet kijken, wordt aangegeven als een geheel getal tussen -359 en 359 graden. |
|
Optioneel. |
# Build Used: Code Base 2.0
def main():
# Turn to face the cardinal directions
drivetrain.turn_to_heading(90)
wait(1, SECONDS)
drivetrain.turn_to_heading(180)
wait(1, SECONDS)
drivetrain.turn_to_heading(270)
wait(1, SECONDS)
drivetrain.turn_to_heading(0)
# Start threads — Do not delete
start_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 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.

Usage:
drivetrain.turn_to_rotation(angle, wait)
Parameters |
Beschrijving |
|---|---|
|
De rotatiewaarde, in graden, waarnaar de robot zal draaien. Dit kan een geheel getal zijn. |
|
Optioneel. |
# Build Used: Code Base 2.0
def main():
# Make one full turn to the right
drivetrain.turn_to_rotation(360)
# Make another full turn to the right
drivetrain.turn_to_rotation(720)
# Make one full turn to the left, returning to 360 degrees
drivetrain.turn_to_rotation(360)
# Start threads — Do not delete
start_thread(main)
stop#
stop stopt de beweging van de robot.
Usage:
drivetrain.stop()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# Build Used: Code Base 2.0
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# Start threads — Do not delete
start_thread(main)
Mutators#
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 nauwkeuriger is.
Usage:
drivetrain.set_drive_velocity(velocity)
Parameters |
Beschrijving |
|---|---|
|
De snelheid waarmee gereden wordt, varieert van 0% tot 100%. |
# Build Used: Code Base 2.0
def main():
# Drive at different velocities
drivetrain.drive_for(FORWARD, 100, MM)
wait(1, SECONDS)
# Drive slow
drivetrain.set_drive_velocity(20)
drivetrain.drive_for(FORWARD, 100, MM)
wait(1, SECONDS)
# Drive fast
drivetrain.set_drive_velocity(100)
drivetrain.drive_for(FORWARD, 100, MM)
# Start threads — Do not delete
start_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 nauwkeuriger.
Usage:
drivetrain.set_turn_velocity(velocity)
Parameters |
Beschrijving |
|---|---|
|
De draaisnelheid varieert van 0% tot 100%. |
# Build Used: Code Base 2.0
def main():
# Turn at different velocities
drivetrain.turn_for(RIGHT, 180)
wait(1, SECONDS)
# Turn fast
drivetrain.set_turn_velocity(100)
drivetrain.turn_for(RIGHT, 180)
# Start threads — Do not delete
start_thread(main)
set_stopping#
set_stopping bepaalt hoe de robot stopt met bewegen: door te remmen, uit te rollen of stil te staan.
Usage:
drivetrain.set_stopping(brake)
Parameters |
Beschrijving |
|---|---|
|
Hoe de robot stopt:
|
Als deze methode niet wordt gebruikt, zal de robot BRAKE gebruiken bij het stoppen.
# Build Used: Code Base 2.0
def main():
# Drive, then coast to a stop
drivetrain.set_drive_velocity(100)
drivetrain.set_stopping(COAST)
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# Start threads — Do not delete
start_thread(main)
set_timeout#
set_timeout bepaalt hoe lang de robot erover doet 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 |
|---|---|
|
De maximale tijd die de robot mag besteden aan het voltooien van een beweging. Dit kan een geheel getal of een decimaal getal zijn. |
|
Optioneel. De tijdseenheid: |
# Build Used: Code Base 2.0
def main():
# Drive as far as possible for 1 second before turning right
drivetrain.set_timeout(1, SECONDS)
drivetrain.drive_for(FORWARD, 25, INCHES)
drivetrain.turn_for(RIGHT, 90)
# Start threads — Do not delete
start_thread(main)
set_heading#
Een koers is de richting waarin het brein van 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(value)
Parameters |
Beschrijving |
|---|---|
|
De richtingswaarde, in graden, die voor de robot moet worden ingesteld. Dit kan een geheel getal zijn van 0 tot 359. |
# Build Used: Code Base 2.0
def main():
# Face the new 0 degree heading
drivetrain.set_heading(90)
drivetrain.turn_to_heading(0)
# Start threads — Do not delete
start_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(value)
Parameters |
Beschrijving |
|---|---|
|
De rotatiewaarde in graden die voor de robot moet worden ingesteld. Dit kan een geheel getal zijn. |
# Build Used: Code Base 2.0
def main():
# Spin counterclockwise two times
drivetrain.set_rotation(720)
drivetrain.turn_to_rotation(0)
# Start threads — Do not delete
start_thread(main)
Getters#
get_heading#
Een richting is de richting waarin het brein van de robot kijkt, gemeten in graden. get_heading geeft die richting weer, van 0 tot 359 graden.
De beginrichting van de robot is 0 graden.

Usage:
drivetrain.get_heading()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# Build Used: Code Base 2.0
def main():
# Display the heading while turning
monitor_sensor("drivetrain.get_heading")
drivetrain.turn_for(RIGHT, 450)
# Start threads — Do not delete
start_thread(main)
get_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. get_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.get_rotation()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# Build Used: Code Base 2.0
def main():
# Display the rotation while turning
monitor_sensor("drivetrain.get_rotation")
drivetrain.turn_for(RIGHT, 450)
# Start threads — Do not delete
start_thread(main)
get_velocity#
get_velocity geeft aan hoe snel de robot rijdt, als een percentage van -100% tot 100%.
Een positieve waarde betekent dat de robot vooruit rijdt. Een negatieve waarde betekent dat de robot achteruit rijdt.
Usage:
drivetrain.get_velocity()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# Build Used: Code Base 2.0
def main():
# Display the velocity of the robot before and while moving
console.print("Start: ")
console.print(drivetrain.get_velocity())
console.new_line()
drivetrain.drive(FORWARD)
wait(0.5, SECONDS)
console.print("Moving: ")
console.print(drivetrain.get_velocity())
drivetrain.stop()
# Start threads — Do not delete
start_thread(main)
get_yaw#
De yaw-hoek geeft aan hoeveel de robot naar links of rechts is gedraaid ten opzichte van zijn startpositie, gemeten in graden. get_yaw geeft de huidige yaw-waarde van de robot terug.
Naar rechts sturen vergroot de gierhoek, en naar links sturen verkleint de gierhoek.
Usage:
drivetrain.get_yaw()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# Build Used: Super Code Base 2.0
def main():
# Change the LED color based on the yaw while
# moving the robot by hand
monitor_sensor("drivetrain.get_yaw")
while True:
if drivetrain.get_yaw() > 0:
bumper.set_color(GREEN)
elif drivetrain.get_yaw() < 0:
bumper.set_color(RED)
else:
bumper.set_color(NONE)
# Start threads — Do not delete
start_thread(main)
get_roll#
Roll geeft aan hoeveel de robot naar links of rechts kantelt, gemeten in graden. get_roll geeft de huidige roll-waarde van de robot terug.
Als de hersenen naar voren gericht zijn, verhoogt kantelen naar links de rolhoek en verlaagt kantelen naar rechts de rolhoek.
Usage:
drivetrain.get_roll()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# Build Used: Super Code Base 2.0
def main():
# Change the LED color based on the roll while
# moving the robot by hand
monitor_sensor("drivetrain.get_roll")
while True:
if drivetrain.get_roll() > 0:
bumper.set_color(GREEN)
elif drivetrain.get_roll() < 0:
bumper.set_color(RED)
else:
bumper.set_color(NONE)
# Start threads — Do not delete
start_thread(main)
get_pitch#
Pitch geeft aan hoeveel de robot naar voren of naar achteren kantelt, gemeten in graden. get_pitch geeft de huidige pitch-waarde van de robot terug.
Als de hersenen naar voren gericht zijn, verhoogt voorover kantelen de toonhoogte en verlaagt achterover kantelen de toonhoogte.
Usage:
drivetrain.get_pitch()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# Build Used: Super Code Base 2.0
def main():
# Change the LED color based on the pitch while
# moving the robot by hand
monitor_sensor("drivetrain.get_pitch")
while True:
if drivetrain.get_pitch() > 0:
bumper.set_color(GREEN)
elif drivetrain.get_pitch() < 0:
bumper.set_color(RED)
else:
bumper.set_color(NONE)
# Start threads — Do not delete
start_thread(main)
get_crashed#
get_crashed retourneert als Booleaanse waarde of de robot een botsing heeft gedetecteerd.
True— Er is een botsing gedetecteerd.False— Er is geen crash gedetecteerd.
Usage:
drivetrain.get_crashed()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# Build Used: Super Code Base 2.0
def main():
# Drive until a crash
drivetrain.drive(FORWARD)
while not drivetrain.get_crashed():
wait(50, MSEC)
drivetrain.stop()
drivetrain.turn_for(RIGHT, 90)
# Start threads — Do not delete
start_thread(main)
is_stopped#
is_stopped geeft als Booleaanse waarde aan of de robot klaar is met bewegen. Dit kan worden gebruikt om de timing van andere acties te regelen 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 aandrijfmethoden die de parameter wait hebben: drive_for, drive_until, turn_for, turn_to_heading, en turn_to_rotation.
Usage:
drivetrain.is_stopped()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# Build Used: Code Base 2.0
def main():
# Turn when the drivetrain is done moving forward
drivetrain.drive_for(FORWARD, 100, MM, wait=False)
wait(0.25, SECONDS)
while True:
if drivetrain.is_stopped():
drivetrain.turn_for(RIGHT, 180)
break
else:
console.print("Still moving...")
wait(0.1, SECONDS)
console.clear()
# Start threads — Do not delete
start_thread(main)