विजुअल सर्वोइंग के साथ निशाना लगाना
- आप केवल एक लाइमलाइट और अपने ड्राइवट्रेन का उपयोग करके अपने रोबोट को सटीक और तेजी से निशाना लगा सकते हैं।
- यह सब 1 घंटे से कम समय में पूरा किया जा सकता है।
उच्च फ्रेमरेट विजन ट्रैकिंग का उपयोग करके, अब आपके रोबोट या टरेट को निर्देशित करने के लिए PID नियंत्रण लूप में सीधे विजन पाइपलाइन को "सेंसर" के रूप में उपयोग करना संभव है। इस विचार का परीक्षण करने के लिए हमने अपने 2017 FRC रोबोट में एक लाइमलाइट जोड़ा और इसे केवल ड्राइवट्रेन और लाइमलाइट द्वारा रिपोर्ट किए जा रहे नेटवर्क टेबल डेटा का उपयोग करके विजन लक्ष्यों पर निशाना लगाने के लिए बनाया।
इस उदाहरण में, हमारा परीक्षण उम्मीदवार एक 2017 FRC रोबोट था जो कोलसन पहियों के साथ 6-पहिया ड्राइवट्रेन का उपयोग करता है। यहां एक तस्वीर है जिसमें हम इस परीक्षण को करने के लिए रोबोट पर एक लाइमलाइट जोड़ रहे हैं।
फिर हमने रोबोट में कुछ कोड जोड़ा जो तब चलेगा जब ड्राइवर जॉयस्टिक पर एक बटन दबाए रखता है। इस रोबोट ने "टैंक" शैली की ड्राइविंग का उपयोग किया, इसलिए ऑपरेटरकंट्रोल फ़ंक्शन ड्राइवट्रेन के बाएं और दाएं पक्षों को नियंत्रित करने के लिए 'left_command' मान और 'right_command' मान उत्पन्न कर रहा था। सामान्य नियंत्रण कोड के बाद, हमने इस तरह का एक कोड ब्लॉक जोड़ा:
float Kp = -0.1f; // आनुपातिक नियंत्रण स्थिरांक
std::shared_ptr<NetworkTable> table = NetworkTable::GetTable("limelight");
float tx = table->GetNumber("tx");
if (joystick->GetRawButton(9))
{
float heading_error = tx;
steering_adjust = Kp * tx;
left_command+=steering_adjust;
right_command-=steering_adjust;
}