दृष्टि#
परिचय#
VEX AIR ड्रोन में दो विज़न सेंसर हैं जो AprilTag ID का पता लगाकर उसे ट्रैक करते हैं। ये सेंसर ड्रोन को अपने आसपास के वातावरण का विश्लेषण करने, वस्तुओं का पीछा करने और प्राप्त दृश्य डेटा के आधार पर प्रतिक्रिया करने में सक्षम बनाते हैं।
नीचे उपलब्ध सभी ब्लॉकों की सूची दी गई है:
कार्य — विज़न फ़ीड को नियंत्रित करें और ऑब्जेक्ट डेटा कैप्चर करें।
वस्तु डेटा प्राप्त करें — अप्रैलटैग आईडी के लिए डेटा कैप्चर करता है।
सेटिंग्स — यह तय करें कि किन पहचाने गए ऑब्जेक्ट्स तक पहुंच प्राप्त की जाए।
सेट विज़न ऑब्जेक्ट आइटम — पता लगाए गए ऑब्जेक्ट सूची से एक विशिष्ट ऑब्जेक्ट का चयन करता है।
मान — वस्तु की उपस्थिति, वर्गीकरण और गुणधर्मों की जानकारी प्राप्त करें।
विज़न ऑब्जेक्ट मौजूद है — रिपोर्ट करता है कि कोई ऑब्जेक्ट पता लगाया गया है या नहीं।
विज़न ऑब्जेक्ट अप्रैलटैग आईडी है — जांच करता है कि क्या पता लगाया गया अप्रैलटैग आईडी एक विशिष्ट आईडी से मेल खाता है।
विज़न ऑब्जेक्ट काउंट — पता लगाए गए ऑब्जेक्ट्स की संख्या की रिपोर्ट करता है।
विज़न ऑब्जेक्ट प्रॉपर्टी — निम्नलिखित विवरण प्राप्त करता है:
centerX & centerY — सेंसर के दृश्य में केंद्र स्थिति निर्देशांक।
बेयरिंग — सामने वाले विज़न सेंसर के सापेक्ष वस्तु का कोण या ड्रोन को वस्तु की ओर उन्मुख करने के लिए आवश्यक डिग्री।
घूर्णन — वस्तु का अभिविन्यास।
originX & originY — सेंसर के दृश्य में शीर्ष-बाएँ कोने की स्थिति निर्देशांक।
आईडी — अप्रैलटैग आईडी की पहचान संख्या।
कार्रवाई#
ऑब्जेक्ट डेटा प्राप्त करें#
ऑब्जेक्ट डेटा प्राप्त करने वाला स्टैक ब्लॉक विज़न सेंसर के फ्रेम से डेटा को फ़िल्टर करता है। विज़न सेंसर अप्रैलटैग आईडी का पता लगा सकते हैं।
इस डेटासेट में ऑब्जेक्ट्स को चौड़ाई के अनुसार सबसे बड़े से सबसे छोटे क्रम में, इंडेक्स 0 से शुरू करके संग्रहित किया गया है। प्रत्येक ऑब्जेक्ट के गुणों को Vision object property ब्लॉक का उपयोग करके एक्सेस किया जा सकता है। यदि कोई मेल खाने वाले ऑब्जेक्ट्स नहीं मिलते हैं, तो एक खाली डेटासेट की सूचना दी जाती है।
Vision [आगे v] कैमरे से [सभी AprilTags v] डेटा प्राप्त करें
पैरामीटर |
विवरण |
|---|---|
हस्ताक्षर |
यह फ़िल्टर डेटासेट को केवल दिए गए हस्ताक्षर के डेटा तक सीमित कर देता है। उपलब्ध हस्ताक्षर सभी अप्रैल टैग हैं। |
कैमरा |
विज़न सेंसर से डेटा प्राप्त करने के लिए, या तो आगे की ओर या नीचे की ओर का उपयोग किया जाता है। |
उदाहरण
जब शुरू हो
[Climb upward when an AprilTag ID is detected.]
[300] [mm v] की ऊंचाई पर उड़ान भरें ▶
हमेशा
Vision [आगे v] कैमरे से [सभी AprilTags v] डेटा प्राप्त करें
यदि <Vision ऑब्जेक्ट मौजूद है?> तो
[ऊपर v] दिशा में [200] [mm v] चढ़ें ▶
सेटिंग्स#
विज़न ऑब्जेक्ट आइटम सेट करें#
सेट विज़न ऑब्जेक्ट आइटम स्टैक ब्लॉक यह निर्धारित करता है कि डेटासेट में किस आइटम का उपयोग करना है।
Vision ऑब्जेक्ट आइटम [1] पर सेट करें
पैरामीटर |
विवरण |
|---|---|
वस्तु |
उपयोग किए जाने वाले डेटासेट में आइटम की संख्या। |
उदाहरण
जब शुरू हो
[Display the smallest-appearing AprilTag ID.]
हमेशा
Vision [आगे v] कैमरे से [सभी AprilTags v] डेटा प्राप्त करें
कंसोल साफ़ करें
यदि <Vision ऑब्जेक्ट मौजूद है?> तो
Vision ऑब्जेक्ट आइटम (Vision ऑब्जेक्ट की संख्या) पर सेट करें
कंसोल पर (Vision ऑब्जेक्ट [id v]) प्रिंट करें ▶
मान#
दृष्टि वस्तु मौजूद है#
विज़न ऑब्जेक्ट मौजूद है बूलियन ब्लॉक यह रिपोर्ट करता है कि क्या निर्दिष्ट विज़न सेंसर वर्तमान में किसी वस्तु का पता लगा रहा है।
सही — निर्दिष्ट विज़न सेंसर ने किसी वस्तु का पता लगाया है।
गलत — निर्दिष्ट विज़न सेंसर किसी वस्तु का पता नहीं लगा पा रहा है।
<Vision ऑब्जेक्ट मौजूद है?>
पैरामीटर |
विवरण |
|---|---|
इस ब्लॉक में कोई पैरामीटर नहीं है। |
उदाहरण
जब शुरू हो
[Climb upward when an AprilTag ID is detected.]
[300] [mm v] की ऊंचाई पर उड़ान भरें ▶
हमेशा
Vision [आगे v] कैमरे से [सभी AprilTags v] डेटा प्राप्त करें
यदि <Vision ऑब्जेक्ट मौजूद है?> तो
[ऊपर v] दिशा में [200] [mm v] चढ़ें ▶
विज़न ऑब्जेक्ट अप्रैलटैग आईडी है#
विज़न ऑब्जेक्ट अप्रैलटैग आईडी बूलियन ब्लॉक यह रिपोर्ट करता है कि क्या अप्रैलटैग आईडी एक विशिष्ट आईडी संख्या है।
सच है — अप्रैलटैग आईडी एक संख्या है।
गलत — अप्रैलटैग आईडी संख्या नहीं है।
<Vision object is AprilTag ID [1]>
पैरामीटर |
विवरण |
|---|---|
अप्रैलटैग आईडी संख्या |
अप्रैलटैग आईडी संख्या से तुलना करने के लिए 0 से 37 तक की संख्या। |
उदाहरण
जब शुरू हो
[Display when the target AprilTag ID is detected.]
हमेशा
Vision [आगे v] कैमरे से [सभी AprilTags v] डेटा प्राप्त करें
कंसोल साफ़ करें
यदि <Vision ऑब्जेक्ट मौजूद है?> तो
यदि <Vision object is AprilTag ID [21]> तो
कंसोल पर [Target found!] प्रिंट करें ▶
अंत
दृष्टि वस्तु गणना#
विज़न ऑब्जेक्ट काउंट रिपोर्टर ब्लॉक डेटासेट में पता लगाए गए ऑब्जेक्ट्स की संख्या को एक पूर्ण संख्या के रूप में रिपोर्ट करता है।
(Vision ऑब्जेक्ट की संख्या)
पैरामीटर |
विवरण |
|---|---|
इस ब्लॉक में कोई पैरामीटर नहीं है। |
उदाहरण
जब शुरू हो
[Display how many AprilTag IDs are detected.]
हमेशा
Vision [आगे v] कैमरे से [सभी AprilTags v] डेटा प्राप्त करें
कंसोल साफ़ करें
कंसोल पर (Vision ऑब्जेक्ट की संख्या) प्रिंट करें ▶
[0.2] सेकंड प्रतीक्षा करें
विज़न ऑब्जेक्ट प्रॉपर्टी#
प्रत्येक ऑब्जेक्ट के साथ कई गुण शामिल होते हैं (नीचे दिखाया गया है) जो get object data ब्लॉक का उपयोग करने के बाद संग्रहीत होते हैं।
(Vision ऑब्जेक्ट [चौड़ाई v])
id को छोड़कर सभी प्रॉपर्टी मान, get object data ब्लॉक का उपयोग किए जाने के समय पता लगाए गए ऑब्जेक्ट की स्थिति, आकार, अभिविन्यास या दिशा का वर्णन करते हैं। ये मान पिक्सल या डिग्री में मापे जाते हैं। प्रत्येक विज़न सेंसर का रिज़ॉल्यूशन अलग-अलग होता है:
सामने की ओर: 640 x 480 पिक्सेल
नीचे की ओर मुख वाला: 640 x 400 पिक्सेल
पैरामीटर |
विवरण |
|---|---|
संपत्ति |
पता लगाए गए ऑब्जेक्ट के किस गुण का उपयोग करना है: |
चौड़ाई#
width प्रॉपर्टी, पिक्सेल में पता लगाए गए ऑब्जेक्ट की चौड़ाई को 1 से 640 तक की पूर्णांक संख्या के रूप में रिपोर्ट करती है।
(Vision ऑब्जेक्ट [चौड़ाई v])
उदाहरण
जब शुरू हो
[Show if the AprilTag ID appears large or small.]
हमेशा
Vision [आगे v] कैमरे से [सभी AprilTags v] डेटा प्राप्त करें
कंसोल साफ़ करें
यदि <Vision ऑब्जेक्ट मौजूद है?> तो
यदि <(Vision ऑब्जेक्ट [चौड़ाई v]) [math_greater_than v] [100]> तो
कंसोल पर [Large] प्रिंट करें ▶
अन्यथा
कंसोल पर [Small] प्रिंट करें ▶
अंत
अंत
[0.2] सेकंड प्रतीक्षा करें
ऊंचाई#
ऊंचाई प्रॉपर्टी पता लगाए गए ऑब्जेक्ट की ऊंचाई को पिक्सल में 1 से 480 तक की पूर्णांक संख्या के रूप में रिपोर्ट करती है।
(Vision ऑब्जेक्ट [ऊंचाई v])
उदाहरण
जब शुरू हो
[Show if the AprilTag ID appears large or small.]
हमेशा
Vision [आगे v] कैमरे से [सभी AprilTags v] डेटा प्राप्त करें
कंसोल साफ़ करें
यदि <Vision ऑब्जेक्ट मौजूद है?> तो
यदि <(Vision ऑब्जेक्ट [ऊंचाई v]) [math_greater_than v] [100]> तो
कंसोल पर [Large] प्रिंट करें ▶
अन्यथा
कंसोल पर [Small] प्रिंट करें ▶
अंत
अंत
[0.2] सेकंड प्रतीक्षा करें
केंद्रX#
centerX प्रॉपर्टी पता लगाए गए ऑब्जेक्ट के केंद्र के x-निर्देशांक को पिक्सल में 1 से 640 तक की पूर्णांक संख्या के रूप में रिपोर्ट करती है।
(Vision ऑब्जेक्ट [centerX v])
उदाहरण
जब शुरू हो
[Show if an AprilTag ID is to the left or the right of the camera.]
हमेशा
Vision [आगे v] कैमरे से [सभी AprilTags v] डेटा प्राप्त करें
कंसोल साफ़ करें
यदि <Vision ऑब्जेक्ट मौजूद है?> तो
यदि <(Vision ऑब्जेक्ट [centerX v]) [math_less_than v] [320]> तो
कंसोल पर [To the left] प्रिंट करें ▶
अन्यथा
कंसोल पर [To the right] प्रिंट करें ▶
अंत
अंत
[0.2] सेकंड प्रतीक्षा करें
केंद्र#
centerY प्रॉपर्टी, पता लगाए गए ऑब्जेक्ट के केंद्र के y-निर्देशांक को पिक्सल में 1 से 480 तक की पूर्णांक संख्या के रूप में रिपोर्ट करती है।
(Vision ऑब्जेक्ट [centerY v])
उदाहरण
जब शुरू हो
[Take off and attempt to align the drone with an AprilTag ID on the wall.]
[Adjust the takeoff height to observe different results.]
[800] [mm v] की ऊंचाई पर उड़ान भरें ▶
Vision [आगे v] कैमरे से [सभी AprilTags v] डेटा प्राप्त करें
यदि <Vision ऑब्जेक्ट मौजूद है?> तो
यदि <(Vision ऑब्जेक्ट [centerY v]) [math_less_than v] [240]> तो
कंसोल पर [Below the target!] प्रिंट करें ▶
अन्यथा
कंसोल पर [Above the target!] प्रिंट करें ▶
अंत
अन्यथा
कंसोल पर [No target found!] प्रिंट करें ▶
सहन करना#
बेयरिंग प्रॉपर्टी ड्रोन के सापेक्ष किसी वस्तु की स्थिति को दर्शाने वाला कोण बताती है। इसका व्यवहार उपयोग किए जा रहे विज़न सेंसर पर निर्भर करता है।
0° का मान यह दर्शाता है कि वस्तु और सेंसर का केंद्र एक सीध में है। धनात्मक मान का अर्थ है कि वस्तु दाईं ओर है, जबकि ऋणात्मक मान का अर्थ है कि वस्तु बाईं ओर है।
सेंसर |
रिटर्न |
|---|---|
नीचे |
ड्रोन के अग्रभाग को वस्तु के केंद्र के साथ संरेखित करने के लिए -180º से 180º तक कितने डिग्री घूमना चाहिए। |
आगे |
ऑब्जेक्ट विज़न सेंसर के केंद्र से -180º से 180º तक बाईं या दाईं ओर विस्थापित होता है। |
(Vision ऑब्जेक्ट [बियरिंग v])
उदाहरण
जब शुरू हो
[Align the front of the drone to an AprilTag ID.]
टर्न वेलोसिटी (15)% पर सेट करें
[500] [mm v] की ऊंचाई पर उड़ान भरें ▶
हमेशा
Vision [नीचे की ओर v] कैमरे से [सभी AprilTags v] डेटा प्राप्त करें
यदि <Vision ऑब्जेक्ट मौजूद है?> तो
यदि <[-20] [math_less_than v] (Vision ऑब्जेक्ट [बियरिंग v]) [math_less_than v] [20]> तो
[Hover once sensor is centered on the AprilTag ID.]
होवर
[सफल v] ध्वनि चलाएं ▶
अन्यथा यदि <(Vision ऑब्जेक्ट [बियरिंग v]) [math_less_than v] [-21]> तो
[बाएं v] दिशा में मुड़ें
अन्यथा
[दाएं v] दिशा में मुड़ें
ROTATION#
रोटेशन प्रॉपर्टी, पता लगाए गए अप्रैलटैग आईडी के ओरिएंटेशन को 1 से 359 डिग्री तक की पूर्ण संख्या के रूप में रिपोर्ट करती है।
(Vision ऑब्जेक्ट [रोटेशन v])
उदाहरण
जब शुरू हो
[Turn left or right based on the rotation of an AprilTag ID.]
[1000] [mm v] की ऊंचाई पर उड़ान भरें ▶
हमेशा
Vision [आगे v] कैमरे से [सभी AprilTags v] डेटा प्राप्त करें
यदि <Vision ऑब्जेक्ट मौजूद है?> तो
यदि <[240] [math_less_than v] (Vision ऑब्जेक्ट [रोटेशन v]) [math_less_than v] [300]> तो
[बाएं v] दिशा में [90] डिग्री मुड़ें ▶
अन्यथा यदि <[60] [math_less_than v] (Vision ऑब्जेक्ट [रोटेशन v]) [math_less_than v] [120]> तो
[दाएं v] दिशा में [90] डिग्री मुड़ें ▶
अन्यथा
होवर
उत्पत्तिX#
originX प्रॉपर्टी, पता लगाए गए ऑब्जेक्ट के बाउंडिंग बॉक्स के ऊपरी-बाएँ कोने के x-निर्देशांक को पिक्सल में 1 से 640 तक की पूर्णांक संख्या के रूप में रिपोर्ट करती है।
(Vision ऑब्जेक्ट [originX v])
उदाहरण
जब शुरू हो
[Draw lines to the AprilTag ID origin from all corners.]
हमेशा
स्क्रीन साफ़ करें
get [all AprilTags v] data from vision [forward v] camera
यदि <Vision ऑब्जेक्ट मौजूद है?> तो
स्क्रीन पर रेखा [0] [0] (Vision ऑब्जेक्ट [originX v]) (Vision ऑब्जेक्ट [originY v]) बनाएं
स्क्रीन पर रेखा [0] [480] (Vision ऑब्जेक्ट [originX v]) (Vision ऑब्जेक्ट [originY v]) बनाएं
स्क्रीन पर रेखा [640] [0] (Vision ऑब्जेक्ट [originX v]) (Vision ऑब्जेक्ट [originY v]) बनाएं
स्क्रीन पर रेखा [640] [480] (Vision ऑब्जेक्ट [originX v]) (Vision ऑब्जेक्ट [originY v]) बनाएं
अंत
[0.2] सेकंड प्रतीक्षा करें
उत्पत्ति#
originY प्रॉपर्टी, पता लगाए गए ऑब्जेक्ट के बाउंडिंग बॉक्स के ऊपरी-बाएँ कोने के y-निर्देशांक को पिक्सेल में 1 से 480 तक की पूर्णांक संख्या के रूप में रिपोर्ट करती है।
(Vision ऑब्जेक्ट [originY v])
उदाहरण
जब शुरू हो
[Draw lines to the AprilTag ID origin from all corners.]
हमेशा
स्क्रीन साफ़ करें
get [all AprilTags v] data from vision [forward v] camera
यदि <Vision ऑब्जेक्ट मौजूद है?> तो
स्क्रीन पर रेखा [0] [0] (Vision ऑब्जेक्ट [originX v]) (Vision ऑब्जेक्ट [originY v]) बनाएं
स्क्रीन पर रेखा [0] [480] (Vision ऑब्जेक्ट [originX v]) (Vision ऑब्जेक्ट [originY v]) बनाएं
स्क्रीन पर रेखा [640] [0] (Vision ऑब्जेक्ट [originX v]) (Vision ऑब्जेक्ट [originY v]) बनाएं
स्क्रीन पर रेखा [640] [480] (Vision ऑब्जेक्ट [originX v]) (Vision ऑब्जेक्ट [originY v]) बनाएं
अंत
[0.2] सेकंड प्रतीक्षा करें
पहचान#
id प्रॉपर्टी, पता लगाए गए AprilTag ID की पहचान संख्या को एक पूर्ण संख्या के रूप में रिपोर्ट करती है।
(Vision ऑब्जेक्ट [id v])
उदाहरण
जब शुरू हो
[Display the detected AprilTag ID.]
हमेशा
Vision [आगे v] कैमरे से [सभी AprilTags v] डेटा प्राप्त करें
कंसोल साफ़ करें
यदि <Vision ऑब्जेक्ट मौजूद है?> तो
कंसोल पर (Vision ऑब्जेक्ट [id v]) प्रिंट करें ▶
अंत
[0.2] सेकंड प्रतीक्षा करें