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

ভূমিকা#

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

ড্রাইভট্রেন কোড করার অনেক উপায় আছে। নিচে সমস্ত ড্রাইভট্রেন পদ্ধতির একটি তালিকা দেওয়া হলো:

ক্রিয়াকলাপ — রোবটটিকে চালনা ও ঘোরানো।

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

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

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

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

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

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

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

মিউটেটর — ড্রাইভট্রেইন সেটিংস সমন্বয় করুন।

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

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

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

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

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

গেটার্স — ড্রাইভট্রেনের অবস্থা পরীক্ষা করুন।

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

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

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

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

কর্ম#

drive#

ড্রাইভ 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#

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#

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#

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#

হেডিং হলো রোবটের অভিমুখ, যা ডিগ্রিতে পরিমাপ করা হয়। 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#

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#

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#

হেডিং হলো রোবটের অভিমুখ, যা ডিগ্রিতে পরিমাপ করা হয়। 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#

রোবটটি কতটা ঘুরেছে, তাকেই রোটেশন বলা হয়, যা ডিগ্রিতে পরিমাপ করা হয়। একটি প্রোজেক্টের শুরুতে, রোটেশনের মান ০ ডিগ্রিতে সেট করা থাকে। 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#

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#

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 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#

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

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

Usage:
drivetrain.heading(units)

প্যারামিটার

বর্ণনা

units

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

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

# VR threads — Do not delete
vr_thread(main)

rotation#

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

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

Usage:
drivetrain.rotation(units)

প্যারামিটার

বর্ণনা

units

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

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

# VR threads — Do not delete
vr_thread(main)

is_done#

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

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

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

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

Usage:
drivetrain.is_done()

প্যারামিটার

বর্ণনা

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

is_moving#

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

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

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

Usage:
drivetrain.is_moving()

প্যারামিটার

বর্ণনা

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