जड़त्वीय सेंसर#
परिचय#
inertial क्लास का उपयोग स्मार्ट पोर्ट से जुड़े V5 इनर्टियल सेंसर से डेटा को नियंत्रित करने और एक्सेस करने के लिए किया जाता है।
V5 इनर्शियल सेंसर रोबोट की गति और मुड़ने की प्रक्रिया को मापता है। जाइरोस्कोप दिशा, घूर्णन, जाइरो रेट और अभिविन्यास जैसी गति संबंधी विशेषताओं को मापता है। एक्सेलेरोमीटर गति में होने वाले परिवर्तनों को मापता है, जैसे कि x, y और z अक्षों के अनुदिश गति का बढ़ना या घटना।
क्लास कंस्ट्रक्टर#
inertial(
int32_t index,
turnType dir = turnType::right );
क्लास डिस्ट्रक्टर#
inertial वस्तु को नष्ट करता है और उससे संबंधित संसाधनों को मुक्त करता है।
~inertial();
पैरामीटर#
पैरामीटर |
प्रकार |
विवरण |
|---|---|---|
|
|
स्मार्ट पोर्ट जिससे इनर्टियल सेंसर जुड़ा हुआ है, उसे |
|
|
वैकल्पिक। वह दिशा जो धनात्मक मान लौटाती है:
|
उदाहरण#
// Create an inertial instance for the V5 Inertial Sensor
inertial myInertial = inertial(
PORT1, // Smart Port 1
right); // dir
सदस्य कार्य#
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. */
// Create an inertial instance for the V5 Inertial Sensor connected to Port 1.
inertial myInertial = inertial(PORT1);
heading#
हेडिंग वह दिशा है जिस ओर सेंसर का मुख है, जिसे 0 से 359.99 डिग्री तक मापा जाता है। यह फ़ंक्शन सेंसर की वर्तमान हेडिंग लौटाता है।
प्रारंभिक दिशा 0 डिग्री है। यदि सेंसर 359.99 डिग्री से आगे घूमता है, तो दिशा वापस 0 डिग्री पर आ जाती है।
Available Functionsdouble heading( rotationUnits units = degrees );
पैरामीटर |
प्रकार |
विवरण |
|---|---|---|
|
|
The heading unit:
|
यह निर्दिष्ट इकाइयों में सेंसर की वर्तमान दिशा को दर्शाने वाला double मान लौटाता है।
हेडिंग मान 0 और 359.99 डिग्री के बीच लिपटा हुआ है। निरंतर रोटेशन मान तक पहुँचने के लिए
rotationका उपयोग करें।
// Turn, then show the current heading
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.heading(degrees));
rotation#
इनर्शियल सेंसर का वर्तमान रोटेशन लौटाता है।
रोटेशन वह मात्रा है जिससे सेंसर घूमा है। हेडिंग के विपरीत, रोटेशन 359.99 डिग्री से अधिक या 0 डिग्री से कम हो सकता है। उदाहरण के लिए, दाईं ओर दो पूरे चक्कर लगाने पर 720 डिग्री का रोटेशन प्राप्त होता है। 0 डिग्री से बाईं ओर एक पूरा चक्कर लगाने पर -360 डिग्री का रोटेशन प्राप्त होता है।
Available Functionsdouble rotation( rotationUnits units = degrees );
पैरामीटर |
प्रकार |
विवरण |
|---|---|---|
|
|
The rotation unit:
|
यह निर्दिष्ट इकाइयों में वर्तमान घूर्णन को दर्शाने वाला double मान लौटाता है।
रोटेशन मान सतत है और 0 तथा 359.99 डिग्री के बीच रैप नहीं होता है। रैप्ड हेडिंग मान तक पहुँचने के लिए
headingका उपयोग करें।
// Turn, then show the current rotation
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.rotation(degrees));
setHeading#
हेडिंग वह दिशा है जिस ओर सेंसर का मुख है, जिसे 0 से 359.99 डिग्री तक मापा जाता है। यह फ़ंक्शन इनर्शियल सेंसर की वर्तमान हेडिंग को एक नए हेडिंग मान में परिवर्तित करता है।
उदाहरण के लिए, यदि सेंसर दाईं ओर मुड़ गया है, तो दिशा को 0 डिग्री पर सेट करने से वह दाईं ओर की स्थिति ही नई 0 डिग्री बन जाती है। फिर सेंसर उस नई दिशा के आधार पर अन्य दिशाओं को ट्रैक कर सकता है।
Available Functionsvoid setHeading( double value, rotationUnits units );
पैरामीटर |
प्रकार |
विवरण |
|---|---|---|
|
|
सेंसर के लिए निर्धारित की जाने वाली दिशा का मान (डिग्री में)। यह मान 0 से 359.99 तक हो सकता है। |
|
|
The heading unit:
|
इस कार्य पर कीमत के लिहाज से कुछ भी रिटर्न नहीं मिलता है।
Examples// Turn the robot around
myInertial.setHeading(180, degrees);
Drivetrain.turnToHeading(0, degrees);
setRotation#
रोटेशन वह माप है जिससे सेंसर घूमता है, जिसे डिग्री में मापा जाता है। हेडिंग के विपरीत, रोटेशन 359.99 डिग्री से अधिक या 0 डिग्री से कम हो सकता है। किसी प्रोजेक्ट की शुरुआत में, रोटेशन का मान 0 डिग्री पर सेट होता है। यह फ़ंक्शन इनर्शियल सेंसर के वर्तमान रोटेशन को एक नए मान में बदलता है।
उदाहरण के लिए, यदि सेंसर ने दाईं ओर दो पूरे चक्कर लगा लिए हैं, तो उसका घूर्णन मान 720 डिग्री होगा। घूर्णन को 0 डिग्री पर सेट करने से यह 720 से 0 डिग्री पर रीसेट हो जाएगा। फिर सेंसर इस नए मान के आधार पर घूर्णन को ट्रैक कर सकता है।
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#
इनर्शियल सेंसर की वर्तमान दिशा को 0 डिग्री पर रीसेट करता है।
इस फ़ंक्शन का उपयोग करने के बाद, सेंसर की वर्तमान दिशा नई 0 डिग्री हेडिंग बन जाती है।
Available Functionsvoid resetHeading();
यह फ़ंक्शन कोई पैरामीटर नहीं लेता है।
Return Valuesइस कार्य पर कीमत के लिहाज से कुछ भी रिटर्न नहीं मिलता है।
resetRotation#
इनर्शियल सेंसर के वर्तमान रोटेशन को 0 डिग्री पर रीसेट करता है।
इस फ़ंक्शन का उपयोग करने के बाद, सेंसर नए 0 डिग्री रोटेशन मान से भविष्य के घुमावों को ट्रैक करता है।
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()के बाहर)// Display the heading 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()के अंदर पंजीकृत करेंint main() { // Run onHeadingChanged when the Inertial Sensor's heading value changes. 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 तक लौटाता है।
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 orientation 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()के बाहर)// Display a message when the Inertial Sensor detects a collision. void onCollision(axisType axis, double x, double y, double z) { Brain.Screen.print("Collision detected!"); }कॉलबैक को
int main()के अंदर पंजीकृत करेंint main() { // Run onCollision when the Inertial Sensor detects a collision. myInertial.collision(onCollision); }
setTurnType#
दिशा बदलने वाले सेट धनात्मक मान लौटाते हैं।
Available Functionsvoid setTurnType( turnType dir );
पैरामीटर |
प्रकार |
विवरण |
|---|---|---|
|
|
सकारात्मक मान देने वाली दिशा:
|
इस कार्य पर कीमत के लिहाज से कुछ भी रिटर्न नहीं मिलता है।
Notesयह सेटिंग प्रभावित करती है कि
headingऔरrotationसकारात्मक और नकारात्मक मानों की रिपोर्ट कैसे करते हैं।इस फ़ंक्शन को कॉल करने से
dirवस्तु का निर्माण करते समय निर्दिष्टinertialमान ओवरराइड हो जाता है।
getTurnType#
दिशा बदलने से प्राप्त होने वाले परिणाम सकारात्मक मान उत्पन्न करते हैं।
Available FunctionsturnType getTurnType();
यह फ़ंक्शन कोई पैरामीटर नहीं लेता है।
Return Valuesयह turnType यह दर्शाता है कि कौन सी दिशा सकारात्मक मान उत्पन्न करती है:
-
right— Clockwise rotation returns positive values. -
left— Counterclockwise rotation returns positive values.
यह मान
inertialवस्तु के निर्माण के दौरान याsetTurnTypeको कॉल करके सेट किया जाता है।