Piedziņa#

Ievads#

Piedziņas sistēmā ietilpst riteņi un motori, kas kontrolē robota braukšanu un pagriešanos. Piedziņas sistēmas var atrast tādās versijās kā Code Base 2.0, Super Car vai pielāgotā robotā.

Piedziņas mehānismi izmanto smadzenēs esošo inerciālo sensoru, lai noteiktu avārijas un palīdzētu robotam precīzi kustēties un pagriezties. Katra projekta sākumā piedziņas mehānisms automātiski kalibrē inerciālo sensoru. Kalibrēšanas laikā robotam jāturas nekustīgi apmēram 2 sekundes, lai tas varētu pareizi kustēties un pagriezties.

Ir daudz veidu, kā kodēt piedziņas sistēmu. Zemāk ir visu piedziņas sistēmas metožu saraksts:

Darbības — Pārvietot un pagriezt robotu.

  • drive — Pārvieto robotu uz priekšu vai atpakaļ uz visiem laikiem.

  • drive_for — Pārvieto robotu uz priekšu vai atpakaļ noteiktu attālumu.

  • drive_until — Robots pārvieto uz priekšu, līdz acu sensors konstatē objektu vai robots konstatē avāriju.

  • turn — Pagriež robotu pa kreisi vai pa labi uz visiem laikiem.

  • turn_for — Pagriež robotu pa kreisi vai pa labi par noteiktu grādu skaitu.

  • turn_to_heading — Pagriež robotu noteiktā virzienā no -359 līdz 359 grādiem. Robots pagriezīsies īsākajā virzienā, lai sasniegtu mērķa virzienu.

  • turn_to_rotation — Pagriež robotu noteiktā rotācijā.

  • stop — Aptur robota kustību.

Mutatori — pielāgo piedziņas mehānisma iestatījumus.

  • set_drive_velocity — Norāda robotam, cik ātri braukt.

  • set_turn_velocity — Norāda robotam, cik ātri griezties.

  • set_stopping — Norāda, kā robots pārtrauks kustību: bremzējot, braucot brīvi vai turoties.

  • set_timeout — Iestata, cik ilgi robots mēģinās pabeigt kustību.

  • set_heading — Maina robota pašreizējo virzienu uz jaunu virzienu.

  • set_rotation — Maina robota pašreizējo rotāciju uz jaunu rotāciju.

Getteri — pārbaudiet kustības statusu.

  • get_heading — Atgriež robota pašreizējo virzienu no 0 līdz 359 grādiem.

  • get_rotation — Atgriež robota pašreizējo rotāciju.

  • get_velocity — Atgriež robota braukšanas ātrumu procentos no -100% līdz 100%.

  • get_yaw — Atgriež robota pašreizējo novirzi.

  • get_roll — Atgriež robota pašreizējo metienu.

  • get_pitch — Atgriež robota pašreizējo slīpuma leņķi.

  • get_crashed — Atgriež, vai robots ir konstatējis avāriju, kā Būla vērtību.

  • is_stopped — Atgriež, vai robots ir pabeidzis kustību, kā Būla vērtību.

Darbības#

drive#

drive pārvieto robotu uz priekšu vai atpakaļ bezgalīgi. Robots turpinās kustēties, līdz tam tiks dota cita darbība, piemēram, pagriešana vai apstāšanās.

Usage:
drivetrain.drive(direction)

Parametri

Apraksts

direction

Robota kustības virziens: FORWARD vai REVERSE.

# 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 pārvieto robotu uz priekšu vai atpakaļ noteiktu attālumu.

Usage:
drivetrain.drive_for(direction, distance, units, wait)

Parametri

Apraksts

direction

Robota kustības virziens: FORWARD vai REVERSE.

distance

Robota nobrauktais attālums. Tas var būt vesels skaitlis vai decimālskaitlis.

units

Neobligāti. Attāluma mērvienība: MM (milimetri, pēc noklusējuma) vai INCHES collas).

wait

