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

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

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


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

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

आशुचित्र लें

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

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

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

इस उदाहरण में, AIVision1नामक AI विज़न सेंसर से "ब्लू" कलर सिग्नेचरका स्नैपशॉट लिया गया है। यह सारणी में पाई गई वस्तुओं की संख्या प्रदर्शित करता है तथा प्रत्येक 0.5 सेकंड में एक नया स्नैपशॉट कैप्चर करता है।

while (true) {
// सभी नीले रंग की वस्तुओं का एक स्नैपशॉट प्राप्त करें।
AIVision.takeSnapshot(AIVision1__Blue);

// डेटा खींचने से पहले यह सुनिश्चित करने के लिए जांचें कि स्नैपशॉट में कोई वस्तु पाई गई थी।
if (AIVision.objectCount > 0) {

Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
wait(5, msec);
}

वस्तुओं

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

उपलब्ध संपत्तियां इस प्रकार हैं:

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

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

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

उदाहरण के लिए, सबसे बड़ी ऑब्जेक्ट की चौड़ाई को कॉल करना AIVision1.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 पिक्सेल से कम न हो जाए।

जबकि (सत्य) {
  // सभी नीले रंग की वस्तुओं का स्नैपशॉट प्राप्त करें।
  AIVision.takeSnapshot(AIVision__Blue);

  // डेटा खींचने से पहले यह सुनिश्चित करने के लिए जाँच करें कि स्नैपशॉट में कोई ऑब्जेक्ट पाया गया था।
  यदि (AIVision.objectCount > 0) {

    यदि (AIVision.objects[0].centerX > 150.0 && 170.0 > AIVision.objects[0].centerX) {
      Drivetrain.turn(right);
    } अन्यथा {
      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 प्रदर्शित हैं। प्रत्येक क्यूब के मध्य में एक सफेद क्रॉस बना हुआ है, जो संभवतः ट्रैकिंग के लिए केन्द्र बिन्दु को इंगित करता है। लेबल प्रत्येक वस्तु के माप और ट्रैकिंग डेटा को उजागर करते हैं।

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

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

जबकि (सत्य) {
  // सभी नीली वस्तुओं का स्नैपशॉट प्राप्त करें।
  AIVision.takeSnapshot(AIVision1__Blue);

  // डेटा खींचने से पहले यह सुनिश्चित करने के लिए जाँच करें कि स्नैपशॉट में कोई ऑब्जेक्ट पाया गया था।
  यदि (AIVision.objectCount > 0) {

    यदि (AIVision.objects[0].width < 250.0) {
      Drivetrain.drive(forward);
    } अन्यथा {
      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% आश्वस्त है। आप इस स्कोर का उपयोग यह सुनिश्चित करने के लिए कर सकते हैं कि आपका रोबोट केवल अत्यधिक विश्वसनीय पहचानों पर ही ध्यान केंद्रित करे।

मौजूद है

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

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


ऑब्जेक्ट गणना

objectCount विधि अंतिम स्नैपशॉट में पता लगाए गए ऑब्जेक्ट की मात्रा लौटाती है।

एआई विजन यूटिलिटी इंटरफेस में बाईं ओर दो नीले रंग के क्यूब्स पाए गए हैं, जिनमें से प्रत्येक पर उनके एक्स और वाई निर्देशांक और आयाम अंकित हैं। सिस्टम कनेक्ट हो गया है, और अप्रैलटैग्स चालू हैं, जबकि एआई वर्गीकरण बंद है। दाईं ओर, नीले रंग की सेटिंग्स समायोज्य रंग और संतृप्ति श्रेणियों के साथ प्रदर्शित होती हैं, जो क्रमशः 22 और 0.34 पर सेट होती हैं। इसमें रंग जोड़ने या सेट करने तथा वीडियो को फ्रीज करने का विकल्प भी मौजूद है। फर्मवेयर अद्यतन है, संस्करण 1.0.0.b16 पर चल रहा है, और नीचे एक बंद बटन उपलब्ध है।

इस उदाहरण में,रंग हस्ताक्षर "नीला" के साथ दो वस्तुओं का पता लगाया गया है। जब takeSnapshot विधि का उपयोग किया जाएगा तो वे दोनों सरणी में डाल दिए जाएंगे।

यह कोड स्निपेट EXP ब्रेन को पता लगाई गई वस्तुओं की संख्या के साथ लगातार अपडेट करता रहता है। दिए गए उदाहरण के आधार पर, यह बार-बार मान 2 भेजेगा, जो यह दर्शाता है कि दो ऑब्जेक्ट का पता लगाया गया है।

while (true) {
// सभी नीले ऑब्जेक्ट्स का स्नैपशॉट प्राप्त करें।
AIVision.takeSnapshot(AIVision__Blue);

Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// डेटा खींचने से पहले यह सुनिश्चित करने के लिए जांचें कि स्नैपशॉट में ऑब्जेक्ट का पता लगाया गया था।
if (AIVision.objectCount > 0) {
Brain.Screen.print(AIVision1.objectCount);
}
wait(5, msec);
}

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

Last Updated: