स्मार्टड्राइव#

परिचय#

smartdrive क्लास मोटर्स, पहियों और जाइरो सेंसर का उपयोग करके रोबोट के चलने और मुड़ने के तरीके को नियंत्रित करती है। smartdrive दिशा और घूर्णन को ट्रैक करने के लिए कनेक्टेड जाइरो सेंसर का उपयोग करती है।

smartdrive रोबोट को सटीक रूप से चलने और मुड़ने में मदद करने के लिए जाइरो सेंसर का उपयोग करता है। प्रत्येक प्रोजेक्ट की शुरुआत में, ड्राइवट्रेन स्वचालित रूप से जाइरो सेंसर को कैलिब्रेट करता है। कैलिब्रेशन के दौरान रोबोट को लगभग 2 सेकंड के लिए स्थिर रखें, ताकि रोबोट सही ढंग से चल और मुड़ सके।

smartdrive वर्ग 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();

पैरामीटर#

पैरामीटर

प्रकार

विवरण

&l / &r

motor_group / motor

बाएँ और दाएँ मोटर या मोटर समूह। दोनों पैरामीटरों में एक ही प्रकार का उपयोग होना चाहिए: या तो दो motor_group ऑब्जेक्ट या दो motor ऑब्जेक्ट।

&g

gyro

स्मार्टड्राइव द्वारा उपयोग किया जाने वाला जाइरो सेंसर।

wheelTravel

double

ड्राइवट्रेन पहियों की परिधि। डिफ़ॉल्ट मान 320 है।

trackWidth

double

बाएँ और दाएँ पहियों के बीच की दूरी। डिफ़ॉल्ट मान 320 है।

wheelBase

double

आगे और पीछे के पहियों के बीच की दूरी। डिफ़ॉल्ट मान 130 है।

unit

distanceUnits

wheelTravel, trackWidth, और wheelBaseके लिए इकाई: mm (डिफ़ॉल्ट) या inches।

externalGearRatio

double

यदि गियर का उपयोग किया जाता है तो ड्राइव दूरी को समायोजित करने के लिए उपयोग किया जाने वाला गियर अनुपात। डिफ़ॉल्ट मान 1.0 है।

उदाहरण#

