Mozgás#

Bevezetés#

A motorok szabályozzák a robot egyes részeinek mozgását. A motorok segítségével felemelhető egy kar, forgatható egy karom, forgatható egy kerék, vagy egy építmény más része. Két motor együtt működhet egy hajtásláncként a teljes robot mozgatásához és forgatásához.

Minden motor az Eszközök ablakban konfigurálható. A motornevek a buildtől függően változhatnak. Például a Competition Advanced 2.0 buildben van egy arm_motornevű motor. Egy egyéni robot eltérő motorneveket használhat.

Alapértelmezés szerint FORWARD beállítás az óramutató járásával ellentétes irányba forgatja a motort, REVERSE beállítás pedig az óramutató járásával megegyező irányba forgatja a motort. Ha az Eszközök ablakban egy motor hátramenetre van állítva, akkor ezek az irányok felcserélődnek.

Egy VEX GO motor, amelyen az előremeneti irányt egy pluszjel és egy nyíl jelzi, amely balra, azaz az óramutató járásával ellentétes irányba forog. Egy VEX GO motor, amely a fordított irányt mínuszjellel és egy jobbra, azaz az óramutató járásával megegyező irányba forgást jelző nyíllal jelöli.

A motorok kódolásának számos módja van. Az alábbiakban felsoroljuk az összes mozgásmódot:

Műveletek — Motorok leállítása és megforgatása.

  • spin — Előre vagy hátra forgatja a motort örökké.

  • spin_for — Megadott távolságon keresztül megpörgeti a motort.

  • spin_to_position — Egy motort egy adott pozícióba forgat.

  • stop — Leállítja a motor forgását.

Mutátorok – Motoros beállítások módosítása.

  • set_velocity — Megadja a motornak a forgási sebességét.

  • set_max_torque — Beállítja, hogy a motor milyen erősen nyomhatja a forgást.

  • set_position — A motor aktuális pozícióját új értékre módosítja.

  • set_stopping — Beállítja, hogyan álljon le a motor: fékezéssel, kigurulással vagy tartással.

  • set_timeout — Beállítja, hogy mennyi idő alatt próbálja meg a motor befejezni a mozgást.

Getterek – Motor állapotának ellenőrzése.

  • get_position — Visszaadja a motor aktuális pozícióját.

  • get_velocity — Visszaadja a motor forgási sebességét százalékban, -100%-tól 100%-ig.

  • get_current — Visszaadja, hogy a motor mennyi energiát fogyaszt az akkumulátorból, 0% és 100% közötti százalékban megadva.

  • is_stopped — Logikai értékként adja vissza, hogy a motor mozgása befejeződött-e.

  • is_moving — Logikai értékként adja vissza, hogy a motor forog-e.

Műveletek#

spin#

spin Az 1-es érték örökre előre vagy hátra forgatja a motort. A motor addig forog, amíg egy másik műveletet nem kap, például egy másik irányba forgatja vagy leállítja.

Usage:
arm_motor.spin(direction)

Paraméterek

Leírás

direction

A motor forgásiránya: FORWARD vagy REVERSE.

# Build Used: Competition Advanced 2.0
def main():
    # Raise the ArmMotor, then stop
    arm_motor.spin(REVERSE)
    wait(1, SECONDS)
    arm_motor.stop()

# Start threads — Do not delete
start_thread(main)

spin_for#

spin_for Megadott távolságon keresztül megforgatja a motort. A pörgés a motor aktuális pozíciójához képest értendő. A projekt megvárja, amíg a motor befejezi a forgást, mielőtt a kód következő sora lefutna.

Usage:
arm_motor.spin_for(direction, angle, units, wait)

Paraméterek

Leírás

direction

A motor forgásiránya: FORWARD vagy REVERSE.

angle

A motor forgási távolsága. DEGREES egész számokat használjon. TURNS egész vagy tizedes törteket használhat.

units

Opcionális. A távolság mértékegysége: DEGREES (alapértelmezett) vagy TURNS.

wait

Opcionális. wait=True (alapértelmezett) esetén a projekt megvárja, amíg a motor forog, mielőtt a következő kódsor lefutna. wait=False esetén a következő kódsor azonnal lefut.

