VEXcode V5 Python में AI विज़न सेंसर के साथ कोडिंग करना

सुनिश्चित करें कि आपके एआई विज़न सेंसर के साथ कलर सिग्नेचर और कलर कोड कॉन्फ़िगर किए गए हैं ताकि उनका उपयोग आपके ब्लॉक के साथ किया जा सके। इन्हें कॉन्फ़िगर करने के बारे में अधिक जानने के लिए, आप नीचे दिए गए लेख पढ़ सकते हैं:

एआई विजन सेंसर एआई वर्गीकरण और अप्रैल टैग का भी पता लगा सकता है। इन डिटेक्शन मोड को सक्रिय करने का तरीका जानने के लिए, यहां जाएं:

इन व्यक्तिगत कमांडों के बारे में और अधिक जानकारी प्राप्त करने के लिए और VEXcode में उनका उपयोग कैसे करें, इसके लिए API साइट पर जाएं।


एआई विज़न सेंसर की मदद से दृश्य डेटा प्राप्त करें

प्रत्येक एआई विज़न सेंसर कमांड की शुरुआत कॉन्फ़िगर किए गए एआई विज़न सेंसर के नाम से होगी। इस लेख में दिए गए सभी उदाहरणों के लिए, उपयोग किए गए एआई विज़न सेंसर का नाम ai_vision_1 होगा।

आशुचित्र लें

take_snapshot विधि एआई विज़न सेंसर द्वारा वर्तमान में देखी जा रही चीज़ की एक तस्वीर लेती है और उस स्नैपशॉट से डेटा निकालती है जिसका उपयोग बाद में किसी प्रोजेक्ट में किया जा सकता है। स्नैपशॉट लेते समय, आपको यह निर्दिष्ट करना होगा कि एआई विज़न सेंसर को किस प्रकार की वस्तु का डेटा एकत्र करना चाहिए:

  • Aकलर सिग्नेचर याकलर कोड
    • ये विज़ुअल सिग्नेचर एआई विज़न सेंसर के नाम, डबल अंडरस्कोर और फिर विज़ुअल सिग्नेचर के नाम से शुरू होते हैं, उदाहरण के लिए: ai_vision_1__Blue।
  • एआई वर्गीकरण - AiVision.ALL_AIOBJS
  • अप्रैल टैग- AiVision.ALL_TAGS

स्नैपशॉट लेने से आपके द्वारा निर्दिष्ट सभी पहचाने गए ऑब्जेक्ट्स का एक टपल बन जाएगा। उदाहरण के लिए, यदि आप "नीला" रंग हस्ताक्षरका पता लगाना चाहते हैं, और एआई विज़न सेंसर ने 3 अलग-अलग नीली वस्तुओं का पता लगाया है, तो तीनों से डेटा टपल में डाल दिया जाएगा।

इस उदाहरण में, चर vision_objects एक टपल को संग्रहीत करता है जिसमें एआई विज़न सेंसर ai_vision_1 से पता लगाए गए "बैंगनी"रंग हस्ताक्षर शामिल हैं। यह पता लगाए गए ऑब्जेक्ट्स की संख्या प्रदर्शित करता है और हर 0.5 सेकंड में एक नया स्नैपशॉट लेता है।

while True: 
    # सभी बैंगनी रंग हस्ताक्षरों का स्नैपशॉट प्राप्त करें और इसे vision_objects में संग्रहीत करें।
    vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Purple)
    
    # डेटा खींचने से पहले स्नैपशॉट में ऑब्जेक्ट का पता लगाया गया था या नहीं, यह सुनिश्चित करने के लिए जाँच करें।
    if vision_objects[0].exists == True
    
        brain.screen.clear_screen()
        brain.screen.set_cursor(1, 1)
    
        brain.screen.print("ऑब्जेक्ट की संख्या:", len(vision_objects))
    wait(0.5, SECONDS)

ऑब्जेक्ट गुण

