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

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

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

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


AI विज़न सेंसर से दृश्य डेटा प्राप्त करें

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

आशुचित्र लें

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

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

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

इस उदाहरण में, वेरिएबल vision_objects एक टपल को संग्रहीत करता है जिसमें AI विजन सेंसर से पता लगाए गए "बैंगनी"रंग हस्ताक्षर होते हैं, जिसका नाम 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("Object count:", len(vision_objects))
wait(0.5, SECONDS)

ऑब्जेक्ट गुण

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

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

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

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

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

पहचान

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

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

अप्रैलटैगके लिए, आईडी गुण पता लगाए गएअप्रैलटैग(एस) आईडी नंबर का प्रतिनिधित्व करता है।

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

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

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

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

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

केंद्र और केंद्र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 के साथ लेबल किया गया है, साथ ही केंद्र में एक सफेद क्रॉस के साथ सफेद रंग में रेखांकित किया गया है।

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

इस उदाहरण में, क्योंकि AI विज़न सेंसर के दृश्य का केंद्र (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

# जांचें कि क्या ऑब्जेक्ट AI विज़न सेंसर के दृश्य के केंद्र में नहीं है।
if vision_objects[0].centerX > 150 और 170 > vision_objects[0].centerX:

# जब तक ऑब्जेक्ट दृश्य के केंद्र में न हो, तब तक दाईं ओर मुड़ते रहें।
drivetrain.turn(RIGHT)
else:
drivetrain.stop()
wait(5, MSEC)

मूल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 पिक्सेल से अधिक चौड़ा न हो जाए, तब तक ऑब्जेक्ट के करीब ड्राइव करें।
drivetrain.drive(FORWARD)
else:
drivetrain.stop()

wait(5, MSEC)

कोण

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

कोण गुण केवलरंग कोड औरअप्रैलटैग.

के लिए उपलब्ध है। यह दर्शाता है कि पता लगाया गया रंग कोडया अप्रैलटैग अलग-अलग उन्मुख है।

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

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

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

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

अंक

स्कोर गुण का उपयोग AI विज़न सेंसर के साथAI वर्गीकरण का पता लगाने के दौरान किया जाता है।

चित्र में चार वस्तुओं को एक दृष्टि प्रणाली द्वारा ट्रैक किया जा रहा है: दो गेंदें और दो छल्ले। लाल गेंद को निर्देशांक 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% है। प्रत्येक वस्तु को सफेद रंग से रेखांकित किया गया है, जो ट्रैकिंग सटीकता को दर्शाता है।

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

मौजूद है

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

इससे आप यह जांच सकते हैं कि पिछले स्नैपशॉट में कोई ऑब्जेक्ट पाया गया था या नहीं। यह गुण तब सत्य लौटाएगा जब कोई ऑब्जेक्ट मौजूद होगा, तथा जब ऑब्जेक्ट मौजूद नहीं होगा तो असत्य लौटाएगा।

 

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

Last Updated: