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

ভূমিকা#

হিরো বট ডেক্স-এ দুটি মোটর অপশন, একটি এআই ভিশন সেন্সর, একটি অপটিক্যাল সেন্সর এবং একটি গেম পজিশনিং সিস্টেম (জিপিএস) সেন্সর অন্তর্ভুক্ত রয়েছে।

V5 25-26 পুশ ব্যাক প্লেগ্রাউন্ডে সমস্ত স্ট্যান্ডার্ড VEXcode VR পদ্ধতি ব্যবহারের জন্য উপলব্ধ।

নিম্নে সকল উপলব্ধ রোবট-নির্দিষ্ট পদ্ধতির একটি তালিকা দেওয়া হলো:

ড্রাইভট্রেন – রোবটটিকে চালনা ও ঘোরানোর কাজ করে।

  • কর্ম

    • drive — রোবটটিকে অনির্দিষ্টকালের জন্য সামনে বা পিছনে চালনা করে।

    • drive_for — রোবটটিকে একটি নির্দিষ্ট দূরত্বে সামনে বা পিছনে নিয়ে যায়।

    • turn — রোবটটিকে অনির্দিষ্টকালের জন্য বামে বা ডানে ঘোরায়।

    • turn_for — রোবটটিকে নির্দিষ্ট সংখ্যক ডিগ্রিতে বামে বা ডানে ঘোরায়।

    • turn_to_heading — রোবটটিকে -359 থেকে 359 ডিগ্রির মধ্যে একটি নির্দিষ্ট দিকে মুখ করে ঘোরায়।

    • turn_to_rotation — রোবটটিকে একটি নির্দিষ্ট ঘূর্ণনে ঘোরায়।

    • stop — রোবটের চলাচল থামিয়ে দেয়।

  • Mutators

    • set_heading — রোবটের বর্তমান দিক পরিবর্তন করে একটি নতুন দিকে নিয়ে যায়।

    • set_rotation — রোবটের বর্তমান ঘূর্ণনকে একটি নতুন ঘূর্ণনে পরিবর্তন করে।

    • set_timeout — রোবট একটি মুভমেন্ট শেষ করার জন্য কত সময় চেষ্টা করবে তা সেট করে।

    • set_drive_velocity — রোবটকে বলে দেয় কত দ্রুত চালাতে হবে।

    • set_turn_velocity — রোবটকে বলে দেয় কত দ্রুত ঘুরতে হবে।

  • গেটার্স

    • heading — রোবটের বর্তমান হেডিং 0 থেকে 359.99 ডিগ্রির মধ্যে ফেরত দেয়।

    • rotation — রোবটের বর্তমান ঘূর্ণন ফেরত দেয়।

    • is_done — রোবটটির চলাচল শেষ হয়েছে কিনা, তা একটি বুলিয়ান মান হিসাবে ফেরত দেয়।

    • is_moving — রোবটটি চলছে কিনা, তা একটি বুলিয়ান মান হিসাবে ফেরত দেয়।

    • velocity — রোবটটি কত দ্রুত চলছে তা ফেরত দেয়।

গতি – রোবটের মোটরগুলোকে চালনা ও অনুসরণ করা।

  • কর্ম

    • spin — একটি মোটরকে অনির্দিষ্টকালের জন্য সামনে বা পিছনে ঘোরায়।

    • spin_for — একটি মোটরকে নির্দিষ্ট দূরত্বে ঘোরায়।

    • spin_to_position — একটি মোটরকে একটি নির্দিষ্ট অবস্থানে ঘোরায়।

    • stop — মোটরের ঘূর্ণন থামিয়ে দেয়।

  • Mutators

    • set_position — মোটরের বর্তমান অবস্থান একটি নতুন মানে পরিবর্তন করে।

    • set_velocity — মোটরকে বলে দেয় কত দ্রুত ঘুরতে হবে।

    • set_timeout — একটি মোটর তার নড়াচড়া শেষ করার জন্য কতটুকু সময় চেষ্টা করবে তা নির্ধারণ করে।

  • গেটার্স

    • is_done — মোটরটির চলাচল শেষ হয়েছে কিনা, তা একটি বুলিয়ান মান হিসাবে ফেরত দেয়।

    • is_spinning — মোটরটি ঘুরছে কিনা তা একটি বুলিয়ান মান হিসাবে ফেরত দেয়।

    • position — মোটরের বর্তমান অবস্থান ফেরত দেয়।

    • velocity — মোটরটি কত দ্রুত ঘুরছে তা ফেরত দেয়।

এআই ভিশন - এআই ভিশন সেন্সর ব্যবহার করে বস্তুসমূহ ধারণ ও বিশ্লেষণ করুন।

  • গেটার্স

    • take_snapshot – একটি নির্দিষ্ট সিগনেচারের জন্য সনাক্ত করা অবজেক্টগুলির একটি টাপল ফেরত দেয়।

  • সম্পত্তিসমূহ

    • width – সনাক্ত করা বস্তুর প্রস্থ, পিক্সেলে।

    • height – সনাক্ত করা বস্তুর উচ্চতা পিক্সেলে।

    • centerX – পিক্সেল-এ বস্তুটির কেন্দ্রের X অবস্থান।

    • centerY – পিক্সেলে বস্তুর কেন্দ্রের Y অবস্থান।

    • originX – অবজেক্টের উপরের-বাম কোণার X অবস্থান, পিক্সেলে।

    • originY – পিক্সেল-এ অবজেক্টটির উপরের-বাম কোণার Y অবস্থান।

    • id – বস্তুটির শ্রেণীবিভাগ বা ট্যাগ আইডি।

কনসোল – কনসোলে প্রিন্ট করুন এবং মানগুলো পর্যবেক্ষণ করুন।

  • প্রিন্ট

    • brain.screen.print — কনসোলে টেক্সট, সংখ্যা, অথবা ভেরিয়েবলের মান প্রদর্শন করে।

    • brain.screen.next_row — কনসোল কার্সারকে পরবর্তী সারির শুরুতে নিয়ে যায়।

    • brain.screen.clear_screen — কনসোল থেকে সমস্ত সারি মুছে ফেলে।

  • মনিটর

    • monitor_variable — মনিটর ট্যাবে এক বা একাধিক পূর্বনির্ধারিত ভেরিয়েবল যোগ করে।

    • monitor_sensor — মনিটর ট্যাবে এক বা একাধিক সেন্সর মান যোগ করে।

সংবেদন - রোবটের বিভিন্ন সেন্সর ব্যবহার করুন।

  • অপটিক্যাল

    • is_near_object – অপটিক্যাল সেন্সর সীমার মধ্যে কোনো বস্তু সনাক্ত করে কিনা তা ফেরত দেয়।

    • color – অপটিক্যাল সেন্সর দ্বারা শনাক্ত করা রঙটি ফেরত দেয়।

    • brightness – বস্তু থেকে প্রতিফলিত আলোর পরিমাণ ফেরত দেয়।

    • hue – অপটিক্যাল সেন্সর দ্বারা শনাক্ত করা রঙ (hue) ফেরত দেয়।

    • object_detected – অপটিক্যাল সেন্সর কোনো বস্তু শনাক্ত করলে যে ফাংশনটি কল করা হবে তা রেজিস্টার করে।

    • object_lost – অপটিক্যাল সেন্সর কোনো বস্তু হারালে যে ফাংশনটি কল করা হবে তা রেজিস্টার করে।

  • জিপিএস

    • x_position – মাঠে থাকা একটি GPS সেন্সরের বর্তমান x-স্থানাঙ্ক ফেরত দেয়।

    • y_position – মাঠে থাকা একটি GPS সেন্সরের বর্তমান y-স্থানাঙ্ক ফেরত দেয়।

    • heading – GPS সেন্সরের 0 থেকে 359 ডিগ্রির রিডিংয়ের উপর ভিত্তি করে রোবটটি বর্তমানে যে দিকে মুখ করে আছে তা ফেরত দেয়।

এই পৃষ্ঠার উদাহরণগুলিতে প্লেগ্রাউন্ডের ডিফল্ট শুরুর অবস্থান ব্যবহার করা হয়েছে।

ড্রাইভট্রেন#

ড্রাইভট্রেন ভিআর রোবটের চালনা ও মোড় নেওয়া নিয়ন্ত্রণ করে। ড্রাইভট্রেনটি সামনে বা পেছনে যেতে, বামে বা ডানে ঘুরতে, নির্দিষ্ট দিকে ঘুরতে এবং নিজের ঘূর্ণন অনুসরণ করতে পারে।

কর্ম#

ড্রাইভ#

ড্রাইভ drive রোবটটিকে অনির্দিষ্টকালের জন্য সামনে বা পেছনে চালায়। রোবটটি ততক্ষণ চলতে থাকবে যতক্ষণ না এটিকে মোড় নেওয়া বা থামানোর মতো অন্য কোনো কাজ দেওয়া হয়।

Usage:
drivetrain.drive(direction)

প্যারামিটার

বর্ণনা

direction

রোবটটি যেদিকে চলে: FORWARD বা REVERSE।

def main():
    # Drive forward then stop
    drivetrain.drive(FORWARD)
    wait(2, SECONDS)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

ড্রাইভের জন্য#

drive_for রোবটটিকে একটি নির্দিষ্ট দূরত্ব পর্যন্ত সামনে বা পিছনে নিয়ে যায়। রোবটটির চলা শেষ না হওয়া পর্যন্ত প্রজেক্টটি অপেক্ষা করবে এবং তারপরেই কোডের পরবর্তী লাইনটি রান করবে।

Usage:
drivetrain.drive_for(direction, distance, units, wait)

প্যারামিটার

বর্ণনা

direction

রোবটটি যেদিকে চলে: FORWARD বা REVERSE।

distance

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

units

ঐচ্ছিক। দূরত্বের একক: INCHES (ডিফল্ট) অথবা MM।

wait

ঐচ্ছিক। wait=True (ডিফল্ট) পরবর্তী কোড লাইন চলার আগে রোবটের নড়াচড়া শেষ না হওয়া পর্যন্ত প্রজেক্টকে অপেক্ষা করায়। wait=False পরবর্তী কোড লাইনকে সাথে সাথে চালিয়ে দেয়।

def main():
    # Drive forward and backward
    drivetrain.drive_for(FORWARD, 200, MM)
    drivetrain.drive_for(REVERSE, 200, MM)

# VR threads — Do not delete
vr_thread(main)

পালা#

turn রোবটটিকে অনির্দিষ্টকালের জন্য বামে বা ডানে ঘোরায়। রোবটটি ততক্ষণ ঘুরতে থাকবে যতক্ষণ না এটিকে চালানো বা থামানোর মতো অন্য কোনো কাজ দেওয়া হয়।

Usage:
drivetrain.turn(direction)

প্যারামিটার

বর্ণনা

direction

রোবটটি যেদিকে ঘোরে: LEFT বা RIGHT।

def main():
    # Turn right and left, then stop
    drivetrain.turn(RIGHT)
    wait(2, SECONDS)
    drivetrain.turn(LEFT)
    wait(2, SECONDS)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

পালা_জন্য#

turn_for রোবটটিকে একটি নির্দিষ্ট সংখ্যক ডিগ্রিতে বামে বা ডানে ঘোরায়। এই মোড়টি রোবটের বর্তমান অবস্থানের সাপেক্ষে হয়। রোবটের মোড় নেওয়া শেষ না হওয়া পর্যন্ত প্রজেক্টটি অপেক্ষা করবে এবং তারপরেই কোডের পরবর্তী লাইনটি রান করবে।

Usage:
drivetrain.turn_for(direction, angle, units, wait)

প্যারামিটার

বর্ণনা

direction

রোবটটি যেদিকে ঘোরে: LEFT বা RIGHT।

angle

রোবটটি যত ডিগ্রি ঘোরে। এটি একটি পূর্ণসংখ্যা integer অথবা দশমিক সংখ্যা (float ) হতে পারে।

units

ঐচ্ছিক। ঘূর্ণন একক: DEGREES (ডিফল্ট)।

wait

ঐচ্ছিক। wait=True (ডিফল্ট) পরবর্তী কোড লাইন চলার আগে রোবটের ঘোরা শেষ না হওয়া পর্যন্ত প্রজেক্টকে অপেক্ষা করায়। wait=False পরবর্তী কোড লাইনকে সাথে সাথে চালিয়ে দেয়।

