Robotlara Özel Python#
giriiş#
Kahraman robot Flop, bir emme motoru, bir kol motoru ve bir IQ yapay zeka görüş sensörü içerir.
IQ 26-27 Seviye Yükseltme Oyun Alanında tüm standart VEXcode VR Python komutları kullanılabilir.
Aşağıda, robotlara özel tüm Python komutlarının listesi bulunmaktadır:
Hareket – Robotun motorlarını hareket ettirin ve takip edin.
İşlemler
döndür – Bir motoru sonsuza kadar tek yönde döndürür.
spin_for – Bir motoru belirli sayıda derece veya tur döndürür.
spin_to_position – Bir motoru belirli bir konuma döndürür.
durdur – Motorun dönmesini durdurur.
Ayarlar
set_velocity – Bir motorun ne kadar hızlı döneceğini ayarlar.
set_timeout – Bir motorun hareketi tamamlamaya çalışacağı süreyi ayarlar.
set_position – Motorun mevcut konumunu yeni bir değere değiştirir.
Değerler
is_done – Motorun hareketinin tamamlanıp tamamlanmadığını döndürür.
is_spinning – Motorun dönüp dönmediğini döndürür.
position – Motorun mevcut konumunu döndürür.
hız – Motorun ne kadar hızlı döndüğünü döndürür.
Yapay Zeka Görüntüleme – IQ Yapay Zeka Görüntüleme Sensörünü kullanarak nesneleri yakalayın ve analiz edin.
Alıcılar
take_snapshot – Sensörün mevcut karesini belirli bir imzaya göre filtreler ve algılanan nesnelerin bir demetini döndürür.
Özellikler
.width – Algılanan nesnenin piksel cinsinden genişliğini döndürür.
.height – Algılanan nesnenin yüksekliğini piksel cinsinden döndürür.
.centerX – Tespit edilen nesnenin merkezinin x koordinatını döndürür.
.centerY – Tespit edilen nesnenin merkezinin y koordinatını döndürür.
.originX – Tespit edilen nesnenin sınırlayıcı kutusunun sol üst köşesinin x koordinatını döndürür.
.originY – Tespit edilen nesnenin sınırlayıcı kutusunun sol üst köşesinin y koordinatını döndürür.
.id – Tespit edilen yapay zeka sınıflandırmasının kimliğini döndürür.
Bu sayfadaki örnekler, varsayılan Oyun Alanı başlangıç konumunu kullanmaktadır.
Hareket#
Flop’un iki adet robota özgü motoru vardır: intake_motor ve arm_motorHer ikisi de standart motor komutlarını kullanır.
Yön sabitleri:
intake_motor:FORWARD= emme (toplar);REVERSE= emme (fırlatır)arm_motor:FORWARD= yukarı (kaldırır);REVERSE= aşağı (indirir)
döndürmek#
spin komutu, motoru belirtilen yönde sonsuza kadar döndürür. Motor, başka bir komut verilene kadar dönmeye devam edecektir.
Usage:
motor.spin(direction)
Parametreler |
Tanım |
|---|---|
|
Dönme yönü: |
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 komutu, bir motoru belirli bir mesafe boyunca döndürür. Proje, wait=False parametresi geçirilmediği sürece, bir sonraki komutu çalıştırmadan önce motorun dönmesini bekler.
Usage:
motor.spin_for(direction, amount, unit)
Parametreler |
Tanım |
|---|---|
|
Dönme yönü: |
|
Dönme mesafesi. Bu bir tam sayı veya ondalık sayı olabilir. |
|
Ölçü birimi: |
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_to_position#
spin_to_position , bir motoru belirli bir konuma döndürür. Proje, wait=False parametresi geçirilmediği sürece, bir sonraki komutu çalıştırmadan önce motorun işini bitirmesini bekler.
Usage:
motor.spin_to_position(position, unit)
Parametreler |
Tanım |
|---|---|
|
Döndürülecek pozisyon. Bu bir tam sayı veya ondalık sayı olabilir. |
|
Ölçü birimi: |
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)
durmak#
stop durdurur, motorun dönmesini durdurur.
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)
hızı ayarla#
set_velocity , bir motorun dönüş hızını yüzde olarak 0 ile 100 arasında ayarlar.
Usage:
motor.set_velocity(velocity, unit)
Parametreler |
Tanım |
|---|---|
|
Motorun hızı, 0 ile 100 arasında yüzde olarak ifade edilir. |
|
Ölçü birimi: % |
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)
zaman aşımını ayarla#
set_timeout , bir motorun durmadan önce hareketi tamamlamaya çalışacağı saniye sayısını belirler.
Usage:
motor.set_timeout(timeout, unit)
Parametreler |
Tanım |
|---|---|
|
Motorun hareketi tamamlamaya çalışacağı saniye sayısı. |
|
Ölçü birimi: |
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)
konum belirle#
set_position komutu, motorun mevcut konumunu yeni bir değere değiştirir ve kodlayıcısını sıfırlar.
Usage:
motor.set_position(position, unit)
Parametreler |
Tanım |
|---|---|
|
Yeni pozisyon değeri. |
|
Ölçü birimi: |
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)
tamamlandı#
is_done , motorun hareketini tamamlayıp tamamlamadığını gösteren bir Boolean değer döndürür.
True– Motor hareket etmeyi bitirdi.False– Motor hala hareket halinde.
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)
dönüyor#
is_spinning , motorun şu anda dönüp dönmediğini gösteren bir Boolean değer döndürür.
True– Motor dönüyor.False– Motor dönmüyor.
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)
konum#
position motorun mevcut konumunu döndürür.
Usage:
motor.position(unit)
Parametreler |
Tanım |
|---|---|
|
Ölçü birimi: |
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)
hız#
velocity , motorun şu anda ne kadar hızlı döndüğünü -100 ile 100 arasında bir yüzde olarak döndürür.
Usage:
motor.velocity(unit)
Parametreler |
Tanım |
|---|---|
|
Ölçü birimi: % |
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)
Yapay Zeka Vizyonu#
fotoğraf çek#
take_snapshot , IQ AI Vision Sensor çerçevesindeki verileri tek bir imzaya (sensörün tanıyabileceği bir şeyin, örneğin sahadaki bir oyun öğesinin, kaydedilmiş bir açıklaması) filtreler ve bir demet döndürür.
Bu demet, 0 indeksinden başlayarak genişliğe göre en büyükten en küçüğe doğru sıralanmış nesneleri saklar. Her nesnenin özelliklerine indeksi kullanılarak erişilebilir. Eşleşen nesne bulunmazsa boş bir demet döndürülür.
Usage:
ai_vision.take_snapshot(signature)
Parametreler |
Tanım |
|---|---|
|
Veri kümesini yalnızca belirtilen imzaya sahip verileri içerecek şekilde filtreler. Mevcut imzalar şunlardır:
|
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)
Özellikler#
take_snapshot kullanıldıktan sonra bir demette saklanan her nesneyle birlikte yedi özellik dahil edilir.
.id hariç tüm özellik değerleri, take_snapshot kullanıldığı anda IQ AI Vision Sensor’ün görüş alanındaki algılanan nesnenin konumunu ve boyutunu tanımlar. Bu değerler, sensörün 320 x 240 piksel çözünürlüğüne bağlı olarak piksel cinsinden ölçülür.
.Genişlik#
.width algılanan nesnenin piksel cinsinden genişliğini döndürür; bu, 1 ile 320 arasında bir tam sayıdır.
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)
.yükseklik#
.height fonksiyonu, tespit edilen nesnenin piksel cinsinden yüksekliğini döndürür; bu değer 1 ile 240 arasında bir tamsayıdır.
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 tespit edilen nesnenin merkezinin x koordinatını piksel cinsinden döndürür; bu, 0 ile 320 arasında bir tam sayıdır.
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 fonksiyonu, tespit edilen nesnenin merkezinin y koordinatını piksel cinsinden döndürür; bu değer 0 ile 240 arasında bir tamsayıdır.
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 tespit edilen nesnenin sınırlayıcı kutusunun sol üst köşesinin x koordinatını piksel cinsinden döndürür; bu, 0 ile 320 arasında bir tam sayıdır.
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)
.orijinY#
.originY tespit edilen nesnenin sınırlayıcı kutusunun sol üst köşesinin y koordinatını piksel cinsinden döndürür; bu, 0 ile 240 arasında bir tam sayıdır.
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)
.İD#
.id tespit edilen yapay zeka sınıflandırmasının kimliğini tam sayı olarak döndürür.
Yapay Zeka Sınıflandırması |
İD |
|---|---|
Mavi Fasulye Torbası |
0 |
Kırmızı Fasulye Torbası |
1 |
SarıPuf |
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)