स्मार्टड्राइव#
परिचय#
smartdrive श्रेणी मोटर्स, पहियों और सेंसर का उपयोग करके रोबोट के चलने और मुड़ने के तरीके को नियंत्रित करती है। smartdrive कनेक्टेड जाइरो सेंसर या ब्रेन के अंतर्निर्मित जड़त्वीय सेंसर का उपयोग कर सकती है।
smartdrive सेंसर का उपयोग करके रोबोट को सटीक रूप से चलने और मुड़ने में मदद करता है। प्रत्येक प्रोजेक्ट की शुरुआत में, ड्राइवट्रेन स्वचालित रूप से सेंसर को कैलिब्रेट करता है। कैलिब्रेशन के दौरान रोबोट को लगभग 2 सेकंड के लिए स्थिर रखें, ताकि रोबोट सही ढंग से चल और मुड़ सके।
smartdrive वर्ग drivetrain वर्ग पर आधारित है। यह drivetrain के समान ड्राइव और टर्न फ़ंक्शन का उपयोग कर सकता है, और यह turnToHeading और turnToRotation जैसे सेंसर-आधारित फ़ंक्शन भी जोड़ता है।
इस पृष्ठ पर उदाहरण के तौर पर myDrivetrain स्मार्टड्राइव का नाम दिया गया है। आवश्यकतानुसार इसे अपने स्वयं के कॉन्फ़िगर किए गए नाम से बदलें।
क्लास कंस्ट्रक्टर#
1 — बाएँ और दाएँ पक्षों के लिए मौजूदा
motor_groupऑब्जेक्ट्स का उपयोग करके, साथ ही एक जाइरो सेंसर या इनर्टियल सेंसर के साथ एक स्मार्टड्राइव बनाता है।smartdrive( motor_group &l, motor_group &r, gyro &g, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
2 — बाएँ और दाएँ पक्षों के लिए मौजूदा
motorऑब्जेक्ट्स का उपयोग करके, साथ ही एक जाइरो सेंसर या इनर्टियल सेंसर के साथ एक स्मार्टड्राइव बनाता है।smartdrive( motor &l, motor &r, gyro &g, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
क्लास डिस्ट्रक्टर#
smartdrive ऑब्जेक्ट को नष्ट करता है और उससे जुड़े संसाधनों को मुक्त करता है।
~smartdrive();
पैरामीटर#
सेंसर पैरामीटर gyro या inertial ऑब्जेक्ट हो सकता है।
पैरामीटर |
प्रकार |
विवरण |
|---|---|---|
|
|
बाएँ और दाएँ मोटर या मोटर समूह। दोनों पैरामीटरों में एक ही प्रकार का उपयोग होना चाहिए: या तो दो |
|
|
स्मार्टड्राइव द्वारा उपयोग किया जाने वाला जाइरो सेंसर या जड़त्वीय सेंसर। |
|
|
ड्राइवट्रेन पहियों की परिधि। डिफ़ॉल्ट मान |
|
|
बाएँ और दाएँ पहियों के बीच की दूरी। डिफ़ॉल्ट मान |
|
|
आगे और पीछे के पहियों के बीच की दूरी। डिफ़ॉल्ट मान |
|
|
|
|
|
यदि गियर का उपयोग किया जाता है तो ड्राइव दूरी को समायोजित करने के लिए उपयोग किया जाने वाला गियर अनुपात। डिफ़ॉल्ट मान |
उदाहरण#
/* This constructor is required when using VS Code.
Drivetrain configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */
// Create the left and right motor objects.
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);
// Create the Inertial Sensor object.
inertial myInertial = inertial(PORT3);
// Create the smartdrive object.
smartdrive myDrivetrain = smartdrive(
leftMotor, // left motor
rightMotor, // right motor
myInertial, // Inertial Sensor
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
सदस्य कार्य#
smartdrive क्लास में निम्नलिखित सदस्य फ़ंक्शन शामिल हैं:
कार्य — दिशा या घूर्णन का उपयोग करके रोबोट को घुमाएँ।
turnToHeading— रोबोट को -359 से 359 डिग्री तक किसी विशिष्ट दिशा की ओर मोड़ता है। रोबोट लक्ष्य दिशा तक पहुँचने के लिए सबसे छोटी दिशा में मुड़ेगा।turnToRotation— रोबोट को एक विशिष्ट रोटेशन में घुमाता है।calibrateDrivetrain— स्मार्टड्राइव के साथ कॉन्फ़िगर किए गए सेंसर को कैलिब्रेट करता है।
सेटिंग्स — हेडिंग और रोटेशन मान समायोजित करें।
setHeading— रोबोट की वर्तमान दिशा को नई दिशा में बदलता है।setRotation— रोबोट के वर्तमान रोटेशन को नए रोटेशन में बदलता है।
मान — शीर्षक और घूर्णन की जाँच करें।
heading— रोबोट की वर्तमान दिशा 0 से 359 डिग्री तक लौटाता है।rotation— रोबोट का वर्तमान रोटेशन लौटाता है।
एक smartdrive drivetrain से विरासत में मिले सदस्य कार्यों का भी उपयोग कर सकता है, जैसे drive, driveFor, turn, turnFor, stop, isDone, और isMoving।
किसी भी smartdrive सदस्य फ़ंक्शन को कॉल करने से पहले, एक smartdrive ऑब्जेक्ट बनाया जाना चाहिए।
/* This constructor is required when using VS Code.
Drivetrain configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */
// Create the left and right motor objects.
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);
// Create the Inertial Sensor object.
inertial myInertial = inertial(PORT3);
// Create the smartdrive object.
smartdrive myDrivetrain = smartdrive(
leftMotor, // left motor
rightMotor, // right motor
myInertial, // Inertial Sensor
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
turnToHeading#
हेडिंग रोबोट की दिशा है, जिसे डिग्री में मापा जाता है। turnToHeading रोबोट को -359 से 359 डिग्री के बीच किसी विशिष्ट हेडिंग की ओर घुमाता है। रोबोट लक्ष्य हेडिंग तक पहुँचने के लिए सबसे छोटी दिशा में घूमेगा।
रोबोट की प्रारंभिक दिशा 0 डिग्री है।
अगली कोड लाइन चलने से पहले प्रोजेक्ट रोबोट के पूरी तरह से घूमने का इंतजार करेगा।
Available Functions1 — वर्तमान मोड़ वेग का उपयोग करके रोबोट को निर्दिष्ट दिशा में मोड़ता है।
bool turnToHeading( double angle, rotationUnits units, bool waitForCompletion = true );
Parameters2 — रोबोट को निर्दिष्ट दिशा में निर्दिष्ट वेग से मोड़ता है।
bool turnToHeading( double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
पैरामीटर |
प्रकार |
विवरण |
|---|---|---|
|
|
रोबोट का मुख किस दिशा में होना चाहिए, डिग्री में। |
|
|
दिशा बताने वाली इकाई: |
|
|
|
|
|
वेग इकाई: |
|
|
|
यह एक बूलियन मान के रूप में बताता है कि रोबोट लक्ष्य दिशा तक पहुंचा या नहीं।
true— रोबोट लक्ष्य दिशा तक पहुँच गया।false— रोबोट ने बारी पूरी नहीं की, या फ़ंक्शन बारी पूरी होने से पहले ही लौट आया क्योंकिwaitForCompletionfalseपर सेट किया गया था।
जब
turnToHeadingचल रहा हो, तब किसी अन्य ड्राइवट्रेन मूवमेंट फ़ंक्शन को चलाने से वर्तमान मूवमेंट बाधित हो जाएगा।turnToHeadingएक लक्ष्य शीर्षक का उपयोग करता है, इसलिएisDoneऔरisMovingका उपयोग इसके साथ किया जा सकता है।
// Face the new 0 degrees.
myDrivetrain.setHeading(90, degrees);
myDrivetrain.turnToHeading(0, degrees);
turnToRotation#
turnToRotation रोबोट को एक विशिष्ट रोटेशन पर घुमाता है।
रोटेशन वह मात्रा है जो रोबोट घूम चुका है, जिसे डिग्री या चक्करों में मापा जाता है। किसी प्रोजेक्ट की शुरुआत में, रोटेशन का मान 0 डिग्री पर सेट होता है। रोटेशन को setRotation फ़ंक्शन का उपयोग करके भी सेट किया जा सकता है।
घूर्णन मान निरपेक्ष होते हैं। इसका अर्थ है कि मुड़ने की दिशा रोबोट के वर्तमान घूर्णन पर निर्भर करती है। दाईं ओर मुड़ने से घूर्णन बढ़ता है, और बाईं ओर मुड़ने से घूर्णन घटता है।
उदाहरण के लिए, यदि रोबोट 0 डिग्री से शुरू होता है और आप उसे 720 डिग्री घुमाते हैं, तो वह दो बार दाईं ओर मुड़ेगा। यदि आप फिर उसे 360 डिग्री घुमाते हैं, तो वह एक बार बाईं ओर मुड़ेगा, क्योंकि 360, 720 से कम है।
अगली कोड लाइन चलने से पहले प्रोजेक्ट रोबोट के पूरी तरह से घूमने का इंतजार करेगा।
Available Functions1 — वर्तमान घुमाव वेग का उपयोग करके रोबोट को निर्दिष्ट घुमाव पर घुमाता है।
bool turnToRotation( double angle, rotationUnits units, bool waitForCompletion = true );
Parameters2 — रोबोट को निर्दिष्ट वेग से निर्दिष्ट घूर्णन पर घुमाता है।
bool turnToRotation( double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
पैरामीटर |
प्रकार |
विवरण |
|---|---|---|
|
|
वह घूर्णन मान जिस पर रोबोट घूमेगा। |
|
|
घूर्णन की इकाई: |
|
|
|
|
|
वेग इकाई: |
|
|
|
यह एक बूलियन मान के रूप में बताता है कि रोबोट लक्ष्य घूर्णन तक पहुंचा या नहीं।
true— रोबोट लक्ष्य घूर्णन तक पहुँच गया।false— रोबोट ने बारी पूरी नहीं की, या फ़ंक्शन बारी पूरी होने से पहले ही लौट आया क्योंकिwaitForCompletionfalseपर सेट किया गया था।
जब
turnToRotationचल रहा हो, तब किसी अन्य ड्राइवट्रेन मूवमेंट फ़ंक्शन को चलाने से वर्तमान मूवमेंट बाधित हो जाएगा।turnToRotationएक लक्ष्य रोटेशन का उपयोग करता है, इसलिएisDoneऔरisMovingका उपयोग इसके साथ किया जा सकता है।
// Spin counterclockwise for 2 turns, then face forward.
myDrivetrain.setRotation(720, degrees);
myDrivetrain.turnToRotation(0, degrees);
calibrateDrivetrain#
calibrateDrivetrain कनेक्टेड जाइरो सेंसर या ब्रेन के बिल्ट-इन इनर्टियल सेंसर को कैलिब्रेट करता है जो स्मार्टड्राइव के साथ कॉन्फ़िगर किया गया है।
कैलिब्रेशन से सेंसर को गति को सही ढंग से मापने में मदद मिलती है। कैलिब्रेशन के दौरान रोबोट को लगभग 2 सेकंड तक स्थिर रखें। यदि कैलिब्रेशन के दौरान रोबोट हिलता है, तो सेंसर गति को सही ढंग से नहीं माप पाएगा।
कैलिब्रेशन पूरा होने तक प्रोजेक्ट कोड की अगली पंक्ति को चलाने से पहले प्रतीक्षा करेगा।
नोट: जब किसी ड्राइवट्रेन को जाइरो सेंसर या इनर्टियल सेंसर के साथ कॉन्फ़िगर किया जाता है, तो VEXcode द्वारा calibrateDrivetrain स्वचालित रूप से उत्पन्न होता है। यह प्रोजेक्ट स्रोत का हिस्सा है और VEX IQ C++ API का भाग नहीं है।
void calibrateDrivetrain();
यह फ़ंक्शन कोई पैरामीटर स्वीकार नहीं करता है।
Return Valuesइस कार्य पर कीमत के लिहाज से कुछ भी रिटर्न नहीं मिलता है।
Notesजब VEXcode में स्मार्टड्राइव को कॉन्फ़िगर किया जाता है, तो रोबोट प्रत्येक प्रोजेक्ट की शुरुआत में स्वचालित रूप से कैलिब्रेट हो जाता है।
कैलिब्रेशन के दौरान रोबोट को लगभग 2 सेकंड तक स्थिर रखें।
निम्नलिखित उदाहरण VEXcode द्वारा निर्मित calibrateDrivetrain के स्वतः उत्पन्न कार्यान्वयन का है:
bool vexcode_initial_drivetrain_calibration_completed = false;
void calibrateDrivetrain() {
wait(200, msec);
Brain.Screen.print("Calibrating");
Brain.Screen.newLine();
Brain.Screen.print("Inertial");
DrivetrainInertial.calibrate();
while (DrivetrainInertial.isCalibrating()) {
wait(25, msec);
}
vexcode_initial_drivetrain_calibration_completed = true;
// Clears the screen and returns the cursor to row 1, column 1.
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
}
setHeading#
हेडिंग रोबोट की दिशा है, जिसे डिग्री में मापा जाता है। setHeading रोबोट की वर्तमान हेडिंग को एक नए हेडिंग मान में बदल देता है।
उदाहरण के लिए, यदि रोबोट दाईं ओर मुड़ गया है, तो दिशा को 0 डिग्री पर सेट करने से वह दाईं ओर की स्थिति ही नई 0 डिग्री बन जाती है। फिर रोबोट उस नई दिशा के आधार पर अन्य स्थितियों में मुड़ सकता है।
Available Functionsvoid setHeading(
double value,
rotationUnits units);
पैरामीटर |
प्रकार |
विवरण |
|---|---|---|
|
|
रोबोट के लिए निर्धारित की जाने वाली दिशा का मान। |
|
|
दिशा बताने वाली इकाई: |
इस कार्य पर कीमत के लिहाज से कुछ भी रिटर्न नहीं मिलता है।
Examples// Face the new 0 degrees.
myDrivetrain.setHeading(90, degrees);
myDrivetrain.turnToHeading(0, degrees);
setRotation#
रोटेशन वह मात्रा है जो रोबोट घूम चुका है, जिसे डिग्री या चक्करों में मापा जाता है। किसी प्रोजेक्ट की शुरुआत में, रोटेशन का मान 0 डिग्री पर सेट होता है। setRotation कमांड का उपयोग करके रोबोट के वर्तमान रोटेशन को एक नए मान में बदला जा सकता है।
उदाहरण के लिए, यदि रोबोट ने दाईं ओर दो पूरे चक्कर लगा लिए हैं, तो उसका घूर्णन मान 720 डिग्री होगा। घूर्णन को 0 डिग्री पर सेट करने से यह 720 से 0 डिग्री पर रीसेट हो जाएगा। फिर रोबोट उस नए मान के आधार पर घूर्णन कर सकता है।
Available Functionsvoid setRotation(
double value,
rotationUnits units);
पैरामीटर |
प्रकार |
विवरण |
|---|---|---|
|
|
रोबोट के लिए निर्धारित की जाने वाली घूर्णन मान। |
|
|
घूर्णन की इकाई: |
इस कार्य पर कीमत के लिहाज से कुछ भी रिटर्न नहीं मिलता है।
Examples// Spin counterclockwise for 2 turns, then face forward.
myDrivetrain.setRotation(720, degrees);
myDrivetrain.turnToRotation(0, degrees);
heading#
हेडिंग रोबोट की दिशा को दर्शाती है, जिसे डिग्री में मापा जाता है। heading रोबोट की वर्तमान हेडिंग को 0 से 359 डिग्री के बीच दर्शाती है।
रोबोट की प्रारंभिक दिशा 0 डिग्री है।
Available Functionsdouble heading( rotationUnits units = rotationUnits::deg );
पैरामीटर |
प्रकार |
विवरण |
|---|---|---|
|
|
वैकल्पिक। दिशा लौटाने की इकाई: |
यह चयनित इकाई में रोबोट की वर्तमान दिशा को double के रूप में लौटाता है।
// Show heading before and after turning.
Brain.Screen.print("Before: %f", myDrivetrain.heading(degrees));
myDrivetrain.turnFor(right, 90, degrees);
wait(1, seconds);
Brain.Screen.newLine();
Brain.Screen.print("After: %f", myDrivetrain.heading(degrees));
myDrivetrain.stop();
rotation#
रोटेशन वह मात्रा है जो रोबोट घूम चुका है, जिसे डिग्री या चक्करों में मापा जाता है। किसी प्रोजेक्ट की शुरुआत में, रोटेशन का मान 0 डिग्री पर सेट होता है। rotation रोबोट का वर्तमान रोटेशन दिखाता है।
दाहिनी ओर मुड़ने से घूर्णन बढ़ता है, और बाईं ओर मुड़ने से घूर्णन घटता है। उदाहरण के लिए, दाहिनी ओर दो पूरे चक्कर लगाने से 720 डिग्री का घूर्णन प्राप्त होगा।
Available Functionsdouble rotation( rotationUnits units = rotationUnits::deg );
पैरामीटर |
प्रकार |
विवरण |
|---|---|---|
|
|
वैकल्पिक। घूर्णन लौटाने की इकाई: |
चयनित इकाई में रोबोट के वर्तमान घूर्णन को double के रूप में लौटाता है।
// Show rotation before and after turning.
Brain.Screen.print("Before: %f", myDrivetrain.rotation(degrees));
myDrivetrain.turnFor(right, 90, degrees);
wait(1, seconds);
Brain.Screen.newLine();
Brain.Screen.print("After: %f", myDrivetrain.rotation(degrees));
myDrivetrain.stop();