# Build Used: Competition Advanced 2.0
def main():
    # Raise and lower the ArmMotor
    arm_motor.spin_for(REVERSE, 180, DEGREES)
    wait(1, SECONDS)
    arm_motor.spin_for(FORWARD, 180, DEGREES)

# Start threads — Do not delete
start_thread(main)

spin_to_position#

spin_to_position Egy motort egy adott pozícióba forgat.

Egy motor pozíciója azt mutatja meg, hogy milyen messzire fordult el, DEGREES vagy TURNSegységben mérve. Egy fordulat 360 foknak felel meg. Egy projekt elején a motor pozíciója 0 fokra van állítva. A motor pozíciója a set_position metódussal is beállítható.

A pozícióértékek abszolútak. Ez azt jelenti, hogy a forgás iránya a motor aktuális pozíciójától függ.

Például, ha a motor 0 foknál indul és 720 fokos pozícióig forog, akkor két fordulatot előre forog. Ha ezután 360 fokos pozícióig forog, akkor egy fordulatot hátra forog, mert a 360 fok kisebb, mint 720.

Usage:
arm_motor.spin_to_position(angle, units, wait)

Paraméterek

Leírás

angle

A motor forgási pozíciója. DEGREES egész számokat használjon. TURNS egész vagy tizedes törteket használhat.

units

Opcionális. A pozíció mértékegysége: DEGREES (alapértelmezett) vagy TURNS.

wait

Opcionális. wait=True (alapértelmezett) esetén a projekt megvárja, amíg a motor forog, mielőtt a következő kódsor lefutna. wait=False esetén a következő kódsor azonnal lefut.

# Build Used: Competition Advanced 2.0
def main():
    # Return ArmMotor to 0 degrees after raising
    arm_motor.spin_for(REVERSE, 180, DEGREES)
    wait(1, SECONDS)
    arm_motor.spin_to_position(0, DEGREES)

# Start threads — Do not delete
start_thread(main)

stop#

stop leállítja a motor forgását.

Usage:
arm_motor.stop()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

# Build Used: Competition Advanced 2.0
def main():
    # Raise the ArmMotor
    arm_motor.spin(REVERSE)
    wait(1, SECONDS)
    arm_motor.stop()

# Start threads — Do not delete
start_thread(main)

Mutátorok#

set_velocity#

set_velocity megmondja a motornak, hogy milyen gyorsan forogjon. Magasabb százalékos érték esetén a motor gyorsabban, alacsonyabb százalékos érték esetén pedig lassabban forog.

Minden projekt úgy kezdődik, hogy minden motor alapértelmezés szerint 50%-os sebességgel forog.

Megjegyzés: A nagyobb sebesség gyorsabban forog a motorban, de kevésbé pontos lehet. Az alacsonyabb sebesség lassítja a motor forgását, de pontosabb lehet.

Usage:
arm_motor.set_velocity(velocity)

Paraméterek

Leírás

velocity

A forgási sebesség 0%-tól 100%-ig. Ez lehet integer vagy decimális (float).

# Build Used: Competition Advanced 2.0
def main():
    # Move the ArmMotor at different velocities
    arm_motor.spin_for(REVERSE, 180, DEGREES)
    wait(1, SECONDS)
    # Move slow
    arm_motor.set_velocity(20)
    arm_motor.spin_for(FORWARD, 180, DEGREES)
    wait(1, SECONDS)
    # Move fast
    arm_motor.set_velocity(100)
    arm_motor.spin_for(REVERSE, 180, DEGREES)

# Start threads — Do not delete
start_thread(main)

set_max_torque#

A nyomaték egy forgatóerő. Megmutatja, hogy egy motor milyen erősen tud nyomni vagy húzni, amikor forog.

set_max_torque beállítja a motor által használható maximális nyomatékot.

A magasabb százalékos érték lehetővé teszi a motor számára, hogy erősebben nyomjon, például nehéz tárgy emelésekor. Az alacsonyabb százalékos érték korlátozza a motor nyomóerejét. Ez segíthet megvédeni a robotot, ha a motor elakad, vagy eléri a mozgási határát.

Minden projekt alapértelmezés szerint 50%-os nyomatékkal kezdődik.

Usage:
arm_motor.set_max_torque(value)

Paraméterek

Leírás

value

A motor által használható maximális nyomaték 0% és 100% között. Ez lehet integer vagy decimális (float).

# Build Used: Competition Advanced 2.0
def main():
    # Move the ArmMotor at different torques
    arm_motor.spin_for(REVERSE, 180, DEGREES)
    wait(1, SECONDS)
    # Move with less torque
    arm_motor.set_max_torque(20)
    arm_motor.spin_for(FORWARD, 180, DEGREES)
    wait(1, SECONDS)
    # Move with maximum torque
    arm_motor.set_max_torque(100)
    arm_motor.spin_for(REVERSE, 180, DEGREES)

# Start threads — Do not delete
start_thread(main)

set_position#

Egy motor pozíciója azt mutatja meg, hogy milyen messzire fordult meg, DEGREES vagy TURNSegységben mérve. Egy fordulat 360 foknak felel meg. set_position parancs a motor aktuális pozícióját egy új értékre módosítja.

Például, ha egy motor 180 fokra forgott, a pozíció 0 fokra állítása visszaállítja ezt a pozíciót 180-ról 0 fokra. Ezután a motor az új érték alapján foroghat a pozíciókba.

Usage:
arm_motor.set_position(position, units)

Paraméterek

Leírás

position

A motorhoz beállítandó pozícióérték. DEGREES egész számokat használjon. TURNS egész vagy tizedes törteket használhat.

units

Opcionális. A pozíció mértékegysége: DEGREES (alapértelmezett) vagy TURNS.

# Build Used: Competition Advanced 2.0
def main():
    # Return ArmMotor to 0 degrees after raising
    arm_motor.set_position(0, DEGREES)
    arm_motor.spin_for(REVERSE, 180, DEGREES)
    wait(1, SECONDS)
    arm_motor.spin_to_position(0, DEGREES)

# Start threads — Do not delete
start_thread(main)

set_stopping#

set_stopping beállítja, hogyan álljon le a motor: fékezéssel, kifutással vagy tartással.

Usage:
arm_motor.set_stopping(mode)

Paraméterek

Leírás

mode

A motor leállításának módja:

  • BRAKE — Azonnal leáll.
  • COAST — Lassít, amíg meg nem áll.
  • HOLD — Azonnal leáll és megtartja a motor pozícióját.

Például, ha egy Competition Advanced 2.0 buildet használunk és arm_motor értéke HOLD, akkor a motor a kart az aktuális pozíciójában tartja, amíg egy újabb karmozdulat nem történik. Ez azt jelenti, hogy a motor a gravitáció ellenében fog működni, hogy a kart a levegőben tartsa, ha a motort felemelt karral állították meg.

Ha ezt a módszert nem használják, a motor leálláskor BRAKE beállítást fogja használni.

# Build Used: Competition Advanced 2.0
def main():
    # Move the ArmMotor, then coast to a stop
    arm_motor.set_velocity(20)
    arm_motor.set_stopping(COAST)
    arm_motor.spin(REVERSE)
    wait(1, SECONDS)
    arm_motor.stop()

# Start threads — Do not delete
start_thread(main)

set_timeout#

set_timeout beállítja, hogy mennyi idő alatt próbáljon meg egy motor befejezni egy mozgást. Ha a motor nem tud befejezni ennyi idő alatt, akkor leállítja a próbálkozást, és a kód következő sorára ugrik. Ez megakadályozza, hogy a motor elakadjon egy mozgásnál.

Usage:
arm_motor.set_timeout(value, units)

Paraméterek

Leírás

value

Az az időtartam, ameddig a motor megpróbálhat befejezni egy mozgást. Ez lehet pozitív integer vagy decimális (float).

units

Opcionális. Az időegység: SECONDS (alapértelmezett) vagy MSEC (milliszekundum).

# Build Used: Competition Advanced 2.0
def main():
    # Move ArmMotor as far as possible for 1 second before resetting
    arm_motor.set_position(0, DEGREES)
    arm_motor.set_timeout(1, SECONDS)
    arm_motor.spin_for(REVERSE, 180, DEGREES)
    arm_motor.spin_to_position(0, DEGREES)

# Start threads — Do not delete
start_thread(main)

Getterek#

get_position#

Egy motor pozíciója azt jelzi, hogy milyen messzire fordult meg, DEGREES vagy TURNSegységben mérve. Egy fordulat 360 foknak felel meg. get_position függvény visszaadja a motor aktuális pozícióját.

