Drivlina#
Introduktion#
Drivlinan styr hur VR-roboten kör och svänger. Drivlinan kan röra sig framåt eller bakåt, svänga vänster eller höger, följa kursriktningar och spåra sin rotation.
Det finns många sätt att koda drivlinan. Nedan följer en lista över alla drivlinmetoder:
Åtgärder — Flytta och vrid roboten.
drive— Rör roboten framåt eller bakåt i all oändlighet.drive_for— Rör roboten framåt eller bakåt ett visst avstånd.turn— Svänger roboten åt vänster eller höger för alltid.turn_for— Svänger roboten åt vänster eller höger ett visst antal grader.turn_to_heading— Vrider roboten mot en specifik kurs från -359 till 359 grader.turn_to_rotation— Vrider roboten till en specifik rotation.stop— Stoppar robotens rörelse.
Mutatorer — Justera drivlinans inställningar.
set_heading— Ändrar robotens nuvarande kurs till en ny kurs.set_rotation— Ändrar robotens aktuella rotation till en ny rotation.set_timeout— Anger hur lång tid roboten ska försöka slutföra en rörelse.set_drive_velocity— Anger för roboten hur snabbt den ska köra.set_turn_velocity— Anger för roboten hur snabbt den ska svänga.
Getters — Kontrollera drivlinans status.
Åtgärder#
drive#
drive rör roboten framåt eller bakåt för alltid. Roboten fortsätter att röra sig tills den får en annan åtgärd, som att vända eller stanna.
Usage:
drivetrain.drive(direction)
Parametrar |
Beskrivning |
|---|---|
|
Robotens rörelseriktning: |
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 flyttar roboten framåt eller bakåt ett visst avstånd. Projektet väntar tills roboten är klar innan nästa kodrad körs.
Usage:
drivetrain.drive_for(direction, distance, units, wait)
Parametrar |
Beskrivning |
|---|---|
|
Robotens rörelseriktning: |
|
Sträckan roboten kör. Detta kan vara ett heltal |
|
Valfritt. Avståndsenheten: |
|
Valfritt. |
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 vrider roboten åt vänster eller höger för alltid. Roboten fortsätter att vrida tills den får en annan åtgärd, som att köra eller stanna.
Usage:
drivetrain.turn(direction)
Parametrar |
Beskrivning |
|---|---|
|
Riktningen roboten svänger: |
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 vrider roboten åt vänster eller höger ett visst antal grader. Vridningen är relativ till robotens aktuella position. Projektet väntar tills roboten är klar med att vrida sig innan nästa kodrad körs.
Usage:
drivetrain.turn_for(direction, angle, units, wait)
Parametrar |
Beskrivning |
|---|---|
|
Riktningen roboten svänger: |
|
Antalet grader roboten roterar. Detta kan vara ett heltal |
|
Valfritt. Rotationsenheten: |
|
Valfritt. |
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#
En kurs är den riktning roboten är vänd mot, mätt i grader. turn_to_heading vrider roboten så att den är vänd mot en specifik kurs från -359 till 359 grader. Roboten kommer att svänga den kortaste riktningen för att nå målkursen.
Robotens startriktning är 0 grader.
Projektet väntar tills roboten är klar med att snurra innan nästa kodrad körs.
Usage:
drivetrain.turn_to_heading(angle, units, wait)
Parametrar |
Beskrivning |
|---|---|
|
Riktningen roboten ska vara vänd mot, i grader. Detta kan vara ett heltal |
|
Valfritt. Rotationsenheten: |
|
Valfritt. |
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 vrider roboten till en specifik rotation.
Rotation är hur mycket roboten har roterat, mätt i grader. I början av ett projekt sätts rotationsvärdet till 0 grader. Rotation kan också ställas in med metoden set_rotation.
Rotationsvärdena är absoluta. Det betyder att rotationsriktningen beror på robotens aktuella rotation. Att vrida åt höger ökar rotationen och att vrida åt vänster minskar rotationen.
Om roboten till exempel startar vid 0 grader och du roterar 720 grader, kommer den att svänga höger två gånger. Om du sedan roterar 360 grader, kommer den att svänga vänster en gång, eftersom 360 är mindre än 720.
Projektet väntar tills roboten är klar med att snurra innan nästa kodrad körs.
Usage:
drivetrain.turn_to_rotation(angle, units, wait)
Parametrar |
Beskrivning |
|---|---|
|
Rotationsvärdet, i grader, som roboten kommer att rotera till. Detta kan vara ett heltal |
|
Valfritt. Rotationsenheten: |
|
Valfritt. |
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 stoppar robotens rörelse.
Usage:
drivetrain.stop()
Parametrar |
Beskrivning |
|---|---|
Den här metoden har inga parametrar. |
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
Mutatorer#
set_heading#
En kurs är den riktning roboten är vänd i, mätt i grader. set_heading ändrar robotens nuvarande kurs till ett nytt kursvärde.
Om roboten till exempel har vänt sig åt höger och kursen ställs in på 0 grader, blir den högervända positionen den nya 0 grader. Roboten kan då vända sig till andra positioner baserat på den nya kursen.
Usage:
drivetrain.set_heading(heading, units)
Parametrar |
Beskrivning |
|---|---|
|
Kursvärdet, i grader, som ska ställas in för roboten. Detta kan vara ett heltal |
|
Valfritt. Kursenheten: |
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#
Rotation är hur mycket roboten har roterat, mätt i grader. I början av ett projekt sätts rotationsvärdet till 0 grader. set_rotation ändrar robotens aktuella rotation till ett nytt värde.
Om roboten till exempel har gjort två hela varv åt höger blir dess rotationsvärde 720 grader. Om rotationen ställs in på 0 grader återställs den rotationen från 720 till 0 grader. Sedan kan roboten vända sig till rotationer baserat på det nya värdet.
Usage:
drivetrain.set_rotation(rotation, units)
Parametrar |
Beskrivning |
|---|---|
|
Rotationsvärdet, i grader, som ska ställas in för roboten. Detta kan vara ett heltal |
|
Valfritt. Rotationsenheten: |
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 anger hur lång tid roboten ska försöka slutföra en rörelse. Om roboten inte kan slutföra inom den tiden kommer den att sluta försöka och gå vidare till nästa kodrad. Detta förhindrar att roboten fastnar i en rörelse.
Usage:
drivetrain.set_timeout(value, units)
Parametrar |
Beskrivning |
|---|---|
|
Den tid roboten kan försöka slutföra en rörelse. Detta kan vara ett positivt |
|
Valfritt. Tidsenheten: |
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 anger hur snabbt roboten ska köra. En högre procentandel gör att roboten kör snabbare och en lägre procentandel gör att roboten kör långsammare.
Varje projekt börjar med att roboten kör med 50 % hastighet som standard.
Obs: En högre hastighet gör att roboten kör snabbare, men den kan vara mindre precis. En lägre hastighet gör att roboten kör långsammare, men den kan vara mer precis.
Usage:
drivetrain.set_drive_velocity(velocity, units)
Parametrar |
Beskrivning |
|---|---|
|
Hastigheten att köra med från 0 % till 100 %. Detta kan vara ett heltal |
|
Valfritt. Hastighetsenheten: |
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 anger hur snabbt roboten ska snurra. En högre procentandel gör att roboten snurrar snabbare och en lägre procentandel gör att roboten snurrar långsammare.
Varje projekt börjar med att roboten roterar med 50 % hastighet som standard.
Obs: En högre hastighet gör att roboten roterar snabbare, men den kan vara mindre exakt. En lägre hastighet gör att roboten roterar långsammare, men den kan vara mer exakt.
Usage:
drivetrain.set_turn_velocity(velocity, units)
Parametrar |
Beskrivning |
|---|---|
|
Hastigheten att rotera med från 0 % till 100 %. Detta kan vara ett heltal |
|
Valfritt. Hastighetsenheten: |
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#
En kurs är den riktning roboten är vänd i, mätt i grader. heading returnerar robotens aktuella kurs från 0 till 359,99 grader.
Robotens startriktning är 0 grader.
Usage:
drivetrain.heading(units)
Parametrar |
Beskrivning |
|---|---|
|
Valfritt. Kursenheten: |
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#
Rotation är hur mycket roboten har roterat, mätt i grader. I början av ett projekt sätts rotationsvärdet till 0 grader. rotation returnerar robotens aktuella rotation.
Att vrida åt höger ökar rotationen, och att vrida åt vänster minskar rotationen. Om du till exempel gör två hela varv åt höger får du en rotation på 720 grader.
Usage:
drivetrain.rotation(units)
Parametrar |
Beskrivning |
|---|---|
|
Valfritt. Rotationsenheten: |
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 returnerar huruvida roboten är klar med att röra sig, som ett booleskt värde. Detta kan användas för att styra tidpunkten för andra beteenden baserat på robotens rörelse.
True— Roboten är klar med sin rörelse.False— Roboten rör sig fortfarande.
Den här metoden fungerar tillsammans med följande drivlinmetoder som har parametern wait : drive_for, turn_for, turn_to_heading och turn_to_rotation.
Usage:
drivetrain.is_done()
Parametrar |
Beskrivning |
|---|---|
Den här metoden har inga parametrar. |
is_moving#
is_moving returnerar huruvida roboten rör sig, som ett booleskt värde. Detta kan användas för att styra tidpunkten för andra beteenden baserat på robotens rörelse.
True— Roboten rör sig.False— Roboten rör sig inte.
Usage:
drivetrain.is_moving()
Parametrar |
Beskrivning |
|---|---|
Den här metoden har inga parametrar. |