Liike#
Johdanto#
Motors control how parts of a robot move. Motors can be used to raise an arm, turn a claw, spin a wheel, or move another part of a build. Two motors can work together as a drivetrain to move and turn the whole robot.
Jokainen moottori konfiguroidaan Laitteet-ikkunassa. Moottorien nimet voivat muuttua versiosta riippuen. Esimerkiksi Competition Advanced 2.0 -versiossa on moottori nimeltä arm_motorMukautettu robotti voi käyttää eri moottorien nimiä.
Oletusarvoisesti FORWARD pyörittää moottoria vastapäivään ja REVERSE pyörittää moottoria myötäpäivään. Jos moottori on asetettu pyörimään taaksepäin Laitteet-ikkunassa, suunnat vaihtuvat.
Moottoreita voi koodata monella tapaa. Alla on luettelo kaikista liikemetodeista:
Toiminnot — Pysäytä ja pyöritä moottoreita.
spin— Pyörittää moottoria eteen- tai taaksepäin ikuisesti.spin_for— Pyörittää moottoria tietyn matkan.spin_to_position— Pyörittää moottorin tiettyyn asentoon.stop— Pysäyttää moottorin pyörimisen.
Mutaattorit — Säädä motorisia asetuksia.
set_velocity— Kertoo moottorille, kuinka nopeasti sen tulisi pyöriä.set_max_torque— Määrittää, kuinka voimakkaasti moottori saa työntää pyöriessään.set_position— Muuttaa moottorin nykyisen sijainnin uuteen arvoon.set_stopping— Määrittää, miten moottori pysäytetään: jarruttamalla, rullaamalla tai pitämällä.set_timeout— Asettaa, kuinka kauan moottori yrittää suorittaa liikkeen loppuun.
Getterit — Tarkista moottorin tila.
get_position— Palauttaa moottorin nykyisen sijainnin.get_velocity— Palauttaa moottorin pyörimisnopeuden prosentteina välillä -100 % - 100 %.get_current— Palauttaa moottorin käyttämän akusta saatavan tehon prosentteina 0 %:sta 100 %:iin.is_stopped— Palauttaa totuusarvona tiedon siitä, onko moottori pysähtynyt.is_moving— Palauttaa loogisena arvona tiedon siitä, pyöriikö moottori.
Toiminnot#
spin#
spin pyörittää moottoria eteen- tai taaksepäin ikuisesti. Moottori jatkaa pyörimistä, kunnes sille annetaan toinen toiminto, kuten pyöriminen eri suuntaan tai pysähtyminen.
Usage:
arm_motor.spin(direction)
Parametrit |
Kuvaus |
|---|---|
|
Moottorin pyörimissuunta: |
# 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 pyörittää moottoria tietyn matkan. Pyöritys on suhteessa moottorin nykyiseen sijaintiin. Projekti odottaa, kunnes moottori on pyörinyt loppuun ennen seuraavan koodirivin suorittamista.
Usage:
arm_motor.spin_for(direction, angle, units, wait)
Parametrit |
Kuvaus |
|---|---|
|
Moottorin pyörimissuunta: |
|
Moottorin pyörimismatka. |
|
Valinnainen. Etäisyyden yksikkö: |
|
Valinnainen. |
# 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 pyörittää moottoria tiettyyn asentoon.
Moottorin asento ilmaisee, kuinka pitkälle se on pyörinyt, mitattuna yksiköissä DEGREES tai TURNSYksi kierros vastaa 360 astetta. Projektin alussa moottorin asento asetetaan 0 asteeseen. Moottorin asento voidaan asettaa myös käyttämällä set_position-metodia.
Paikka-arvot ovat absoluuttisia. Tämä tarkoittaa, että pyörimissuunta riippuu moottorin nykyisestä asennosta.
Esimerkiksi, jos moottori käynnistyy 0 asteessa ja pyörii 720 asteen kulmaan, se pyörii kaksi kierrosta eteenpäin. Jos se sitten pyörii 360 asteen kulmaan, se pyörii yhden kierroksen taaksepäin, koska 360 on pienempi kuin 720.
Usage:
arm_motor.spin_to_position(angle, units, wait)
Parametrit |
Kuvaus |
|---|---|
|
Moottorin pyörimisasennon arvo. |
|
Valinnainen. Sijaintiyksikkö: |
|
Valinnainen. |
# 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 pysäyttää moottorin pyörimisen.
Usage:
arm_motor.stop()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
# 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)
Mutaattorit#
set_velocity#
set_velocity kertoo moottorille, kuinka nopeasti sen tulisi pyöriä. Suurempi prosenttiosuus saa moottorin pyörimään nopeammin ja pienempi prosenttiosuus hidastaa sitä.
Jokainen projekti alkaa siten, että jokainen moottori pyörii oletusarvoisesti 50 % nopeudella.
Huomautus: Suurempi nopeus saa moottorin pyörimään nopeammin, mutta se voi olla epätarkempi. Pienempi nopeus saa moottorin pyörimään hitaammin, mutta se voi olla tarkempi.
Usage:
arm_motor.set_velocity(velocity)
Parametrit |
Kuvaus |
|---|---|
|
Pyörimisnopeus välillä 0–100 %. Tämä voi olla kokonaisluku |
# 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#
Vääntömomentti on vääntövoima. Se osoittaa, kuinka voimakkaasti moottori pystyy työntämään tai vetämään pyöriessään.
set_max_torque asettaa moottorin käyttämän suurimman sallitun vääntömomentin.
Suurempi prosenttiosuus antaa moottorin työntää kovemmin, esimerkiksi raskasta esinettä nostettaessa. Pienempi prosenttiosuus rajoittaa sitä, kuinka kovaa moottori voi työntää. Tämä voi auttaa suojaamaan robottia, jos moottori jumiutuu tai saavuttaa liikeradan rajan.
Jokainen projekti aloitetaan oletusarvoisesti moottorin 50 %:n vääntömomentilla.
Usage:
arm_motor.set_max_torque(value)
Parametrit |
Kuvaus |
|---|---|
|
Moottorin käyttämä suurin vääntömomentti välillä 0–100 %. Tämä voi olla kokonaisluku |
# 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#
Moottorin asento ilmaisee, kuinka pitkälle se on pyörinyt, mitattuna yksiköissä DEGREES tai TURNSYksi kierros vastaa 360 astetta. set_position muuttaa moottorin nykyisen asennon uuteen arvoon.
Esimerkiksi jos moottori on pyörinyt 180 astetta, asennon asettaminen 0 asteeseen palauttaa asennon 180:stä 0 asteeseen. Tämän jälkeen moottori voi pyöriä asentoihin tämän uuden arvon perusteella.
Usage:
arm_motor.set_position(position, units)
Parametrit |
Kuvaus |
|---|---|
|
Moottorille asetettava asentoarvo. |
|
Valinnainen. Sijaintiyksikkö: |
# 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 määrittää, miten moottori pysäytetään: jarruttamalla, rullaamalla tai pitämällä.
Usage:
arm_motor.set_stopping(mode)
Parametrit |
Kuvaus |
|---|---|
|
Miten moottori pysähtyy:
|
Jos esimerkiksi käytetään Competition Advanced 2.0 -versiota ja arm_motor on asetettu arvoon HOLD, moottori pitää käsivarren nykyisessä asennossa, kunnes käsivartta liikutetaan uudelleen. Tämä tarkoittaa, että moottori toimii painovoimaa vastaan pitääkseen käsivarren ilmassa, jos moottori on pysäytettynä käsivarsi nostettuna.
Jos tätä menetelmää ei käytetä, moottori käyttää pysäytettäessä asetusta BRAKE.
# 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 asettaa ajan, jonka moottori yrittää suorittaa liikkeen loppuun. Jos moottori ei pysty suorittamaan sitä tässä ajassa, se lopettaa yrittämisen ja siirtyy seuraavalle koodiriville. Tämä estää moottoria jumiutumasta liikkeeseen.
Usage:
arm_motor.set_timeout(value, units)
Parametrit |
Kuvaus |
|---|---|
|
Aika, jonka moottori voi yrittää suorittaa liikkeen loppuun. Tämä voi olla positiivinen kokonaisluku |
|
Valinnainen. Aikayksikkö: |
# 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)
Getterit#
get_position#
Moottorin asento ilmaisee, kuinka pitkälle se on pyörinyt, mitattuna yksiköissä DEGREES tai TURNSYksi kierros vastaa 360 astetta. get_position palauttaa moottorin nykyisen sijainnin.
Projektin alussa moottorin asento on asetettu arvoon 0 astetta. Jos moottori pyörii yhden kierroksen eteenpäin, asento on 360 astetta eli 1 kierros. Jos moottori pyörii vastakkaiseen suuntaan, asento on negatiivinen.
Usage:
arm_motor.get_position(units)
Parametrit |
Kuvaus |
|---|---|
|
Valinnainen. Yksikkö, joka palauttaa moottorin asennon muodossa: |
# 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 palauttaa moottorin pyörimisnopeuden prosentteina väliltä -100 % - 100 %.
Positiivinen arvo tarkoittaa, että moottori pyörii eteenpäin. Negatiivinen arvo tarkoittaa, että moottori pyörii taaksepäin.
Usage:
arm_motor.get_velocity()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
# 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 palauttaa moottorin käyttämän akusta saatavan tehon prosentteina 0 prosentista 100 prosenttiin.
Suurempi virta-arvo tarkoittaa, että moottori käyttää enemmän tehoa. Näin voi käydä, kun moottori nostaa jotain raskasta, työntää jotakin esinettä vasten tai yrittää liikkua jumissa ollessaan.
Usage:
arm_motor.get_current()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
# 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 palauttaa totuusarvona tiedon siitä, onko moottorin liike päättynyt. Tätä voidaan käyttää muiden moottorin liikkeeseen perustuvien toimintojen ajoituksen ohjaamiseen.
True— Moottori on lakannut liikkumasta.False— Moottori liikkuu edelleen.
Tämä metodi toimii yhdessä seuraavien Motion-metodien kanssa, joilla on wait -parametri: spin_for ja spin_to_position.
Usage:
arm_motor.is_stopped()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
# 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 palauttaa totuusarvona tiedon siitä, pyöriikö moottori. Tätä voidaan käyttää muiden moottorin liikkeeseen perustuvien toimintojen ajoituksen ohjaamiseen.
True— Moottori pyörii.False— Moottori ei pyöri.
Tämä metodi toimii yhdessä seuraavien Motion-metodien kanssa, joilla on wait -parametri: spin_for ja spin_to_position.
Usage:
arm_motor.is_moving()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
# 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)