Robottikohtainen Python#
Johdanto#
Sankaribotti Flop sisältää imumoottorin, käsimoottorin ja IQ AI -näköanturin.
Kaikki VEXcode VR Python -vakiokomennot ovat käytettävissä IQ 26-27 Level Up -leikkikentällä.
Alla on luettelo kaikista käytettävissä olevista robottikohtaisista Python-komennoista:
Liike – Liikuta ja seuraa robotin moottoreita.
Toiminnot
spin – Pyörittää moottoria yhteen suuntaan ikuisesti.
spin_for – Pyörittää moottoria tietyn määrän asteita tai kierroksia.
spin_to_position – Pyörittää moottorin tiettyyn asentoon.
stop – Pysäyttää moottorin pyörimisen.
Asetukset
set_velocity – Määrittää moottorin pyörimisnopeuden.
set_timeout – Määrittää, kuinka kauan moottori yrittää suorittaa liikkeen loppuun.
set_position – Muuttaa moottorin nykyisen sijainnin uuteen arvoon.
Arvot
is_done – Palauttaa, onko moottorin liike päättynyt.
is_spinning – Palauttaa, pyöriikö moottori.
position – Palauttaa moottorin nykyisen sijainnin.
nopeus – Palauttaa moottorin pyörimisnopeuden.
Tekoälynäkö – Kaappaa ja analysoi esineitä IQ AI -näköanturilla.
Getters
take_snapshot – Suodattaa anturin nykyisen kehyksen tietyn tunnisteen mukaan ja palauttaa havaittujen objektien tuplen.
Kiinteistöt
.width – Palauttaa havaitun objektin leveyden pikseleinä.
.height – Palauttaa havaitun objektin korkeuden pikseleinä.
.centerX – Palauttaa havaitun objektin keskipisteen x-koordinaatin.
.centerY – Palauttaa havaitun objektin keskipisteen y-koordinaatin.
.originX – Palauttaa havaitun objektin rajaavan laatikon vasemman yläkulman x-koordinaatin.
.originY – Palauttaa havaitun objektin rajaavan laatikon vasemman yläkulman y-koordinaatin.
.id – Palauttaa havaitun tekoälyluokituksen tunnuksen.
Tämän sivun esimerkeissä käytetään leikkikentän oletusarvoista aloituskohtaa.
Liike#
Flopissa on kaksi robottikohtaista moottoria: intake_motor ja arm_motorMolemmat käyttävät moottorin vakiokomentoja.
Suuntavakiot:
intake_motor:FORWARD= imu (kerää);REVERSE= ulostulo (poistaa)arm_motor:FORWARD= ylös (nostaa);REVERSE= alas (laskee)
pyörähdys#
spin pyörittää moottoria annettuun suuntaan ikuisesti. Moottori jatkaa pyörimistä, kunnes sille annetaan uusi komento.
Usage:
motor.spin(direction)
Parametrit |
Kuvaus |
|---|---|
|
Pyörimissuunta: |
def main():
# Score a Bean Bag in a Blue Goal
drivetrain.turn_for(LEFT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 35, INCHES)
drivetrain.turn_for(RIGHT, 90, DEGREES)
arm_motor.spin_for(FORWARD, 1, TURNS)
drivetrain.drive_for(FORWARD, 40, INCHES)
intake_motor.spin(REVERSE)
# VR threads — Do not delete
vr_thread(main)
spin_for#
spin_for pyörittää moottoria tietyn matkan. Projekti odottaa, kunnes moottori on valmis, ennen seuraavan komennon suorittamista, ellei anneta arvoa wait=False.
Usage:
motor.spin_for(direction, amount, unit)
Parametrit |
Kuvaus |
|---|---|
|
Pyörimissuunta: |
|
Pyörimismatka. Tämä voi olla kokonaisluku tai desimaaliluku. |
|
Mittayksikkö: |
def main():
# Score a Bean Bag in a Blue Goal
drivetrain.turn_for(LEFT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 35, INCHES)
drivetrain.turn_for(RIGHT, 90, DEGREES)
arm_motor.spin_for(FORWARD, 1, TURNS)
drivetrain.drive_for(FORWARD, 40, INCHES)
intake_motor.spin(REVERSE)
# VR threads — Do not delete
vr_thread(main)
pyöritä_asentoon#
spin_to_position pyörittää moottoria tiettyyn asentoon. Projekti odottaa, kunnes moottori on valmis, ennen seuraavan komennon suorittamista, ellei anneta arvoa wait=False.
Usage:
motor.spin_to_position(position, unit)
Parametrit |
Kuvaus |
|---|---|
|
Pyörimiskohta. Tämä voi olla kokonaisluku tai desimaaliluku. |
|
Mittayksikkö: |
def main():
# Score a Bean Bag in a Blue Goal
drivetrain.turn_for(LEFT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 35, INCHES)
drivetrain.turn_for(RIGHT, 90, DEGREES)
arm_motor.spin_to_position(1, TURNS)
drivetrain.drive_for(FORWARD, 40, INCHES)
intake_motor.spin(REVERSE)
# VR threads — Do not delete
vr_thread(main)
Stop#
stop pysäyttää moottorin pyörimisen.
Usage:
motor.stop()
def main():
# Score a Bean Bag in a Blue Goal
drivetrain.turn_for(LEFT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 35, INCHES)
drivetrain.turn_for(RIGHT, 90, DEGREES)
arm_motor.spin_for(FORWARD, 1, TURNS)
drivetrain.drive_for(FORWARD, 40, INCHES)
intake_motor.spin(REVERSE)
wait(1, SECONDS)
intake_motor.stop()
# VR threads — Do not delete
vr_thread(main)
set_velocity#
set_velocity asettaa moottorin pyörimisnopeuden prosentteina väliltä 0 - 100.
Usage:
motor.set_velocity(velocity, unit)
Parametrit |
Kuvaus |
|---|---|
|
Moottorin nopeus prosentteina välillä 0 - 100. |
|
Mittayksikkö: |
def main():
# Score a Bean Bag in a Blue Goal
drivetrain.turn_for(LEFT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 35, INCHES)
drivetrain.turn_for(RIGHT, 90, DEGREES)
arm_motor.spin_for(FORWARD, 1, TURNS)
drivetrain.drive_for(FORWARD, 40, INCHES)
intake_motor.set_velocity(100, PERCENT)
intake_motor.spin(REVERSE)
# VR threads — Do not delete
vr_thread(main)
asetettu_aikakatkaisu#
set_timeout määrittää, kuinka monta sekuntia moottori yrittää suorittaa liikkeen loppuun ennen pysähtymistä.
Usage:
motor.set_timeout(timeout, unit)
Parametrit |
Kuvaus |
|---|---|
|
Sekuntimäärä, jonka moottori yrittää suorittaa liikkeen loppuun. |
|
Mittayksikkö: |
def main():
# Score a Bean Bag in a Blue Goal
drivetrain.turn_for(LEFT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 35, INCHES)
drivetrain.turn_for(RIGHT, 90, DEGREES)
arm_motor.set_timeout(2, SECONDS)
arm_motor.spin_for(FORWARD, 1, TURNS)
drivetrain.drive_for(FORWARD, 40, INCHES)
intake_motor.spin(REVERSE)
# VR threads — Do not delete
vr_thread(main)
asetettu_sijainti#
set_position muuttaa moottorin nykyisen sijainnin uuteen arvoon ja nollaa sen enkooderin.
Usage:
motor.set_position(position, unit)
Parametrit |
Kuvaus |
|---|---|
|
Uusi sijainnin arvo. |
|
Mittayksikkö: |
def main():
# Score a Bean Bag in a Blue Goal
drivetrain.turn_for(LEFT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 35, INCHES)
drivetrain.turn_for(RIGHT, 90, DEGREES)
arm_motor.set_position(0, DEGREES)
arm_motor.spin_for(FORWARD, 1, TURNS)
drivetrain.drive_for(FORWARD, 40, INCHES)
intake_motor.spin(REVERSE)
# VR threads — Do not delete
vr_thread(main)
on_valmis#
is_done palauttaa totuusarvon, joka ilmaisee, onko moottori lopettanut liikkeensä.
True– Moottori on lakannut liikkumasta.False– Moottori liikkuu edelleen.
Usage:
motor.is_done()
def main():
# Score a Bean Bag in a Blue Goal
drivetrain.turn_for(LEFT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 35, INCHES)
drivetrain.turn_for(RIGHT, 90, DEGREES)
arm_motor.spin_for(FORWARD, 1, TURNS, wait=False)
while not arm_motor.is_done():
wait(5, MSEC)
drivetrain.drive_for(FORWARD, 40, INCHES)
intake_motor.spin(REVERSE)
# VR threads — Do not delete
vr_thread(main)
pyörii#
is_spinning palauttaa totuusarvon, joka ilmaisee, pyöriikö moottori parhaillaan.
True– Moottori pyörii.False– Moottori ei pyöri.
Usage:
motor.is_spinning()
def main():
# Score a Bean Bag in a Blue Goal
drivetrain.turn_for(LEFT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 35, INCHES)
drivetrain.turn_for(RIGHT, 90, DEGREES)
arm_motor.spin_for(FORWARD, 1, TURNS)
drivetrain.drive_for(FORWARD, 40, INCHES)
intake_motor.spin(REVERSE)
while intake_motor.is_spinning():
wait(5, MSEC)
intake_motor.stop()
# VR threads — Do not delete
vr_thread(main)
asema#
position palauttaa moottorin nykyisen asennon.
Usage:
motor.position(unit)
Parametrit |
Kuvaus |
|---|---|
|
Mittayksikkö: |
def main():
# Score a Bean Bag in a Blue Goal
drivetrain.turn_for(LEFT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 35, INCHES)
drivetrain.turn_for(RIGHT, 90, DEGREES)
while arm_motor.position(DEGREES) < 360:
arm_motor.spin(FORWARD)
wait(2, MSEC)
arm_motor.stop()
drivetrain.drive_for(FORWARD, 40, INCHES)
intake_motor.spin(REVERSE)
# VR threads — Do not delete
vr_thread(main)
nopeus#
velocity palauttaa moottorin nykyisen pyörimisnopeuden prosentteina väliltä -100 - 100.
Usage:
motor.velocity(unit)
Parametrit |
Kuvaus |
|---|---|
|
Mittayksikkö: |
def main():
# Score a Bean Bag in a Blue Goal
drivetrain.turn_for(LEFT, 90, DEGREES)
drivetrain.drive_for(FORWARD, 35, INCHES)
drivetrain.turn_for(RIGHT, 90, DEGREES)
arm_motor.spin_for(FORWARD, 1, TURNS)
drivetrain.drive_for(FORWARD, 40, INCHES)
intake_motor.spin(REVERSE)
wait(0.2, SECONDS)
brain.screen.print(intake_motor.velocity(PERCENT))
# VR threads — Do not delete
vr_thread(main)
Tekoälyvisio#
ota_kuva#
take_snapshot suodattaa IQ AI -näköanturin kehyksen tiedot yhdeksi allekirjoitukseksi – tallennetuksi kuvaukseksi jostakin, jonka anturi tunnistaa, kuten kentällä olevasta 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():
# Drop the preloaded Bean Bag
intake_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 90, DEGREES)
# Turn to face a red Bean Bag
drivetrain.set_turn_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
for ai_object in ai_objects:
if ai_object.id == GameElements.RED_BEANBAG:
if ai_object.centerX < 140:
drivetrain.turn(LEFT)
elif ai_object.centerX > 180:
drivetrain.turn(RIGHT)
else:
drivetrain.stop()
return
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 IQ AI -nä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–320.
def main():
# Drop the preloaded Bean Bag
intake_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 90, DEGREES)
# Approach the Bean Bag, then pick it up
drivetrain.set_drive_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
for ai_object in ai_objects:
if ai_object.id == GameElements.RED_BEANBAG:
if ai_object.width > 200:
drivetrain.stop()
intake_motor.spin(FORWARD)
return
else:
drivetrain.drive(FORWARD)
break
# 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():
# Drop the preloaded Bean Bag
intake_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 90, DEGREES)
# Approach the Bean Bag, then pick it up
drivetrain.set_drive_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
for ai_object in ai_objects:
if ai_object.id == GameElements.RED_BEANBAG:
if ai_object.height > 110:
drivetrain.stop()
intake_motor.spin(FORWARD)
return
else:
drivetrain.drive(FORWARD)
break
# 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():
# Drop the preloaded Bean Bag
intake_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 90, DEGREES)
# Steer to keep the Bean Bag centered
drivetrain.set_turn_velocity(30, PERCENT)
drivetrain.set_drive_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
for ai_object in ai_objects:
if ai_object.id == GameElements.RED_BEANBAG:
if ai_object.centerX < 140:
drivetrain.turn_for(LEFT, 5, DEGREES)
else:
drivetrain.drive_for(FORWARD, 150, MM)
intake_motor.spin(FORWARD)
return
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():
# Drop the preloaded Bean Bag
intake_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 90, DEGREES)
# Print the y-position of the Bean Bag
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
for ai_object in ai_objects:
if ai_object.id == GameElements.RED_BEANBAG:
brain.screen.print(ai_object.centerY)
break
# 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():
# Drop the preloaded Bean Bag
intake_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 90, DEGREES)
# Steer to keep the left edge centered
drivetrain.set_turn_velocity(30, PERCENT)
drivetrain.set_drive_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
for ai_object in ai_objects:
if ai_object.id == GameElements.RED_BEANBAG:
if ai_object.originX < 100:
drivetrain.turn_for(LEFT, 5, DEGREES)
else:
drivetrain.drive_for(FORWARD, 150, MM)
intake_motor.spin(FORWARD)
return
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():
# Drop the preloaded Bean Bag
intake_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 90, DEGREES)
# Print the y-position of the Bean Bag's top edge
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
for ai_object in ai_objects:
if ai_object.id == GameElements.RED_BEANBAG:
brain.screen.print(ai_object.originY)
break
# VR threads — Do not delete
vr_thread(main)
.id-tiedosto#
.id palauttaa havaitun tekoälyluokituksen ID:n kokonaislukuna.
Tekoälyluokitus |
tunnus |
|---|---|
SininenPapuPussi |
0 |
PunainenPapupussi |
1 |
KeltainenPapupussi |
2 |
def main():
# Drop the preloaded Bean Bag
intake_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 90, DEGREES)
# Pick up the Bean Bag if it's red
drivetrain.set_drive_velocity(30, PERCENT)
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
for ai_object in ai_objects:
if ai_object.id == GameElements.RED_BEANBAG:
intake_motor.spin(FORWARD)
drivetrain.drive_for(FORWARD, 150, MM)
break
# VR threads — Do not delete
vr_thread(main)
def main():
# Stop when you see the Red Goal
drivetrain.set_turn_velocity(30, PERCENT)
drivetrain.turn(RIGHT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_TAGS)
for ai_object in ai_objects:
if ai_object.id == 1:
drivetrain.stop()
brain.screen.print("Found the Red Goal!")
return
# VR threads — Do not delete
vr_thread(main)