स्नैपशॉट में मौजूद प्रत्येक ऑब्जेक्ट में अलग-अलग गुण होते हैं जिनका उपयोग उस ऑब्जेक्ट के बारे में जानकारी देने के लिए किया जा सकता है। उपलब्ध संपत्तियां निम्नलिखित हैं:

  • पहचान
  • केंद्रX और केंद्रY
  • मूलX और मूलY
  • चौड़ाई
  • ऊंचाई
  • कोण
  • अंक
  • मौजूद है

किसी ऑब्जेक्ट की प्रॉपर्टी तक पहुंचने के लिए, टपल को स्टोर करने वाले वेरिएबल के नाम का उपयोग करें, उसके बाद ऑब्जेक्ट इंडेक्स का उपयोग करें।

ऑब्जेक्ट इंडेक्स यह दर्शाता है कि आप किस विशिष्ट ऑब्जेक्ट की प्रॉपर्टी को प्राप्त करना चाहते हैं। स्नैपशॉट लेने के बाद, एआई विजन सेंसर स्वचालित रूप से वस्तुओं को आकार के अनुसार क्रमबद्ध करता है। सबसे बड़ी वस्तु को सूचकांक 0 दिया जाता है, जबकि छोटी वस्तुओं को उच्चतर सूचकांक संख्याएँ प्राप्त होती हैं।

उदाहरण के लिए, vision_objects चर के अंदर सबसे बड़े ऑब्जेक्ट की चौड़ाई को कॉल करना इस प्रकार होगा: vision_objects[0].width.

पहचान

id प्रॉपर्टी केवल अप्रैल टैग और एआई वर्गीकरणों के लिए उपलब्ध है।

तीन वर्गाकार पहचान चिह्न जिन पर आईडी 0, 9 और 3 अंकित हैं, प्रत्येक के साथ संबंधित निर्देशांक और आकार माप सफेद अक्षरों में प्रदर्शित हैं। आईडी 0 बाईं ओर है, आईडी 9 दाईं ओर है और आईडी 3 नीचे केंद्र में है। प्रत्येक मार्कर में एक वर्ग के अंदर एक अद्वितीय काला-सफेद पैटर्न होता है।

AprilTagके लिए, id प्रॉपर्टी पता लगाए गएAprilTag(s) ID नंबर को दर्शाती है।

विशिष्ट अप्रैल टैग की पहचान करने से चयनात्मक नेविगेशन संभव हो पाता है। आप अपने रोबोट को कुछ टैग की ओर बढ़ने और अन्य को अनदेखा करने के लिए प्रोग्राम कर सकते हैं, जिससे प्रभावी रूप से उनका उपयोग स्वचालित नेविगेशन के लिए दिशासूचक के रूप में किया जा सकता है।

चित्र में दो गेंदें और दो छल्ले दिखाए गए हैं, जिन पर लेबल लगे हैं जो उनकी स्थिति, आकार और स्कोर दर्शाते हैं। लाल गेंद बाईं ओर है, नीली गेंद दाईं ओर है, हरा घेरा नीचे बाईं ओर है और लाल घेरा नीचे दाईं ओर है। प्रत्येक वस्तु को एक सफेद बॉक्स से रेखांकित किया गया है, और X, Y निर्देशांक, चौड़ाई, ऊंचाई और 99% के स्कोर जैसे विवरण सफेद अक्षरों में प्रदर्शित किए गए हैं।

एआई वर्गीकरणके लिए, आईडी प्रॉपर्टी पता लगाए गए एआई वर्गीकरण के विशिष्ट प्रकार को दर्शाती है।

विशिष्ट एआई वर्गीकरणकी पहचान करने से रोबोट को केवल विशिष्ट वस्तुओं पर ध्यान केंद्रित करने की अनुमति मिलती है, जैसे कि केवल लाल बकीबॉल की ओर जाना, नीले रंग की ओर नहीं।

अप्रैलटैग और एआई वर्गीकरण के बारे में अधिक जानकारी के लिए और एआई विज़न यूटिलिटी में उनकी पहचान को सक्षम करने के तरीके के लिए इन लेखों पर जाएं।

केंद्रX और केंद्रY

यह पिक्सेल में पता लगाए गए ऑब्जेक्ट के केंद्र निर्देशांक हैं।

एक नीली बकीबॉल को कंप्यूटर विज़न सिस्टम द्वारा ट्रैक किया जा रहा है। वस्तु को एक सफेद वर्ग से रेखांकित किया गया है, और रूपरेखा के अंदर एक छोटा लाल वर्ग है जो केंद्र में स्थित एक सफेद क्रॉस को घेरे हुए है। छवि के ऊपरी-बाएँ कोने में, एक लेबल इंगित करता है कि वस्तु नीली है, जिसके निर्देशांक X:176, Y:117 और आयाम W:80, H:78 हैं।

सेंटरएक्स और सेंटरवाई निर्देशांक नेविगेशन और स्थिति निर्धारण में सहायता करते हैं। एआई विजन सेंसर का रिजॉल्यूशन 320 x 240 पिक्सल है।

एक दृष्टि प्रणाली द्वारा दो नीले घनाकार वस्तुओं का पता लगाया जा रहा है। ऊपरी वस्तु पर निर्देशांक X:215, Y:70 और आयाम W:73, H:84 अंकित हैं, साथ ही एक सफेद रूपरेखा और केंद्र में एक सफेद क्रॉस भी है। नीचे की वस्तु पर निर्देशांक X:188, Y:184 और आयाम W:144, H:113 अंकित हैं, साथ ही इसे सफेद रंग से रेखांकित किया गया है और इसके केंद्र में एक सफेद क्रॉस बना हुआ है।

आप देख सकते हैं कि एआई विज़न सेंसर के करीब स्थित वस्तु का सेंटरवाई निर्देशांक दूर स्थित वस्तु की तुलना में कम होगा।

इस उदाहरण में, क्योंकि एआई विज़न सेंसर के दृश्य का केंद्र (160, 120) है, रोबोट तब तक दाईं ओर मुड़ेगा जब तक कि पता लगाए गए ऑब्जेक्ट का केंद्रX निर्देशांक 150 पिक्सेल से अधिक न हो, लेकिन 170 पिक्सेल से कम हो।

while True:
    # सभी नीले रंग के हस्ताक्षरों का स्नैपशॉट प्राप्त करें और इसे vision_objects में संग्रहीत करें।
    vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

    # डेटा खींचने से पहले स्नैपशॉट में किसी ऑब्जेक्ट का पता लगाया गया था या नहीं, यह सुनिश्चित करने के लिए जाँच करें।
    if vision_objects[0].exists == True

        # जांचें कि क्या वस्तु एआई विज़न सेंसर के दृश्य के केंद्र में नहीं है।
        if vision_objects[0].centerX > 150 and 170 > vision_objects[0].centerX:

            # जब तक ऑब्जेक्ट दृश्य के केंद्र में न हो तब तक दाईं ओर मुड़ते रहें।
            ड्राइवट्रेन.टर्न(दाएं)
        अन्यथा:
            ड्राइवट्रेन.स्टॉप()
    प्रतीक्षा(5, एमएसईसी)

मूल बिंदु X और मूल बिंदु

OriginX और OriginY, पिक्सेल में पता लगाए गए ऑब्जेक्ट के ऊपरी-बाएँ कोने पर स्थित निर्देशांक हैं।

एक नीली बकीबॉल को दृष्टि प्रणाली द्वारा ट्रैक किया जा रहा है। वस्तु के चारों ओर एक सफेद रूपरेखा बनी हुई है, जिसके केंद्र में रूपरेखा के अंदर एक सफेद क्रॉस बना हुआ है। ऊपर बाईं ओर का लेबल वस्तु के रंग को नीला दर्शाता है, साथ ही निर्देशांक X:176, Y:117 और आयाम W:80, H:78 भी दर्शाता है। एक छोटा लाल वर्ग वस्तु के ऊपरी-बाएँ कोने को उजागर करता है।

OriginX और OriginY निर्देशांक नेविगेशन और स्थिति निर्धारण में सहायता करते हैं। इस निर्देशांक को वस्तु की चौड़ाई और ऊंचाई के साथ मिलाकर, आप वस्तु के परिबद्ध बॉक्स का आकार निर्धारित कर सकते हैं। इससे गतिशील वस्तुओं को ट्रैक करने या वस्तुओं के बीच नेविगेट करने में मदद मिल सकती है।

चौड़ाई ऊंचाई और , ऊंचाई

यह पिक्सेल में पता लगाए गए ऑब्जेक्ट की चौड़ाई या ऊंचाई है।

इस तस्वीर में एक नीली बकीबॉल दिखाई दे रही है, जिसके चारों ओर एक सफेद वर्गाकार आकृति बनी हुई है। ऊपरी बाएँ कोने में एक लेबल है जो दर्शाता है कि यह एक नीली वस्तु है, जिसके निर्देशांक X:176, Y:117 और आयाम W:80, H:78 हैं। लाल तीर वस्तु की चौड़ाई और ऊंचाई को दर्शाते हैं।

चौड़ाई और ऊंचाई के माप विभिन्न वस्तुओं की पहचान करने में सहायक होते हैं। उदाहरण के लिए, एक बकीबॉल की ऊंचाई एक रिंग की ऊंचाई से अधिक होगी।

एक दृश्य पहचान प्रणाली द्वारा दो नीले घनाकार वस्तुओं का पता लगाया जा रहा है। ऊपरी घन की सफेद रूपरेखा है जिस पर एक लेबल लगा है जो X:215, Y:70 के रूप में इसकी स्थिति और W:73, H:84 के आयामों को दर्शाता है। निचले घन की भी इसी तरह की सफेद रूपरेखा है जिस पर X:188, Y:184 और आयाम W:144, H:113 प्रदर्शित हैं। प्रत्येक घन के केंद्र में एक सफेद क्रॉस बना हुआ है, जो संभवतः ट्रैकिंग के केंद्र बिंदु को दर्शाता है। इन लेबलों में प्रत्येक वस्तु के माप और ट्रैकिंग डेटा को दर्शाया गया है।

चौड़ाई और ऊंचाई किसी वस्तु की एआई विजन सेंसर से दूरी को भी दर्शाती हैं। आमतौर पर छोटे माप का मतलब होता है कि वस्तु अधिक दूर है, जबकि बड़े माप से पता चलता है कि वह पास है।

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

while True:
    # सभी नीले रंग के हस्ताक्षरों का स्नैपशॉट प्राप्त करें और इसे vision_objects में संग्रहीत करें।
    vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

    # डेटा खींचने से पहले स्नैपशॉट में किसी ऑब्जेक्ट का पता लगाया गया था या नहीं, यह सुनिश्चित करने के लिए जाँच करें।
    if vision_objects[0].exists == True

        # सबसे बड़ी वस्तु की चौड़ाई मापकर AI विज़न सेंसर के करीब है या नहीं, इसकी जाँच करें।
        if vision_objects[0].width < 250:

            # वस्तु के करीब तब तक ड्राइव करें जब तक कि यह 250 पिक्सेल से अधिक चौड़ा न हो जाए।
            ड्राइवट्रेन.ड्राइव(फॉरवर्ड)
        अन्यथा:
            ड्राइवट्रेन.स्टॉप()

    प्रतीक्षा(5, एमएसईसी)

कोण

एक घूमता हुआ जीआईएफ जिसमें लाल और हरे रंग के ब्लॉक दिखाई दे रहे हैं। जब ब्लॉक लाल से हरे रंग तक पूरी तरह से क्षैतिज रूप से स्थित होते हैं, तो उन्हें 0 डिग्री के रूप में दर्शाया जाता है। यदि लाल ब्लॉक हरे ब्लॉक के ऊपर लंबवत रूप से रखा है, तो यह 90 डिग्री का कोण बनाता है। यदि ब्लॉक क्षैतिज रूप से हरे से लाल रंग के हैं, तो यह 180 डिग्री है। यदि हरा ब्लॉक लाल ब्लॉक के ठीक ऊपर लंबवत रखा हो, तो कोण 270 डिग्री होता है।

कोण प्रॉपर्टी केवलकलर कोड औरअप्रैल टैग.
के लिए उपलब्ध है।
यह दर्शाता है कि क्या पता लगाया गया कलर कोडया अप्रैलटैग अलग तरह से उन्मुख है।

एक दृष्टि प्रणाली द्वारा दो घनों के ढेर पर नज़र रखी जा रही है, जिनमें से एक हरा घन ऊपर और एक नीला घन नीचे रखा है। दोनों घनों के चारों ओर एक सफेद रूपरेखा है, जिसमें हरे घन के केंद्र में एक सफेद क्रॉस बना हुआ है। छवि के निचले भाग में स्थित लेबल Green_Blue A:87° प्रदर्शित करता है, जो पता लगाए गए रंगों और कोण माप को दर्शाता है। इसके नीचे, निर्देशांक X:117, Y:186 के रूप में सूचीबद्ध हैं, जिसमें आयाम W:137, H:172 हैं, जो फ्रेम में स्टैक किए गए क्यूब्स की स्थिति और आकार को दर्शाते हैं।

आप देख सकते हैं कि रोबोटकलर कोड याअप्रैलटैग के संबंध में अलग तरह से उन्मुख है या नहीं और उसके अनुसार नेविगेशन संबंधी निर्णय ले सकते हैं।

दो घन, एक हरा और एक नीला, अगल-बगल रखे गए हैं और एक दृष्टि प्रणाली द्वारा उन पर नज़र रखी जा रही है। दोनों घनों के चारों ओर एक सफेद रूपरेखा है और केंद्र में एक सफेद क्रॉस बना हुआ है। ऊपरी बाएँ कोने में स्थित लेबल Green_Blue A:0° को दर्शाता है, जो पता लगाए गए रंगों और कोण माप को संदर्भित करता है। इसके नीचे, निर्देशांक X:150, Y:102 के रूप में दिखाए गए हैं, जिसमें आयाम W:179, H:109 हैं, जो फ्रेम के भीतर घनों की स्थिति और आकार को दर्शाते हैं।

उदाहरण के लिए, यदिकलर कोड को उचित कोण पर नहीं पहचाना जाता है, तो रोबोट उस वस्तु को ठीक से उठा नहीं पाएगा जिसका वह प्रतिनिधित्व करता है।

अंक

एआई विज़न सेंसर के साथवर्गीकरण का पता लगाने के दौरान स्कोर प्रॉपर्टी का उपयोग किया जाता है।

चित्र में एक दृष्टि प्रणाली द्वारा ट्रैक की जा रही चार वस्तुएं दिखाई दे रही हैं: दो गेंदें और दो रिंग। लाल गेंद पर निर्देशांक X:122, Y:84, W:67, H:66 अंकित हैं और इसका स्कोर 99% है। नीली गेंद का X:228, Y:86, W:70, H:68 है और इसका स्कोर 99% है। हरे रंग के घेरे के निर्देशांक X:109, Y:186, W:98, H:92 हैं और इसका स्कोर 99% है। लाल घेरे पर X:259, Y:187, W:89, H:91 अंकित है, और इसका स्कोर 99% है। प्रत्येक वस्तु को सफेद रंग से रेखांकित किया गया है, जो ट्रैकिंग की सटीकता को दर्शाता है।

कॉन्फिडेंस स्कोर यह दर्शाता है कि एआई विजन सेंसर अपने डिटेक्शन को लेकर कितना आश्वस्त है। इस छवि में, एआई इन चार वस्तुओं के वर्गीकरण की पहचान करने में 99% आश्वस्त है। आप इस स्कोर का उपयोग यह सुनिश्चित करने के लिए कर सकते हैं कि आपका रोबोट केवल अत्यधिक विश्वसनीय पहचानों पर ही ध्यान केंद्रित करे।

मौजूद है

मौजूद प्रॉपर्टी का उपयोग यह पता लगाने के लिए किया जाता है कि क्या अंतिम लिए गए स्नैपशॉट में एक निर्दिष्ट विज़ुअल सिग्नेचर का पता लगाया गया है।

इससे आप यह जांच सकते हैं कि पिछली स्नैपशॉट में कोई भी ऑब्जेक्ट मौजूद था या नहीं। यह प्रॉपर्टी ऑब्जेक्ट के मौजूद होने पर True और ऑब्जेक्ट के मौजूद न होने पर False मान लौटाएगी।

 

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: