জড়তা সেন্সর#

ভূমিকা#

inertial ক্লাসটি একটি EXP ইনার্শিয়াল সেন্সর থেকে ডেটা নিয়ন্ত্রণ ও অ্যাক্সেস করতে ব্যবহৃত হয়। EXP ব্রেইনের বিল্ট-ইন ইনার্শিয়াল সেন্সর অথবা স্মার্ট পোর্টের সাথে সংযুক্ত একটি এক্সটার্নাল ইনার্শিয়াল সেন্সর ব্যবহার করতে পারে।

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

ক্লাস কনস্ট্রাক্টর#

inertial(
    int32_t  index,
    turnType dir = turnType::right );

ক্লাস ডেস্ট্রাক্টর#

inertial বস্তুটি ধ্বংস করে এবং সংশ্লিষ্ট সম্পদসমূহ মুক্ত করে।

~inertial();

প্যারামিটার#

প্যারামিটার

প্রকার

বর্ণনা

index

int32_t

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

dir

turnType

ঐচ্ছিক। যে দিকে মোড় নিলে ধনাত্মক মান পাওয়া যায়:

  • right (ডিফল্ট) — ডানে মোড় নিলে ধনাত্মক মান পাওয়া যায়।
  • left — বামে মোড় নিলে ধনাত্মক মান পাওয়া যায়।

উদাহরণ#

// Use the Brain's built-in Inertial Sensor.
inertial BrainInertial = inertial();

// Use an external Inertial Sensor connected to Port 1.
inertial Inertial1 = inertial(PORT1);

সদস্যদের কার্যাবলী#

inertial ক্লাসে নিম্নলিখিত মেম্বার ফাংশনগুলো অন্তর্ভুক্ত রয়েছে:

  • heading — সেন্সরটি যে দিকে মুখ করে আছে তা ফেরত দেয়।

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

  • setHeading — সেন্সরের বর্তমান হেডিং একটি নতুন হেডিং মানে সেট করে।

  • setRotation — সেন্সরের বর্তমান ঘূর্ণনকে একটি নতুন ঘূর্ণন মানে সেট করে।

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

  • resetHeading — সেন্সরের বর্তমান হেডিং 0 ডিগ্রিতে রিসেট করে।

  • resetRotation — সেন্সরের বর্তমান ঘূর্ণন 0 ডিগ্রিতে রিসেট করে।

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

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

  • installed — ইনার্শিয়াল সেন্সরটি ইনস্টল করা আছে কিনা তা ফেরত দেয়।

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

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

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

  • collision — সংঘর্ষ সনাক্ত হলে চালানোর জন্য একটি ফাংশন নিবন্ধন করে।

  • setTurnType — কোন বাঁকের দিক ধনাত্মক মান ফেরত দেবে তা নির্ধারণ করে।

  • getTurnType — কোন বাঁকের দিক ধনাত্মক মান তৈরি করে তা ফেরত দেয়।

যেকোনো inertial মেম্বার ফাংশন কল করার আগে, একটি inertial ইনস্ট্যান্স তৈরি করতে হবে, যেমনটি নিচে দেখানো হয়েছে:

/* This constructor is required when using VS Code.
Inertial Sensor configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */

// Use the Brain's built-in Inertial Sensor.
inertial BrainInertial = inertial();

heading#

ইনার্শিয়াল সেন্সরের বর্তমান হেডিং ফেরত দেয়।

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

Available Functions
double heading( rotationUnits units = degrees );

Parameters

প্যারামিটার

প্রকার

বর্ণনা

units

rotationUnits

হেডিং ইউনিট:

  • deg / degrees (ডিফল্ট) — ডিগ্রি
  • turns / rev — ঘূর্ণন

Return Values

নির্দিষ্ট এককে সেন্সরটির বর্তমান দিক নির্দেশ করে এমন একটি double রিটার্ন করে।

Notes
  • হেডিং মান 0 এবং 359.99 ডিগ্রির মধ্যে আবদ্ধ থাকে। অবিচ্ছিন্ন ঘূর্ণন মান অ্যাক্সেস করতে rotation ব্যবহার করুন।

Examples
// Turn, then show the current heading
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.heading(degrees));

rotation#

ইনার্শিয়াল সেন্সরের বর্তমান ঘূর্ণন ফেরত দেয়।

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

Available Functions
double rotation( rotationUnits units = degrees );

Parameters

প্যারামিটার

প্রকার

বর্ণনা

units

rotationUnits

ঘূর্ণন একক:

  • deg / degrees (ডিফল্ট) — ডিগ্রি
  • turns / rev — আবর্তন

Return Values

নির্দিষ্ট এককে বর্তমান ঘূর্ণন নির্দেশ করে এমন একটি double রিটার্ন করে।

Notes
  • ঘূর্ণন মান অবিচ্ছিন্ন এবং 0 এবং 359.99 ডিগ্রির মধ্যে পরিবর্তিত হয় না। পরিবর্তিত হেডিং মান অ্যাক্সেস করতে heading ব্যবহার করুন।

Examples
// Turn, then show the current rotation
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.rotation(degrees));

setHeading#

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

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

Available Functions
void setHeading( double value, rotationUnits units );

Parameters

প্যারামিটার

প্রকার

বর্ণনা

value

double

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

units

rotationUnits

The heading unit:

  • deg / degrees — degrees
  • turns / rev — revolutions

Return Values

এই ফাংশনটি কোনো মান ফেরত দেয় না।

Examples
// Turn the robot around
myInertial.setHeading(180, degrees);
Drivetrain.turnToHeading(0, degrees);

setRotation#

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

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

Available Functions
void setRotation( double value, rotationUnits units );

Parameters

প্যারামিটার

প্রকার

বর্ণনা

value

double

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

units

rotationUnits

The rotation unit:

  • deg / degrees — degrees
  • turns / rev — revolutions

Return Values

এই ফাংশনটি কোনো মান ফেরত দেয় না।

Examples
// Turn the robot around
myInertial.setRotation(-180, degrees);
Drivetrain.turnToRotation(0, degrees);

calibrate#

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

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

Available Functions
void calibrate( );

Parameters

এই ফাংশনটি কোনো প্যারামিটার গ্রহণ করে না।

Return Values

এই ফাংশনটি কোনো মান ফেরত দেয় না।

Notes
  • ক্যালিব্রেশন চলাকালীন সেন্সরটি স্থির থাকা উচিত।

  • ক্যালিব্রেশন কখন সম্পন্ন হয়েছে তা নির্ধারণ করতে isCalibrating ব্যবহার করুন।

resetHeading#

ইনার্শিয়াল সেন্সরের বর্তমান অভিমুখ ০ ডিগ্রিতে রিসেট করে।

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

Available Functions
void resetHeading();

Parameters

এই ফাংশনটি কোনো প্যারামিটার গ্রহণ করে না।

Return Values

এই ফাংশনটি কোনো মান ফেরত দেয় না।

resetRotation#

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

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

Available Functions
void resetRotation();

Parameters

এই ফাংশনটি কোনো প্যারামিটার গ্রহণ করে না।

Return Values

এই ফাংশনটি কোনো মান ফেরত দেয় না।

isCalibrating#

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

Available Functions
bool isCalibrating();

Parameters

এই ফাংশনটি কোনো প্যারামিটার গ্রহণ করে না।

Return Values

ইনার্শিয়াল সেন্সরটি ক্যালিব্রেট হচ্ছে কিনা তা নির্দেশ করে একটি বুলিয়ান মান ফেরত দেয়:

  • true — The sensor is currently calibrating.
  • false — The sensor is not currently calibrating.

changed#

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

Available Functions
void changed( void (* callback)(void) );

Parameters

প্যারামিটার

প্রকার

বর্ণনা

callback

void (*)(void)

একটি ফাংশনের পয়েন্টার যা হেডিং-এর মান পরিবর্তিত হলে কল করা হবে। ফাংশনটির কোনো প্যারামিটার থাকবে না এবং এটি void রিটার্ন করবে।

Return Values

এই ফাংশনটি কোনো মান ফেরত দেয় না।

Examples

কলব্যাক ফাংশনটি সংজ্ঞায়িত করুন ( int main() এর বাইরে)

// Called when the inertial sensor's heading value changes
void onHeadingChanged() {
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.print("Heading: %.2f", myInertial.heading());
}

int main() এর ভিতরে কলব্যাকটি নিবন্ধন করুন

/* vexcodeInit() is only required when using VEXcode.
Remove vexcodeInit() if compiling in VS Code. */
int main() {

  // Turn the robot by hand briefly
  // to change the robot's heading
  myInertial.changed(onHeadingChanged);
}

installed#

ইনার্শিয়াল সেন্সরটি ইনস্টল ও সংযুক্ত আছে কিনা তা জানায়।

Available Functions
bool installed();

Parameters

এই ফাংশনটি কোনো প্যারামিটার গ্রহণ করে না।

Return Values

ইনার্শিয়াল সেন্সরটি ইনস্টল এবং সংযুক্ত আছে কিনা তা নির্দেশ করে একটি বুলিয়ান মান প্রদান করে:

  • true — The sensor is connected and responding.
  • false — The sensor is not connected or not detected.

acceleration#

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

A G হলো ত্বরণ পরিমাপের একটি একক। স্থিরভাবে বসে থাকার সময় অভিকর্ষের কারণে আপনি যে ত্বরণ অনুভব করেন, তা প্রায় ১ G। নির্বাচিত অক্ষে ত্বরণের দিকের উপর নির্ভর করে এর মান ধনাত্মক বা ঋণাত্মক হতে পারে।

Available Functions
double acceleration( axisType axis );

Parameters

প্যারামিটার

প্রকার

বর্ণনা

axis

axisType

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

  • xaxis
  • yaxis
  • zaxis

Return Values

নির্দিষ্ট অক্ষ বরাবর ত্বরণকে G (মহাকর্ষীয় একক)-এ প্রকাশ করে একটি double রিটার্ন করে।

Notes
  • ত্বরণের মান G এককে প্রকাশ করা হয়।

gyroRate#

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

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

Available Functions
double gyroRate( axisType axis, velocityUnits units );

Parameters

প্যারামিটার

প্রকার

বর্ণনা

axis

axisType

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

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

জাইরো রেটের একক:

  • dps — ডিগ্রি প্রতি সেকেন্ড
  • rpm — ঘূর্ণন প্রতি মিনিট

Return Values

নির্বাচিত এককে, নির্দিষ্ট অক্ষ বরাবর বর্তমান ঘূর্ণন গতি নির্দেশ করে একটি double রিটার্ন করে।

Examples
// Display the rate of change of rotation while turning in dps
Drivetrain.turn(right);
wait(1, seconds);

Brain.Screen.print(myInertial.gyroRate(zaxis, dps));

Drivetrain.stop();

orientation#

ওরিয়েন্টেশন হলো একটি নির্বাচিত অক্ষের উপর ইনার্শিয়াল সেন্সরের বর্তমান কোণ। এই ফাংশনটি ইনার্শিয়াল সেন্সরের ওরিয়েন্টেশন ফেরত দেয়, যার মান -১৮০.০০ থেকে ১৮০.০০ ডিগ্রির মধ্যে থাকে।

নির্বাচিত x-, y-, বা z-অক্ষটি সেন্সরটির অভিমুখীকরণ অক্ষগুলোর একটির সাথে সঙ্গতিপূর্ণ।

Available Functions
double orientation(
  axisType      axis,
  rotationUnits units );

Parameters

প্যারামিটার

প্রকার

বর্ণনা

axis

axisType

যে অক্ষের অভিমুখ ফেরত দেওয়া হয়:

  • xaxis
  • yaxis
  • zaxis

units

rotationUnits

The rotation unit:

  • deg / degrees — degrees
  • turns / rev — revolutions

Return Values

নির্দিষ্ট এককে নির্বাচিত অভিমুখীকরণ কোণকে প্রতিনিধিত্বকারী একটি double রিটার্ন করে।

Examples
while (true) {
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1,1);
  // Show the Inertial Sensor's orientation value
  // for roll in degrees
  double orient = myInertial.orientation(xaxis, deg);
  Brain.Screen.print("%f", orient);
  wait(0.1, seconds);
}

collision#

একটি কলব্যাক ফাংশন রেজিস্টার করে, যা ইনার্শিয়াল সেন্সর কোনো আকস্মিক ধাক্কা বা সংঘর্ষ শনাক্ত করলে চালু হয়।

Available Functions
void collision( void (* callback)(axisType, double, double, double) );

Parameters

প্যারামিটার

প্রকার

বর্ণনা

callback

void (*)(axisType, double, double, double)

একটি ফাংশনের পয়েন্টার যা সংঘর্ষ শনাক্ত হলে কল করা হবে। কলব্যাক ফাংশনটিকে অবশ্যই নিম্নলিখিত প্যারামিটারগুলো গ্রহণ করতে হবে:

  • axisType — যে অক্ষে সংঘর্ষটি শনাক্ত করা হয়েছে।
  • সংঘর্ষের সময়কার ত্বরণের মান, ক্রমানুসারে:
    • double — x-অক্ষ বরাবর ত্বরণ (G এককে)।
    • double — y-অক্ষ বরাবর ত্বরণ (G এককে)।
    • double — z-অক্ষ বরাবর ত্বরণ (G এককে)।
ফাংশনটিকে অবশ্যই void রিটার্ন করতে হবে।

Return Values

এই ফাংশনটি কোনো মান ফেরত দেয় না।

Examples

কলব্যাক ফাংশনটি সংজ্ঞায়িত করুন ( int main() এর বাইরে)

// Called when the Inertial Sensor detects a collision
void onCollision(axisType axis, double x, double y, double z) {
  Brain.Screen.print("Collision detected!");
}

int main() এর ভিতরে কলব্যাকটি নিবন্ধন করুন

/* vexcodeInit() is only required when using VEXcode.
Remove vexcodeInit() if compiling in VS Code. */
int main() {

  // Firmly move the robot by hand briefly to simulate
  // a collision and call the onCollision function
  myInertial.collision(onCollision);
}

setTurnType#

যে সেটগুলো দিক পরিবর্তনের ক্ষেত্রে ধনাত্মক মান প্রদান করে।

Available Functions
void setTurnType( turnType dir );

Parameters

প্যারামিটার

প্রকার

বর্ণনা

dir

turnType

যে দিকটি ধনাত্মক মান প্রদান করে:

  • right
  • left

Return Values

এই ফাংশনটি কোনো মান ফেরত দেয় না।

Notes
  • এই সেটিংটি heading এবং rotation কীভাবে ধনাত্মক এবং ঋণাত্মক মান রিপোর্ট করে তা প্রভাবিত করে।

  • এই ফাংশনটি কল করলে inertial বস্তুটি তৈরি করার সময় নির্দিষ্ট করা dir মানটি ওভাররাইড হয়ে যায়।

getTurnType#

যেসব রিটার্নের দিক পরিবর্তন হয়, সেগুলো ধনাত্মক মান উৎপন্ন করে।

Available Functions
turnType getTurnType();

Parameters

এই ফাংশনটি কোনো প্যারামিটার গ্রহণ করে না।

Return Values

কোন দিকটি ধনাত্মক মান তৈরি করে তা নির্দেশ করে একটি turnType রিটার্ন করে:

  • right — Clockwise rotation returns positive values.
  • left — Counterclockwise rotation returns positive values.
Notes