विज़ुअल सर्वोइंग के साथ निशाना लगाना
- आप केवल एक लाइमलाइट और अपने ड्राइवट्रेन का उपयोग करके अपने रोबोट को सटीक और तेज़ी से निशाना लगा सकते हैं।
- यह सब 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;
}