/* 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 Gyro Sensor object.
gyro myGyro = gyro(PORT3);

// Create the smartdrive object.
smartdrive myDrivetrain = smartdrive(
    leftMotor,  // left motor
    rightMotor, // right motor
    myGyro,     // Gyro 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 Gyro Sensor object.
gyro myGyro = gyro(PORT3);

// Create the smartdrive object.
smartdrive myDrivetrain = smartdrive(
    leftMotor,  // left motor
    rightMotor, // right motor
    myGyro,     // Gyro Sensor
    259.34,     // wheelTravel
    320,        // trackWidth
    40,         // wheelBase
    mm,         // unit
    1.0 );      // externalGearRatio

turnToHeading#

हेडिंग रोबोट की दिशा है, जिसे डिग्री में मापा जाता है। turnToHeading रोबोट को -359 से 359 डिग्री के बीच किसी विशिष्ट हेडिंग की ओर घुमाता है। रोबोट लक्ष्य हेडिंग तक पहुँचने के लिए सबसे छोटी दिशा में घूमेगा।

रोबोट की प्रारंभिक दिशा 0 डिग्री है।

अगली कोड लाइन चलने से पहले प्रोजेक्ट रोबोट के पूरी तरह से घूमने का इंतजार करेगा।

Available Functions

1 — वर्तमान मोड़ वेग का उपयोग करके रोबोट को निर्दिष्ट दिशा में मोड़ता है।

bool turnToHeading(
    double        angle,
    rotationUnits units,
    bool          waitForCompletion = true );

2 — रोबोट को निर्दिष्ट दिशा में निर्दिष्ट वेग से मोड़ता है।

bool turnToHeading(
    double        angle,
    rotationUnits units,
    double        velocity,
    velocityUnits units_v,
    bool          waitForCompletion = true );

Parameters

पैरामीटर

प्रकार

विवरण

angle

double

रोबोट का मुख किस दिशा में होना चाहिए, डिग्री में। deg या degrees का उपयोग करते समय यह -359 से 359 तक हो सकता है।

units

rotationUnits

दिशा बताने वाली इकाई: deg (डिग्री), rev (परिक्रमण), या raw (कच्ची इकाई)। एक चक्कर 360 डिग्री के बराबर होता है।

velocity

double

velocityUnits::pctउपयोग करते समय, 0% से 100% तक, rpmका उपयोग करते समय, या dpsउपयोग करते समय, रोबोट के घूमने की गति 0% से 120 rpm तक होती है। यदि कोई गति प्रदान नहीं की जाती है, तो रोबोट वर्तमान घूमने की गति से घूमता है।

units_v

velocityUnits

वेग इकाई: velocityUnits::pct (प्रतिशत), rpm (प्रति मिनट घूर्णन), या dps (प्रति सेकंड डिग्री)।

waitForCompletion

bool

true (डिफ़ॉल्ट) अगली कोड पंक्ति चलने से पहले रोबोट के मुड़ने के पूरा होने तक प्रोजेक्ट को प्रतीक्षा कराता है। false अगली कोड पंक्ति तुरंत चलाता है।

Return Values

यह एक बूलियन मान के रूप में बताता है कि रोबोट लक्ष्य दिशा तक पहुंचा या नहीं।

  • true — रोबोट लक्ष्य दिशा तक पहुँच गया।

  • false — रोबोट ने बारी पूरी नहीं की, या फ़ंक्शन बारी पूरी होने से पहले ही लौट आया क्योंकि waitForCompletion false पर सेट किया गया था।

Notes
  • जब turnToHeading चल रहा हो, तब किसी अन्य ड्राइवट्रेन मूवमेंट फ़ंक्शन को चलाने से वर्तमान मूवमेंट बाधित हो जाएगा।

  • turnToHeading एक लक्ष्य शीर्षक का उपयोग करता है, इसलिए isDone और isMoving का उपयोग इसके साथ किया जा सकता है।

Examples
// Face the new 0 degrees.
myDrivetrain.setHeading(90, degrees);
myDrivetrain.turnToHeading(0, degrees);

turnToRotation#

turnToRotation रोबोट को एक विशिष्ट रोटेशन पर घुमाता है।

रोटेशन वह मात्रा है जो रोबोट घूम चुका है, जिसे डिग्री या चक्करों में मापा जाता है। किसी प्रोजेक्ट की शुरुआत में, रोटेशन का मान 0 डिग्री पर सेट होता है। रोटेशन को setRotation फ़ंक्शन का उपयोग करके भी सेट किया जा सकता है।

घूर्णन मान निरपेक्ष होते हैं। इसका अर्थ है कि मुड़ने की दिशा रोबोट के वर्तमान घूर्णन पर निर्भर करती है। दाईं ओर मुड़ने से घूर्णन बढ़ता है, और बाईं ओर मुड़ने से घूर्णन घटता है।

उदाहरण के लिए, यदि रोबोट 0 डिग्री से शुरू होता है और आप उसे 720 डिग्री घुमाते हैं, तो वह दो बार दाईं ओर मुड़ेगा। यदि आप फिर उसे 360 डिग्री घुमाते हैं, तो वह एक बार बाईं ओर मुड़ेगा, क्योंकि 360, 720 से कम है।

अगली कोड लाइन चलने से पहले प्रोजेक्ट रोबोट के पूरी तरह से घूमने का इंतजार करेगा।

Available Functions

1 — वर्तमान घुमाव वेग का उपयोग करके रोबोट को निर्दिष्ट घुमाव पर घुमाता है।

bool turnToRotation(
    double        angle,
    rotationUnits units,
    bool          waitForCompletion = true );

2 — रोबोट को निर्दिष्ट वेग से निर्दिष्ट घूर्णन पर घुमाता है।

bool turnToRotation(
    double        angle,
    rotationUnits units,
    double        velocity,
    velocityUnits units_v,
    bool          waitForCompletion = true );

Parameters

पैरामीटर

प्रकार

विवरण

angle

double

वह घूर्णन मान जिस पर रोबोट घूमेगा।

units

rotationUnits

घूर्णन की इकाई: deg (डिग्री), rev (परिक्रमा), या raw (कच्ची इकाई)। एक परिक्रमण 360 डिग्री के बराबर होता है।

velocity

double

velocityUnits::pctउपयोग करते समय, 0% से 100% तक, rpmका उपयोग करते समय, या dpsउपयोग करते समय, रोबोट के घूमने की गति 0% से 120 rpm तक होती है। यदि कोई गति प्रदान नहीं की जाती है, तो रोबोट वर्तमान घूमने की गति से घूमता है।

units_v

velocityUnits

वेग इकाई: velocityUnits::pct (प्रतिशत), rpm (प्रति मिनट घूर्णन), या dps (प्रति सेकंड डिग्री)।

waitForCompletion

bool

true (डिफ़ॉल्ट) अगली कोड पंक्ति चलने से पहले रोबोट के मुड़ने के पूरा होने तक प्रोजेक्ट को प्रतीक्षा कराता है। false अगली कोड पंक्ति तुरंत चलाता है।

Return Values

यह एक बूलियन मान के रूप में बताता है कि रोबोट लक्ष्य घूर्णन तक पहुंचा या नहीं।

  • true — रोबोट लक्ष्य घूर्णन तक पहुँच गया।

  • false — रोबोट ने बारी पूरी नहीं की, या फ़ंक्शन बारी पूरी होने से पहले ही लौट आया क्योंकि waitForCompletion false पर सेट किया गया था।

Notes
  • जब turnToRotation चल रहा हो, तब किसी अन्य ड्राइवट्रेन मूवमेंट फ़ंक्शन को चलाने से वर्तमान मूवमेंट बाधित हो जाएगा।

  • turnToRotation एक लक्ष्य रोटेशन का उपयोग करता है, इसलिए isDone और isMoving का उपयोग इसके साथ किया जा सकता है।

Examples
// 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 का हिस्सा नहीं है।

Available Functions
void calibrateDrivetrain();

Parameters

यह फ़ंक्शन कोई पैरामीटर स्वीकार नहीं करता है।

Return Values

इस कार्य पर कीमत के लिहाज से कुछ भी रिटर्न नहीं मिलता है।

Notes
  • जब VEXcode में स्मार्टड्राइव को कॉन्फ़िगर किया जाता है, तो रोबोट प्रत्येक प्रोजेक्ट की शुरुआत में स्वचालित रूप से कैलिब्रेट हो जाता है।

  • कैलिब्रेशन के दौरान रोबोट को लगभग 2 सेकंड तक स्थिर रखें।

Function Implementation

निम्नलिखित उदाहरण VEXcode द्वारा निर्मित calibrateDrivetrain के स्वतः उत्पन्न कार्यान्वयन का है:

bool vexcode_initial_drivetrain_calibration_completed = false;
void calibrateDrivetrain() {
  wait(200, msec);
  Brain.Screen.print("Calibrating");
  Brain.Screen.newLine();
  Brain.Screen.print("Gyro");
  DrivetrainGyro.calibrate();
  while (DrivetrainGyro.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 Functions
void setHeading(
  double value,
  rotationUnits units);

Parameters

पैरामीटर

प्रकार

विवरण

value

double

रोबोट के लिए निर्धारित की जाने वाली दिशा का मान। deg या degrees का उपयोग करते समय यह -359 से 359 तक हो सकता है।

units

rotationUnits

दिशा बताने वाली इकाई: deg (डिग्री), rev (परिक्रमण), या raw (कच्ची इकाई)। एक चक्कर 360 डिग्री के बराबर होता है।

Return Values

इस कार्य पर कीमत के लिहाज से कुछ भी रिटर्न नहीं मिलता है।

Examples
// Face the new 0 degrees.
myDrivetrain.setHeading(90, degrees);
myDrivetrain.turnToHeading(0, degrees);

setRotation#

रोटेशन वह मात्रा है जो रोबोट घूम चुका है, जिसे डिग्री या चक्करों में मापा जाता है। किसी प्रोजेक्ट की शुरुआत में, रोटेशन का मान 0 डिग्री पर सेट होता है। setRotation कमांड का उपयोग करके रोबोट के वर्तमान रोटेशन को एक नए मान में बदला जा सकता है।

उदाहरण के लिए, यदि रोबोट ने दाईं ओर दो पूरे चक्कर लगा लिए हैं, तो उसका घूर्णन मान 720 डिग्री होगा। घूर्णन को 0 डिग्री पर सेट करने से यह 720 से 0 डिग्री पर रीसेट हो जाएगा। फिर रोबोट उस नए मान के आधार पर घूर्णन कर सकता है।

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

Parameters

पैरामीटर

प्रकार

विवरण

value

double

रोबोट के लिए निर्धारित की जाने वाली घूर्णन मान।

units

rotationUnits

घूर्णन की इकाई: deg (डिग्री), rev (परिक्रमा), या raw (कच्ची इकाई)। एक परिक्रमण 360 डिग्री के बराबर होता है।

Return Values

इस कार्य पर कीमत के लिहाज से कुछ भी रिटर्न नहीं मिलता है।

Examples
// Spin counterclockwise for 2 turns, then face forward.
myDrivetrain.setRotation(720, degrees);
myDrivetrain.turnToRotation(0, degrees);

heading#

हेडिंग रोबोट की दिशा को दर्शाती है, जिसे डिग्री में मापा जाता है। heading रोबोट की वर्तमान हेडिंग को 0 से 359 डिग्री के बीच दर्शाती है।

रोबोट की प्रारंभिक दिशा 0 डिग्री है।

Available Functions
double heading( rotationUnits units = rotationUnits::deg );

Parameters

पैरामीटर

प्रकार

विवरण

units

rotationUnits

वैकल्पिक। दिशा लौटाने की इकाई: degrees, deg (डिफ़ॉल्ट), rev, या rawएक चक्कर 360 डिग्री के बराबर होता है।

Return Values

यह चयनित इकाई में रोबोट की वर्तमान दिशा को double के रूप में लौटाता है।

Examples
// 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 Functions
double rotation( rotationUnits units = rotationUnits::deg );

Parameters

पैरामीटर

प्रकार

विवरण

units

rotationUnits

वैकल्पिक। घूर्णन लौटाने की इकाई: degrees, deg (डिफ़ॉल्ट), rev, या rawएक चक्कर 360 डिग्री के बराबर होता है।

Return Values

चयनित इकाई में रोबोट के वर्तमान घूर्णन को double के रूप में लौटाता है।

Examples
// 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();