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.
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 |
|---|---|
|
A motor forgásiránya: |
# 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 |
|---|---|
|
A motor forgásiránya: |
|
A motor forgási távolsága. |
|
Opcionális. A távolság mértékegysége: |
|
Opcionális. |
# 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 |
|---|---|
|
A motor forgási pozíciója. |
|
Opcionális. A pozíció mértékegysége: |
|
Opcionális. |
# 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 |
|---|---|
|
A forgási sebesség 0%-tól 100%-ig. Ez lehet |
# 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 |
|---|---|
|
A motor által használható maximális nyomaték 0% és 100% között. Ez lehet |
# 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 |
|---|---|
|
A motorhoz beállítandó pozícióérték. |
|
Opcionális. A pozíció mértékegysége: |
# 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 |
|---|---|
|
A motor leállításának módja:
|
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 |
|---|---|
|
Az az időtartam, ameddig a motor megpróbálhat befejezni egy mozgást. Ez lehet pozitív |
|
Opcionális. Az időegység: |
# 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 |
|---|---|
|
Opcionális. A motor pozícióját visszaadó egység: |
# 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)