Neobligāti. wait=True (noklusējums) liek projektam gaidīt, līdz robots ir beidzis kustību, pirms tiek palaista nākamā koda rinda. wait=False liek nekavējoties palaist nākamo koda rindu.

# 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 pārvieto robotu uz priekšu, līdz acu sensors atrod objektu vai robots konstatē avāriju.

Usage:
drivetrain.drive_until(condition, wait)

Parametri

Apraksts

condition

Nosacījums, kas aptur robotu: OBJECT vai CRASH.

wait

Neobligāti. wait=True (noklusējums) liek projektam gaidīt, līdz robots ir beidzis kustību, pirms tiek palaista nākamā koda rinda. wait=False liek nekavējoties palaist nākamo koda rindu.

# 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 pagriež robotu pa kreisi vai pa labi uz visiem laikiem. Robots turpinās griezties, līdz tam tiks dota cita darbība, piemēram, braukšana līdz apstāšanās brīdim.

Usage:
drivetrain.turn(direction)

Parametri

Apraksts

direction

Robota griešanās virziens: LEFT vai RIGHT.

# 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 pagriež robotu pa kreisi vai pa labi par noteiktu grādu skaitu. Pagrieziens ir relatīvs attiecībā pret robota pašreizējo pozīciju.

Usage:
drivetrain.turn_for(direction, angle, wait)

Parametri

Apraksts

direction

Robota griešanās virziens: LEFT vai RIGHT.

angle

Robota pagrieziena grādu skaits. Tas var būt vesels skaitlis vai decimālskaitlis.

wait

Neobligāti. wait=True (noklusējums) liek projektam gaidīt, līdz robots ir pabeidzis pagriešanos, pirms tiek palaista nākamā koda rinda. wait=False liek nekavējoties palaist nākamo koda rindu.

# 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#

Virziens ir virziens, kurā ir pagrieztas robota smadzenes, mērot grādos. turn_to_heading pagriež robotu noteiktā virzienā no -359 līdz 359 grādiem. Robots pagriezīsies īsākajā virzienā, lai sasniegtu mērķa virzienu.

Sākuma kurss ir 0 grādi.

VEX GO Code Base 2.0, kas parāda virziena virzienus: 0 grādi uz priekšu, 90 grādi pa labi, 180 grādi atpakaļ un 270 grādi pa kreisi.

Usage:
drivetrain.turn_to_heading(angle, wait)

Parametri

Apraksts

angle

Virziens, kādā robotam jāgriežas, kā vesels skaitlis no -359 līdz 359 grādiem.

wait

Neobligāti. wait=True (noklusējums) liek projektam gaidīt, līdz robots ir pabeidzis pagriešanos, pirms tiek palaista nākamā koda rinda. wait=False liek nekavējoties palaist nākamo koda rindu.

# 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 pagriež robotu noteiktā rotācijā.

Rotācija ir robota pagrieziena lielums, mērīts grādos. Projekta sākumā rotācijas vērtība ir iestatīta uz 0 grādiem. Rotāciju var iestatīt arī, izmantojot set_rotation.

Rotācijas vērtības ir absolūtas. Tas nozīmē, ka pagrieziena virziens ir atkarīgs no robota pašreizējās rotācijas. Pagriežoties pa labi, rotācija palielinās, bet pagriežoties pa kreisi, tā samazinās.

Piemēram, ja robots sāk darboties no 0 grādiem un jūs pagriežaties par 720 grādiem, tas divreiz pagriezīsies pa labi. Ja pēc tam pagriezīsities par 360 grādiem, tas vienreiz pagriezīsies pa kreisi, jo 360 grādi ir mazāki par 720.

VEX GO Code Base 2.0, kurā redzamas pa labi un pa kreisi rotējošas bultiņas. Kreisā bultiņa rāda "mīnus", bet labā bultiņa rāda "plus".

Usage:
drivetrain.turn_to_rotation(angle, wait)

Parametri

Apraksts

angle

Rotācijas vērtība grādos, kādā robots pagriezīsies. Tas var būt vesels skaitlis.

wait

Neobligāti. wait=True (noklusējums) liek projektam gaidīt, līdz robots ir pabeidzis pagriešanos, pirms tiek palaista nākamā koda rinda. wait=False liek nekavējoties palaist nākamo koda rindu.

# 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 aptur robota kustību.

Usage:
drivetrain.stop()

Parametri

Apraksts

Šai metodei nav parametru.

# 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)

Mutatori#

set_drive_velocity#

set_drive_velocity norāda robotam, cik ātri jābrauc. Augstāka procentuālā vērtība liek robotam braukt ātrāk, bet zemāka procentuālā vērtība liek robotam braukt lēnāk.

Katrs projekts sākas ar robota kustību ar noklusējuma ātrumu 50%.

Piezīme: Lielāks ātrums padara robotu ātrāku, bet tas var būt mazāk precīzs. Mazāks ātrums padara robotu lēnāku, bet precīzāku.

Usage:
drivetrain.set_drive_velocity(velocity)

Parametri

Apraksts

velocity

Braukšanas ātrums no 0% līdz 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 norāda robotam, cik ātri griezties. Augstāka procentuālā vērtība liek robotam griezties ātrāk, bet zemāka procentuālā vērtība liek robotam griezties lēnāk.

Katrs projekts sākas ar robota griešanos ar noklusējuma ātrumu 50%.

Piezīme: Lielāks ātrums liek robotam griezties ātrāk, bet tas var būt mazāk precīzs. Mazāks ātrums liek robotam griezties lēnāk, bet tas var būt precīzāks.

Usage:
drivetrain.set_turn_velocity(velocity)

Parametri

Apraksts

velocity

Griešanās ātrums no 0% līdz 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 nosaka, kā robots pārtrauks kustību: bremzējot, braucot brīvi vai turoties.

Usage:
drivetrain.set_stopping(brake)

Parametri

Apraksts

brake

Kā robots apstāsies:

  • BRAKE — Apstājas nekavējoties.
  • COAST — Palēnina gaitu līdz apstājas.
  • HOLD — Apstājas nekavējoties un notur riteņu pozīciju.

Ja šī metode netiek izmantota, robots apstājoties izmantos BRAKE.

# 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 nosaka, cik ilgi robots mēģinās pabeigt kustību. Ja robots nevar pabeigt šajā laikā, tas pārtrauks mēģinājumu un pāries uz nākamo koda rindiņu. Tas neļauj robotam iestrēgt kustībā.

Usage:
drivetrain.set_timeout(value, units)

Parametri

Apraksts

value

Laiks, kurā robots var mēģināt pabeigt kustību. Tas var būt vesels skaitlis vai decimālskaitlis.

units

Neobligāti. Laika mērvienība: SECONDS (pēc noklusējuma) vai MSEC (milisekundes).

# 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#

Virziens ir virziens, kurā atrodas robota smadzenes, mērot grādos. set_heading maina robota pašreizējo virzienu uz jaunu virzienu.

Piemēram, ja robots ir pagriezies pa labi, iestatot virzienu uz 0 grādiem, šī pozīcija, kas vērsta pa labi, kļūst par jauno 0 grādu pozīciju. Pēc tam robots var pagriezties uz citām pozīcijām, pamatojoties uz šo jauno virzienu.

Usage:
drivetrain.set_heading(value)

Parametri

Apraksts

value

Robota iestatāmā virziena vērtība grādos. Tas var būt vesels skaitlis no 0 līdz 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#

Rotācija ir robota pagrieziena lielums, mērot grādos. Projekta sākumā rotācijas vērtība ir iestatīta uz 0 grādiem. set_rotation maina robota pašreizējo rotāciju uz jaunu vērtību.

Piemēram, ja robots ir veicis divus pilnus pagriezienus pa labi, tā rotācijas vērtība būs 720 grādi. Iestatot rotāciju uz 0 grādiem, šī rotācija tiks atiestatīta no 720 uz 0 grādiem. Pēc tam robots var veikt rotācijas, pamatojoties uz šo jauno vērtību.

Usage:
drivetrain.set_rotation(value)

Parametri

Apraksts

value

Robota rotācijas vērtība grādos. Tā var būt vesels skaitlis.

# 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)

Getteri#

get_heading#

Virziens ir virziens, kurā atrodas robota smadzenes, mērīts grādos. get_heading atgriež šo virzienu no 0 līdz 359 grādiem.

Robota sākuma virziens ir 0 grādi.

VEX GO Brain, kas parāda kustības virzienus: 0 grādi uz priekšu, 90 grādi pa labi, 180 grādi atpakaļ un 270 grādi pa kreisi.

Usage:
drivetrain.get_heading()

Parametri

Apraksts

Šai metodei nav parametru.

# 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#

Rotācija ir robota pagrieziena lielums, mērīts grādos. Projekta sākumā rotācijas vērtība ir iestatīta uz 0 grādiem. get_rotation atgriež robota pašreizējo rotāciju.

Pagriežoties pa labi, rotācija palielinās, bet pagriežoties pa kreisi, tā samazinās. Piemēram, veicot divus pilnus pagriezienus pa labi, rotācija būs 720 grādi.

VEX GO Code Base 2.0, kurā redzamas pa labi un pa kreisi rotējošas bultiņas. Kreisā bultiņa rāda "mīnus", bet labā bultiņa rāda "plus".

Usage:
drivetrain.get_rotation()

Parametri

Apraksts

Šai metodei nav parametru.

# 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 atgriež robota braukšanas ātrumu procentos no -100% līdz 100%.

Pozitīva vērtība nozīmē, ka robots brauc uz priekšu. Negatīva vērtība nozīmē, ka robots brauc atpakaļgaitā.

Usage:
drivetrain.get_velocity()

Parametri

Apraksts

Šai metodei nav parametru.

# 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#

Novirze norāda, cik daudz robots ir pagriezies pa kreisi vai pa labi no sākuma pozīcijas, mērot grādos. get_yaw atgriež robota pašreizējo novirzes vērtību.

Pagriežoties pa labi, novirzes vērtība palielinās, bet pagriežoties pa kreisi, tā samazinās.

Usage:
drivetrain.get_yaw()

Parametri

Apraksts

Šai metodei nav parametru.

# 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 (Rols) ir robota sasvēršanās pa kreisi vai pa labi, mērot grādos. get_roll atgriež robota pašreizējo ripošanas vērtību.

Ar smadzenēm vērstām uz priekšu, noliecot pa kreisi, palielinās ripošanas vērtība, bet noliecot pa labi, tā samazinās.

Usage:
drivetrain.get_roll()

Parametri

Apraksts

Šai metodei nav parametru.

# 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#

Slīpums norāda, cik daudz robots sasveras uz priekšu vai atpakaļ, mērot grādos. get_pitch atgriež robota pašreizējo slīpuma vērtību.

Kad smadzenes ir vērstas uz priekšu, noliecoties uz priekšu, skaņas toņa vērtība palielinās, bet, noliecoties atpakaļ, tā samazinās.

Usage:
drivetrain.get_pitch()

Parametri

Apraksts

Šai metodei nav parametru.

# 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 atgriež, vai robots ir konstatējis avāriju, kā Būla vērtību.

  • True — Ir konstatēta avārija.

  • False — Avārija nav konstatēta.

Usage:
drivetrain.get_crashed()

Parametri

Apraksts

Šai metodei nav parametru.

# 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 atgriež, vai robots ir pabeidzis kustību, kā Būla vērtību. To var izmantot, lai kontrolētu citu darbību laiku, pamatojoties uz robota kustību.

  • True — Robots ir pabeidzis kustību.

  • False — Robots joprojām kustas.

Šī metode darbojas kopā ar šādām piedziņas metodēm, kurām ir parametrs wait : drive_for, drive_until, turn_for, turn_to_heading un turn_to_rotation.

Usage:
drivetrain.is_stopped()

Parametri

Apraksts

Šai metodei nav parametru.

# 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)