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

परिचय#

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

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

smartdrive वर्ग drivetrain वर्ग पर आधारित है। यह drivetrain के समान ड्राइव और टर्न फ़ंक्शन का उपयोग कर सकता है, और यह turnToHeading और turnToRotation जैसे सेंसर-आधारित फ़ंक्शन भी जोड़ता है।

क्लास कंस्ट्रक्टर#

1 — बाएँ (&l) और दाएँ (&r) पक्षों के लिए मौजूदा motor_group ऑब्जेक्ट्स का उपयोग करके एक स्मार्टड्राइव बनाता है, साथ ही एक इनर्टियल सेंसर या जाइरो सेंसर भी।

smartdrive(
    motor_group     &l,
    motor_group     &r,
    inertial        &g,
    double          wheelTravel = 320,
    double          trackWidth  = 320,
    double          wheelBase   = 130,
    distanceUnits   unit = mm,
    double          externalGearRatio = 1.0 );

2 — बाएँ (&l) और दाएँ (&r) पक्षों के लिए मौजूदा motor ऑब्जेक्ट्स का उपयोग करके एक स्मार्टड्राइव बनाता है, साथ ही एक इनर्टियल सेंसर या जाइरो सेंसर भी।

smartdrive(
    motor           &l,
    motor           &r,
    inertial        &g,
    double          wheelTravel = 320,
    double          trackWidth  = 320,
    double          wheelBase   = 130,
    distanceUnits   unit = mm,
    double          externalGearRatio = 1.0 );

क्लास डिस्ट्रक्टर#

smartdrive ऑब्जेक्ट को नष्ट करता है और उससे जुड़े संसाधनों को मुक्त करता है।

~smartdrive();

पैरामीटर#

सेंसर पैरामीटर inertial या gyro वस्तु हो सकता है।

पैरामीटर

प्रकार

विवरण

&l / &r

motor_group / motor

मौजूदा motor या motor इंस्टेंस के संदर्भ। दोनों पैरामीटर एक ही प्रकार के होने चाहिए: या तो दो motor_group इंस्टेंस या दो motor_group इंस्टेंस। &l पैरामीटर बाएं मोटर या मोटर समूह को संदर्भित करता है, और &r दाएं मोटर या मोटर समूह को संदर्भित करता है।

&g

gyro&

किसी मौजूदा gyro या inertial इंस्टेंस का संदर्भ।

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 instances
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);

// Create the inertial instance
inertial myInertial = inertial(PORT3);

// Create the smartdrive instance
smartdrive myDrivetrain = smartdrive(
    leftMotor,  // left motor object
    rightMotor, // right motor object
    myInertial, // inertial object
    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 instances
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);

// Create the inertial instance
inertial myInertial = inertial(PORT3);

// Create the smartdrive instance
smartdrive myDrivetrain = smartdrive(
    leftMotor,  // left motor object
    rightMotor, // right motor object
    myInertial, // inertial object
    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का उपयोग करते समय, 0 से 600 rpm तक, या dpsका उपयोग करते समय, 0 से 3600 डिग्री प्रति सेकंड तक घूमने की गति दी जाती है। यदि कोई गति प्रदान नहीं की जाती है, तो रोबोट वर्तमान घूमने की गति से घूमता है।

units_v

velocityUnits

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

waitForCompletion

bool

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

Return Values

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

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

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

Notes
  • turn प्रगति में रहते हुए किसी अन्य ड्राइवट्रेन मूवमेंट फ़ंक्शन (जैसे drive या turnToHeading) को निष्पादित करने से वर्तमान मूवमेंट बाधित हो जाएगा।

  • क्योंकि turnToHeading लक्ष्य-आधारित है ( angle पैरामीटर का उपयोग करता है), isDone और isMoving जैसे फ़ंक्शन turnToHeading के साथ काम करते हैं।

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का उपयोग करते समय, 0 से 600 rpm तक, या dpsका उपयोग करते समय, 0 से 3600 डिग्री प्रति सेकंड तक घूमने की गति दी जाती है। यदि कोई गति प्रदान नहीं की जाती है, तो रोबोट वर्तमान घूमने की गति से घूमता है।

units_v

velocityUnits

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

waitForCompletion

bool

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

Return Values

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

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

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

Notes
  • turn प्रगति में रहते हुए किसी अन्य ड्राइवट्रेन मूवमेंट फ़ंक्शन (जैसे drive या turnToRotation) को निष्पादित करने से वर्तमान मूवमेंट बाधित हो जाएगा।

  • क्योंकि turnToRotation लक्ष्य-आधारित है ( turnToRotation पैरामीटर का उपयोग करता है), angle और 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 EXP C++ API का हिस्सा नहीं है।

Available Functions
void calibrateDrivetrain();

Parameters

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

Return Values

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

Notes
  • प्रत्येक परियोजना की शुरुआत में रोबोट स्वचालित रूप से कैलिब्रेट हो जाता है।

  • कैलिब्रेशन के दौरान रोबोट को लगभग 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("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 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();