Robotams skirtas Python#
Įvadas#
„Hero Bot“ „Flex“ turi letenų variklį, rankos variklį, dirbtinio intelekto regėjimo jutiklį, atstumo jutiklį ir žaidimo padėties nustatymo sistemos (GPS) jutiklį.
Visi standartiniai VEXcode VR metodai yra prieinami V5 26-27 Override žaidimų aikštelėje.
Žemiau pateikiamas visų galimų robotams skirtų metodų sąrašas:
Pavaros sistema – judinkite ir pasukite robotą.
Veiksmai
drive— Robotas judina pirmyn arba atgal amžinai.drive_for— Robotas juda pirmyn arba atgal tam tikru atstumu.turn— Robotas visam laikui pasukamas į kairę arba į dešinę.turn_for— Robotas pasukamas į kairę arba į dešinę tam tikru laipsnių skaičiumi.turn_to_heading— Robotas pasukamas tam tikra kryptimi nuo -359 iki 359 laipsnių.turn_to_rotation— Įjungia roboto sukimąsi konkrečia kryptimi.stop— Sustabdo roboto judėjimą.
Mutatoriai
set_heading— Pakeičia dabartinę roboto kryptį į naują.set_rotation— Pakeičia dabartinį roboto sukimąsi į naują.set_timeout— Nustato, kiek laiko robotas bandys užbaigti judesį.set_drive_velocity— Nurodo robotui, kokiu greičiu važiuoti.set_turn_velocity— Nurodo robotui, kaip greitai jis turi suktis.
Getteriai
Judėjimas – judinkite ir sekite roboto variklius.
Veiksmai
spin— Variklis sukasi pirmyn arba atgal amžinai.spin_for— Suka variklį tam tikrą atstumą.spin_to_position— Suka variklį į konkrečią padėtį.stop— Sustabdo variklio sukimąsi.
Mutatoriai
set_position— Pakeičia dabartinę variklio padėtį į naują reikšmę.set_velocity— Nurodo varikliui sukimosi greitį.set_timeout— Nustato, kiek laiko variklis bandys užbaigti judesį.
Getteriai
is_done— Grąžina, ar variklis baigė judėti, kaip loginę reikšmę.is_spinning— Grąžina, ar variklis sukasi, kaip loginę reikšmę.position— Grąžina dabartinę variklio padėtį.velocity— Grąžina variklio sukimosi greitį.
DI regėjimas – fiksuokite ir analizuokite objektus naudodami DI regėjimo jutiklį.
Getteriai
take_snapshot– Grąžina aptiktų objektų rinkinį, skirtą konkrečiam parašui.
Ypatybės
.width– Aptikto objekto plotis pikseliais..height– Aptikto objekto aukštis pikseliais..centerX– X position of the object’s center in pixels..centerY– Objekto centro Y padėtis pikseliais..originX– objekto viršutinio kairiojo kampo X padėtis pikseliais..originY– objekto viršutinio kairiojo kampo Y padėtis pikseliais..id– Classification ID of the detected object.
Konsolė – spausdinti į konsolę ir stebėti vertes.
Spausdinti
brain.screen.print— Konsolėje rodo tekstą, skaičius arba kintamųjų reikšmes.brain.screen.next_row— Perkelia konsolės žymeklį į kitos eilutės pradžią.brain.screen.clear_screen— Išvalo visas eilutes iš konsolės.
Monitorius
monitor_variable– Į skirtuką „Monitorius“ įtraukia vieną ar daugiau iš anksto apibrėžtų kintamųjų.monitor_sensor– Į skirtuką „Monitorius“ įtraukia vieną ar daugiau jutiklio reikšmių.
Jutikliai – Išnaudokite įvairius roboto jutiklius.
Atstumas
found_object– Grąžina, ar atstumo jutiklis aptinka objektą diapazone.object_distance– Grąžina atstumą tarp atstumo jutiklio ir artimiausio aptikto objekto.
GPS
x_position– Grąžina dabartinę GPS jutiklio x koordinatę lauke.y_position– Grąžina dabartinę GPS jutiklio y koordinatę lauke.heading– Grąžina roboto dabartinę kryptį pagal GPS jutiklį.
Šiame puslapyje pateiktuose pavyzdžiuose naudojama pradinė vieta C iš žaidimų aikštelės prieš rungtynes skirto kontrolinio sąrašo.
Pavarų dėžė#
Pavaros sistema kontroliuoja VR roboto judėjimą ir posūkius. Pavaros sistema gali judėti pirmyn arba atgal, pasukti į kairę arba į dešinę, pasukti norima kryptimi ir sekti savo sukimąsi.
Veiksmai#
vairuoti#
drive robotą judina pirmyn arba atgal amžinai. Robotas judės tol, kol jam bus duotas kitas veiksmas, pvz., pasisukti arba sustoti.
Usage:
drivetrain.drive(direction)
Parametrai |
Aprašymas |
|---|---|
|
Roboto judėjimo kryptis: |
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)
važiuoti_į#
drive_for robotą judina pirmyn arba atgal tam tikru atstumu. Projektas lauks, kol robotas baigs judėti, prieš paleidžiant kitą kodo eilutę.
Usage:
drivetrain.drive_for(direction, distance, units, wait)
Parametrai |
Aprašymas |
|---|---|
|
Roboto judėjimo kryptis: |
|
Atstumas, kurį nuvažiuoja robotas. Tai gali būti sveikasis skaičius |
|
Pasirinktinai. Atstumo vienetas: |
|
Pasirinktinai. |
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)
posūkis#
turn suka robotą į kairę arba į dešinę amžinai. Robotas suksis tol, kol jam bus duotas kitas veiksmas, pavyzdžiui, važiuoti arba sustoti.
Usage:
drivetrain.turn(direction)
Parametrai |
Aprašymas |
|---|---|
|
Roboto sukimosi kryptis: |
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)
posūkis_prieš#
turn_for pasuka robotą į kairę arba į dešinę tam tikru laipsnių skaičiumi. Posūkis yra santykinis dabartinės roboto padėties atžvilgiu. Projektas lauks, kol robotas baigs pasisukti, prieš paleidžiant kitą kodo eilutę.
Usage:
drivetrain.turn_for(direction, angle, units, wait)
Parametrai |
Aprašymas |
|---|---|
|
Roboto sukimosi kryptis: |
|
Laipsnių, kuriais robotas pasisuka, skaičius. Tai gali būti sveikasis skaičius |
|
Pasirinktinai. Kampo vienetas: |
|
Pasirinktinai. |
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)
posūkis_į_vadovą#
Kryptis – tai roboto pasukimo kryptis, matuojama laipsniais. turn_to_heading pasuka robotą tam tikra kryptimi nuo -359 iki 359 laipsnių. Robotas pasuks trumpiausia kryptimi, kad pasiektų tikslinę kryptį.
Pradinė kryptis yra 0 laipsnių.
Usage:
drivetrain.turn_to_heading(heading, units, wait)
Parametrai |
Aprašymas |
|---|---|
|
Roboto kryptis, kuria jis turėtų būti pasuktas, nuo -359 iki 359 laipsnių. |
|
Pasirinktinai. Kampo vienetas: |
|
Pasirinktinai. |
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)
apsisukimas#
turn_to_rotation pasuka robotą į tam tikrą sukimosi kryptį.
Sukimas – tai roboto pasisuko kampas, matuojamas laipsniais. Projekto pradžioje sukimosi vertė nustatyta į 0 laipsnių. Sukant į dešinę, sukimasis padidėja, o sukant į kairę – sumažėja.
Pavyzdžiui, jei robotas pradeda judėti nuo 0 laipsnių ir pasisuka 720 laipsnių kampu, jis du kartus pasisuks į dešinę. Jei jis tada pasisuks 360 laipsnių kampu, jis vieną kartą pasisuks į kairę, nes 360 laipsnių yra mažiau nei 720.
Usage:
drivetrain.turn_to_rotation(rotation, units, wait)
Parametrai |
Aprašymas |
|---|---|
|
Roboto sukimosi vertė laipsniais. Tai gali būti sveikasis skaičius |
|
Pasirinktinai. Kampo vienetas: |
|
Pasirinktinai. |
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)
sustoti#
stop sustabdo roboto judėjimą.
Usage:
drivetrain.stop()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
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)
Mutatoriai#
antraštės_rinkinys#
Kryptis – tai roboto judėjimo kryptis, matuojama laipsniais. set_heading pakeičia dabartinę roboto kryptį į naują krypties reikšmę.
Pavyzdžiui, jei robotas pasisuko veidu į dešinę, nustačius 0 laipsnių kryptį, ta nukreipta į dešinę pozicija tampa nauja 0 laipsnių. Tada robotas gali pasisukti į kitas pozicijas, remdamasis ta nauja kryptimi.
Usage:
drivetrain.set_heading(heading, units)
Parametrai |
Aprašymas |
|---|---|
|
Roboto krypties vertė laipsniais, kurią reikia nustatyti. |
|
Pasirinktinai. Kampo vienetas: |
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)
set_rotation#
Sukimasis nurodo, kiek robotas pasisuko, matuojamas laipsniais. set_rotation pakeičia dabartinę roboto sukimosi reikšmę į naują.
Usage:
drivetrain.set_rotation(rotation, units)
Parametrai |
Aprašymas |
|---|---|
|
Roboto sukimosi vertė laipsniais. Tai gali būti sveikasis skaičius |
|
Pasirinktinai. Kampo vienetas: |
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)
nustatytas_laikas#
set_timeout nustato, kiek sekundžių robotas bandys užbaigti judesį. Jei robotas negali užbaigti per tą laiką, jis nustos bandyti ir pereis prie kitos kodo eilutės. Tai neleidžia robotui užstrigti ties judesiu.
Usage:
drivetrain.set_timeout(time, units)
Parametrai |
Aprašymas |
|---|---|
|
Sekundžių skaičius, kurį robotas gali bandyti užbaigti judesį. Tai gali būti teigiamas sveikasis skaičius |
|
Pasirinktinai. Laiko vienetas: |
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)
nustatytas_važiavimo_greitis#
set_drive_velocity nurodo robotui, kokiu greičiu važiuoti. Didesnis procentas leidžia robotui važiuoti greičiau, o mažesnis – lėčiau.
Kiekvienas projektas prasideda nuo to, kad robotas pagal numatytuosius nustatymus važiuoja 50 % greičiu.
Pastaba: Didesnis greitis leidžia robotui važiuoti greičiau, bet gali būti mažiau tikslus. Mažesnis greitis leidžia robotui važiuoti lėčiau, bet gali būti tiksliau.
Usage:
drivetrain.set_drive_velocity(velocity, units)
Parametrai |
Aprašymas |
|---|---|
|
Važiavimo greitis nuo 0 % iki 100 %. Tai gali būti sveikasis skaičius |
|
Pasirinktinai. Greičio vienetas: |
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)
nustatytas_posūkio_greitis#
set_turn_velocity nurodo robotui, kaip greitai jis turi suktis. Didesnis procentas leidžia robotui suktis greičiau, o mažesnis – lėčiau.
Kiekvienas projektas prasideda nuo to, kad robotas pagal numatytuosius nustatymus sukasi 50 % greičiu.
Pastaba: Didesnis greitis leidžia robotui sukasi greičiau, bet gali būti mažiau tikslus. Mažesnis greitis leidžia robotui sukasi lėčiau, bet gali būti tiksliau.
Usage:
drivetrain.set_turn_velocity(velocity, units)
Parametrai |
Aprašymas |
|---|---|
|
Sukimosi greitis nuo 0 % iki 100 %. Tai gali būti sveikasis skaičius |
|
Pasirinktinai. Greičio vienetas: |
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)
Getteriai#
antraštė#
Kryptis – tai roboto pasukimo kryptis, matuojama laipsniais. heading grąžina dabartinę roboto kryptį nuo 0 iki 359,99 laipsnių.
Roboto pradinė kryptis yra 0 laipsnių.
Usage:
drivetrain.heading(units)
Parametrai |
Aprašymas |
|---|---|
|
Pasirinktinai. Antraštės vienetas: |
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)
rotacija#
Sukimas rodo, kiek robotas pasisuko, matuojamas laipsniais. Projekto pradžioje sukimosi vertė nustatoma į 0 laipsnių. rotation grąžina dabartinį roboto sukimąsi.
Sukant į dešinę, sukimasis padidėja, o sukant į kairę – sumažėja. Pavyzdžiui, padarius du pilnus posūkius į dešinę, sukimasis bus 720 laipsnių.
Usage:
drivetrain.rotation(units)
Parametrai |
Aprašymas |
|---|---|
|
Pasirinktinai. Pasukimo vienetas: |
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)
baigta#
is_done grąžina, ar robotas baigė judėti, kaip loginę reikšmę. Tai gali būti naudojama kitų veiksmų, pagrįstų roboto judėjimu, laikui valdyti.
True— Robotas baigė judėti.False— Robotas vis dar juda.
Šis metodas veikia kartu su šiais „Drivetrain“ metodais, turinčiais parametrą wait : drive_for, turn_for, turn_to_heading ir turn_to_rotation.
Usage:
drivetrain.is_done()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
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)
juda#
is_moving grąžina, ar robotas juda, kaip loginę reikšmę. Tai gali būti naudojama kitų veiksmų, pagrįstų roboto judėjimu, laikui valdyti.
True— Robotas juda.False— Robotas nejuda.
Usage:
drivetrain.is_moving()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
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)
greitis#
velocity grąžina roboto važiavimo greitį procentais nuo -100 % iki 100 %.
Usage:
drivetrain.velocity(units)
Parametrai |
Aprašymas |
|---|---|
|
Pasirinktinai. Greičio vienetas: |
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)
Judesys#
„Flex“ naudoja rankos variklį rankai pakelti ir nuleisti, o žnyplių variklį – žnyplėms atidaryti ir uždaryti.
Kiekvienas variklis turi savo krypties elgseną. Krypties aprašymuose paaiškinama, kaip kiekviena kryptis judina variklį „Flex“ staklėse.
Veiksmai#
sukimasis#
spin suka variklį viena iš dviejų krypčių amžinai. Variklis suksis tol, kol jam bus duotas kitas veiksmas, pavyzdžiui, suktis kita kryptimi arba sustoti.
Naudojimas:
Šiuo metodu galima naudoti vieną iš dviejų galimų motorinių objektų, kaip parodyta toliau:
variklis |
Komanda |
|---|---|
|
|
|
|
Parametrai |
Aprašymas |
|---|---|
|
Variklio sukimosi kryptis:
|
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)
sukimo_skirtas#
spin_for suka variklį tam tikrą atstumą. Sukimasis yra santykinis pagal dabartinę variklio padėtį. Projektas lauks, kol variklis baigs suktis, prieš paleidžiant kitą kodo eilutę.
Naudojimas:
Šiuo metodu galima naudoti vieną iš dviejų galimų motorinių objektų, kaip parodyta toliau:
variklis |
Komanda |
|---|---|
|
|
|
|
Parametrai |
Aprašymas |
|---|---|
|
Variklio sukimosi kryptis:
|
|
Variklio sukamasis atstumas. |
|
Pasirinktinai. Atstumo vienetas: |
|
Pasirinktinai.
|
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)
sukimo_į_poziciją#
spin_to_position suka variklį į tam tikrą padėtį.
Variklio padėtis rodo, kiek jis apsisuko, matuojant DEGREES arba TURNSVienas apsisukimas lygus 360 laipsnių. Projekto pradžioje svirties variklio padėtis nustatyta į 0 laipsnių. Nagų variklis yra išimtis – jis pradeda veikti esant 467 laipsniams (visiškai uždarytas). Variklio padėtį taip pat galima nustatyti naudojant set_position metodą.
Padėties vertės yra absoliučios. Tai reiškia, kad sukimosi kryptis priklauso nuo dabartinės variklio padėties.
Pavyzdžiui, jei variklis užsiveda esant 0 laipsnių kampui ir sukasi iki 720 laipsnių padėties, jis suksis du apsisukimus į priekį. Jei jis tada suksis iki 360 laipsnių padėties, jis suksis vieną apsisukimą atgal, nes 360 yra mažiau nei 720.
Naudojimas:
Šiuo metodu galima naudoti vieną iš dviejų galimų motorinių objektų, kaip parodyta toliau:
variklis |
Komanda |
|---|---|
|
|
|
|
Parametrai |
Aprašymas |
|---|---|
|
Padėties vertė, iki kurios suksis variklis. |
|
Pasirinktinai. Padėties vienetas: |
|
Pasirinktinai.
|
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)
sustoti#
stop sustabdo variklio sukimąsi.
Naudojimas:
Šiuo metodu galima naudoti vieną iš dviejų galimų motorinių objektų, kaip parodyta toliau:
variklis |
Komanda |
|---|---|
|
|
|
|
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
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)
Mutatoriai#
nustatyta_pozicija#
Variklio padėtis nurodo, kiek toli jis apsisuko, matuojant DEGREES arba TURNSVienas apsisukimas lygus 360 laipsnių. set_position pakeičia dabartinę variklio padėtį į naują reikšmę.
Pavyzdžiui, jei variklis apsisuko iki 180 laipsnių, nustatant 0 laipsnių padėtį, ši padėtis bus atkurta iš 180 į 0 laipsnių. Tada variklis gali suktis į padėtis, pagrįstas ta nauja verte.
Naudojimas:
Šiuo metodu galima naudoti vieną iš dviejų galimų motorinių objektų, kaip parodyta toliau:
variklis |
Komanda |
|---|---|
|
|
|
|
Parametrai |
Aprašymas |
|---|---|
|
Variklio padėties vertė, kurią reikia nustatyti. |
|
Pasirinktinai. Padėties vienetas: |
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)
nustatytas_greitis#
set_velocity nurodo varikliui, kokiu greičiu jis turi suktis. Didesnis procentas leidžia varikliui suktis greičiau, o mažesnis – lėčiau.
Kiekvienas projektas pradedamas, kai kiekvienas variklis pagal numatytuosius nustatymus sukasi 50 % greičiu.
Pastaba: Didesnis greitis leidžia varikliui sukasi greičiau, bet gali būti mažiau tikslus. Mažesnis greitis leidžia varikliui sukasi lėčiau, bet gali būti tiksliau.
Naudojimas:
Šiuo metodu galima naudoti vieną iš dviejų galimų motorinių objektų, kaip parodyta toliau:
variklis |
Komanda |
|---|---|
|
|
|
|
Parametrai |
Aprašymas |
|---|---|
|
Sukimosi greitis nuo 0% iki 100%. Tai gali būti sveikasis skaičius |
|
Greičio vienetas: |
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)
nustatytas_laikas#
set_timeout nustato, kiek laiko variklis bandys užbaigti judesį. Jei variklis negali užbaigti per tą laiką, jis nustos bandyti ir pereis prie kitos kodo eilutės. Tai neleidžia varikliui užstrigti ties judesiu.
Naudojimas:
Šiuo metodu galima naudoti vieną iš dviejų galimų motorinių objektų, kaip parodyta toliau:
variklis |
Komanda |
|---|---|
|
|
|
|
Parametrai |
Aprašymas |
|---|---|
|
Laikas, per kurį variklis gali bandyti užbaigti judesį. Tai gali būti teigiamas sveikasis skaičius |
|
Laiko vienetas: |
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)
Getteriai#
baigta#
is_done grąžina, ar variklis baigė judėti, kaip loginę reikšmę. Tai gali būti naudojama kitų veiksmų, pagrįstų variklio judėjimu, laikui valdyti.
True— Variklis nustojo judėti.False— Variklis vis dar juda.
Šis metodas veikia kartu su šiais „Motion“ metodais, turinčiais parametrą wait : spin_for ir spin_to_position.
Naudojimas:
Šiuo metodu galima naudoti vieną iš dviejų galimų motorinių objektų, kaip parodyta toliau:
variklis |
Komanda |
|---|---|
|
|
|
|
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
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)
sukasi#
is_spinning grąžina, ar variklis sukasi, kaip loginę reikšmę. Tai gali būti naudojama kitų veiksmų, pagrįstų variklio judėjimu, laikui valdyti.
True— Variklis sukasi.False— Variklis nesisuka.
Šis metodas veikia kartu su šiais „Motion“ metodais, turinčiais parametrą wait : spin_for ir spin_to_position.
Naudojimas:
Šiuo metodu galima naudoti vieną iš dviejų galimų motorinių objektų, kaip parodyta toliau:
variklis |
Komanda |
|---|---|
|
|
|
|
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
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)
pozicija#
Variklio padėtis nurodo, kiek jis apsisuko, matuojant DEGREES arba TURNSVienas apsisukimas lygus 360 laipsnių. position grąžina dabartinę variklio padėtį.
Projekto pradžioje svirties variklio padėtis nustatyta į 0 laipsnių. Išimtis yra žnyplių variklis – jis pradeda veikti esant 467 laipsniams (visiškai uždarytas). Jei variklis sukasi vieną pilną apsisukimą į priekį, padėtis padidėja. Jei variklis sukasi kita kryptimi, padėtis sumažėja.
Naudojimas:
Šiuo metodu galima naudoti vieną iš dviejų galimų motorinių objektų, kaip parodyta toliau:
variklis |
Komanda |
|---|---|
|
|
|
|
Parametrai |
Aprašymas |
|---|---|
|
Įrenginys, kuris grąžins variklio padėtį: |
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)
greitis#
velocity grąžina variklio sukasi greitį.
Teigiama reikšmė reiškia, kad variklis sukasi į priekį. Neigiama reikšmė reiškia, kad variklis sukasi atgal.
Naudojimas:
Šiuo metodu galima naudoti vieną iš dviejų galimų motorinių objektų, kaip parodyta toliau:
variklis |
Komanda |
|---|---|
|
|
|
|
Parametrai |
Aprašymas |
|---|---|
|
Grąžintinas greičio vienetas: |
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)
Dirbtinio intelekto vizija#
Getteriai#
fotografuoti_momentinę nuotrauką#
take_snapshot filtruoja duomenis iš AI regėjimo jutiklio kadro į vieną parašą – išsaugotą aprašymą to, ką jutiklis gali atpažinti, pvz., žaidimo elementą lauke, – ir grąžina rinkinį.
Rinkinyje objektai saugomi surūšiuoti nuo didžiausio iki mažiausio pagal plotį, pradedant indeksu 0. Kiekvieno objekto properties galima pasiekti naudojant jo indeksą. Jei nerandama atitinkamų objektų, grąžinama tuščia rinkinio reikšmė.
Usage:
ai_vision.take_snapshot(signature)
Parametrai |
Aprašymas |
|---|---|
|
Filtruoja duomenų rinkinį, kad jame būtų tik nurodyto parašo duomenys. Galimi parašai:
|
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)
Ypatybės#
Kiekvienam objektui, saugomam rinkinyje po take_snapshot, panaudojimo, priskiriamos septynios savybės.
Visos ypatybių reikšmės, išskyrus .id apibūdina aptikto objekto padėtį ir dydį dirbtinio intelekto regos jutiklio rodinyje tuo metu, kai buvo naudojamas take_snapshot Šios reikšmės matuojamos pikseliais, remiantis jutiklio 320 x 240 pikselių skiriamąja geba.
.plotis#
.width grąžina aptikto objekto plotį pikseliais, kuris yra sveikasis skaičius nuo 1 iki 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)
.aukštis#
.height grąžina aptikto objekto aukštį pikseliais, kuris yra sveikasis skaičius nuo 1 iki 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 grąžina aptikto objekto centro x koordinatę pikseliais, kuri yra sveikasis skaičius nuo 0 iki 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 grąžina aptikto objekto centro y koordinatę pikseliais, kuri yra sveikasis skaičius nuo 0 iki 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 grąžina aptikto objekto ribojančio langelio viršutinio kairiojo kampo x koordinatę pikseliais, kuri yra sveikasis skaičius nuo 0 iki 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 grąžina aptikto objekto ribojančio langelio viršutinio kairiojo kampo y koordinatę pikseliais, kurie yra sveikasis skaičius nuo 0 iki 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#
.id grąžina aptiktos dirbtinio intelekto klasifikacijos ID kaip sveikąjį skaičių.
DI klasifikacija |
id |
Parašas |
|---|---|---|
RaudonasMėlynasPin |
0 |
|
MėlynaGeltonaSmeigtukas |
1 |
|
RaudonaGeltonaSmeigtukas |
2 |
|
Geltonasis smeigtukas |
3 |
|
Taurė |
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)
Konsolė#
Kol projektas vykdomas, konsolėje rodomas tekstas, skaičiai ir kintamųjų reikšmės. Konsolės metodai taip pat gali perkelti žymeklį į naują eilutę, išvalyti konsolę ir pridėti kintamuosius arba jutiklių reikšmes į skirtuką „Monitorius“.
Spausdinti#
smegenų.ekranas.spausdintas#
brain.screen.print konsolėje rodo tekstą, skaičius arba kintamųjų reikšmes, naudodamas dabartinę žymeklio padėtį.
Naudokite brain.screen.next_row, jei norite, kad kita spausdinama reikšmė prasidėtų naujoje eilutėje.
Usage:
brain.screen.print(value)
Parametrai |
Aprašymas |
|---|---|
|
Tekstas, skaičius arba kintamojo reikšmė, kuri bus rodoma konsolėje. |
def main():
# Display a message in the Console
brain.screen.print("Hello, robot!")
# VR threads — Do not delete
vr_thread(main)
smegenų.ekranas.kita_eilutė#
brain.screen.next_row perkelia žymeklį į 1 stulpelį kitoje konsolės eilutėje. Kita atspausdinta reikšmė bus rodoma toje eilutėje.
Usage:
brain.screen.next_row()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
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)
smegenų.ekranas.aiškus_ekranas#
brain.screen.clear_screen išvalo visas eilutes iš konsolės ir perkelia žymeklį atgal į 1 eilutę.
Usage:
brain.screen.clear_screen()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
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)
Monitorius#
monitoriaus_kintamasis#
monitor_variable prideda vieną ar daugiau iš anksto apibrėžtų kintamųjų į „VEXcode“ skirtuką „Monitor“. Tai leidžia stebėti kintamojo reikšmės pasikeitimą projekto vykdymo metu.
Kad monitor_variable sėkmingai stebėtų kintamuosius, jie turi būti globalūs. Kiekvieno kintamojo pavadinimą pateikite kaip eilutę.
Usage:
monitor_variable(“variable”)
monitor_variable(“variable1”, “variable2”)
Parametrai |
Aprašymas |
|---|---|
|
Iš anksto apibrėžto stebimo globalaus kintamojo pavadinimas, pateiktas kaip eilutė. Norėdami stebėti daugiau nei vieną kintamąjį, atskirkite kiekvieno kintamojo pavadinimą kableliu. |
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)
monitoriaus_jutiklis#
monitor_sensor prideda vieną ar daugiau jutiklio verčių į „VEXcode“ skirtuką „Monitorius“. Tai leidžia stebėti jutiklio verčių pokyčius projekto vykdymo metu.
Pateikite kiekvieno jutiklio reikšmę kaip eilutę.
Usage:
monitor_sensor(“sensor”)
monitor_sensor(“sensor1”, “sensor2”)
Parametrai |
Aprašymas |
|---|---|
|
Jutiklio reikšmė, kurią reikia stebėti, pateikiama kaip eilutė. Norėdami stebėti daugiau nei vieną jutiklio reikšmę, kiekvieną jutiklio reikšmę atskirkite kableliu. Palaikomi jutiklių identifikatoriai:
|
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)
Jutimas#
Atstumas#
rastas_objektas#
found_object grąžina, ar atstumo jutiklis šiuo metu aptinka objektą 2000 mm atstumu.
True— Atstumo jutiklis aptinka objektą.False— Atstumo jutiklis neaptinka objekto.
Usage:
distance.found_object()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
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)
objekto_atstumas#
object_distance grąžina atstumą tarp atstumo jutiklio ir artimiausio aptikto objekto.
Usage:
distance.object_distance(units)
Parametrai |
Aprašymas |
|---|---|
|
Atstumo vienetas: |
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_pozicija#
x_position grąžina dabartinę GPS (žaidimo padėties nustatymo sistemos™) jutiklio x koordinatę lauke.
Usage:
gps.x_position(units)
Parametrai |
Aprašymas |
|---|---|
vienetai |
Poslinkio vertės vienetas: |
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_pozicija#
y_position grąžina dabartinę GPS (žaidimo padėties nustatymo sistemos™) jutiklio y koordinatę lauke.
Usage:
gps.y_position(units)
Parametrai |
Aprašymas |
|---|---|
vienetai |
Poslinkio vertės vienetas: |
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)
antraštė#
heading grąžina kryptį, kuria robotas šiuo metu juda, remiantis GPS („Game Positioning System™“) jutiklio rodmenimis nuo 0 iki 359 laipsnių.
Usage:
gps.heading()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
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)