Egy projekt elején a motor pozíciója 0 fokra van állítva. Ha a motor egy fordulatot előre forog, a pozíció 360 fok vagy 1 fordulat lesz. Ha a motor az ellenkező irányba forog, a pozíció negatív lesz.

Usage:
arm_motor.get_position(units)

Paraméterek

Leírás

units

Opcionális. A motor pozícióját visszaadó egység: DEGREES (alapértelmezett) vagy TURNS.

# Build Used: Competition Advanced 2.0
def main():
    # Display how far the ArmMotor moves after one second
    arm_motor.set_position(0, DEGREES)
    console.print("Start: ")
    console.print(arm_motor.get_position(DEGREES))
    console.new_line()
    arm_motor.spin(REVERSE)
    wait(1, SECONDS)
    arm_motor.stop()
    console.print("After: ")
    console.print(arm_motor.get_position(DEGREES))

# Start threads — Do not delete
start_thread(main)

get_velocity#

get_velocity Visszaadja a motor forgási sebességét százalékban, -100%-tól 100%-ig.

A pozitív érték azt jelenti, hogy a motor előre forog. A negatív érték azt jelenti, hogy a motor hátra forog.

Usage:
arm_motor.get_velocity()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

# Build Used: Competition Advanced 2.0
def main():
    # Display the ArmMotor's velocity when it moves
    console.print("Resting: ")
    console.print(arm_motor.get_velocity())
    console.new_line()
    arm_motor.spin(REVERSE)
    wait(1, SECONDS)
    console.print("Moving: ")
    console.print(arm_motor.get_velocity())
    arm_motor.stop()

# Start threads — Do not delete
start_thread(main)

get_current#

get_current Visszaadja, hogy a motor mennyi energiát használ az akkumulátorból, 0% és 100% közötti százalékban.

A magasabb áramérték azt jelenti, hogy a motor több energiát fogyaszt. Ez akkor fordulhat elő, ha a motor valami nehéz tárgyat emel, nekinyomódik egy tárgynak, vagy beragadt állapotban próbál mozogni.

Usage:
arm_motor.get_current()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

# Build Used: Competition Advanced 2.0
def main():
    # Display the motor's current when it moves
    console.print("Resting: ")
    console.print(arm_motor.get_current())
    console.new_line()
    arm_motor.spin(REVERSE)
    wait(1, SECONDS)
    console.print("Moving: ")
    console.print(arm_motor.get_current())
    arm_motor.stop()

# Start threads — Do not delete
start_thread(main)

is_stopped#

is_stopped Logikai értékként adja vissza, hogy a motor mozgása befejeződött-e. Ez felhasználható más viselkedések időzítésének szabályozására a motor mozgása alapján.

  • True — A motor mozgása befejeződött.

  • False — A motor még mindig mozog.

Ez a metódus a következő wait paraméterrel rendelkező Motion metódusokkal működik együtt: spin_for és spin_to_position.

Usage:
arm_motor.is_stopped()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

# Build Used: Competition Advanced 2.0
def main():
    # Turn the Eye Sensor's light on while ArmMotor is moving
    arm_motor.spin_for(REVERSE, 180, DEGREES, wait=False)
    wait(0.1, SECONDS)
    while True:
        if arm_motor.is_stopped():
            eye.set_light(OFF)
        else:
            eye.set_light(ON)

# Start threads — Do not delete
start_thread(main)

is_moving#

is_moving Logikai értékként adja vissza, hogy a motor forog-e. Ez felhasználható más viselkedések időzítésének szabályozására a motor mozgása alapján.

  • True — A motor forog.

  • False — A motor nem forog.

Ez a metódus a következő wait paraméterrel rendelkező Motion metódusokkal működik együtt: spin_for és spin_to_position.

Usage:
arm_motor.is_moving()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

# Build Used: Competition Advanced 2.0
def main():
    # Turn the Eye Sensor's light on while ArmMotor is moving
    arm_motor.spin_for(REVERSE, 180, DEGREES, wait=False)
    wait(0.1, SECONDS)
    while True:
        if arm_motor.is_moving():
            eye.set_light(ON)
        else:
            eye.set_light(OFF)

# Start threads — Do not delete
start_thread(main)