রোবট-নির্দিষ্ট পাইথন#

ভূমিকা#

হিরো বট ফ্লপ-এ একটি ইনটেক মোটর, একটি আর্ম মোটর এবং একটি আইকিউ এআই ভিশন সেন্সর রয়েছে।

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)

প্যারামিটার

বর্ণনা

direction

ঘোরানোর দিক: FORWARD বা REVERSE।

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)

প্যারামিটার

বর্ণনা

direction

ঘোরানোর দিক: FORWARD বা REVERSE।

amount

ঘূর্ণনের দূরত্ব। এটি একটি পূর্ণসংখ্যা বা দশমিক সংখ্যা হতে পারে।

unit

পরিমাপের একক: DEGREES বা TURNS।

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)

প্যারামিটার

বর্ণনা

position

যে অবস্থানে ঘোরানো হবে। এটি একটি পূর্ণসংখ্যা বা দশমিক সংখ্যা হতে পারে।

unit

পরিমাপের একক: DEGREES বা TURNS।

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)

প্যারামিটার

বর্ণনা

velocity

মোটরের গতিবেগ ০ থেকে ১০০ এর মধ্যে শতকরা হিসাবে।

unit

পরিমাপের একক: PERCENT।

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)

প্যারামিটার

বর্ণনা

timeout

মোটরটি একটি নড়াচড়া শেষ করতে যত সেকেন্ড চেষ্টা করবে।

unit

পরিমাপের একক: SECONDS।

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)

প্যারামিটার

বর্ণনা

position

নতুন অবস্থান মান।

unit

পরিমাপের একক: DEGREES বা TURNS।

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)

প্যারামিটার

বর্ণনা

unit

পরিমাপের একক: DEGREES বা TURNS।

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)

প্যারামিটার

বর্ণনা

unit

পরিমাপের একক: PERCENT।

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)

প্যারামিটার

বর্ণনা

signature

প্রদত্ত সিগনেচারের ডেটা অন্তর্ভুক্ত করার জন্য ডেটাসেট ফিল্টার করে। উপলব্ধ সিগনেচারগুলো হলো:

  • AiVision.ALL_AIOBJS - সমস্ত বিন ব্যাগ সনাক্ত করে।
  • AiVision.ALL_TAGS - এপ্রিলট্যাগ সনাক্ত করে, যা গোলের পাশে পাওয়া যায়।

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)