Robottikohtainen Python#
Johdanto#
Sankaribotti Flex sisältää kynsimoottorin, käsivarsimoottorin, tekoälynäköanturin, etäisyysanturin ja pelin paikannusjärjestelmän (GPS) anturin.
Kaikki VEXcode VR -standardimetodit ovat käytettävissä V5 26-27 Override -leikkikentällä.
Alla on luettelo kaikista käytettävissä olevista robottikohtaisista menetelmistä:
Voimansiirto – Liikuta ja käännä robottia.
Toiminnot
drive— Liikuttaa robottia eteen- tai taaksepäin pysyvästi.drive_for— Liikuttaa robottia eteen- tai taaksepäin tietyn matkan.turn— Kääntää robottia vasemmalle tai oikealle ikuisesti.turn_for— Kääntää robottia vasemmalle tai oikealle tietyn astemäärän.turn_to_heading— Kääntää robotin tiettyyn suuntaan -359 - 359 astetta.turn_to_rotation— Kääntää robotin tiettyyn pyörimissuuntaan.stop— Pysäyttää robotin liikkeen.
Mutaattorit
set_heading— Muuttaa robotin nykyisen suunnan uudeksi suunnaksi.set_rotation— Muuttaa robotin nykyisen pyörimissuunnan uudeksi pyörimissuunnaksi.set_timeout— Asettaa, kuinka kauan robotti yrittää suorittaa liikkeen loppuun.set_drive_velocity— Kertoo robotille, kuinka nopeasti sen tulisi ajaa.set_turn_velocity— Kertoo robotille, kuinka nopeasti sen tulisi kääntyä.
Getters
heading— Palauttaa robotin nykyisen suunnan 0–359,99 astetta.rotation— Palauttaa robotin nykyisen rotaatioasteen.is_done— Palauttaa totuusarvona tiedon siitä, onko robotti lopettanut liikkumisen.is_moving— Palauttaa totuusarvona tiedon siitä, liikkuuko robotti.velocity— Palauttaa robotin ajonopeuden.
Liike – Liikuta ja seuraa robotin moottoreita.
Toiminnot
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
set_position— Muuttaa moottorin nykyisen sijainnin uuteen arvoon.set_velocity— Kertoo moottorille, kuinka nopeasti sen tulisi pyöriä.set_timeout— Asettaa, kuinka kauan moottori yrittää suorittaa liikkeen loppuun.
Getters
is_done— Palauttaa totuusarvona tiedon siitä, onko moottorin liike päättynyt.is_spinning— Palauttaa loogisena arvona tiedon siitä, pyöriikö moottori.position— Palauttaa moottorin nykyisen sijainnin.velocity— Palauttaa moottorin pyörimisnopeuden.
Tekoälynäkö – Kaappaa ja analysoi esineitä tekoälynäköanturilla.
Getters
take_snapshot– Palauttaa tietyn allekirjoituksen havaittujen objektien tuplen.
Kiinteistöt
.width– Havaitun kohteen leveys pikseleinä..height– Havaitun kohteen korkeus pikseleinä..centerX– Objektin keskipisteen X-sijainti pikseleinä..centerY– Objektin keskipisteen Y-sijainti pikseleinä..originX– Objektin vasemman yläkulman X-sijainti pikseleinä..originY– Objektin vasemman yläkulman Y-sijainti pikseleinä..id– Havaitun objektin luokitustunnus.
Konsoli – Tulosta konsoliin ja valvo arvoja.
Painaa
brain.screen.print— Näyttää tekstiä, numeroita tai muuttujien arvoja konsolissa.brain.screen.next_row— Siirtää konsolin kohdistimen seuraavan rivin alkuun.brain.screen.clear_screen— Tyhjentää kaikki rivit konsolista.
Näyttö
monitor_variable— Lisää yhden tai useamman ennalta määritetyn muuttujan Monitor-välilehdelle.monitor_sensor— Lisää yhden tai useamman anturin arvon Näyttö-välilehdelle.
Anturit – Käytä robotin erilaisia antureita.
Etäisyys
found_object– Palauttaa, havaitseeko etäisyysanturi kohteen kantaman sisällä.object_distance– Palauttaa etäisyysanturin ja lähimmän havaitun kohteen välisen etäisyyden.
GPS
x_position– Palauttaa GPS-anturin nykyisen x-koordinaatin pellolla.y_position– Palauttaa GPS-anturin nykyisen y-koordinaatin pellolla.heading– Palauttaa robotin nykyisen kulkusuunnan GPS-anturin perusteella.
Tämän sivun esimerkeissä käytetään leikkikentän ottelua edeltävän tarkistuslistan lähtöpaikkaa C.
Voimansiirto#
Voimansiirto ohjaa VR-robotin ajo- ja kääntymistapoja. Voimansiirto voi liikkua eteen- tai taaksepäin, kääntyä vasemmalle tai oikealle, kääntyä eri suuntiin ja seurata pyörimistään.
Toiminnot#
ajaa#
drive liikuttaa robottia eteen- tai taaksepäin ikuisesti. Robotti jatkaa liikkumista, kunnes sille annetaan toinen toiminto, kuten kääntyminen tai pysähtyminen.
Usage:
drivetrain.drive(direction)
Parametrit |
Kuvaus |
|---|---|
|
Robotin liikesuunta: |
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive(FORWARD)
wait(0.5, SECONDS)
drivetrain.stop()
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
aja_for#
drive_for liikuttaa robottia eteen- tai taaksepäin tietyn matkan. Projekti odottaa, kunnes robotti on liikkunut loppuun ennen seuraavan koodirivin suorittamista.
Usage:
drivetrain.drive_for(direction, distance, units, wait)
Parametrit |
Kuvaus |
|---|---|
|
Robotin liikesuunta: |
|
Robotin ajama matka. Tämä voi olla kokonaisluku |
|
Valinnainen. Etäisyyden yksikkö: |
|
Valinnainen. |
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
käännös#
turn kääntää robottia vasemmalle tai oikealle ikuisesti. Robotti jatkaa kääntymistä, kunnes sille annetaan toinen toiminto, kuten ajaminen tai pysähtyminen.
Usage:
drivetrain.turn(direction)
Parametrit |
Kuvaus |
|---|---|
|
Robotin kääntymissuunta: |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn(LEFT)
wait(0.78, SECONDS)
drivetrain.stop()
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
vuoro_kohtaan#
turn_for kääntää robottia vasemmalle tai oikealle tietyn astemäärän. Käännös on suhteessa robotin nykyiseen sijaintiin. Projekti odottaa, kunnes robotti on kääntynyt, ennen kuin seuraava koodirivi suoritetaan.
Usage:
drivetrain.turn_for(direction, angle, units, wait)
Parametrit |
Kuvaus |
|---|---|
|
Robotin kääntymissuunta: |
|
Robotin kääntymisasteiden määrä. Tämä voi olla kokonaisluku |
|
Valinnainen. Kulman yksikkö: |
|
Valinnainen. |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_for(LEFT, 110, DEGREES)
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
käänny_suuntaan#
Suunta on robotin suunta asteina. turn_to_heading kääntää robotin tiettyyn suuntaan -359 ja 359 asteen välillä. Robotti kääntyy lyhyimpään suuntaan saavuttaakseen kohdesuunnan.
Lähtösuunta on 0 astetta.
Usage:
drivetrain.turn_to_heading(heading, units, wait)
Parametrit |
Kuvaus |
|---|---|
|
Robotin suunta, johon sen tulisi osoittaa, -359 - 359 astetta. |
|
Valinnainen. Kulman yksikkö: |
|
Valinnainen. |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_to_heading(-110, DEGREES)
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
käännös_kiertoon#
turn_to_rotation kääntää robotin tiettyyn pyörähdyssuuntaan.
Rotaatio ilmaisee robotin kääntymismäärän asteina. Projektin alussa rotaatioarvoksi asetetaan 0 astetta. Oikealle kääntäminen lisää rotaatiota ja vasemmalle kääntäminen vähentää sitä.
Esimerkiksi jos robotti aloittaa 0 asteen kulmasta ja kääntyy 720 asteen kierrokseen, se kääntyy kahdesti oikealle. Jos se sitten kääntyy 360 astetta, se kääntyy kerran vasemmalle, koska 360 on pienempi kuin 720.
Usage:
drivetrain.turn_to_rotation(rotation, units, wait)
Parametrit |
Kuvaus |
|---|---|
|
Robotin kääntymisaika asteina. Tämä voi olla kokonaisluku |
|
Valinnainen. Kulman yksikkö: |
|
Valinnainen. |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_to_rotation(-110, DEGREES)
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Stop#
stop pysäyttää robotin liikkeen.
Usage:
drivetrain.stop()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn(LEFT)
wait(0.78, SECONDS)
drivetrain.stop()
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Mutaattorit#
set_header#
Suunta on robotin suunta asteina mitattuna. set_heading muuttaa robotin nykyisen suunnan uuteen suunta-arvoon.
Jos esimerkiksi robotti on kääntynyt oikealle ja suunnan asettaminen 0 asteeseen tekee oikealle osoittavasta asennosta uuden 0 asteen. Tämän jälkeen robotti voi kääntyä muihin asentoihin tämän uuden suunnan perusteella.
Usage:
drivetrain.set_heading(heading, units)
Parametrit |
Kuvaus |
|---|---|
|
Robotille asetettava suunta-arvo asteina. |
|
Valinnainen. Kulman yksikkö: |
def main():
# Make facing the Neutral Goal the new heading
drivetrain.set_heading(110, DEGREES)
drivetrain.turn_to_heading(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
aseta_kierto#
Rotaatio ilmaisee robotin kääntymismäärän asteina. set_rotation muuttaa robotin nykyisen rotaation uuteen arvoon.
Usage:
drivetrain.set_rotation(rotation, units)
Parametrit |
Kuvaus |
|---|---|
|
Robotille asetettava kiertoarvo asteina. Tämä voi olla kokonaisluku |
|
Valinnainen. Kulman yksikkö: |
def main():
# Make facing the Neutral Goal the new rotation
drivetrain.set_rotation(110, DEGREES)
drivetrain.turn_to_rotation(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
asetettu_aikakatkaisu#
set_timeout määrittää, kuinka monta sekuntia robotti yrittää suorittaa liikkeen loppuun. Jos robotti ei pysty suorittamaan sitä tässä ajassa, se lopettaa yrittämisen ja siirtyy seuraavalle koodiriville. Tämä estää robottia jumiutumasta liikkeeseen.
Usage:
drivetrain.set_timeout(time, units)
Parametrit |
Kuvaus |
|---|---|
|
Sekuntimäärä, jonka robotti voi yrittää suorittaa liikkeen loppuun. Tämä voi olla positiivinen kokonaisluku |
|
Valinnainen. Aikayksikkö: |
def main():
# Turn to face the Neutral Goal
drivetrain.set_timeout(0.8, SECONDS)
drivetrain.turn_for(LEFT, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
aseta_ajonopeus#
set_drive_velocity kertoo robotille, kuinka nopeasti sen tulisi ajaa. Suurempi prosenttiosuus saa robotin ajamaan nopeammin ja pienempi prosenttiosuus hidastaa sitä.
Jokainen projekti alkaa robotin ajamalla oletusarvoisesti 50 % nopeudella.
Huomautus: Suurempi nopeus saa robotin ajamaan nopeammin, mutta se voi olla epätarkempi. Pienempi nopeus tekee robotista hitaamman, mutta se voi olla tarkempi.
Usage:
drivetrain.set_drive_velocity(velocity, units)
Parametrit |
Kuvaus |
|---|---|
|
Ajonopeus välillä 0–100 %. Tämä voi olla kokonaisluku |
|
Valinnainen. Nopeuden yksikkö: |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_for(LEFT, 110, DEGREES)
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
aseta_käännösnopeus#
set_turn_velocity kertoo robotille, kuinka nopeasti sen tulee kääntyä. Suurempi prosenttiosuus saa robotin kääntymään nopeammin ja pienempi prosenttiosuus hitaammin.
Jokainen projekti alkaa robotin pyöriessä oletusarvoisesti 50 %:n nopeudella.
Huomautus: Suurempi nopeus saa robotin kääntymään nopeammin, mutta se voi olla epätarkempi. Pienempi nopeus saa robotin kääntymään hitaammin, mutta se voi olla tarkempi.
Usage:
drivetrain.set_turn_velocity(velocity, units)
Parametrit |
Kuvaus |
|---|---|
|
Kääntymisnopeus väliltä 0–100 %. Tämä voi olla kokonaisluku |
|
Valinnainen. Nopeuden yksikkö: |
def main():
# Turn to face the Neutral Goal faster
drivetrain.set_turn_velocity(100, PERCENT)
drivetrain.turn_for(LEFT, 110, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Getterit#
otsikko#
Suunta on robotin suunta asteina. heading palauttaa robotin nykyisen suunnan 0–359,99 astetta.
Robotin lähtösuunta on 0 astetta.
Usage:
drivetrain.heading(units)
Parametrit |
Kuvaus |
|---|---|
|
Valinnainen. Kulmayksikkö: |
def main():
# Turn to the Goal, then show heading
drivetrain.turn_for(LEFT, 110, DEGREES)
brain.screen.print("Heading: ")
brain.screen.print(drivetrain.heading(DEGREES))
# VR threads — Do not delete
vr_thread(main)
kierto#
Rotaatio ilmaisee robotin kääntymismäärän asteina. Projektin alussa rotaatioarvoksi asetetaan 0 astetta. rotation palauttaa robotin nykyisen rotaation.
Kääntyminen oikealle lisää kiertoliikettä ja kääntäminen vasemmalle vähentää sitä. Esimerkiksi kahden täyden käännöksen tekeminen oikealle palauttaa 720 asteen kiertoliikkeen.
Usage:
drivetrain.rotation(units)
Parametrit |
Kuvaus |
|---|---|
|
Valinnainen. Kiertoyksikkö: |
def main():
# Spin to find a Pin, then show rotation
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Rotation: ")
brain.screen.print(drivetrain.rotation(DEGREES))
# VR threads — Do not delete
vr_thread(main)
on_valmis#
is_done palauttaa totuusarvona tiedon siitä, onko robotti lopettanut liikkumisen. Tätä voidaan käyttää muiden robotin liikkeeseen perustuvien toimintojen ajoituksen hallintaan.
True— Robotti on lopettanut liikkumisen.False— Robotti liikkuu edelleen.
Tämä metodi toimii yhdessä seuraavien Drivetrain-metodien kanssa, joilla on wait -parametri: drive_for, turn_for, turn_to_heading ja turn_to_rotation.
Usage:
drivetrain.is_done()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_for(LEFT, 110, DEGREES)
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES, wait=False)
wait(0.5, SECONDS)
while not drivetrain.is_done():
wait(5, MSEC)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
liikkuu#
is_moving palauttaa totuusarvona tiedon siitä, liikkuuko robotti. Tätä voidaan käyttää muiden robotin liikkeeseen perustuvien toimintojen ajoituksen hallintaan.
True— Robotti liikkuu.False— Robotti ei liiku.
Usage:
drivetrain.is_moving()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
def main():
# Raise the Arm once stopped near the Goal
drivetrain.turn_for(LEFT, 110, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES, wait=False)
wait (0.5, SEC)
while drivetrain.is_moving():
wait(5, MSEC)
arm_motor.spin_for(FORWARD, 800, DEGREES)
# VR threads — Do not delete
vr_thread(main)
nopeus#
velocity palauttaa robotin ajonopeuden prosentteina väliltä -100 % - 100 %.
Usage:
drivetrain.velocity(units)
Parametrit |
Kuvaus |
|---|---|
|
Valinnainen. Nopeuden yksikkö: |
def main():
# Show speed while driving to the Goal
drivetrain.drive_for(FORWARD, 150, MM)
brain.screen.print("Velocity: ")
brain.screen.print(drivetrain.velocity(PERCENT))
# VR threads — Do not delete
vr_thread(main)
Liike#
Flex käyttää varren moottoria varren nostamiseen ja laskemiseen ja kynsien moottoria kynsien avaamiseen ja sulkemiseen.
Jokaisella moottorilla on oma suuntakäyttäytymisensä. Suuntakuvaukset selittävät, miten kukin suunta liikuttaa moottoria Flexissä.
Toiminnot#
pyörähdys#
spin pyörittää moottoria ikuisesti yhteen kahdesta suunnasta. Moottori jatkaa pyörimistä, kunnes sille annetaan toinen toiminto, kuten pyöriminen eri suuntaan tai pysähtyminen.
Käyttö:
Tällä menetelmällä voidaan käyttää yhtä kahdesta käytettävissä olevasta moottoriobjektista, kuten alla on esitetty:
moottori |
Komento |
|---|---|
|
|
|
|
Parametrit |
Kuvaus |
|---|---|
|
Moottorin pyörimissuunta:
|
def main():
# Raise the Arm before driving toward a Pin
arm_motor.spin(FORWARD)
wait(1, SECONDS)
arm_motor.stop()
# VR threads — Do not delete
vr_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.
Käyttö:
Tällä menetelmällä voidaan käyttää yhtä kahdesta käytettävissä olevasta moottoriobjektista, kuten alla on esitetty:
moottori |
Komento |
|---|---|
|
|
|
|
Parametrit |
Kuvaus |
|---|---|
|
Moottorin pyörimissuunta:
|
|
Moottorin pyörimismatka. |
|
Valinnainen. Etäisyyden yksikkö: |
|
Valinnainen.
|
def main():
# Raise the Arm to carry the Pin to the Goal
arm_motor.spin_for(FORWARD, 800, DEGREES)
# VR threads — Do not delete
vr_thread(main)
pyöritä_asentoon#
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 varsimoottorin asento on asetettu 0 asteeseen. Kynsimoottori on poikkeus – se käynnistyy 467 asteessa (täysin suljettuna). 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.
Käyttö:
Tällä menetelmällä voidaan käyttää yhtä kahdesta käytettävissä olevasta moottoriobjektista, kuten alla on esitetty:
moottori |
Komento |
|---|---|
|
|
|
|
Parametrit |
Kuvaus |
|---|---|
|
Moottorin pyörimisasennon arvo. |
|
Valinnainen. Sijaintiyksikkö: |
|
Valinnainen.
|
def main():
# Raise the Arm, then release the Pin
arm_motor.spin_to_position(800, DEGREES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Stop#
stop pysäyttää moottorin pyörimisen.
Käyttö:
Tällä menetelmällä voidaan käyttää yhtä kahdesta käytettävissä olevasta moottoriobjektista, kuten alla on esitetty:
moottori |
Komento |
|---|---|
|
|
|
|
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
def main():
# Raise the Arm partway to hold the Pin
arm_motor.spin(FORWARD)
wait(1, SECONDS)
arm_motor.stop()
# VR threads — Do not delete
vr_thread(main)
Mutaattorit#
asetettu_sijainti#
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.
Käyttö:
Tällä menetelmällä voidaan käyttää yhtä kahdesta käytettävissä olevasta moottoriobjektista, kuten alla on esitetty:
moottori |
Komento |
|---|---|
|
|
|
|
Parametrit |
Kuvaus |
|---|---|
|
Moottorille asetettava asentoarvo. |
|
Valinnainen. Sijaintiyksikkö: |
def main():
# Reset encoder, raise Arm, place Pin
arm_motor.set_position(0, DEGREES)
arm_motor.spin_to_position(800, DEGREES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_velocity#
set_velocity kertoo moottorille, kuinka nopeasti sen tulisi pyöriä. Suurempi prosenttiosuus saa moottorin pyörimään nopeammin ja pienempi prosenttiosuus hidastamaan.
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.
Käyttö:
Tällä menetelmällä voidaan käyttää yhtä kahdesta käytettävissä olevasta moottoriobjektista, kuten alla on esitetty:
moottori |
Komento |
|---|---|
|
|
|
|
Parametrit |
Kuvaus |
|---|---|
|
Pyörimisnopeus välillä 0–100 %. Tämä voi olla kokonaisluku |
|
Nopeuden yksikkö: |
def main():
# Raise the Arm fast to release the Pin
arm_motor.set_velocity(100, PERCENT)
arm_motor.spin_for(FORWARD, 800, DEGREES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
asetettu_aikakatkaisu#
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.
Käyttö:
Tällä menetelmällä voidaan käyttää yhtä kahdesta käytettävissä olevasta moottoriobjektista, kuten alla on esitetty:
moottori |
Komento |
|---|---|
|
|
|
|
Parametrit |
Kuvaus |
|---|---|
|
Aika, jonka moottori voi yrittää suorittaa liikkeen loppuun. Tämä voi olla positiivinen kokonaisluku |
|
Aikayksikkö: |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_for(LEFT, 110, DEGREES)
arm_motor.set_timeout(1, SECONDS)
arm_motor.spin_for(FORWARD, 1800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Getterit#
on_valmis#
is_done 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.
Käyttö:
Tällä menetelmällä voidaan käyttää yhtä kahdesta käytettävissä olevasta moottoriobjektista, kuten alla on esitetty:
moottori |
Komento |
|---|---|
|
|
|
|
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
def main():
# Raise the Arm while driving to the Goal
arm_motor.spin_to_position(800, DEGREES, wait=False)
wait(0.1, SECONDS)
while not arm_motor.is_done():
drivetrain.drive(FORWARD)
wait(5, MSEC)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
pyörii#
is_spinning 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.
Käyttö:
Tällä menetelmällä voidaan käyttää yhtä kahdesta käytettävissä olevasta moottoriobjektista, kuten alla on esitetty:
moottori |
Komento |
|---|---|
|
|
|
|
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
def main():
# Raise the Arm while driving to the Goal, then release the Pin
arm_motor.spin_to_position(800, DEGREES, wait=False)
wait(0.1, SECONDS)
while arm_motor.is_spinning():
drivetrain.drive_for(FORWARD, 25, MM)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
asema#
Moottorin asento ilmaisee, kuinka pitkälle se on pyörinyt, mitattuna yksiköissä DEGREES tai TURNSYksi kierros vastaa 360 astetta. position palauttaa moottorin nykyisen asennon.
Projektin alussa varsimoottorin asento on asetettu 0 asteeseen. Kynsimoottori on poikkeus – se käynnistyy 467 asteessa (täysin suljettuna). Jos moottori pyörii yhden täyden kierroksen eteenpäin, asento kasvaa. Jos moottori pyörii vastakkaiseen suuntaan, asento pienenee.
Käyttö:
Tällä menetelmällä voidaan käyttää yhtä kahdesta käytettävissä olevasta moottoriobjektista, kuten alla on esitetty:
moottori |
Komento |
|---|---|
|
|
|
|
Parametrit |
Kuvaus |
|---|---|
|
Yksikkö, joka palauttaa moottorin asennon: |
def main():
# Raise the Arm, then release the Pin
while arm_motor.position(DEGREES) < 800:
arm_motor.spin(FORWARD)
wait(2, MSEC)
arm_motor.stop()
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
nopeus#
velocity palauttaa moottorin pyörimisnopeuden.
Positiivinen arvo tarkoittaa, että moottori pyörii eteenpäin. Negatiivinen arvo tarkoittaa, että moottori pyörii taaksepäin.
Käyttö:
Tällä menetelmällä voidaan käyttää yhtä kahdesta käytettävissä olevasta moottoriobjektista, kuten alla on esitetty:
moottori |
Komento |
|---|---|
|
|
|
|
Parametrit |
Kuvaus |
|---|---|
|
Palautettava nopeuden yksikkö: |
def main():
# Show Arm Motor velocity while raising
arm_motor.set_velocity(100, PERCENT)
arm_motor.spin_to_position(800, DEGREES, wait=False)
wait(0.2, SECONDS)
brain.screen.print(arm_motor.velocity(PERCENT))
# VR threads — Do not delete
vr_thread(main)
Tekoälyvisio#
Getterit#
ota_kuva#
take_snapshot suodattaa tekoälynäköanturin kehyksen tiedot yhdeksi allekirjoitukseksi – tallennetuksi kuvaukseksi jostakin, jonka anturi tunnistaa, kuten pelikentän pelielementistä – ja palauttaa tuplen.
Tuple tallentaa objektit leveyden mukaan suurimmasta pienimpään järjestettyinä alkaen indeksistä 0. Kunkin objektin properties-ominaisuuksiin pääsee käsiksi sen indeksin avulla. Jos vastaavia objekteja ei löydy, palautetaan tyhjä tuple.
Usage:
ai_vision.take_snapshot(signature)
Parametrit |
Kuvaus |
|---|---|
|
Suodattaa tietojoukon sisältämään vain annetun allekirjoituksen tiedot. Käytettävissä olevat allekirjoitukset ovat:
|
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Turn to face the Pin
drivetrain.set_turn_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].centerX < 140:
drivetrain.turn(LEFT)
elif ai_objects[0].centerX > 180:
drivetrain.turn(RIGHT)
else:
drivetrain.stop()
break
# VR threads — Do not delete
vr_thread(main)
Ominaisuudet#
Tupleen tallennetussa objektissa on seitsemän ominaisuutta take_snapshot -metodin käytön jälkeen.
Kaikki ominaisuusarvot paitsi .id kuvaavat havaitun kohteen sijainnin ja koon tekoälynäköanturin näkymässä sillä hetkellä, kun take_snapshot take_snapshot käytettiin. Nämä arvot mitataan pikseleinä anturin 320 x 240 pikselin resoluution perusteella.
.leveys#
.width palauttaa havaitun objektin leveyden pikseleinä, joka on kokonaisluku väliltä 1 ja 320.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Approach the next Cup and Pin
drivetrain.set_drive_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].width > 140:
drivetrain.stop()
break
else:
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)
.korkeus#
.height palauttaa havaitun objektin korkeuden pikseleinä, joka on kokonaisluku väliltä 1 ja 240.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Approach the next Cup and Pin
drivetrain.set_drive_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].height > 200:
drivetrain.stop()
break
else:
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)
.centerX#
.centerX palauttaa havaitun objektin keskipisteen x-koordinaatin pikseleinä, joka on kokonaisluku väliltä 0–320.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Turn and approach the next Cup and Pin
drivetrain.set_turn_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].centerX < 140:
drivetrain.turn_for(LEFT, 5, DEGREES)
else:
drivetrain.drive_for(FORWARD, 25, INCHES)
break
# VR threads — Do not delete
vr_thread(main)
.centerY#
.centerY palauttaa havaitun objektin keskipisteen y-koordinaatin pikseleinä, joka on kokonaisluku väliltä 0–240.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Approach the next Cup and Pin
drivetrain.set_drive_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].centerY > 230:
drivetrain.stop()
break
else:
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)
.originX#
.originX palauttaa havaitun objektin rajaavan laatikon vasemman yläkulman x-koordinaatin pikseleinä, joka on kokonaisluku väliltä 0–320.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Turn and approach the next Cup and Pin
drivetrain.set_turn_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].originX < 100:
drivetrain.turn_for(LEFT, 5, DEGREES)
else:
drivetrain.drive_for(FORWARD, 25, INCHES)
break
# VR threads — Do not delete
vr_thread(main)
.originY#
.originY palauttaa havaitun objektin rajaavan laatikon vasemman yläkulman y-koordinaatin pikseleinä, joka on kokonaisluku väliltä 0–240.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Approach the next Cup and Pin
drivetrain.set_drive_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].originY > 140:
drivetrain.stop()
break
else:
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)
.id-tiedosto#
.id palauttaa havaitun tekoälyluokituksen ID:n kokonaislukuna.
Tekoälyluokitus |
tunnus |
Allekirjoitus |
|---|---|---|
PunainenSininenPin |
0 |
|
SininenKeltainenPin |
1 |
|
PunainenKeltainenTappi |
2 |
|
Keltainen pinni |
3 |
|
Kuppi |
4 |
|
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Display the ID of the next closest object
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
brain.screen.print(ai_objects[0].id)
break
# VR threads — Do not delete
vr_thread(main)
Konsoli#
Konsoli näyttää tekstiä, numeroita ja muuttujien arvoja projektin ollessa käynnissä. Konsolimetodit voivat myös siirtää kohdistimen uudelle riville, tyhjentää konsolin ja lisätä muuttujia tai anturiarvoja Monitor-välilehdelle.
Painaa#
aivot.näyttö.tulostus#
brain.screen.print näyttää tekstiä, numeroita tai muuttujien arvoja konsolissa käyttäen kohdistimen nykyistä sijaintia.
Käytä brain.screen.next_row, kun haluat seuraavan tulostettavan arvon alkavan uudelta riviltä.
Usage:
brain.screen.print(value)
Parametrit |
Kuvaus |
|---|---|
|
Konsolissa näytettävä teksti, numero tai muuttujan arvo. |
def main():
# Display a message in the Console
brain.screen.print("Hello, robot!")
# VR threads — Do not delete
vr_thread(main)
aivot.näyttö.seuraava_rivi#
brain.screen.next_row siirtää kohdistimen konsolin seuraavan rivin sarakkeeseen 1. Seuraava tulostettava arvo näkyy kyseisellä rivillä.
Usage:
brain.screen.next_row()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
def main():
# Print on two rows
brain.screen.print("Row 1")
brain.screen.next_row()
brain.screen.print("Row 2")
# VR threads — Do not delete
vr_thread(main)
aivot.näyttö.selkeä_näyttö#
brain.screen.clear_screen tyhjentää kaikki rivit konsolista ja siirtää kohdistimen takaisin riville 1.
Usage:
brain.screen.clear_screen()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
def main():
# Display text, then clear it after two seconds
brain.screen.print("This will disappear...")
wait(2, SECONDS)
brain.screen.clear_screen()
# VR threads — Do not delete
vr_thread(main)
Näyttö#
monitori_muuttuja#
monitor_variable lisää yhden tai useamman ennalta määritetyn muuttujan VEXcoden Monitor-välilehdelle. Tämän avulla voit seurata muuttujan arvon muutosta projektin ollessa käynnissä.
Variables must be global for monitor_variable to monitor them successfully. Provide each variable name as a string.
Usage:
monitor_variable(“variable”)
monitor_variable(“variable1”, “variable2”)
Parametrit |
Kuvaus |
|---|---|
|
Valvottavan ennalta määritetyn globaalin muuttujan nimi merkkijonona. Jos haluat valvoa useampaa kuin yhtä muuttujaa, erota muuttujien nimet pilkulla. |
def main():
# Monitor the number of loops
global loops
monitor_variable("loops")
# Turn in a full circle 3 times
for loops in range(12):
drivetrain.turn_for(RIGHT, 90, DEGREES)
# VR threads — Do not delete
vr_thread(main)
monitorianturi#
monitor_sensor lisää yhden tai useamman anturin arvon VEXcoden Monitor-välilehdelle. Tämän avulla voit seurata anturin arvojen muutoksia projektin ollessa käynnissä.
Anna jokaisen anturin arvo merkkijonona.
Usage:
monitor_sensor(“sensor”)
monitor_sensor(“sensor1”, “sensor2”)
Parametrit |
Kuvaus |
|---|---|
|
Valvottava anturin arvo merkkijonona. Jos haluat valvoa useampaa kuin yhtä anturin arvoa, erota jokainen anturin arvo pilkulla. Tuettuihin anturitunnisteisiin kuuluvat:
|
def main():
# Monitor the robot's heading
monitor_sensor("drivetrain.heading")
drivetrain.turn_for(RIGHT, 450, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Tunnistaminen#
Etäisyys#
löydetty_objekti#
found_object palauttaa, havaitseeko etäisyysanturi tällä hetkellä kohteen 2000 mm:n säteellä.
True— Etäisyysanturi havaitsee kohteen.False— Etäisyysanturi ei havaitse kohdetta.
Usage:
distance.found_object()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
def main():
# Turn until something is detected, then release the Pin
drivetrain.turn(RIGHT)
while True:
wait(5, MSEC)
if distance.found_object():
drivetrain.stop()
break
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
objektin_etäisyys#
object_distance palauttaa etäisyysanturin ja lähimmän havaitun kohteen välisen etäisyyden.
Usage:
distance.object_distance(units)
Parametrit |
Kuvaus |
|---|---|
|
Etäisyyden yksikkö: |
def main():
# Drive until 200 mm from the Goal, then release the Pin
while distance.object_distance(MM) > 200:
wait(5, MSEC)
drivetrain.drive(FORWARD)
drivetrain.stop()
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
GPS#
x-sijainti#
x_position palauttaa kentällä olevan GPS (Game Positioning System™) -anturin nykyisen x-koordinaatin.
Usage:
gps.x_position(units)
Parametrit |
Kuvaus |
|---|---|
yksiköitä |
Siirtymäarvon yksikkö: |
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive(FORWARD)
while not gps.x_position(MM) > -1370:
wait(2, MSEC)
drivetrain.stop()
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
y-sijainti#
y_position palauttaa kentällä olevan GPS (Game Positioning System™) -anturin nykyisen y-koordinaatin.
Usage:
gps.y_position(units)
Parametrit |
Kuvaus |
|---|---|
yksiköitä |
Siirtymäarvon yksikkö: |
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive(FORWARD)
while not gps.y_position(MM) < -450:
wait(2, MSEC)
drivetrain.stop()
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
otsikko#
heading palauttaa robotin nykyisen suunta-arvon GPS (Game Positioning System™) -anturin lukemien perusteella välillä 0–359 astetta.
Usage:
gps.heading()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
def main():
# Raise the Arm, drive to the Goal, release the Pin
monitor_sensor("gps.heading")
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# Turn left to face the Neutral Goal
drivetrain.set_turn_velocity(30, PERCENT)
drivetrain.turn(LEFT)
while not gps.heading() < 18:
wait(2, MSEC)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)