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

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

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


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

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

आशुचित्र लें

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

  • 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, 3 और 9 हैं।

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

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

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

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

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

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

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

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

एआई विजन सेंसर को एक नीली बकीबॉल को ट्रैक करते हुए दिखाया गया है। बकीबॉल के चारों ओर एक ट्रैकिंग आयत है, और ऊपर दिया गया लेबल दर्शाता है कि इसकी X स्थिति 176 और Y स्थिति 117 है। ट्रैकिंग आयत के केंद्र को हाइलाइट किया गया है ताकि यह प्रदर्शित किया जा सके कि स्थिति को केंद्र से मापा जाता है।

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

एआई विजन सेंसर को दो नीले क्यूब्स को ट्रैक करते हुए दिखाया गया है। इन घनों के चारों ओर ट्रैकिंग आयत बने हुए हैं, और उनमें से एक कैमरे के काफी करीब है। निकटवर्ती वस्तु की Y स्थिति 184 है, और दूरवर्ती वस्तु की Y स्थिति 70 है।

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

इस उदाहरण में, क्योंकि एआई विज़न सेंसर के दृश्य का केंद्र (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 है। ट्रैकिंग आयत के ऊपरी बाएँ कोने को हाइलाइट किया गया है ताकि यह दिखाया जा सके कि मूल बिंदु की स्थिति को इसके ऊपरी बाएँ कोने से मापा जाता है।

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

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

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

एआई विजन सेंसर को एक नीली बकीबॉल को ट्रैक करते हुए दिखाया गया है। बकीबॉल के चारों ओर एक ट्रैकिंग आयत है, और ऊपर दिए गए लेबल से पता चलता है कि इसकी चौड़ाई 80 पिक्सल और ऊंचाई 78 पिक्सल है। लाल तीर ट्रैकिंग आयत की चौड़ाई और ऊंचाई को दर्शाने के लिए उसे हाइलाइट कर रहे हैं।

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

एआई विजन सेंसर को दो नीले क्यूब्स को ट्रैक करते हुए दिखाया गया है। इन घनों के चारों ओर ट्रैकिंग आयत बने हुए हैं, और उनमें से एक कैमरे के काफी करीब है। पास वाले की चौड़ाई 144 और ऊंचाई 113 है, जबकि दूर वाले की चौड़ाई 73 और ऊंचाई 84 है।

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

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

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, एमएसईसी)

कोण

एक लाल वर्ग और एक हरे वर्ग को एक साथ घुमाने का एनिमेशन, जो कोण के 360 डिग्री मान को दर्शाता है।

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

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

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

एआई विजन सेंसर हरे और फिर नीले रंग के कोड को ट्रैक करते हुए दिखाया गया है। वीडियो फीड में एक हरे रंग का घन एक नीले घन के बगल में बैठा हुआ दिखाई दे रहा है, लेकिन वे सेंसर की तुलना में एक अजीब कोण पर स्थित हैं। कलर कोड के कोण का मान हाइलाइट किया गया है और 0 डिग्री दिखाता है, जिसका अर्थ है कि कलर कोड का कोण पढ़ा नहीं जा सकता है।

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

अंक

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

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

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

मौजूद है

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

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

 

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

Last Updated: