জড়তা#

ভূমিকা#

IQ (২য় প্রজন্ম) ব্রেন-এ একটি অন্তর্নির্মিত ইনার্শিয়াল সেন্সর রয়েছে। এই সেন্সরটি পরিমাপ করে যে মস্তিষ্ক কীভাবে নড়াচড়া করছে এবং ঘুরছে।

ইনার্শিয়াল সেন্সর এই কাজটি করার জন্য দুটি অংশ ব্যবহার করে। জাইরোস্কোপ দিক পরিবর্তন পরিমাপ করে, যেমন—দিক, ঘূর্ণন, জাইরো রেট এবং অভিমুখ। অ্যাক্সেলেরোমিটার x-, y-, এবং z-অক্ষ বরাবর গতির পরিবর্তন পরিমাপ করে, যেমন—গতি বৃদ্ধি বা হ্রাস।

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

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

অভিমুখীকরণ — দিক, ঘূর্ণন এবং সেন্সর ক্রমাঙ্কন পড়ুন ও নিয়ন্ত্রণ করুন।

  • heading — সেন্সরটি যে দিকে মুখ করে আছে তা ফেরত দেয়, 0 থেকে 359.99 ডিগ্রির মধ্যে।

  • rotation — সেন্সরটি কতটুকু ঘুরেছে তা ফেরত দেয়।

  • calibrate — ইনার্শিয়াল সেন্সর ক্যালিব্রেট করে।

  • set_heading — ইনার্শিয়াল সেন্সরের বর্তমান হেডিং একটি নতুন হেডিং মানে সেট করে।

  • set_rotation — ইনার্শিয়াল সেন্সরের বর্তমান ঘূর্ণনকে একটি নতুন ঘূর্ণন মানে সেট করে।

  • is_calibrating — ইনার্শিয়াল সেন্সরটি বর্তমানে ক্যালিব্রেট হচ্ছে কিনা তা ফেরত দেয়।

  • reset_heading — ইনার্শিয়াল সেন্সরের বর্তমান হেডিং 0 ডিগ্রিতে রিসেট করে।

  • reset_rotation — ইনার্শিয়াল সেন্সরের বর্তমান ঘূর্ণন 0 ডিগ্রিতে রিসেট করে।

  • changed — ইনার্শিয়াল সেন্সরের হেডিং পরিবর্তিত হলে চালানোর জন্য একটি ফাংশন নিবন্ধন করে।

গতি — ত্বরণ, ঘূর্ণন গতি এবং আনতি পরিমাপ করুন।

  • acceleration — নির্বাচিত অক্ষে সেন্সরটি কত দ্রুত গতি বাড়াচ্ছে বা কমাচ্ছে তা ফেরত দেয়।

  • gyro_rate — নির্বাচিত অক্ষে সেন্সরটি কত দ্রুত ঘুরছে তা ফেরত দেয়।

  • orientation — ইনার্শিয়াল সেন্সরের রোল, পিচ, বা ইয়ো কোণ ফেরত দেয়।

কনস্ট্রাক্টর — ম্যানুয়ালি একটি ইনার্শিয়াল সেন্সর ইনিশিয়ালাইজ এবং কনফিগার করুন।

  • Inertial — একটি ইনার্শিয়াল সেন্সর তৈরি করে।

অভিমুখীকরণ#

heading#

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

প্রাথমিক অভিমুখ ০ ডিগ্রি। যদি সেন্সরটি ৩৫৯.৯৯ ডিগ্রি অতিক্রম করে ঘোরে, তবে অভিমুখটি আবার ০ ডিগ্রিতে ফিরে আসে।

Usage:
brain_inertial.heading(units)

প্যারামিটার

বর্ণনা

units

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

# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.heading())

rotation#

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

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

Usage:
brain_inertial.rotation(units)

প্যারামিটার

বর্ণনা

units

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

# Display the rotation value after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.rotation())

calibrate#

calibrate ইনার্শিয়াল সেন্সর ক্যালিব্রেট করে। পরবর্তী সমস্ত লাইন চালানোর আগে ক্যালিব্রেশন সম্পূর্ণ হওয়ার জন্য অপেক্ষা করবে। ক্যালিব্রেশন একটি নির্দিষ্ট সময় ধরে সেন্সরের নয়েজ এবং ড্রিফট পরিমাপ ও ক্ষতিপূরণ করে সেন্সরকে সঠিকভাবে বাঁক পরিমাপ করতে সাহায্য করে। এই সময়ে, ব্রেন অবশ্যই একটি স্থিতিশীল পৃষ্ঠে সম্পূর্ণ স্থির থাকতে হবে। ক্যালিব্রেশনের সময় নড়াচড়া করলে ভুল ফলাফল আসতে পারে।

ডানদিকে কাত করা স্ক্রিনসহ আইকিউ ব্রেইন, যেখানে x, y, এবং z অক্ষগুলো স্ক্রিনের কেন্দ্র থেকে বাইরের দিকে প্রসারিত তীরচিহ্ন দ্বারা নির্দেশিত। x লেবেলযুক্ত একটি লাল তীরচিহ্ন ডানদিকে নির্দেশ করে, y লেবেলযুক্ত একটি সবুজ তীরচিহ্ন সামনের দিকে প্রসারিত, এবং z লেবেলযুক্ত একটি নীল তীরচিহ্ন নিচের দিকে নির্দেশ করে।আগের ছবিটির মতোই একই ছবি, তবে এবার মস্তিষ্কের স্ক্রিনটি বাম দিকে কাত করা এবং x, y, z তীরচিহ্নগুলো তাদের দিক অপরিবর্তিত রাখছে।আগের ছবিটির মতোই একই ছবি, তবে এবার মস্তিষ্কের স্ক্রিনটি ওপরের দিকে মুখ করে আছে, যেন কোনো সমতল পৃষ্ঠের ওপর রাখা। এর x, y, z অভিমুখ একই।

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

Usage:
brain_inertial.calibrate()

প্যারামিটার

বর্ণনা

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

# Start calibration
brain_inertial.calibrate()
# Print after calibration
while brain_inertial.is_calibrating():
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    brain.screen.print("Inertial Sensor")
    brain.screen.next_row()
    brain.screen.print("Calibrating")
    wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")

set_heading#

হেডিং হলো সেন্সরটির অভিমুখ, যা ০ থেকে ৩৫৯.৯৯ ডিগ্রির মধ্যে পরিমাপ করা হয়। set_heading() set_heading() ইনার্শিয়াল সেন্সরের বর্তমান হেডিংকে একটি নতুন হেডিং মানে পরিবর্তন করে।

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

Usage:
brain_inertial.set_heading(value, units)

প্যারামিটার

বর্ণনা

value

সেন্সরের জন্য নির্ধারিত হেডিং ভ্যালু, ডিগ্রিতে। এর মান ০ থেকে ৩৫৯.৯৯-এর মধ্যে হতে পারে।

units

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

# Turn the robot around
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)

set_rotation#

রোটেশন হলো সেন্সরটি কতটা ঘুরেছে, যা ডিগ্রিতে পরিমাপ করা হয়। হেডিং-এর মতো নয়, রোটেশন ৩৫৯.৯৯ ডিগ্রির বেশি বাড়তে পারে বা ০ ডিগ্রির নিচে কমতে পারে। একটি প্রজেক্টের শুরুতে, রোটেশনের মান ০ ডিগ্রিতে সেট করা থাকে। set_rotation() ইনার্শিয়াল সেন্সরের বর্তমান রোটেশনকে একটি নতুন মানে পরিবর্তন করে।

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

Usage:
brain_inertial.set_rotation(value, units)

প্যারামিটার

বর্ণনা

value

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

units

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

# Turn the robot around
brain_inertial.set_rotation(-180)
drivetrain.turn_to_rotation(0)

is_calibrating#

is_calibrating রিটার্ন করে যে ইনার্শিয়াল সেন্সরটি বর্তমানে ক্যালিব্রেট হচ্ছে কিনা।

  • True — ইনার্শিয়াল সেন্সরটি ক্যালিব্রেট করা হচ্ছে।

  • False — ইনার্শিয়াল সেন্সরটি ক্যালিব্রেট হচ্ছে না।

Usage:
brain_inertial.is_calibrating()

প্যারামিটার

বর্ণনা

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

# Start calibration
brain_inertial.calibrate()
# Print while waiting for calibration
while brain_inertial.is_calibrating():
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    brain.screen.print("Inertial Sensor")
    brain.screen.next_row()
    brain.screen.print("Calibrating")
    wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")

reset_heading#

reset_heading ইনার্শিয়াল সেন্সরের বর্তমান হেডিং ০ ডিগ্রিতে রিসেট করে।

এই পদ্ধতিটি ব্যবহার করার পর, সেন্সরটির বর্তমান অভিমুখ নতুন ০ ডিগ্রি অভিমুখ হয়ে যায়।

Usage:
brain_inertial.reset_heading()

প্যারামিটার

বর্ণনা

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

# Turn the robot before and after resetting the heading
drivetrain.turn_to_heading(90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_heading()
drivetrain.turn_to_heading(90, DEGREES)

reset_rotation#

reset_rotation ইনার্শিয়াল সেন্সরের বর্তমান ঘূর্ণনকে ০ ডিগ্রিতে রিসেট করে।

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

Usage:
brain_inertial.reset_rotation()

প্যারামিটার

বর্ণনা

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

# Turn the robot before and after resetting the rotation
drivetrain.turn_to_rotation(-90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_rotation()
drivetrain.turn_to_rotation(-90, DEGREES)

changed#

changed একটি ফাংশন রেজিস্টার করে যা ইনার্শিয়াল সেন্সরের হেডিং পরিবর্তিত হলে কল করা হবে।

Usage:
brain_inertial.changed(callback, arg)

প্যারামিটার

বর্ণনা

callback

একটি ফাংশন যা ইনার্শিয়াল সেন্সরের হেডিং পরিবর্তিত হলে চলে।

arg

ঐচ্ছিক। কলব্যাক ফাংশনে পাঠানোর জন্য আর্গুমেন্টের একটি টাপল।

def heading_changed():
    brain.screen.set_cursor(1, 1)
    brain.screen.clear_screen()
    brain.screen.print("my heading ")
    brain.screen.next_row()
    brain.screen.print("has changed!")
    wait(0.1, SECONDS)
# Call the function when the inertial heading is changed
wait(1, SECONDS)
drivetrain.turn_for(RIGHT, 90, DEGREES, wait=False)
brain_inertial.changed(heading_changed)
wait(15, MSEC)

গতি#

acceleration#

ত্বরণ হলো সেন্সরটি কত দ্রুত গতি বাড়াচ্ছে বা কমাচ্ছে। acceleration ত্বরণ নির্বাচিত অক্ষে ইনার্শিয়াল সেন্সরের ত্বরণকে -৪.০ G থেকে ৪.০ G পর্যন্ত একটি ফ্লোট মান হিসেবে ফেরত দেয়।

G প্রায় ১ G।

নির্বাচিত অক্ষে ত্বরণের দিকের উপর নির্ভর করে মানটি ধনাত্মক বা ঋণাত্মক হতে পারে। অক্ষের বিকল্পগুলি হলো XAXIS, YAXIS, এবং ZAXIS।

Usage:
brain_inertial.acceleration(axis)

প্যারামিটার

বর্ণনা

অক্ষ

যে অক্ষের উপর ত্বরণ পরিমাপ করা হবে:

  • XAXIS
  • YAXIS
  • ZAXIS

# Display acceleration after moving
vexcode_brain_precision = 2
drivetrain.set_drive_velocity(100, PERCENT)
brain.screen.print("Resting: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))
brain.screen.next_row()
wait(1, SECONDS)
drivetrain.drive_for(FORWARD, 500, MM, wait=False)
wait(0.01, SECONDS)
brain.screen.print("Startup: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))

gyro_rate#

জাইরো রেট হলো ইনার্শিয়াল সেন্সরটির ঘূর্ণনের গতি। gyro_rate নির্বাচিত অক্ষে ইনার্শিয়াল সেন্সরটির বর্তমান ঘূর্ণন গতি ফেরত দেয়।

ঐ অক্ষ বরাবর সেন্সরটি যে দিকে ঘুরছে, তার উপর নির্ভর করে মানটি ধনাত্মক বা ঋণাত্মক হতে পারে।

Usage:
brain_inertial.gyro_rate(axis, units)

প্যারামিটার

বর্ণনা

axis

যে অক্ষ থেকে জাইরো রেট পাওয়া যাবে:

  • XAXIS
  • YAXIS
  • ZAXIS

units

ঐচ্ছিক। জাইরো রেটের একক:

  • DPS (ডিফল্ট) — ডিগ্রি প্রতি সেকেন্ড
  • RPM — ঘূর্ণন প্রতি মিনিট
  • PERCENT

# Display the z-axis gyro rate
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(brain_inertial.gyro_rate(ZAXIS, RPM))
drivetrain.stop()

orientation#

ওরিয়েন্টেশন হলো একটি নির্বাচিত ঘূর্ণন অক্ষে ইনার্শিয়াল সেন্সরের বর্তমান কোণ। ওরিয়েন্টেশন orientation ইনার্শিয়াল সেন্সরের রোল, পিচ বা ইয়ো ফেরত দেয়।

রোল, পিচ এবং ইয়ো সেন্সরটির কাত হওয়া বা ঘোরার বিভিন্ন উপায়কে বর্ণনা করে।

Usage:
brain_inertial.orientation(axis, units)

প্যারামিটার

বর্ণনা

axis

The orientation angle to return:

  • ROLL
  • PITCH
  • YAW

units

ঐচ্ছিক। অভিমুখের একক: DEGREES (ডিফল্ট) অথবা TURNS

# Display the roll, pitch, and yaw of the Brain as it
# is rotated by hand
while True:
    brain.screen.clear_screen()
    brain.screen.print(brain_inertial.orientation(OrientationType.ROLL))
    brain.screen.next_row()
    brain.screen.print(brain_inertial.orientation(OrientationType.PITCH))
    brain.screen.next_row()
    brain.screen.print(brain_inertial.orientation(OrientationType.YAW))
    brain.screen.next_row()
    brain.screen.set_cursor(1, 1)
    wait(0.1, SECONDS)

নির্মাণকারী#

কনস্ট্রাক্টর ব্যবহার করা হয় ম্যানুয়ালি Inertial অবজেক্ট তৈরি করার জন্য, যেমন VEXcode-এর বাইরে কোনো ইনার্শিয়াল সেন্সর কনফিগার করার সময়।

Inertial#

Inertial একটি ইনার্শিয়াল সেন্সর তৈরি করে।

Usage:
Inertial(smartport)

প্যারামিটার

বর্ণনা

smartport

ঐচ্ছিক। যদি IQ (২য় প্রজন্ম) ব্রেইন এর অন্তর্নির্মিত ইনার্শিয়াল সেন্সর ব্যবহার করা হয়, তাহলে স্মার্ট পোর্টের প্রয়োজন নেই। যদি একটি বাহ্যিক ইনার্শিয়াল সেন্সর সংযোগ করতে হয়, তাহলে ইনার্শিয়াল সেন্সরটি যে স্মার্ট পোর্টের সাথে সংযুক্ত আছে তা উল্লেখ করুন, যা PORTxহিসাবে লেখা হয়, যেখানে x হল পোর্ট নম্বর।

# Create a new object "brain_inertial" with the
# Inertial class
brain_inertial = Inertial()
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT6, 1.0, True)

drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)

brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)