রোবট-নির্দিষ্ট পাইথন#
ভূমিকা#
হিরো বট ফ্লপ-এ একটি ইনটেক মোটর, একটি আর্ম মোটর এবং একটি আইকিউ এআই ভিশন সেন্সর রয়েছে।
IQ 26-27 Level Up প্লেগ্রাউন্ডে সমস্ত স্ট্যান্ডার্ড VEXcode VR পাইথন কমান্ড ব্যবহারের জন্য উপলব্ধ।
নিচে রোবট-এর জন্য উপলব্ধ সকল পাইথন কমান্ডের একটি তালিকা দেওয়া হলো:
গতি – রোবটের মোটরগুলোকে চালনা ও অনুসরণ করা।
কর্ম
spin – একটি মোটরকে অনির্দিষ্টকালের জন্য এক দিকে ঘোরায়।
spin_for – একটি মোটরকে নির্দিষ্ট সংখ্যক ডিগ্রি বা ঘূর্ণনের জন্য ঘোরায়।
spin_to_position – একটি মোটরকে একটি নির্দিষ্ট অবস্থানে ঘোরায়।
stop – মোটরের ঘূর্ণন বন্ধ করে।
সেটিংস
set_velocity – মোটরের ঘূর্ণনের গতি নির্ধারণ করে।
set_timeout – একটি মোটর তার নড়াচড়া শেষ করার জন্য কতক্ষণ চেষ্টা করবে তা নির্ধারণ করে।
set_position – মোটরের বর্তমান অবস্থানকে একটি নতুন মানে পরিবর্তন করে।
মূল্যবোধ
is_done – মোটরের চলাচল শেষ হয়েছে কিনা তা ফেরত দেয়।
is_spinning – মোটরটি ঘুরছে কিনা তা ফেরত দেয়।
অবস্থান – মোটরের বর্তমান অবস্থান ফেরত দেয়।
বেগ – মোটরটি কত দ্রুত ঘুরছে তা ফেরত দেয়।
এআই ভিশন – আইকিউ এআই ভিশন সেন্সর ব্যবহার করে বস্তুসমূহ ধারণ ও বিশ্লেষণ করুন।
গেটার্স
take_snapshot – সেন্সরের বর্তমান ফ্রেমকে একটি নির্দিষ্ট সিগনেচারে ফিল্টার করে এবং সনাক্ত করা বস্তুগুলির একটি টাপল ফেরত দেয়।
সম্পত্তিসমূহ
.width – সনাক্ত করা বস্তুর প্রস্থ পিক্সেলে ফেরত দেয়।
.height – সনাক্ত করা বস্তুর উচ্চতা পিক্সেলে ফেরত দেয়।
.centerX – শনাক্ত করা বস্তুর কেন্দ্রের x-স্থানাঙ্ক ফেরত দেয়।
.centerY – শনাক্তকৃত বস্তুর কেন্দ্রের y-স্থানাঙ্ক ফেরত দেয়।
.originX – শনাক্ত করা বস্তুর বাউন্ডিং বক্সের উপরের-বাম কোণার x-স্থানাঙ্ক ফেরত দেয়।
.originY – শনাক্ত করা বস্তুর বাউন্ডিং বক্সের উপরের-বাম কোণার y-স্থানাঙ্ক ফেরত দেয়।
.id – সনাক্তকৃত এআই ক্লাসিফিকেশনের আইডি ফেরত দেয়।
এই পৃষ্ঠার উদাহরণগুলিতে প্লেগ্রাউন্ডের ডিফল্ট শুরুর অবস্থান ব্যবহার করা হয়েছে।
গতি#
ফ্লপের দুটি রোবট-নির্দিষ্ট মোটর আছে: intake_motor এবং arm_motorউভয়ই সাধারণ মোটর কমান্ড ব্যবহার করে।
দিক ধ্রুবক:
intake_motor:FORWARD= গ্রহণ (সংগ্রহ করে);REVERSE= নির্গমন (বের করে দেয়)arm_motor:FORWARD= উপরে (তোলে);REVERSE= নিচে (নামায়)
স্পিন#
spin একটি মোটরকে প্রদত্ত দিকে অনির্দিষ্টকালের জন্য ঘোরায়। পরবর্তী নির্দেশ না দেওয়া পর্যন্ত মোটরটি ঘুরতে থাকবে।
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 একটি মোটর কত দ্রুত ঘুরবে তা 0 থেকে 100 পর্যন্ত শতাংশ হিসাবে নির্ধারণ করে।
Usage:
motor.set_velocity(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.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 একটি বুলিয়ান মান প্রদান করে যা নির্দেশ করে মোটরটি তার চলাচল শেষ করেছে কিনা।
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 ব্যতীত অন্য সকল প্রপার্টি ভ্যালু, take_snapshot ব্যবহৃত হওয়ার মুহূর্তে IQ AI Vision Sensor-এর ভিউতে শনাক্তকৃত অবজেক্টটির অবস্থান এবং আকার বর্ণনা করে। এই ভ্যালুগুলো সেন্সরটির 320 বাই 240 পিক্সেল রেজোলিউশনের উপর ভিত্তি করে পিক্সেলে পরিমাপ করা হয়।
প্রস্থ#
.width শনাক্ত করা অবজেক্টটির প্রস্থ পিক্সেলে ফেরত দেয়, যা ১ থেকে ৩২০-এর মধ্যে একটি পূর্ণসংখ্যা।
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 শনাক্ত করা বস্তুটির উচ্চতা পিক্সেলে ফেরত দেয়, যা ১ থেকে ২৪০-এর মধ্যে একটি পূর্ণসংখ্যা।
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-স্থানাঙ্ক পিক্সেলে ফেরত দেয়, যা 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-স্থানাঙ্ক পিক্সেলে ফেরত দেয়, যা 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-স্থানাঙ্ক পিক্সেলে ফেরত দেয়, যা 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-স্থানাঙ্ক পিক্সেলে ফেরত দেয়, যা 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 শনাক্তকৃত এআই ক্লাসিফিকেশনের আইডি একটি পূর্ণসংখ্যা হিসেবে ফেরত দেয়।
এআই শ্রেণিবিন্যাস |
আইডি |
|---|---|
ব্লুবিনব্যাগ |
০ |
রেডবিনব্যাগ |
১ |
হলুদ বিন ব্যাগ |
২ |
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)