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

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

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


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

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

आशुचित्र लें

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

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

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

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

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

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

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

वस्तुओं

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

उपलब्ध संपत्तियां निम्नलिखित हैं:

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

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

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

उदाहरण के लिए, सबसे बड़े ऑब्जेक्ट की चौड़ाई को कॉल करना AIVision1.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) {
  // सभी नीले रंग की वस्तुओं का स्नैपशॉट प्राप्त करें।
  AIVision.takeSnapshot(AIVision__Blue);

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

    यदि (AIVision.objects[0].centerX > 150.0 && 170.0 > AIVision.objects[0].centerX) {
      ड्राइवट्रेन.टर्न(दाएं);
    } अन्यथा {
      ड्राइवट्रेन.स्टॉप();
    }
  }
  प्रतीक्षा करें(5, मिलीसेकंड);
}

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

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

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

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

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

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

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

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

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

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

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

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

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

    यदि (AIVision.objects[0].width < 250.0) {
      ड्राइवट्रेन.ड्राइव(फॉरवर्ड);
    } अन्यथा {
      ड्राइवट्रेन.स्टॉप();
    }
  }
  प्रतीक्षा करें(5, मिलीसेकंड);
}

कोण

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

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

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

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

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

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

अंक

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

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

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

मौजूद है

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

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


ऑब्जेक्टकाउंट

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

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

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

यह कोड स्निपेट एक्सपी ब्रेन को पता लगाए गए ऑब्जेक्ट्स की संख्या के साथ लगातार अपडेट करता रहता है। दिए गए उदाहरण के आधार पर, यह बार-बार 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: