Python ειδικά για ρομπότ#
Εισαγωγή#
Το Hero Bot, Flop, περιλαμβάνει έναν κινητήρα εισαγωγής, έναν βραχίονα και έναν αισθητήρα όρασης IQ AI.
Όλες οι τυπικές εντολές VEXcode VR Python είναι διαθέσιμες για χρήση στο IQ 26-27 Level Up Playground.
Παρακάτω είναι μια λίστα με όλες τις διαθέσιμες εντολές Python ειδικά για Robot:
Κίνηση – Μετακίνηση και παρακολούθηση των κινητήρων του ρομπότ.
Ενέργειες
spin – Περιστρέφει έναν κινητήρα προς μία κατεύθυνση για πάντα.
spin_for – Περιστρέφει έναν κινητήρα για έναν συγκεκριμένο αριθμό μοιρών ή στροφών.
spin_to_position – Περιστρέφει έναν κινητήρα σε μια συγκεκριμένη θέση.
stop – Σταματά την περιστροφή ενός κινητήρα.
Ρυθμίσεις
set_velocity – Ορίζει την ταχύτητα περιστροφής ενός κινητήρα.
set_timeout – Ορίζει το χρονικό διάστημα που θα χρειαστεί ένας κινητήρας για να ολοκληρώσει μια κίνηση.
set_position – Αλλάζει την τρέχουσα θέση του κινητήρα σε μια νέα τιμή.
Τιμές
είναι_ολοκληρωμένο – Επιστρέφει εάν ο κινητήρας έχει ολοκληρώσει την κίνηση.
είναι_περιστρεφόμενος – Επιστρέφει εάν ο κινητήρας περιστρέφεται.
θέση – Επιστρέφει την τρέχουσα θέση του κινητήρα.
ταχύτητα – Επιστρέφει την ταχύτητα περιστροφής του κινητήρα.
AI Vision – Καταγραφή και ανάλυση αντικειμένων χρησιμοποιώντας τον αισθητήρα AI Vision Sensor IQ.
Αποκτητές
λήψη_στιγμιότυπου – Φιλτράρει το τρέχον καρέ του αισθητήρα σε μια συγκεκριμένη υπογραφή και επιστρέφει μια πλειάδα ανιχνευμένων αντικειμένων.
Σκηνικά θέατρου
.width – Επιστρέφει το πλάτος του ανιχνευμένου αντικειμένου σε pixel.
.height – Επιστρέφει το ύψος του ανιχνευμένου αντικειμένου σε pixel.
.centerX – Επιστρέφει τη συντεταγμένη x του κέντρου του ανιχνευμένου αντικειμένου.
.centerY – Επιστρέφει τη συντεταγμένη y του κέντρου του ανιχνευμένου αντικειμένου.
.originX – Επιστρέφει τη συντεταγμένη x της επάνω αριστερής γωνίας του πλαισίου οριοθέτησης του ανιχνευμένου αντικειμένου.
.originY – Επιστρέφει τη συντεταγμένη y της επάνω αριστερής γωνίας του πλαισίου οριοθέτησης του ανιχνευμένου αντικειμένου.
.id – Επιστρέφει το ID της ανιχνευμένης ταξινόμησης AI.
Τα παραδείγματα σε αυτήν τη σελίδα χρησιμοποιούν την προεπιλεγμένη θέση έναρξης της Παιδικής Χαράς.
Κίνηση#
Το Flop διαθέτει δύο κινητήρες ειδικούς για το ρομπότ: intake_motor και arm_motorΚαι οι δύο χρησιμοποιούν τυπικές εντολές κινητήρα.
Σταθερές κατεύθυνσης:
intake_motor:FORWARD= εισαγωγή (συλλογή)·REVERSE= εξαγωγή (εξαγωγή)arm_motor:FORWARD= πάνω (ανύψωση)·REVERSE= κάτω (χαμήλωμα)
γνέθω#
spin spins a motor in the given direction forever. The motor will continue to spin until it is given another command.
Usage:
motor.spin(direction)
Παράμετροι |
Περιγραφή |
|---|---|
|
Η κατεύθυνση περιστροφής: |
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 περιστρέφει έναν κινητήρα για μια συγκεκριμένη απόσταση. Το έργο περιμένει μέχρι να ολοκληρωθεί η λειτουργία του κινητήρα πριν εκτελεστεί η επόμενη εντολή, εκτός εάν wait=False περάσει.
Usage:
motor.spin_for(direction, amount, unit)
Παράμετροι |
Περιγραφή |
|---|---|
|
Η κατεύθυνση περιστροφής: |
|
Η απόσταση περιστροφής. Αυτή μπορεί να είναι ακέραιος ή δεκαδικός αριθμός. |
|
Η μονάδα μέτρησης: |
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 περιστρέφει έναν κινητήρα σε μια συγκεκριμένη θέση. Το έργο περιμένει μέχρι να ολοκληρωθεί η περιστροφή του κινητήρα πριν εκτελεστεί η επόμενη εντολή, εκτός εάν wait=False περάσει.
Usage:
motor.spin_to_position(position, unit)
Παράμετροι |
Περιγραφή |
|---|---|
|
Η θέση στην οποία θα γίνει η περιστροφή. Αυτή μπορεί να είναι ακέραιος ή δεκαδικός αριθμός. |
|
Η μονάδα μέτρησης: |
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 σταματά την περιστροφή ενός κινητήρα.
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 ορίζει την ταχύτητα περιστροφής ενός κινητήρα ως ποσοστό από 0 έως 100.
Usage:
motor.set_velocity(velocity, unit)
Παράμετροι |
Περιγραφή |
|---|---|
|
Η ταχύτητα του κινητήρα ως ποσοστό από 0 έως 100. |
|
Η μονάδα μέτρησης: |
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)
set_timeout#
set_timeout ορίζει πόσα δευτερόλεπτα θα προσπαθήσει ένας κινητήρας να ολοκληρώσει μια κίνηση πριν σταματήσει.
Usage:
motor.set_timeout(timeout, unit)
Παράμετροι |
Περιγραφή |
|---|---|
|
Ο αριθμός των δευτερολέπτων που θα προσπαθήσει ο κινητήρας να ολοκληρώσει μια κίνηση. |
|
Η μονάδα μέτρησης: |
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)
ορισμός_θέσης#
set_position αλλάζει την τρέχουσα θέση του κινητήρα σε μια νέα τιμή, επαναφέροντας τον κωδικοποιητή του.
Usage:
motor.set_position(position, unit)
Παράμετροι |
Περιγραφή |
|---|---|
|
Η νέα τιμή θέσης. |
|
Η μονάδα μέτρησης: |
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)
είναι_ολοκληρωμένο#
is_done επιστρέφει μια Boolean τιμή που υποδεικνύει εάν ο κινητήρας έχει ολοκληρώσει την κίνησή του.
True– Ο κινητήρας έχει ολοκληρώσει την κίνηση.False– Ο κινητήρας εξακολουθεί να κινείται.
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)
περιστρέφεται#
Η συνάρτηση is_spinning επιστρέφει μια λογική τιμή που υποδεικνύει εάν ο κινητήρας περιστρέφεται αυτήν τη στιγμή.
True– Ο κινητήρας περιστρέφεται.False– Ο κινητήρας δεν περιστρέφεται.
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)
θέση#
Η θέση position επιστρέφει την τρέχουσα θέση του κινητήρα.
Usage:
motor.position(unit)
Παράμετροι |
Περιγραφή |
|---|---|
|
Η μονάδα μέτρησης: |
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)
ταχύτητα#
Η τιμή velocity επιστρέφει την ταχύτητα περιστροφής του κινητήρα αυτήν τη στιγμή ως ποσοστό από -100 έως 100.
Usage:
motor.velocity(unit)
Παράμετροι |
Περιγραφή |
|---|---|
|
Η μονάδα μέτρησης: |
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)
Όραμα Τεχνητής Νοημοσύνης#
λήψη_στιγμιότυπου#
take_snapshot φιλτράρει δεδομένα από το πλαίσιο του αισθητήρα όρασης IQ AI σε μία μόνο υπογραφή — μια αποθηκευμένη περιγραφή κάποιου στοιχείου που μπορεί να αναγνωρίσει ο αισθητήρας, όπως ένα στοιχείο παιχνιδιού στο πεδίο — και επιστρέφει μια πλειάδα.
Η πλειάδα αποθηκεύει αντικείμενα ταξινομημένα από το μεγαλύτερο στο μικρότερο κατά πλάτος, ξεκινώντας από τον δείκτη 0. Η πρόσβαση στις ιδιότητες κάθε αντικειμένου είναι δυνατή χρησιμοποιώντας τον δείκτη του. Επιστρέφεται μια κενή πλειάδα εάν δεν εντοπιστούν αντικείμενα που να ταιριάζουν.
Usage:
ai_vision.take_snapshot(signature)
Παράμετροι |
Περιγραφή |
|---|---|
|
Φιλτράρει το σύνολο δεδομένων ώστε να περιλαμβάνει μόνο δεδομένα της δεδομένης υπογραφής. Οι διαθέσιμες υπογραφές είναι:
|
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)
Σκηνικά θέατρου#
Υπάρχουν επτά ιδιότητες που περιλαμβάνονται σε κάθε αντικείμενο που αποθηκεύεται σε μια πλειάδα μετά τη χρήση της take_snapshot.
Όλες οι τιμές ιδιοτήτων εκτός από .id περιγράφουν τη θέση και το μέγεθος του ανιχνευμένου αντικειμένου στην προβολή του αισθητήρα όρασης IQ AI τη στιγμή που χρησιμοποιήθηκε take_snapshot Αυτές οι τιμές μετριούνται σε pixel, με βάση την ανάλυση 320 επί 240 pixel του αισθητήρα.
.πλάτος#
Η συνάρτηση .width επιστρέφει το πλάτος του ανιχνευμένου αντικειμένου σε pixel, το οποίο είναι ένας ακέραιος αριθμός μεταξύ 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)
.ύψος#
Η συνάρτηση .height επιστρέφει το ύψος του ανιχνευμένου αντικειμένου σε pixel, το οποίο είναι ένας ακέραιος αριθμός μεταξύ 1 και 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 επιστρέφει τη συντεταγμένη x του κέντρου του ανιχνευμένου αντικειμένου σε pixel, η οποία είναι ένας ακέραιος αριθμός μεταξύ 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 επιστρέφει τη συντεταγμένη y του κέντρου του ανιχνευμένου αντικειμένου σε pixel, η οποία είναι ένας ακέραιος αριθμός μεταξύ 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 επιστρέφει τη συντεταγμένη x της επάνω αριστερής γωνίας του πλαισίου οριοθέτησης του ανιχνευμένου αντικειμένου σε pixel, η οποία είναι ένας ακέραιος αριθμός μεταξύ 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 επιστρέφει τη συντεταγμένη y της επάνω αριστερής γωνίας του πλαισίου οριοθέτησης του ανιχνευμένου αντικειμένου σε pixel, η οποία είναι ένας ακέραιος αριθμός μεταξύ 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 επιστρέφει το ID της ανιχνευμένης ταξινόμησης AI ως ακέραιο αριθμό.
Ταξινόμηση Τεχνητής Νοημοσύνης |
ταυτότητα |
|---|---|
ΜπλεΦασόλια |
0 |
Κόκκινη Τσάντα Φασολιών |
1 |
Κίτρινη Τσάντα Φασολιών |
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)