def main():
    # Turn the robot right and left
    drivetrain.turn_for(RIGHT, 90, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_for(LEFT, 90, DEGREES)

# VR threads — Do not delete
vr_thread(main)

শিরোনামে ঘুরুন#

হেডিং হলো রোবটের অভিমুখ, যা ডিগ্রিতে পরিমাপ করা হয়। turn_to_heading রোবটকে -359 থেকে 359 ডিগ্রির মধ্যে একটি নির্দিষ্ট হেডিং-এর দিকে ঘোরায়। রোবটটি লক্ষ্য হেডিং-এ পৌঁছানোর জন্য সবচেয়ে ছোট পথটি বেছে নেবে।

রোবটটির প্রারম্ভিক অভিমুখ ০ ডিগ্রি।

রোবটটির ঘোরা শেষ না হওয়া পর্যন্ত প্রজেক্টটি অপেক্ষা করবে এবং তারপরেই কোডের পরবর্তী লাইনটি রান করবে।

Usage:
drivetrain.turn_to_heading(angle, units, wait)

প্যারামিটার

বর্ণনা

angle

রোবটটি যে দিকে মুখ করবে, তা ডিগ্রিতে পরিমাপ করতে হবে। এটি integer (ফ্লোট), অথবা -৩৫৯ থেকে ৩৫৯ পর্যন্ত দশমিক (float) সংখ্যা হতে পারে।

units

ঐচ্ছিক। ঘূর্ণন একক: DEGREES (ডিফল্ট)।

wait

ঐচ্ছিক। wait=True (ডিফল্ট) পরবর্তী কোড লাইন চলার আগে রোবটের ঘোরা শেষ না হওয়া পর্যন্ত প্রজেক্টকে অপেক্ষা করায়। wait=False পরবর্তী কোড লাইনকে সাথে সাথে চালিয়ে দেয়।

def main():
    # Turn to face the cardinal directions
    drivetrain.turn_to_heading(90, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_to_heading(180, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_to_heading(270, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_to_heading(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

ঘূর্ণনে পরিণত করুন#

turn_to_rotation রোবটটিকে একটি নির্দিষ্ট ঘূর্ণনে ঘোরায়।

ঘূর্ণন হল রোবটের ঘুরে যাওয়ার পরিমাণ, যা ডিগ্রিতে পরিমাপ করা হয়। একটি প্রকল্পের শুরুতে, ঘূর্ণনের মান 0 ডিগ্রিতে সেট করা হয়। set_rotation পদ্ধতি ব্যবহার করেও ঘূর্ণন সেট করা যেতে পারে।

ঘূর্ণনের মান পরম। এর মানে হলো, মোড় নেওয়ার দিকটি রোবটের বর্তমান ঘূর্ণনের উপর নির্ভর করে। ডানদিকে ঘুরলে ঘূর্ণন বাড়ে এবং বামদিকে ঘুরলে ঘূর্ণন কমে।

উদাহরণস্বরূপ, যদি রোবটটি ০ ডিগ্রি থেকে শুরু করে এবং আপনি এটিকে ৭২০ ডিগ্রি ঘোরান, তবে এটি দুইবার ডানদিকে ঘুরবে। এরপর যদি আপনি এটিকে ৩৬০ ডিগ্রি ঘোরান, তবে এটি একবার বামদিকে ঘুরবে, কারণ ৩৬০ হলো ৭২০-এর চেয়ে কম।

রোবটটির ঘোরা শেষ না হওয়া পর্যন্ত প্রজেক্টটি অপেক্ষা করবে এবং তারপরেই কোডের পরবর্তী লাইনটি রান করবে।

Usage:
drivetrain.turn_to_rotation(angle, units, wait)

প্যারামিটার

বর্ণনা

angle

রোবটটি যে ঘূর্ণন মানে (ডিগ্রিতে) ঘুরবে। এটি integer একক) বা দশমিক (float ) হতে পারে।

units

ঐচ্ছিক। ঘূর্ণন একক: DEGREES (ডিফল্ট)।

wait

ঐচ্ছিক। wait=True (ডিফল্ট) পরবর্তী কোড লাইন চলার আগে রোবটের ঘোরা শেষ না হওয়া পর্যন্ত প্রজেক্টকে অপেক্ষা করায়। wait=False পরবর্তী কোড লাইনকে সাথে সাথে চালিয়ে দেয়।

def main():
    # Turn left, then spin in a circle
    # clockwise and face right
    drivetrain.turn_to_rotation(-90, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_to_rotation(450, DEGREES)

# VR threads — Do not delete
vr_thread(main)

থামুন#

stop রোবটের চলাচল থামিয়ে দেয়।

Usage:
drivetrain.stop()

প্যারামিটার

বর্ণনা

এই পদ্ধতিতে কোনো প্যারামিটার নেই।

def main():
    # Drive forward then stop
    drivetrain.drive(FORWARD)
    wait(2, SECONDS)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

মিউটেটর#

শিরোনাম সেট করুন#

হেডিং হলো রোবটের অভিমুখ, যা ডিগ্রিতে পরিমাপ করা হয়। set_heading রোবটের বর্তমান হেডিং পরিবর্তন করে একটি নতুন হেডিং মানে সেট করে।

উদাহরণস্বরূপ, যদি রোবটটি ডানদিকে মুখ করে থাকে, তবে হেডিং ০ ডিগ্রিতে সেট করলে সেই ডানমুখী অবস্থানটিই নতুন ০ ডিগ্রি হয়ে যায়। এরপর রোবটটি সেই নতুন হেডিং-এর উপর ভিত্তি করে অন্যান্য অবস্থানে ঘুরতে পারে।

Usage:
drivetrain.set_heading(heading, units)

প্যারামিটার

বর্ণনা

heading

রোবটের জন্য নির্ধারণ করার হেডিং ভ্যালু, ডিগ্রিতে। এটি একটি পূর্ণসংখ্যা integer অথবা দশমিক সংখ্যা (float ) হতে পারে।

units

ঐচ্ছিক। শিরোনামের একক: DEGREES (ডিফল্ট)।

def main():
    # Face the new 0 degrees
    drivetrain.set_heading(90, DEGREES)
    drivetrain.turn_to_heading(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

ঘূর্ণন সেট করুন#

রোবটটি কতটা ঘুরেছে, তাকেই রোটেশন বলা হয়, যা ডিগ্রিতে পরিমাপ করা হয়। একটি প্রোজেক্টের শুরুতে, রোটেশনের মান ০ ডিগ্রিতে সেট করা থাকে। set_rotation রোবটের বর্তমান রোটেশনকে একটি নতুন মানে পরিবর্তন করে।

উদাহরণস্বরূপ, যদি রোবটটি ডানদিকে দুটি পূর্ণ পাক ঘুরে থাকে, তবে এর ঘূর্ণন মান হবে ৭২০ ডিগ্রি। ঘূর্ণন মান ০ ডিগ্রিতে সেট করলে তা ৭২০ থেকে ০ ডিগ্রিতে রিসেট হয়ে যাবে। এরপর রোবটটি সেই নতুন মানের উপর ভিত্তি করে ঘুরতে পারবে।

Usage:
drivetrain.set_rotation(rotation, units)

প্যারামিটার

বর্ণনা

rotation

রোবটের জন্য ঘূর্ণনের মান, ডিগ্রিতে, নির্ধারণ করতে হবে। এটি একটি পূর্ণসংখ্যা integer অথবা দশমিক সংখ্যা (float ) হতে পারে।

units

ঐচ্ছিক। ঘূর্ণন একক: DEGREES (ডিফল্ট)।

def main():
    # Spin counterclockwise two times
    drivetrain.set_rotation(720, DEGREES)
    drivetrain.turn_to_rotation(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

সেট_টাইমআউট#

set_timeout নির্ধারণ করে যে রোবট একটি মুভমেন্ট শেষ করার জন্য কতটুকু সময় চেষ্টা করবে। যদি রোবট সেই সময়ের মধ্যে কাজটি শেষ করতে না পারে, তবে এটি চেষ্টা করা বন্ধ করে দেবে এবং কোডের পরবর্তী লাইনে চলে যাবে। এটি রোবটকে কোনো একটি মুভমেন্টে আটকে যাওয়া থেকে রক্ষা করে।

Usage:
drivetrain.set_timeout(value, units)

প্যারামিটার

বর্ণনা

value

রোবটটি একটি নড়াচড়া শেষ করার জন্য যে পরিমাণ সময় চেষ্টা করতে পারে। এটি একটি ধনাত্মক integer অথবা দশমিক (float ) সংখ্যা হতে পারে।

units

সময়ের একক: SECONDS বা MSEC।

def main():
    # Turn right after driving forward
    drivetrain.set_timeout(1, SECONDS)
    drivetrain.drive_for(FORWARD, 25, INCHES)
    drivetrain.turn_for(RIGHT, 90)

# VR threads — Do not delete
vr_thread(main)

সেট_ড্রাইভ_বেগ#

set_drive_velocity রোবটকে বলে দেয় সে কত দ্রুত চলবে। উচ্চতর শতাংশ রোবটকে দ্রুত চালায় এবং নিম্নতর শতাংশ রোবটকে ধীরে চালায়।

প্রতিটি প্রকল্প ডিফল্টরূপে রোবটের ৫০% গতিতে চলার মাধ্যমে শুরু হয়।

দ্রষ্টব্য: উচ্চ বেগ রোবটকে দ্রুত চলতে সাহায্য করে, কিন্তু এর নির্ভুলতা কম হতে পারে। কম বেগ রোবটকে ধীরে চলতে সাহায্য করে, কিন্তু এর নির্ভুলতা বেশি হতে পারে।

Usage:
drivetrain.set_drive_velocity(velocity, units)

প্যারামিটার

বর্ণনা

velocity

০% থেকে ১০০% পর্যন্ত চালনার বেগ। এটি একটি পূর্ণসংখ্যা integer অথবা দশমিক সংখ্যা (float ) হতে পারে।

units

ঐচ্ছিক। বেগের একক: PERCENT (ডিফল্ট)।

def main():
    # Drive forward at different velocities
    # Default velocity
    drivetrain.drive_for(FORWARD, 150, MM)
    wait(1, SECONDS)
    # Drive slower
    drivetrain.set_drive_velocity(20, PERCENT)
    drivetrain.drive_for(FORWARD, 150, MM)
    wait(1, SECONDS)
    # Drive faster
    drivetrain.set_drive_velocity(100, PERCENT)
    drivetrain.drive_for(FORWARD, 150, MM)

# VR threads — Do not delete
vr_thread(main)

সেট_টার্ন_ভেলোসিটি#

set_turn_velocity set_turn_velocity রোবটকে বলে দেয় সে কত দ্রুত ঘুরবে। উচ্চতর শতাংশ রোবটকে দ্রুত ঘোরায় এবং নিম্নতর শতাংশ রোবটকে ধীরে ঘোরায়।

প্রতিটি প্রকল্প ডিফল্টরূপে রোবটের ৫০% গতিতে ঘোরার মাধ্যমে শুরু হয়।

দ্রষ্টব্য: উচ্চ বেগ রোবটকে দ্রুত ঘোরাতে পারে, কিন্তু তা কম নির্ভুল হতে পারে। নিম্ন বেগ রোবটকে ধীরে ঘোরাতে পারে, কিন্তু তা আরও নির্ভুল হতে পারে।

Usage:
drivetrain.set_turn_velocity(velocity, units)

প্যারামিটার

বর্ণনা

velocity

মোড় নেওয়ার বেগ ০% থেকে ১০০% পর্যন্ত। এটি একটি পূর্ণসংখ্যা integer অথবা দশমিক সংখ্যা (float ) হতে পারে।

units

ঐচ্ছিক। বেগের একক: PERCENT (ডিফল্ট)।

def main():
    # Turn at different velocities
    # Default velocity
    drivetrain.turn_for(RIGHT, 120, DEGREES)
    wait(1, SECONDS)
    # Turn slower
    drivetrain.set_turn_velocity(20, PERCENT)
    drivetrain.turn_for(RIGHT, 120, DEGREES)
    wait(1, SECONDS)
    # Turn faster
    drivetrain.set_turn_velocity(100, PERCENT)
    drivetrain.turn_for(RIGHT, 120, DEGREES)

# VR threads — Do not delete
vr_thread(main)

গেটার্স#

শিরোনাম#

হেডিং হলো রোবটের অভিমুখ, যা ডিগ্রিতে পরিমাপ করা হয়। heading রোবটের বর্তমান হেডিং ০ থেকে ৩৫৯.৯৯ ডিগ্রি পর্যন্ত ফেরত দেয়।

রোবটটির প্রারম্ভিক অভিমুখ ০ ডিগ্রি।

Usage:
drivetrain.heading(units)

প্যারামিটার

বর্ণনা

units

ঐচ্ছিক। শিরোনামের একক: DEGREES (ডিফল্ট)।

def main():
    # Display the heading after turning
    drivetrain.turn_for(RIGHT, 450, DEGREES)
    brain.screen.print("Heading: ")
    brain.screen.print(drivetrain.heading(DEGREES))

# VR threads — Do not delete
vr_thread(main)

ঘূর্ণন#

রোবটটি কতটা ঘুরেছে, তা-ই হলো রোটেশন, যা ডিগ্রিতে পরিমাপ করা হয়। একটি প্রোজেক্টের শুরুতে, রোটেশনের মান ০ ডিগ্রিতে সেট করা থাকে। rotation রোবটটির বর্তমান রোটেশন ফেরত দেয়।

ডানদিকে ঘুরলে ঘূর্ণন বাড়ে এবং বামদিকে ঘুরলে ঘূর্ণন কমে। উদাহরণস্বরূপ, ডানদিকে দুটি পূর্ণ পাক দিলে ৭২০ ডিগ্রি ঘূর্ণন ঘটবে।

Usage:
drivetrain.rotation(units)

প্যারামিটার

বর্ণনা

units

ঐচ্ছিক। ঘূর্ণন একক: DEGREES (ডিফল্ট)।

def main():
    # Display the rotation after turning
    drivetrain.turn_for(RIGHT, 450, DEGREES)
    brain.screen.print("Rotation: ")
    brain.screen.print(drivetrain.rotation(DEGREES))

# VR threads — Do not delete
vr_thread(main)

সম্পন্ন হয়েছে#

is_done একটি বুলিয়ান মান হিসাবে ফেরত দেয় যে রোবটটির চলাচল শেষ হয়েছে কিনা। রোবটের চলাচলের উপর ভিত্তি করে অন্যান্য আচরণের সময় নিয়ন্ত্রণ করতে এটি ব্যবহার করা যেতে পারে।

  • True — রোবটটির চলাচল শেষ হয়েছে।

  • False — রোবটটি এখনও চলছে।

এই পদ্ধতিটি নিম্নলিখিত ড্রাইভট্রেন পদ্ধতিগুলির সাথে একত্রে কাজ করে যেগুলিতে wait প্যারামিটার রয়েছে: drive_for, turn_for, turn_to_heading, এবং turn_to_rotation।

Usage:
drivetrain.is_done()

প্যারামিটার

বর্ণনা

এই পদ্ধতিতে কোনো প্যারামিটার নেই।

চলমান#

is_moving রোবটটি চলছে কিনা তা একটি বুলিয়ান মান হিসাবে ফেরত দেয়। রোবটের চলাচলের উপর ভিত্তি করে অন্যান্য আচরণের সময় নিয়ন্ত্রণ করতে এটি ব্যবহার করা যেতে পারে।

  • True — রোবটটি চলছে।

  • False — রোবটটি নড়ছে না।

Usage:
drivetrain.is_moving()

প্যারামিটার

বর্ণনা

এই পদ্ধতিতে কোনো প্যারামিটার নেই।

বেগ#

বেগ velocity রোবটটি কত দ্রুত চলছে তা শতাংশ হিসাবে দেখায়, যা -100% থেকে 100% পর্যন্ত হয়ে থাকে।

Usage:
drivetrain.velocity(units)

প্যারামিটার

বর্ণনা

units

ঐচ্ছিক। বেগের একক: PERCENT (ডিফল্ট)।

উদাহরণ

def main():
    # Display the velocity after driving
    drivetrain.drive_for(FORWARD, 150, MM)
    brain.screen.print("Velocity: ")
    brain.screen.print(drivetrain.velocity(PERCENT))

গতি#

ডেক্স ইনটেক মোটর ব্যবহার করে ব্লকগুলোকে রোবটের ভেতরে টেনে নেয়। কনভেয়র মোটরটি ব্লকগুলোকে ইনটেক থেকে রোবটের শীর্ষে নিয়ে যায়, যাতে সেগুলোকে একটি গোলের দিকে ঠেলে দেওয়া যায়।

প্রতিটি মোটরের নিজস্ব দিকনির্দেশনা আচরণ রয়েছে। দিকনির্দেশনার বিবরণগুলো ব্যাখ্যা করে যে, ডেক্স-এ প্রতিটি দিক কীভাবে সেই মোটরটিকে চালনা করে।

কর্ম#

স্পিন#

spin একটি মোটরকে অনির্দিষ্টকালের জন্য সামনে বা পেছনে ঘোরায়। মোটরটি ততক্ষণ ঘুরতে থাকবে যতক্ষণ না এটিকে অন্য কোনো কাজ দেওয়া হয়, যেমন ভিন্ন দিকে ঘোরানো বা থামানো।

ব্যবহারবিধি: এই পদ্ধতিতে দুটি উপলব্ধ মোটর অবজেক্টের মধ্যে
একটি ব্যবহার করা যেতে পারে, যেমনটি নিচে দেখানো হয়েছে:

মোটর

আদেশ

intake_motor

intake_motor.spin(direction) — ইনটেক মোটর

conveyor_motor

conveyor_motor.spin(direction) — কনভেয়র মোটর

প্যারামিটার

বর্ণনা

direction

মোটরের ঘোরার দিক:

  • FORWARD — কনভেয়র মোটরকে উপরের দিকে অথবা ইনটেক মোটরকে ইনটেকের দিকে ঘোরায়।
  • REVERSE — কনভেয়র মোটরকে নিচের দিকে অথবা ইনটেক মোটরকে আউটটেকের দিকে ঘোরায়।

def main():
    # Pick up a second Block
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 350, MM)

# VR threads — Do not delete
vr_thread(main)

স্পিন_ফর#

spin_for একটি মোটরকে একটি নির্দিষ্ট দূরত্বে ঘোরায়। এই ঘূর্ণনটি মোটরের বর্তমান অবস্থানের সাপেক্ষে হয়। মোটরটির ঘূর্ণন শেষ না হওয়া পর্যন্ত প্রজেক্টটি অপেক্ষা করবে এবং তারপরেই কোডের পরবর্তী লাইনটি রান করবে।

ব্যবহারবিধি: এই পদ্ধতিতে দুটি উপলব্ধ মোটর অবজেক্টের মধ্যে
একটি ব্যবহার করা যেতে পারে, যেমনটি নিচে দেখানো হয়েছে:

মোটর

আদেশ

intake_motor

intake_motor.spin_for(direction, distance, units, wait) — ইনটেক মোটর

conveyor_motor

conveyor_motor.spin_for(direction, distance, units, wait) — কনভেয়র মোটর

প্যারামিটার

বর্ণনা

direction

মোটরের ঘোরার দিক:

  • FORWARD — কনভেয়র মোটরকে উপরের দিকে অথবা ইনটেক মোটরকে ইনটেকের দিকে ঘোরায়।
  • REVERSE — কনভেয়র মোটরকে নিচের দিকে অথবা ইনটেক মোটরকে আউটটেকের দিকে ঘোরায়।

distance

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

units

ঐচ্ছিক। দূরত্বের একক: DEGREES (ডিফল্ট) অথবা TURNS।

wait

ঐচ্ছিক।

  • wait=True (ডিফল্ট) — পরবর্তী কোড লাইন চলার আগে মোটরের ঘোরা শেষ না হওয়া পর্যন্ত প্রজেক্টকে অপেক্ষা করায়।
  • wait=False — পরবর্তী কোড লাইন সাথে সাথে চালিয়ে দেয়।

def main():
    # Pick up a second Block
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 350, MM)

# VR threads — Do not delete
vr_thread(main)

অবস্থান ঘোরানো#

spin_to_position একটি মোটরকে একটি নির্দিষ্ট অবস্থানে ঘোরায়।

একটি মোটরের অবস্থান হল এটি কতদূর ঘুরেছে, যা DEGREES বা TURNSএ পরিমাপ করা হয়। এক পাক 360 ডিগ্রির সমান। একটি প্রকল্পের শুরুতে, মোটরের অবস্থান 0 ডিগ্রিতে সেট করা হয়। মোটরের অবস্থান set_position পদ্ধতি ব্যবহার করেও সেট করা যেতে পারে।

অবস্থানের মানগুলো পরম। এর মানে হলো, ঘূর্ণনের দিক মোটরের বর্তমান অবস্থানের উপর নির্ভর করে।

উদাহরণস্বরূপ, যদি মোটরটি ০ ডিগ্রি থেকে যাত্রা শুরু করে ৭২০ ডিগ্রি অবস্থানে ঘোরে, তবে এটি সামনের দিকে দুইবার ঘুরবে। এরপর যদি এটি ৩৬০ ডিগ্রি অবস্থানে ঘোরে, তবে এটি পেছনের দিকে একবার ঘুরবে, কারণ ৩৬০ হলো ৭২০-এর চেয়ে কম।

ব্যবহারবিধি: এই পদ্ধতিতে দুটি উপলব্ধ মোটর অবজেক্টের মধ্যে
একটি ব্যবহার করা যেতে পারে, যেমনটি নিচে দেখানো হয়েছে:

মোটর

আদেশ

intake_motor

intake_motor.spin_to_position(angle, units, wait=True) — ইনটেক মোটর

conveyor_motor

conveyor_motor.spin_to_position(angle, units, wait=True) — কনভেয়র মোটর

প্যারামিটার

বর্ণনা

angle

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

units

ঐচ্ছিক। অবস্থানের একক: DEGREES (ডিফল্ট) অথবা TURNS।

wait

ঐচ্ছিক।

  • wait=True (ডিফল্ট) — পরবর্তী কোড লাইন চলার আগে মোটরের ঘোরা শেষ না হওয়া পর্যন্ত প্রজেক্টকে অপেক্ষা করায়।
  • wait=False — পরবর্তী কোড লাইন সাথে সাথে চালিয়ে দেয়।

def main():
    # Pick up a second Block
    conveyor_motor.spin_to_position(150, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 350, MM)

# VR threads — Do not delete
vr_thread(main)

থামুন#

stop একটি মোটরের ঘূর্ণন থামিয়ে দেয়।

ব্যবহারবিধি: এই পদ্ধতিতে দুটি উপলব্ধ মোটর অবজেক্টের মধ্যে
একটি ব্যবহার করা যেতে পারে, যেমনটি নিচে দেখানো হয়েছে:

মোটর

আদেশ

intake_motor

intake_motor.stop() — ইনটেক মোটর

conveyor_motor

conveyor_motor.stop() — কনভেয়র মোটর

প্যারামিটার

বর্ণনা

এই পদ্ধতিতে কোনো প্যারামিটার নেই।

def main():
    # Pick up a second Block
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 350, MM)
    intake_motor.stop()

# VR threads — Do not delete
vr_thread(main)

মিউটেটর#

সেট_পজিশন#

একটি মোটরের অবস্থান হলো এটি কতটুকু ঘুরেছে, যা DEGREES বা TURNSএককে পরিমাপ করা হয়। এক পাক ৩৬০ ডিগ্রির সমান। set_position মোটরের বর্তমান অবস্থানকে একটি নতুন মানে পরিবর্তন করে।

উদাহরণস্বরূপ, যদি একটি মোটর ১৮০ ডিগ্রি ঘুরে থাকে, তবে এর অবস্থান ০ ডিগ্রিতে সেট করলে সেই অবস্থানটি ১৮০ থেকে ০ ডিগ্রিতে রিসেট হয়ে যাবে। এরপর মোটরটি সেই নতুন মানের উপর ভিত্তি করে বিভিন্ন অবস্থানে ঘুরতে পারবে।

ব্যবহারবিধি: এই পদ্ধতিতে দুটি উপলব্ধ মোটর অবজেক্টের মধ্যে
একটি ব্যবহার করা যেতে পারে, যেমনটি নিচে দেখানো হয়েছে:

মোটর

আদেশ

intake_motor

intake_motor.set_position(position, units) — ইনটেক মোটর

conveyor_motor

conveyor_motor.set_position(position, units) — কনভেয়র মোটর

প্যারামিটার

বর্ণনা

position

মোটরের জন্য যে অবস্থানের মান নির্ধারণ করতে হবে। DEGREES পূর্ণসংখ্যা ব্যবহার করুন। TURNS পূর্ণসংখ্যা বা দশমিক ব্যবহার করা যেতে পারে।

units

ঐচ্ছিক। অবস্থানের একক: DEGREES (ডিফল্ট) অথবা TURNS।

def main():
    # Pick up a second Block
    conveyor_motor.set_position(-150, DEGREES)
    conveyor_motor.spin_to_position(0, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 350, MM)

# VR threads — Do not delete
vr_thread(main)

সেট_বেগ#

set_velocity একটি মোটরকে বলে দেয় সেটি কত দ্রুত ঘুরবে। উচ্চতর শতাংশ মোটরকে দ্রুত ঘোরায় এবং নিম্নতর শতাংশ মোটরকে ধীরে ঘোরায়।

প্রতিটি প্রজেক্ট ডিফল্টরূপে প্রতিটি মোটর ৫০% গতিতে ঘোরার মাধ্যমে শুরু হয়।

দ্রষ্টব্য: উচ্চ বেগে মোটর দ্রুত ঘোরে, কিন্তু এর নির্ভুলতা কম হতে পারে। নিম্ন বেগে মোটর ধীরে ঘোরে, কিন্তু এর নির্ভুলতা বেশি হতে পারে।

ব্যবহারবিধি: এই পদ্ধতিতে দুটি উপলব্ধ মোটর অবজেক্টের মধ্যে
একটি ব্যবহার করা যেতে পারে, যেমনটি নিচে দেখানো হয়েছে:

মোটর

আদেশ

intake_motor

intake_motor.set_velocity(velocity, units) — ইনটেক মোটর

conveyor_motor

conveyor_motor.set_velocity(velocity, units) — কনভেয়র মোটর

প্যারামিটার

বর্ণনা

velocity

ঘূর্ণনের বেগ ০% থেকে ১০০% পর্যন্ত। এটি একটি পূর্ণসংখ্যা integer অথবা দশমিক সংখ্যা (float ) হতে পারে।

units

বেগের একক: PERCENT।

def main():
    # Pick up a second Block
    conveyor_motor.set_velocity(90, PERCENT)
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 400, MM)

# VR threads — Do not delete
vr_thread(main)

সেট_টাইমআউট#

set_timeout নির্ধারণ করে যে একটি মোটর তার গতি শেষ করার জন্য কতক্ষণ চেষ্টা করবে। যদি মোটরটি সেই সময়ের মধ্যে তার গতি শেষ করতে না পারে, তবে এটি চেষ্টা করা বন্ধ করে দেবে এবং কোডের পরবর্তী লাইনে চলে যাবে। এটি মোটরকে কোনো একটি গতিতে আটকে যাওয়া থেকে রক্ষা করে।

ব্যবহারবিধি: এই পদ্ধতিতে দুটি উপলব্ধ মোটর অবজেক্টের মধ্যে
একটি ব্যবহার করা যেতে পারে, যেমনটি নিচে দেখানো হয়েছে:

মোটর

আদেশ

intake_motor

intake_motor.set_timeout(value, units) — ইনটেক মোটর

conveyor_motor

conveyor_motor.set_timeout(value, units) — কনভেয়র মোটর

প্যারামিটার

বর্ণনা

value

একটি গতি শেষ করার জন্য মোটরটি যে পরিমাণ সময় চেষ্টা করতে পারে। এটি একটি ধনাত্মক integer অথবা দশমিক (float ) সংখ্যা হতে পারে।

units

সময়ের একক: SECONDS বা MSEC।

def main():
    # Pick up a second Block
    conveyor_motor.set_timeout(0.5, SECONDS)
    conveyor_motor.spin_to_position(1000, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 400, MM)

# VR threads — Do not delete
vr_thread(main)

গেটার্স#

সম্পন্ন হয়েছে#

is_done একটি বুলিয়ান মান হিসাবে মোটরটির চলাচল শেষ হয়েছে কিনা তা ফেরত দেয়। মোটরের চলাচলের উপর ভিত্তি করে অন্যান্য আচরণের সময় নিয়ন্ত্রণ করতে এটি ব্যবহার করা যেতে পারে।

  • True — মোটরটির চলাচল শেষ হয়েছে।

  • False — মোটরটি এখনও ঘুরছে।

এই পদ্ধতিটি নিম্নলিখিত মোশন পদ্ধতিগুলির সাথে একত্রে কাজ করে যেগুলির wait প্যারামিটার রয়েছে: spin_for এবং spin_to_position।

ব্যবহারবিধি: এই পদ্ধতিতে দুটি উপলব্ধ মোটর অবজেক্টের মধ্যে
একটি ব্যবহার করা যেতে পারে, যেমনটি নিচে দেখানো হয়েছে:

মোটর

আদেশ

intake_motor

intake_motor.is_done() — ইনটেক মোটর

conveyor_motor

conveyor_motor.is_done() — কনভেয়র মোটর

প্যারামিটার

বর্ণনা

এই পদ্ধতিতে কোনো প্যারামিটার নেই।

def main():
    # Pick up a second Block
    conveyor_motor.spin_to_position(300, DEGREES, wait=False)
    wait(0.1, SECONDS)
    while not conveyor_motor.is_done():
        drivetrain.drive(FORWARD)
        intake_motor.spin(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()
    intake_motor.stop()

# VR threads — Do not delete
vr_thread(main)

ঘুরছে#

is_spinning মোটরটি ঘুরছে কিনা তা একটি বুলিয়ান মান হিসাবে ফেরত দেয়। মোটরের নড়াচড়ার উপর ভিত্তি করে অন্যান্য আচরণের সময় নিয়ন্ত্রণ করতে এটি ব্যবহার করা যেতে পারে।

  • True — মোটরটি ঘুরছে।

  • False — মোটরটি ঘুরছে না।

এই পদ্ধতিটি নিম্নলিখিত মোশন পদ্ধতিগুলির সাথে একত্রে কাজ করে যেগুলির wait প্যারামিটার রয়েছে: spin_for এবং spin_to_position।

ব্যবহারবিধি: এই পদ্ধতিতে দুটি উপলব্ধ মোটর অবজেক্টের মধ্যে
একটি ব্যবহার করা যেতে পারে, যেমনটি নিচে দেখানো হয়েছে:

মোটর

আদেশ

intake_motor

intake_motor.is_spinning() — ইনটেক মোটর

conveyor_motor

conveyor_motor.is_spinning() — কনভেয়র মোটর

প্যারামিটার

বর্ণনা

এই পদ্ধতিতে কোনো প্যারামিটার নেই।

def main():
    # Pick up a second Block
    conveyor_motor.spin_to_position(300, DEGREES, wait=False)
    wait(0.1, SECONDS)
    while conveyor_motor.is_spinning():
        drivetrain.drive_for(FORWARD, 200, MM)
        intake_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

অবস্থান#

একটি মোটরের অবস্থান হলো এটি কতটুকু ঘুরেছে, যা DEGREES বা TURNSএককে পরিমাপ করা হয়। এক পাক ৩৬০ ডিগ্রির সমান। position মোটরের বর্তমান অবস্থান ফিরিয়ে দেয়।

প্রকল্পের শুরুতে মোটরের অবস্থান ০ ডিগ্রিতে সেট করা হয়। যদি মোটরটি সামনের দিকে এক পূর্ণ পাক ঘোরে, তবে এর অবস্থান হবে ৩৬০ ডিগ্রি বা ১ পাক। আর যদি মোটরটি বিপরীত দিকে ঘোরে, তবে এর অবস্থান ঋণাত্মক হবে।

ব্যবহারবিধি: এই পদ্ধতিতে দুটি উপলব্ধ মোটর অবজেক্টের মধ্যে
একটি ব্যবহার করা যেতে পারে, যেমনটি নিচে দেখানো হয়েছে:

মোটর

আদেশ

intake_motor

intake_motor.position(units) — ইনটেক মোটর

conveyor_motor

conveyor_motor.position(units) — কনভেয়র মোটর

প্যারামিটার

বর্ণনা

units

মোটরের অবস্থান ফেরানোর একক: DEGREES বা TURNS পাক।

def main():
    # Pick up a second Block
    while conveyor_motor.position(DEGREES) < 150:
        conveyor_motor.spin(FORWARD)
        wait(2, MSEC)
    conveyor_motor.stop()
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 400, MM)

# VR threads — Do not delete
vr_thread(main)

বেগ#

velocity মোটরটি কত দ্রুত ঘুরছে তা নির্দেশ করে।

ধনাত্মক মান মানে মোটরটি সামনের দিকে ঘুরছে। ঋণাত্মক মান মানে মোটরটি বিপরীত দিকে ঘুরছে।

ব্যবহারবিধি: এই পদ্ধতিতে দুটি উপলব্ধ মোটর অবজেক্টের মধ্যে
একটি ব্যবহার করা যেতে পারে, যেমনটি নিচে দেখানো হয়েছে:

মোটর

আদেশ

intake_motor

intake_motor.velocity(units) — ইনটেক মোটর

conveyor_motor

conveyor_motor.velocity(units) — কনভেয়র মোটর

প্যারামিটার

বর্ণনা

units

ফেরত দেওয়ার বেগের একক: PERCENT।

def main():
    # Pick up a second block
    conveyor_motor.set_velocity(100, PERCENT)
    conveyor_motor.spin_to_position(300, DEGREES, wait=False)
    wait(0.2, SECONDS)
    brain.screen.print(conveyor_motor.velocity(PERCENT))
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 400, MM)

# VR threads — Do not delete
vr_thread(main)

এআই ভিশন#

গেটার্স#

টেক_স্ন্যাপশট#

take_snapshot এআই ভিশন সেন্সর ফ্রেম থেকে ডেটা ফিল্টার করে একটি একক সিগনেচারে নিয়ে আসে — যা হলো সেন্সর দ্বারা শনাক্তযোগ্য কোনো কিছুর একটি সংরক্ষিত বিবরণ, যেমন মাঠের কোনো গেম এলিমেন্ট — এবং একটি টাপল রিটার্ন করে।

টাপলটি অবজেক্টগুলিকে প্রস্থ অনুসারে বৃহত্তম থেকে ক্ষুদ্রতম ক্রমে সংরক্ষণ করে, যা সূচক 0 থেকে শুরু হয়। প্রতিটি অবজেক্টের বৈশিষ্ট্য তার সূচক ব্যবহার করে অ্যাক্সেস করা যেতে পারে। যদি কোনও মিলযুক্ত অবজেক্ট সনাক্ত করা না যায় তবে একটি খালি টাপল ফেরত দেওয়া হয়।

Usage:
ai_vision.take_snapshot(signature)

প্যারামিটার

বর্ণনা

signature

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

  • AiVision.ALL_AIOBJS - লাল এবং নীল ব্লক সনাক্ত করে।

def main():
    # If an object is detected, pick it up
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            intake_motor.spin(FORWARD)
            drivetrain.drive(FORWARD)
            while not bumper.pressing():
                wait(2, MSEC)
            drivetrain.stop()
            break

# VR threads — Do not delete
vr_thread(main)

বৈশিষ্ট্য#

take_snapshot ব্যবহার করার পরে একটি টাপলে সংরক্ষিত প্রতিটি অবজেক্টের সাথে সাতটি বৈশিষ্ট্য অন্তর্ভুক্ত থাকে।

.id ব্যতীত অন্য সকল প্রপার্টি ভ্যালু, take_snapshot ব্যবহৃত হওয়ার মুহূর্তে এআই ভিশন সেন্সরের ভিউতে শনাক্তকৃত অবজেক্টটির অবস্থান এবং আকার বর্ণনা করে। এই ভ্যালুগুলো সেন্সরটির 320 বাই 240 পিক্সেল রেজোলিউশনের উপর ভিত্তি করে পিক্সেলে পরিমাপ করা হয়।

প্রস্থ#

.width শনাক্ত করা অবজেক্টটির প্রস্থ পিক্সেলে ফেরত দেয়, যা ১ থেকে ৩২০-এর মধ্যে একটি পূর্ণসংখ্যা।

def main():
    # If an object is detected, approach and pick it up
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if ai_objects[0].width > 65:
                drivetrain.stop()
                break
            else:
                intake_motor.spin(FORWARD)
                drivetrain.drive(FORWARD)

# VR threads — Do not delete
vr_thread(main)

উচ্চতা#

.height শনাক্ত করা বস্তুটির উচ্চতা পিক্সেলে ফেরত দেয়, যা ১ থেকে ২৪০-এর মধ্যে একটি পূর্ণসংখ্যা।

def main():
    # If an object is detected, approach and pick it up
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if ai_objects[0].height > 55:
                drivetrain.stop()
                break
            else:
                intake_motor.spin(FORWARD)
                drivetrain.drive(FORWARD)

# VR threads — Do not delete
vr_thread(main)

.centerX#

.centerX শনাক্তকৃত বস্তুর কেন্দ্রের x-স্থানাঙ্ক পিক্সেলে ফেরত দেয়, যা 0 থেকে 320-এর মধ্যে একটি পূর্ণসংখ্যা।

def main():
    # Pick up a Block from the top left group
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    drivetrain.turn_for(LEFT, 80, DEGREES)
    drivetrain.drive_for(FORWARD, 200, MM)
    drivetrain.set_turn_velocity(20, PERCENT)
    drivetrain.turn(LEFT)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if 140 < ai_objects[0].centerX < 180:
                intake_motor.spin(FORWARD)
                drivetrain.drive(FORWARD)
                while not bumper.pressing():
                    wait(2, MSEC)
                drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

.centerY#

.centerY শনাক্তকৃত বস্তুর কেন্দ্রের y-স্থানাঙ্ক পিক্সেলে ফেরত দেয়, যা 0 থেকে 240-এর মধ্যে একটি পূর্ণসংখ্যা।

def main():
    # If an object is detected, approach and pick it up
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if ai_objects[0].centerY > 140:
                drivetrain.stop()
                break
            else:
                intake_motor.spin(FORWARD)
                drivetrain.drive(FORWARD)

# VR threads — Do not delete
vr_thread(main)

.originX#

.originX শনাক্ত করা বস্তুর বাউন্ডিং বক্সের উপরের-বাম কোণার x-স্থানাঙ্ক পিক্সেলে ফেরত দেয়, যা 0 থেকে 320-এর মধ্যে একটি পূর্ণসংখ্যা।

def main():
    # Pick up a Block from the top left group
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    drivetrain.turn_for(LEFT, 80, DEGREES)
    drivetrain.drive_for(FORWARD, 300, MM)
    drivetrain.set_turn_velocity(20, PERCENT)
    drivetrain.turn(RIGHT)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if 100 < ai_objects[0].originX < 140:
                intake_motor.spin(FORWARD)
                drivetrain.drive(FORWARD)
                while not bumper.pressing():
                    wait(2, MSEC)
                drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

.originY#

.originY শনাক্ত করা বস্তুর বাউন্ডিং বক্সের উপরের-বাম কোণার y-স্থানাঙ্ক পিক্সেলে ফেরত দেয়, যা 0 থেকে 240-এর মধ্যে একটি পূর্ণসংখ্যা।

def main():
    # If an object is detected, approach and pick it up
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if ai_objects[0].originY > 120:
                drivetrain.stop()
                break
            else:
                intake_motor.spin(FORWARD)
                drivetrain.drive(FORWARD)

# VR threads — Do not delete
vr_thread(main)

.id#

.id শনাক্তকৃত এআই ক্লাসিফিকেশনের আইডি একটি পূর্ণসংখ্যা হিসেবে ফেরত দেয়।

এআই শ্রেণিবিন্যাস

আইডি

স্বাক্ষর

ব্লুব্লক

১

GameElements.BLUE_BLOCK

রেডব্লক

২

GameElements.RED_BLOCK

def main():
    # Pick up a Red Block from the top left group
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    drivetrain.turn_for(LEFT, 80, DEGREES)
    drivetrain.drive_for(FORWARD, 300, MM)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            drivetrain.drive(FORWARD)
            if (ai_objects[0].id) == 2:
                intake_motor.spin(FORWARD)
                while not bumper.pressing():
                    wait(2, MSEC)
                drivetrain.stop()
                break

# VR threads — Do not delete
vr_thread(main)

কনসোল#

প্রজেক্ট চলার সময় কনসোল টেক্সট, সংখ্যা এবং ভেরিয়েবলের মান প্রদর্শন করে। কনসোল মেথড ব্যবহার করে কার্সারকে নতুন সারিতে সরানো, কনসোল পরিষ্কার করা এবং মনিটর ট্যাবে ভেরিয়েবল বা সেন্সরের মান যোগ করা যায়।

প্রিন্ট#

মস্তিষ্ক.স্ক্রিন.প্রিন্ট#

brain.screen.print বর্তমান কার্সার অবস্থান ব্যবহার করে কনসোলে টেক্সট, সংখ্যা বা ভেরিয়েবলের মান প্রদর্শন করে।

পরবর্তী মুদ্রিত মানটি একটি নতুন সারিতে শুরু করতে চাইলে brain.screen.next_row ব্যবহার করুন।

Usage:
brain.screen.print(value)

প্যারামিটার

বর্ণনা

value

কনসোলে প্রদর্শন করার জন্য টেক্সট, সংখ্যা, বা ভেরিয়েবলের মান।

def main():
    # Display a message in the Console
    brain.screen.print("Hello, robot!")

# VR threads — Do not delete
vr_thread(main)

VEXcode কনসোল, যেখানে "হ্যালো, রোবট!" লেখাটি প্রদর্শিত হচ্ছে।

brain.screen.next_row#

brain.screen.next_row কার্সারকে কনসোলের পরবর্তী সারির প্রথম কলামে নিয়ে যায়। পরবর্তী যে মানটি প্রিন্ট করা হবে, তা সেই সারিতে প্রদর্শিত হবে।

Usage:
brain.screen.next_row()

প্যারামিটার

বর্ণনা

এই পদ্ধতিতে কোনো প্যারামিটার নেই।

def main():
    # Print on two rows
    brain.screen.print("Row 1")
    brain.screen.next_row()
    brain.screen.print("Row 2")

# VR threads — Do not delete
vr_thread(main)

VEXcode কনসোল, যেখানে কনসোলটি দেখা যাচ্ছে এবং প্রথম লাইনে "সারি 1" এবং দ্বিতীয় লাইনে "সারি 2" লেখা রয়েছে।

brain.screen.clear_screen#

brain.screen.clear_screen কনসোল থেকে সমস্ত সারি মুছে দেয় এবং কার্সারকে সারি ১-এ ফিরিয়ে নিয়ে যায়।

Usage:
brain.screen.clear_screen()

প্যারামিটার

বর্ণনা

এই পদ্ধতিতে কোনো প্যারামিটার নেই।

def main():
    # Display text, then clear it after two seconds
    brain.screen.print("This will disappear...")
    wait(2, SECONDS)
    brain.screen.clear_screen()

# VR threads — Do not delete
vr_thread(main)

মনিটর#

মনিটর_ভেরিয়েবল#

monitor_variable VEXcode-এর মনিটর ট্যাবে এক বা একাধিক পূর্বনির্ধারিত ভেরিয়েবল যোগ করে। এর মাধ্যমে, কোনো প্রজেক্ট চলার সময় আপনি একটি ভেরিয়েবলের মানের পরিবর্তন পর্যবেক্ষণ করতে পারবেন।

সফলভাবে মনিটর করার জন্য ভেরিয়েবলগুলোকে অবশ্যই গ্লোবাল হতে হবে monitor_variable

Usage:
monitor_variable(“variable”)
monitor_variable(“variable1”, “variable2”)

প্যারামিটার

বর্ণনা

variable

পর্যবেক্ষণ করার জন্য একটি পূর্বনির্ধারিত গ্লোবাল ভেরিয়েবলের নাম, যা একটি স্ট্রিং হিসাবে দেওয়া হয়। একাধিক ভেরিয়েবল পর্যবেক্ষণ করতে, প্রতিটি ভেরিয়েবলের নাম কমা দিয়ে আলাদা করুন।

def main():
    # Monitor the amount of loops
    global loops
    monitor_variable("loops")

    # Drive in a square 3 times
    for loops in range(12):
        drivetrain.turn_for(RIGHT, 90, DEGREES)
        drivetrain.drive_for(FORWARD, 150, MM)

# VR threads — Do not delete
vr_thread(main)

মনিটর_সেন্সর#

monitor_sensor VEXcode-এর মনিটর ট্যাবে এক বা একাধিক সেন্সর মান যোগ করে। এর মাধ্যমে, কোনো প্রজেক্ট চলার সময় আপনি সেন্সর মানগুলোর পরিবর্তন পর্যবেক্ষণ করতে পারবেন।

প্রতিটি সেন্সর মান স্ট্রিং হিসেবে প্রদান করুন।

Usage:
monitor_sensor(“sensor”)
monitor_sensor(“sensor1”, “sensor2”)

প্যারামিটার

বর্ণনা

sensor

পর্যবেক্ষণ করার জন্য সেন্সরের মানটি একটি স্ট্রিং হিসাবে দিতে হবে। একাধিক সেন্সরের মান পর্যবেক্ষণ করতে, প্রতিটি মানকে কমা দিয়ে আলাদা করুন। সমর্থিত সেন্সর শনাক্তকারীগুলির মধ্যে রয়েছে:

  • ব্রেইন
    • brain.timer.time
  • ড্রাইভট্রেন
    • drivetrain.is_done
    • drivetrain.is_moving
    • drivetrain.heading
    • drivetrain.rotation
    • drivetrain.velocity
  • পুশার মোটর
    • pusher_motor.is_done
    • pusher_motor.is_spinning
    • pusher_motor.position
    • pusher_motor.velocity
  • আর্ম মোটর
    • arm_motor.is_done
    • arm_motor.is_spinning
    • arm_motor.position
    • arm_motor.velocity
  • ফ্রন্ট ডিসটেন্স সেন্সর
    • front_distance.is_object_detected
    • front_distance.object_distance_mm
    • front_distance.object_distance_inches
  • ফ্রন্ট অপটিক্যাল সেন্সর
    • front_optical.is_near_object
    • front_optical.color
    • front_optical.brightness
    • front_optical.hue
  • জিপিএস সেন্সর
    • gps.position_mm
    • gps.position_inches
    • gps.heading
  • পুশার রোটেশন সেন্সর
    • pusher_rotation.angle
    • pusher_rotation.position
  • এআই ভিশন সেন্সর
    • ai_vision.object_count
    • ai_vision.height
    • ai_vision.width
    • ai_vision.centerX
    • ai_vision.centerY
    • ai_vision.originX
    • ai_vision.originY
    • ai_vision.id

def main():
    # Monitor the robot's heading
    monitor_sensor("drivetrain.heading")
    drivetrain.turn_for(RIGHT, 450, DEGREES)

# VR threads — Do not delete
vr_thread(main)

সংবেদন#

অপটিক্যাল#

is_near_object#

is_near_object একটি বুলিয়ান মান রিটার্ন করে যা নির্দেশ করে যে অপটিক্যাল সেন্সরটি সীমার মধ্যে কোনো বস্তু শনাক্ত করেছে কি না।

  • True – অপটিক্যাল সেন্সরটি একটি বস্তু শনাক্ত করে।

  • False – অপটিক্যাল সেন্সরটি কোনো বস্তু শনাক্ত করতে পারছে না।

Usage:
optical.is_near_object()

প্যারামিটার

বর্ণনা

এই পদ্ধতিতে কোনো প্যারামিটার নেই।

def main():
    # Move the preloaded Block to the top of the Conveyor
    conveyor_motor.spin(FORWARD)
    while not optical.is_near_object():
        wait(2, MSEC)
    conveyor_motor.stop()

# VR threads — Do not delete
vr_thread(main)

রঙ#

color শনাক্তকৃত হিউ মানের উপর ভিত্তি করে একটি Color ক্লাসের ইনস্ট্যান্স ফেরত দেয়। শর্তসাপেক্ষ বিবৃতি তৈরি করার জন্য এগুলোকে পূর্বনির্ধারিত Color অবজেক্টের সাথে তুলনা করা যেতে পারে।

সম্ভাব্য রংগুলো হলো:

  • NONE

  • RED - ৩৪০° থেকে ২০° এর মধ্যে একটি বর্ণচ্ছটার মান

  • GREEN - ৮০° - ১৪০° এর মধ্যে একটি বর্ণচ্ছটার মান

  • BLUE - ২০০° - ২৪০° এর মধ্যে একটি বর্ণচ্ছটার মান

  • YELLOW - ৪০° - ৬০° এর মধ্যে একটি বর্ণচ্ছটার মান

  • ORANGE - ২০° - ৪০° এর মধ্যে একটি বর্ণচ্ছটার মান

  • PURPLE - ২৪০° - ২৮০° এর মধ্যে একটি বর্ণচ্ছটার মান

  • CYAN - ১৪০° - ২০০° এর মধ্যে একটি রঙের মান

দ্রষ্টব্য: অপটিক্যাল সেন্সরটি নির্দিষ্ট রঙের সাথে মেলে এমন হিউ রেঞ্জ খুঁজছে। নির্দিষ্ট হিউ রেঞ্জ সনাক্ত করার জন্য, hue দেখুন।

Usage:
optical.color()

প্যারামিটার

বর্ণনা

এই পদ্ধতিতে কোনো প্যারামিটার নেই।

def main():
    # Pick up and move a Blue Block to the top of the Conveyor
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 360, MM)
    conveyor_motor.spin(FORWARD)
    while not optical.color() == BLUE:
        wait(2, MSEC)
    conveyor_motor.stop()

# VR threads — Do not delete
vr_thread(main)

উজ্জ্বলতা#

brightness বস্তু থেকে প্রতিফলিত আলোর পরিমাণকে একটি দশমিক (float) হিসাবে ফেরত দেয় যা শতাংশকে প্রতিনিধিত্ব করে।

উচ্চ শতাংশের অর্থ হলো অপটিক্যাল সেন্সরে বেশি আলো প্রতিফলিত হয়। নিম্ন শতাংশের অর্থ হলো কম আলো প্রতিফলিত হয়।

Usage:
optical.brightness()

প্যারামিটার

বর্ণনা

এই পদ্ধতিতে কোনো প্যারামিটার নেই।

def main():
    # Move the preloaded Block to the top of the Conveyor
    conveyor_motor.spin(FORWARD)
    while not 0 < optical.brightness():
        wait(2, MSEC)
    conveyor_motor.stop()

# VR threads — Do not delete
vr_thread(main)

রঙ#

hue সনাক্ত করা রঙের হিউ মান 0 থেকে 359 পর্যন্ত একটি দশমিক (float) হিসাবে ফেরত দেয়।

হিউ হলো কালার হুইলের সংখ্যা ব্যবহার করে রঙ বর্ণনা করার একটি পদ্ধতি।

একটি বৃত্তাকার রঙের চাকা যা রঙের একটি সম্পূর্ণ বর্ণালী প্রদর্শন করে, যার পরিধি বরাবর ডিগ্রি মান চিহ্নিত করা আছে, যা উপরের 0° থেকে 360° পর্যন্ত 30-ডিগ্রি বৃদ্ধিতে বৃদ্ধি পায়।

Usage:
optical.hue()

প্যারামিটার

বর্ণনা

এই পদ্ধতিতে কোনো প্যারামিটার নেই।

def main():
    # Pick up and move a Blue Block to the top of the Conveyor
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 360, MM)
    conveyor_motor.spin(FORWARD)
    while not 220 < optical.hue() < 260:
        wait(2, MSEC)
    conveyor_motor.stop()

# VR threads — Do not delete
vr_thread(main)

বস্তু সনাক্ত করা হয়েছে#

object_detected এমন একটি ফাংশন রেজিস্টার করে, যা অপটিক্যাল সেন্সর কোনো নতুন বস্তু শনাক্ত করলেই কল করা হবে।

Usage:
optical.object_detected(callback, arg)

প্যারামিটার

বর্ণনা

callback

পূর্বে সংজ্ঞায়িত একটি ফাংশন যা অপটিক্যাল সেন্সর একটি নতুন বস্তু সনাক্ত করলে কার্যকর হয়।

arg

ঐচ্ছিক। কলব্যাক ফাংশনে পাঠানোর জন্য আর্গুমেন্ট ধারণকারী একটি টাপল। আরও তথ্যের জন্য প্যারামিটার সহ ফাংশনের ব্যবহার দেখুন।

def ready_block():
  # Stop the conveyor when Block is at the Sensor
  conveyor_motor.stop()

def main():
  # Move the preloaded Block near the top of the Conveyor
  conveyor_motor.spin(FORWARD)
  optical.object_detected(ready_block)

# VR threads — Do not delete
vr_thread(main)

বস্তু_হারানো#

object_lost এমন একটি ফাংশন রেজিস্টার করে, যা অপটিক্যাল সেন্সর কোনো শনাক্ত করা বস্তু হারিয়ে ফেললে কল করা হবে।

