জড়তা সেন্সর#
ভূমিকা#
inertial ক্লাসটি একটি EXP ইনার্শিয়াল সেন্সর থেকে ডেটা নিয়ন্ত্রণ ও অ্যাক্সেস করতে ব্যবহৃত হয়। EXP ব্রেইনের বিল্ট-ইন ইনার্শিয়াল সেন্সর অথবা স্মার্ট পোর্টের সাথে সংযুক্ত একটি এক্সটার্নাল ইনার্শিয়াল সেন্সর ব্যবহার করতে পারে।
একটি ইনার্শিয়াল সেন্সর রোবটটির গতিবিধি ও ঘূর্ণন পরিমাপ করে। জাইরোস্কোপ ঘূর্ণন পরিমাপ করে, যেমন—দিক, ঘূর্ণন, জাইরো রেট এবং অভিমুখ। অ্যাক্সেলেরোমিটার গতির পরিবর্তন পরিমাপ করে, যেমন—x-, y-, এবং z-অক্ষ বরাবর গতি বৃদ্ধি বা হ্রাস।
ক্লাস কনস্ট্রাক্টর#
inertial(
int32_t index,
turnType dir = turnType::right );
ক্লাস ডেস্ট্রাক্টর#
inertial বস্তুটি ধ্বংস করে এবং সংশ্লিষ্ট সম্পদসমূহ মুক্ত করে।
~inertial();
প্যারামিটার#
প্যারামিটার |
প্রকার |
বর্ণনা |
|---|---|---|
|
|
ঐচ্ছিক। যে স্মার্ট পোর্টে একটি বাহ্যিক ইনার্শিয়াল সেন্সর সংযুক্ত থাকে, তা |
|
|
ঐচ্ছিক। যে দিকে মোড় নিলে ধনাত্মক মান পাওয়া যায়:
|
উদাহরণ#
// 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 Functionsdouble heading( rotationUnits units = degrees );
প্যারামিটার |
প্রকার |
বর্ণনা |
|---|---|---|
|
|
হেডিং ইউনিট:
|
নির্দিষ্ট এককে সেন্সরটির বর্তমান দিক নির্দেশ করে এমন একটি double রিটার্ন করে।
হেডিং মান 0 এবং 359.99 ডিগ্রির মধ্যে আবদ্ধ থাকে। অবিচ্ছিন্ন ঘূর্ণন মান অ্যাক্সেস করতে
rotationব্যবহার করুন।
// Turn, then show the current heading
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.heading(degrees));
rotation#
ইনার্শিয়াল সেন্সরের বর্তমান ঘূর্ণন ফেরত দেয়।
ঘূর্ণন হলো সেন্সরটি কতটা ঘুরেছে। হেডিং-এর মতো নয়, ঘূর্ণন ৩৫৯.৯৯ ডিগ্রির বেশি বা ০ ডিগ্রির নিচে কমতে পারে। উদাহরণস্বরূপ, ডানদিকে দুটি পূর্ণ ঘূর্ণনের ফলে ৭২০ ডিগ্রি ঘূর্ণন হয়। ০ ডিগ্রি থেকে বামদিকে একটি পূর্ণ ঘূর্ণনের ফলে -৩৬০ ডিগ্রি ঘূর্ণন হয়।
Available Functionsdouble rotation( rotationUnits units = degrees );
প্যারামিটার |
প্রকার |
বর্ণনা |
|---|---|---|
|
|
ঘূর্ণন একক:
|
নির্দিষ্ট এককে বর্তমান ঘূর্ণন নির্দেশ করে এমন একটি double রিটার্ন করে।
ঘূর্ণন মান অবিচ্ছিন্ন এবং 0 এবং 359.99 ডিগ্রির মধ্যে পরিবর্তিত হয় না। পরিবর্তিত হেডিং মান অ্যাক্সেস করতে
headingব্যবহার করুন।
// Turn, then show the current rotation
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.rotation(degrees));
setHeading#
হেডিং হলো সেন্সরটির অভিমুখ, যা ০ থেকে ৩৫৯.৯৯ ডিগ্রির মধ্যে পরিমাপ করা হয়। এই ফাংশনটি ইনার্শিয়াল সেন্সরের বর্তমান হেডিং পরিবর্তন করে একটি নতুন হেডিং মানে সেট করে দেয়।
উদাহরণস্বরূপ, যদি সেন্সরটি ডানদিকে ঘুরে যায়, তাহলে হেডিং ০ ডিগ্রিতে সেট করলে সেই ডানমুখী অবস্থানটিই নতুন ০ ডিগ্রি হয়ে যায়। এরপর সেন্সরটি সেই নতুন দিকের ওপর ভিত্তি করে অন্যান্য হেডিং ট্র্যাক করতে পারে।
Available Functionsvoid setHeading( double value, rotationUnits units );
প্যারামিটার |
প্রকার |
বর্ণনা |
|---|---|---|
|
|
সেন্সরের জন্য নির্ধারিত হেডিং ভ্যালু, ডিগ্রিতে। এর মান ০ থেকে ৩৫৯.৯৯-এর মধ্যে হতে পারে। |
|
|
The heading unit:
|
এই ফাংশনটি কোনো মান ফেরত দেয় না।
Examples// Turn the robot around
myInertial.setHeading(180, degrees);
Drivetrain.turnToHeading(0, degrees);
setRotation#
রোটেশন হলো সেন্সরটির ঘোরার পরিমাণ, যা ডিগ্রিতে পরিমাপ করা হয়। হেডিং-এর মতো নয়, রোটেশন ৩৫৯.৯৯ ডিগ্রির বেশি বা ০ ডিগ্রির নিচে কমতে পারে। একটি প্রজেক্টের শুরুতে, রোটেশনের মান ০ ডিগ্রিতে সেট করা থাকে। এই ফাংশনটি ইনার্শিয়াল সেন্সরের বর্তমান রোটেশনকে একটি নতুন মানে পরিবর্তন করে।
উদাহরণস্বরূপ, যদি সেন্সরটি ডানদিকে দুটি পূর্ণ ঘূর্ণন সম্পন্ন করে, তবে এর ঘূর্ণন মান হবে ৭২০ ডিগ্রি। ঘূর্ণন মান ০ ডিগ্রিতে সেট করলে, তা ৭২০ থেকে ০ ডিগ্রিতে রিসেট হয়ে যাবে। এরপর সেন্সরটি সেই নতুন মানের উপর ভিত্তি করে ঘূর্ণন ট্র্যাক করতে পারবে।
Available Functionsvoid setRotation( double value, rotationUnits units );
প্যারামিটার |
প্রকার |
বর্ণনা |
|---|---|---|
|
|
সেন্সরের জন্য ঘূর্ণনের মান, ডিগ্রিতে, নির্ধারণ করতে হবে। এটি একটি পূর্ণসংখ্যা বা দশমিক সংখ্যা হতে পারে। |
|
|
The rotation unit:
|
এই ফাংশনটি কোনো মান ফেরত দেয় না।
Examples// Turn the robot around
myInertial.setRotation(-180, degrees);
Drivetrain.turnToRotation(0, degrees);
calibrate#
ইনার্শিয়াল সেন্সরটি ক্যালিব্রেট করে।
ক্যালিব্রেশন সেন্সরকে সঠিকভাবে বাঁক পরিমাপ করতে সাহায্য করে। ক্যালিব্রেশনের সময় সেন্সরটি স্থির রাখুন। ক্যালিব্রেশনের সময় সেন্সরটি নড়ে গেলে হেডিং, রোটেশন, জাইরো রেট এবং ওরিয়েন্টেশনের মান সঠিকভাবে পরিমাপ নাও হতে পারে।
Available Functionsvoid calibrate( );
এই ফাংশনটি কোনো প্যারামিটার গ্রহণ করে না।
Return Valuesএই ফাংশনটি কোনো মান ফেরত দেয় না।
Notesক্যালিব্রেশন চলাকালীন সেন্সরটি স্থির থাকা উচিত।
ক্যালিব্রেশন কখন সম্পন্ন হয়েছে তা নির্ধারণ করতে
isCalibratingব্যবহার করুন।
resetHeading#
ইনার্শিয়াল সেন্সরের বর্তমান অভিমুখ ০ ডিগ্রিতে রিসেট করে।
এই ফাংশনটি ব্যবহার করার পর, সেন্সরটির বর্তমান দিক নতুন ০ ডিগ্রি অভিমুখে পরিণত হয়।
Available Functionsvoid resetHeading();
এই ফাংশনটি কোনো প্যারামিটার গ্রহণ করে না।
Return Valuesএই ফাংশনটি কোনো মান ফেরত দেয় না।
resetRotation#
ইনার্শিয়াল সেন্সরের বর্তমান ঘূর্ণন ০ ডিগ্রিতে রিসেট করে।
এই ফাংশনটি ব্যবহার করার পর, সেন্সরটি নতুন ০ ডিগ্রি ঘূর্ণন মান থেকে ভবিষ্যতের বাঁকগুলো ট্র্যাক করে।
Available Functionsvoid resetRotation();
এই ফাংশনটি কোনো প্যারামিটার গ্রহণ করে না।
Return Valuesএই ফাংশনটি কোনো মান ফেরত দেয় না।
isCalibrating#
ইনার্শিয়াল সেন্সরটি বর্তমানে ক্যালিব্রেট হচ্ছে কিনা তা ফেরত দেয়।
Available Functionsbool isCalibrating();
এই ফাংশনটি কোনো প্যারামিটার গ্রহণ করে না।
Return Valuesইনার্শিয়াল সেন্সরটি ক্যালিব্রেট হচ্ছে কিনা তা নির্দেশ করে একটি বুলিয়ান মান ফেরত দেয়:
-
true— The sensor is currently calibrating. -
false— The sensor is not currently calibrating.
changed#
একটি কলব্যাক ফাংশন রেজিস্টার করে যা ইনার্শিয়াল সেন্সরের হেডিং মান পরিবর্তিত হলে রান করে।
Available Functionsvoid changed( void (* callback)(void) );
প্যারামিটার |
প্রকার |
বর্ণনা |
|---|---|---|
|
|
একটি ফাংশনের পয়েন্টার যা হেডিং-এর মান পরিবর্তিত হলে কল করা হবে। ফাংশনটির কোনো প্যারামিটার থাকবে না এবং এটি |
এই ফাংশনটি কোনো মান ফেরত দেয় না।
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 Functionsbool installed();
এই ফাংশনটি কোনো প্যারামিটার গ্রহণ করে না।
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। নির্বাচিত অক্ষে ত্বরণের দিকের উপর নির্ভর করে এর মান ধনাত্মক বা ঋণাত্মক হতে পারে।
double acceleration( axisType axis );
প্যারামিটার |
প্রকার |
বর্ণনা |
|---|---|---|
|
|
ত্বরণ পরিমাপের অক্ষ:
|
নির্দিষ্ট অক্ষ বরাবর ত্বরণকে G (মহাকর্ষীয় একক)-এ প্রকাশ করে একটি double রিটার্ন করে।
ত্বরণের মান
Gএককে প্রকাশ করা হয়।
gyroRate#
জাইরো রেট হলো ইনার্শিয়াল সেন্সরটির ঘূর্ণনের গতি। এই ফাংশনটি নির্বাচিত অক্ষে ইনার্শিয়াল সেন্সরটির বর্তমান ঘূর্ণন গতি ফেরত দেয়।
ঐ অক্ষ বরাবর সেন্সরটি যে দিকে ঘুরছে, তার উপর নির্ভর করে মানটি ধনাত্মক বা ঋণাত্মক হতে পারে।
Available Functionsdouble gyroRate( axisType axis, velocityUnits units );
প্যারামিটার |
প্রকার |
বর্ণনা |
|---|---|---|
|
|
যে অক্ষ থেকে জাইরো রেট পাওয়া যাবে:
|
|
|
জাইরো রেটের একক:
|
নির্বাচিত এককে, নির্দিষ্ট অক্ষ বরাবর বর্তমান ঘূর্ণন গতি নির্দেশ করে একটি double রিটার্ন করে।
// 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 Functionsdouble orientation(
axisType axis,
rotationUnits units );
প্যারামিটার |
প্রকার |
বর্ণনা |
|---|---|---|
|
|
যে অক্ষের অভিমুখ ফেরত দেওয়া হয়:
|
|
|
The rotation unit:
|
নির্দিষ্ট এককে নির্বাচিত অভিমুখীকরণ কোণকে প্রতিনিধিত্বকারী একটি double রিটার্ন করে।
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 Functionsvoid collision( void (* callback)(axisType, double, double, double) );
প্যারামিটার |
প্রকার |
বর্ণনা |
|---|---|---|
|
|
একটি ফাংশনের পয়েন্টার যা সংঘর্ষ শনাক্ত হলে কল করা হবে। কলব্যাক ফাংশনটিকে অবশ্যই নিম্নলিখিত প্যারামিটারগুলো গ্রহণ করতে হবে:
void রিটার্ন করতে হবে। |
এই ফাংশনটি কোনো মান ফেরত দেয় না।
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 Functionsvoid setTurnType( turnType dir );
প্যারামিটার |
প্রকার |
বর্ণনা |
|---|---|---|
|
|
যে দিকটি ধনাত্মক মান প্রদান করে:
|
এই ফাংশনটি কোনো মান ফেরত দেয় না।
Notesএই সেটিংটি
headingএবংrotationকীভাবে ধনাত্মক এবং ঋণাত্মক মান রিপোর্ট করে তা প্রভাবিত করে।এই ফাংশনটি কল করলে
inertialবস্তুটি তৈরি করার সময় নির্দিষ্ট করাdirমানটি ওভাররাইড হয়ে যায়।
getTurnType#
যেসব রিটার্নের দিক পরিবর্তন হয়, সেগুলো ধনাত্মক মান উৎপন্ন করে।
Available FunctionsturnType getTurnType();
এই ফাংশনটি কোনো প্যারামিটার গ্রহণ করে না।
Return Valuesকোন দিকটি ধনাত্মক মান তৈরি করে তা নির্দেশ করে একটি turnType রিটার্ন করে:
-
right— Clockwise rotation returns positive values. -
left— Counterclockwise rotation returns positive values.
এই মান
inertialবস্তুর নির্মাণের সময় অথবাsetTurnTypeকল করে সেট করা হয়।