Usage:
optical.object_lost(callback, arg)

প্যারামিটার

বর্ণনা

callback

পূর্বে সংজ্ঞায়িত একটি ফাংশন যা অপটিক্যাল সেন্সর সনাক্ত করা বস্তু হারিয়ে ফেললে কার্যকর হয়।

arg

ঐচ্ছিক। কলব্যাক ফাংশনে পাঠানোর জন্য আর্গুমেন্ট ধারণকারী একটি টাপল। আরও তথ্যের জন্য প্যারামিটার সহ ফাংশনের ব্যবহার দেখুন।

def ready_block():
  # Stop the conveyor when Block is at the top
  conveyor_motor.stop()

def main():
  # Move the preloaded Block to the top of the Conveyor
  conveyor_motor.spin(FORWARD)
  optical.object_lost(ready_block)

# VR threads — Do not delete
vr_thread(main)

জিপিএস#

x_অবস্থান#

x_position মাঠে থাকা একটি GPS (গেম পজিশনিং সিস্টেম™) সেন্সরের বর্তমান x-স্থানাঙ্ক ফেরত দেয়।

Usage:
gps.x_position(units)

প্যারামিটার

বর্ণনা

ইউনিট

অফসেট মানের একক: INCHES বা MM

def main():
    # Pick up a second Block
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive(FORWARD)
    while not gps.x_position(MM) > -795:
        wait(2, MSEC)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

y_অবস্থান#

y_position মাঠে থাকা একটি GPS (গেম পজিশনিং সিস্টেম™) সেন্সরের বর্তমান y-স্থানাঙ্ক ফেরত দেয়।

Usage:
gps.y_position(units)

প্যারামিটার

বর্ণনা

ইউনিট

অফসেট মানের একক: INCHES বা MM

def main():
    # Pick up a second Block
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive(FORWARD)
    while not -450 > gps.y_position(MM):
        wait(2, MSEC)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

শিরোনাম#

heading , জিপিএস (গেম পজিশনিং সিস্টেম™) সেন্সরের ০ থেকে ৩৫৯ ডিগ্রি পর্যন্ত রিডিংয়ের উপর ভিত্তি করে রোবটটির বর্তমান অভিমুখ নির্দেশ করে।

Usage:
gps.heading()

প্যারামিটার

বর্ণনা

এই পদ্ধতিতে কোনো প্যারামিটার নেই।

def main():
    # Score the preloaded Block into a Center Goal
    drivetrain.set_turn_velocity(30, PERCENT)
    drivetrain.turn(LEFT)
    while not 40 > gps.heading():
        wait(2, MSEC)
    drivetrain.drive_for(FORWARD, 1000, MM)
    drivetrain.turn(RIGHT)
    while not gps.heading() > 310:
        wait(2, MSEC)
    drivetrain.drive_for(REVERSE, 400, MM)
    conveyor_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)