एआई विज़न#
परिचय#
एआई विज़न सेंसर वस्तुओं, रंगों और अप्रैलटैग आईडी का पता लगा सकता है और उन्हें ट्रैक कर सकता है। इससे रोबोट अपने आसपास के वातावरण का विश्लेषण कर सकता है, वस्तुओं का पीछा कर सकता है और पता लगाए गए दृश्य डेटा के आधार पर प्रतिक्रिया कर सकता है।
इस पृष्ठ पर उदाहरण के तौर पर AI विज़न सेंसर, कलर सिग्नेचर और कलर कोड के नाम ai_vision_1, RED_BOXऔर BOX_CODE दिए गए हैं। आवश्यकतानुसार इन्हें अपने कॉन्फ़िगर किए गए नामों से बदलें।
नीचे सभी विधियों की सूची दी गई है:
गेटर्स – एआई विज़न सेंसर से डेटा प्राप्त करें।
take_snapshot– एक विशिष्ट हस्ताक्षर के लिए डेटा कैप्चर करता है।installed– क्या एआई विज़न सेंसर एक्सपी ब्रेन से जुड़ा है।
गुणधर्म – take_snapshot से प्राप्त ऑब्जेक्ट डेटा।
.exists– क्या वस्तु वर्तमान पहचान में मौजूद है।.width– पता लगाए गए ऑब्जेक्ट की चौड़ाई।.height– पता लगाई गई वस्तु की ऊँचाई।.centerX– वस्तु के केंद्र की X स्थिति।.centerY– वस्तु के केंद्र की Y स्थिति।.angle– रंग कोड का अभिविन्यास..originX– वस्तु के शीर्ष-बाएँ कोने की X स्थिति।.originY– वस्तु के शीर्ष-बाएँ कोने की Y स्थिति।.id– ऑब्जेक्ट का वर्गीकरण या टैग आईडी।.score– एआई वर्गीकरण के लिए आत्मविश्वास स्कोर।
कंस्ट्रक्टर – एआई विज़न सेंसर और उसके सिग्नेचर को मैन्युअल रूप से इनिशियलाइज़ और कॉन्फ़िगर करें।
टिककर खेल#
take_snapshot#
take_snapshot AI विज़न सेंसर के फ्रेम से डेटा को एक एकल हस्ताक्षर में फ़िल्टर करता है - सेंसर द्वारा पहचाने जा सकने वाली किसी चीज़ का सहेजा गया विवरण, जैसे कि एक पूर्व-प्रशिक्षित वस्तु, एक अप्रैलटैग आईडी, या एक कॉन्फ़िगर किया गया रंग हस्ताक्षर या रंग कोड - और एक टपल लौटाता है।
कलर सिग्नेचर और कलर कोड को इस विधि के साथ उपयोग करने से पहले विज़न यूटिलिटी में पहले कॉन्फ़िगर किया जाना चाहिए।
यह टपल, इंडेक्स 0 से शुरू होकर, चौड़ाई के अनुसार सबसे बड़े से सबसे छोटे क्रम में व्यवस्थित वस्तुओं को संग्रहीत करता है। प्रत्येक वस्तु के गुण को उसके इंडेक्स का उपयोग करके एक्सेस किया जा सकता है। यदि कोई मेल खाने वाली वस्तुएँ नहीं मिलती हैं, तो एक खाली टपल लौटाया जाता है।
Usage:
ai_vision_1.take_snapshot(SIGNATURE)
पैरामीटर |
विवरण |
|---|---|
|
यह फ़िल्टर डेटासेट को केवल दिए गए सिग्नेचर के डेटा को शामिल करने के लिए फ़िल्टर करता है। उपलब्ध सिग्नेचर हैं:
|
|
यह विकल्प वैकल्पिक है। यह 1 से 24 तक की अधिकतम संख्या में ऑब्जेक्ट लौटाने की अनुमति देता है। डिफ़ॉल्ट मान 8 है। |
# Drive forward if an object is detected
while True:
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
drivetrain.drive_for(FORWARD, 50, MM)
wait(50, MSEC)
नोट: लौटाए गए टपल को केवल चौड़ाई के आधार पर ही नहीं, बल्कि किसी भी प्रॉपर्टी के आधार पर सॉर्ट किया जा सकता है, इसके लिए Python के sorted फ़ंक्शन का उपयोग किया जाता है। उदाहरण के लिए, अप्रैल टैग आईडी के आधार पर सॉर्ट करना:
# Print each detected AprilTag ID in ascending order by ID
while True:
apriltags = sorted(ai_vision_1.take_snapshot(AiVision.ALL_TAGS), key=id)
for tag in apriltags:
print(tag.id)
wait(1, SECONDS)
या फिर ऊंचाई के आधार पर क्रमबद्ध करना:
# Print each detected AprilTag ID in ascending order by height
while True:
apriltags_by_height = sorted(ai_vision_1.take_snapshot(AiVision.ALL_TAGS), key=lambda tag: tag.height)
for tag in apriltags_by_height:
print(tag.height)
wait(1, SECONDS)
एआई वर्गीकरण#
एआई विज़न सेंसर कुछ विशिष्ट एआई वर्गीकरणों के अंतर्गत विभिन्न वस्तुओं का पता लगा सकता है। डिवाइस विंडो में एआई विज़न सेंसर को कॉन्फ़िगर करते समय चयनित एआई वर्गीकरण मॉडल के आधार पर, विभिन्न वस्तुओं का पता लगाया जाएगा। वर्तमान में उपलब्ध मॉडल हैं:
कक्षा के तत्व
आईडी नंबर |
एआई वर्गीकरण |
|---|---|
0 |
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
VEX V5 रोबोटिक्स प्रतियोगिता में भारी दांव
आईडी नंबर |
एआई वर्गीकरण |
|---|---|
0 |
|
1 |
|
2 |
|
VEX V5 रोबोटिक्स प्रतियोगिता स्थगित
आईडी नंबर |
एआई वर्गीकरण |
|---|---|
0 |
|
1 |
|
VEX V5 रोबोटिक्स प्रतियोगिता ओवरराइड
आईडी नंबर |
एआई वर्गीकरण |
|---|---|
0 |
|
1 |
|
2 |
|
3 |
|
4 |
|
रंग हस्ताक्षर#
कलर सिग्नेचर एक विशिष्ट रंग होता है जिसे एआई विज़न सेंसर पहचान सकता है। ये सिग्नेचर एआई विज़न सेंसर को वस्तुओं को उनके रंग के आधार पर पहचानने और ट्रैक करने में सक्षम बनाते हैं। एक बार कलर सिग्नेचर कॉन्फ़िगर हो जाने पर, सेंसर अपने दृश्य क्षेत्र में उस विशिष्ट रंग वाली वस्तुओं की पहचान कर सकता है। कलर सिग्नेचर का उपयोग take_snapshot के साथ वास्तविक समय में रंगीन वस्तुओं को संसाधित करने और पहचानने के लिए किया जाता है।
किसी प्रोजेक्ट में कॉन्फ़िगर किए गए कलर सिग्नेचर का उपयोग करने के लिए, उसका नाम सेंसर का नाम, दो अंडरस्कोर और फिर कलर सिग्नेचर का नाम होना चाहिए। उदाहरण के लिए: ai_vision_1__RED_BOX।
# Display if any objects match the RED_BOX signature
while True:
brain.screen.set_cursor(1, 1)
brain.screen.clear_row(1)
# Change to any configured Color Signature
red_box = ai_vision_1.take_snapshot(ai_vision_1__RED_BOX)
if red_box[0].exists:
brain.screen.print("Color detected!")
wait(100, MSEC)
रंग कोड#
कलर कोड एक संरचित पैटर्न होता है जो विशिष्ट क्रम में व्यवस्थित रंग चिह्नों से बना होता है। ये कोड एआई विज़न सेंसर को पूर्वनिर्धारित रंग पैटर्न को पहचानने में मदद करते हैं। कलर कोड जटिल वस्तुओं की पहचान करने या स्वचालित नेविगेशन के लिए विशिष्ट मार्कर बनाने में उपयोगी होते हैं।
किसी प्रोजेक्ट में कॉन्फ़िगर किए गए कलर कोड का उपयोग करने के लिए, उसका नाम सेंसर का नाम, दो अंडरस्कोर और फिर कलर कोड का नाम होना चाहिए। उदाहरण के लिए: ai_vision_1__BOX_CODE।
# Display if any objects match the BOX_CODE code
while True:
brain.screen.set_cursor(1, 1)
brain.screen.clear_row(1)
# Change to any configured Color Code
box_code = ai_vision_1.take_snapshot(ai_vision_1__BOX_CODE)
if box_code[0].exists:
brain.screen.print("Code detected!")
wait(100, MSEC)
installed#
installed एक बूलियन मान लौटाता है जो यह दर्शाता है कि एआई विज़न सेंसर वर्तमान में EXP ब्रेन से जुड़ा है या नहीं।
True– एआई विज़न सेंसर EXP ब्रेन से जुड़ा है।False– एआई विज़न सेंसर EXP ब्रेन से कनेक्टेड नहीं है।
Usage:
ai_vision_1.installed()
पैरामीटर |
विवरण |
|---|---|
इस विधि के कोई मानदंड नहीं हैं। |
# Display a message if the AI Vision Sensor is connected
if ai_vision_1.installed():
brain.screen.print("Installed!")
गुण#
take_snapshot के बाद टपल में संग्रहीत प्रत्येक ऑब्जेक्ट के साथ दस गुण शामिल होते हैं।
.id और .score को छोड़कर सभी प्रॉपर्टी मान, AI विज़न सेंसर के दृश्य में पता लगाए गए ऑब्जेक्ट की स्थिति और आकार का वर्णन करते हैं, जिस क्षण take_snapshot उपयोग किया गया था। ये मान सेंसर के 320 x 240 पिक्सेल रिज़ॉल्यूशन के आधार पर पिक्सेल में मापे जाते हैं।
.exists#
.exists एक बूलियन लौटाता है जो इंगित करता है कि इंडेक्स टपल में मौजूद है या नहीं।
True– सूचकांक मौजूद है।False– इंडेक्स मौजूद नहीं है।
# Check if at least two objects are detected
while True:
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if objects[1].exists:
brain.screen.print("At least 2")
else:
brain.screen.print("Less than 2")
wait(50, MSEC)
.width#
.width पिक्सेल में पता लगाए गए ऑब्जेक्ट की चौड़ाई लौटाता है, जो 1 और 320 के बीच एक पूर्णांक है।
# Approach an object until it's at least 100 pixels wide
while True:
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if objects[0].width < 100:
drivetrain.drive(FORWARD)
else:
drivetrain.stop()
wait(50, MSEC)
.height#
.height पिक्सेल में पता लगाए गए ऑब्जेक्ट की ऊंचाई लौटाता है, जो 1 और 240 के बीच एक पूर्णांक है।
# Approach an object until it's at least 90 pixels tall
while True:
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if objects[0].height < 90:
drivetrain.drive(FORWARD)
else:
drivetrain.stop()
wait(50, MSEC)
.centerX#
.centerX पता लगाए गए ऑब्जेक्ट के केंद्र का x-निर्देशांक पिक्सेल में लौटाता है, जो 0 और 320 के बीच एक पूर्णांक है।
# Turn until an object is directly in front of the sensor
drivetrain.set_turn_velocity(10, PERCENT)
drivetrain.turn(RIGHT)
while True:
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if 140 < objects[0].centerX < 180:
drivetrain.stop()
wait(10,MSEC)
.centerY#
.centerY पता लगाए गए ऑब्जेक्ट के केंद्र का y-निर्देशांक पिक्सेल में लौटाता है, जो 0 और 240 के बीच एक पूर्णांक है।
# Approach an object until the object's center is
# high enough in the field of view
while True:
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if objects[0].centerY < 150:
drivetrain.drive(FORWARD)
else:
drivetrain.stop()
wait(50, MSEC)
.angle#
.angle पता लगाए गए कलर कोड या अप्रैलटैग आईडी का ओरिएंटेशन डिग्री में लौटाता है, जो 0 और 359 के बीच एक पूर्णांक है।
# Turn left or right depending on how a
# configured Color Code is rotated
while True:
box_code = ai_vision_1.take_snapshot(ai_vision_1__BOX_CODE)
if box_code[0].exists:
if 50 < box_code[0].angle < 100:
drivetrain.turn(RIGHT)
elif 270 < box_code[0].angle < 330:
drivetrain.turn(LEFT)
else:
drivetrain.stop()
else:
drivetrain.stop()
wait(50, MSEC)
.originX#
.originX पता लगाए गए ऑब्जेक्ट के बाउंडिंग बॉक्स के ऊपरी-बाएँ कोने का x-निर्देशांक पिक्सेल में लौटाता है, जो 0 और 320 के बीच एक पूर्णांक है।
# Display if an object is to the left or the right
while True:
brain.screen.clear_screen()
brain.screen.set_cursor(1,1)
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if objects[0].originX < 120:
brain.screen.print("To the left!")
else:
brain.screen.print("To the right!")
else:
brain.screen.print("No objects")
wait(100, MSEC)
.originY#
.originY पता लगाए गए ऑब्जेक्ट के बाउंडिंग बॉक्स के ऊपरी-बाएँ कोने का y-निर्देशांक पिक्सेल में लौटाता है, जो 0 और 240 के बीच एक पूर्णांक है।
# Display if an object is close or far
while True:
brain.screen.clear_screen()
brain.screen.set_cursor(1,1)
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if objects[0].originY < 110:
brain.screen.print("Close")
else:
brain.screen.print("Far")
.id#
.id पता लगाए गए एआई वर्गीकरण या अप्रैलटैग आईडी को पूर्णांक के रूप में लौटाता है।
अप्रैलटैग आईडी के लिए, .id प्रॉपर्टी 0 से 36 की सीमा में पता लगाए गए अप्रैलटैग आईडी नंबर को दर्शाती है। एआई वर्गीकरण के लिए, .id प्रॉपर्टी एआई वर्गीकरण अनुभाग में पूर्वनिर्धारित आईडी से मेल खाती है।
# Move forward when AprilTag ID 1 is detected
while True:
apriltags = ai_vision_1.take_snapshot(AiVision.ALL_TAGS)
if apriltags[0].exists:
if apriltags[0].id == 1:
robot.drive(FORWARD)
else:
drivetrain.stop()
wait(50, MSEC)
.score#
.score पता लगाए गए एआई वर्गीकरण का आत्मविश्वास स्कोर 1 और 100 के बीच एक पूर्णांक के रूप में लौटाता है।
कम स्कोर का मतलब है कि सेंसर को पता लगाए गए ऑब्जेक्ट के बारे में कम भरोसा है, जबकि उच्च स्कोर का मतलब है कि सेंसर को अधिक भरोसा है।
कंस्ट्रक्टर्स#
कंस्ट्रक्टर का उपयोग मैन्युअल रूप से AiVision, Colordesc, और Codedesc ऑब्जेक्ट बनाने के लिए किया जाता है, जो VEXcode के बाहर AI विज़न सेंसर को कॉन्फ़िगर करने के लिए आवश्यक हैं।
AiVision#
AiVision एक AI विज़न सेंसर बनाता है।
उपयोग
Vision(smartport, sigs)
पैरामीटर |
विवरण |
|---|---|
|
स्मार्ट पोर्ट जिससे एआई विज़न सेंसर जुड़ा हुआ है, उसे |
|
वैकल्पिक। अल्पविराम (
|
# Create the Color Signatures
RED_BOX = Colordesc(1, 255, 0, 0, 20, 0.9)
BLUE_BOX = Colordesc(0, 26, 255, 0, 20, 0.9)
# Create the Color Code
RED_BLUE = Codedesc(RED_BOX, BLUE_BOX)
"""
Create an AI Vision Sensor with the following signatures:
- RED_BLUE
- AiVision.ALL_TAGS - for AprilTag IDs
"""
ai_vision_1 = AiVision(Ports.PORT1, RED_BLUE, AiVision.ALL_TAGS)
Colordesc#
Colordesc एक कलर सिग्नेचर बनाता है। एक एआई विज़न सेंसर पर एक साथ अधिकतम सात अलग-अलग कलर सिग्नेचर स्टोर किए जा सकते हैं।
Usage:
Colordesc(index, red, green, blue, hangle, hdsat)
पैरामीटर |
विवरण |
|---|---|
|
|
|
लाल रंग का मान 0 से 255 तक होता है। |
|
हरे रंग का मान 0 से 255 तक होता है। |
|
नीले रंग का मान 0 से 255 तक होता है। |
|
रंग चक्र पर डिग्री के विस्तार के रूप में अनुमेय रंग भिन्नता (1-40)। उच्च मान आधार रंग से व्यापक घूर्णीय विचलन की अनुमति देते हैं। |
|
स्वीकार्य संतृप्ति विचलन 0.10 से 1.00 तक होता है। यह मान पूर्ण संतृप्ति सीमा के उस अंश को दर्शाता है जिसके भीतर रंग में बदलाव हो सकता है (उदाहरण के लिए, 0.10 = ±10% संतृप्ति)। |

"""
Create a Color Signature with the following values:
- index: 1
- red: 255
- green: 0
- blue: 0
- hangle: 20
- hdsat: 0.9
"""
# Create a red Color Signature
RED_BOX = Colordesc(1, 255, 0, 0, 20, 0.9)
Codedesc#
Codedesc एक कलर कोड बनाता है। इसके उपयोग के लिए कम से कम दो पहले से परिभाषित कलर सिग्नेचर आवश्यक हैं। एक विज़न सेंसर पर एक साथ अधिकतम आठ अलग-अलग कलर कोड संग्रहीत किए जा सकते हैं।
Usage:
Codedesc(sig1, sig2, sig3, sig4, sig5)
पैरामीटर |
विवरण |
|---|---|
|
पहले से निर्मित रंग हस्ताक्षर। |
|
पहले से निर्मित रंग हस्ताक्षर। |
|
वैकल्पिक। पहले से निर्मित रंग हस्ताक्षर। |
|
वैकल्पिक। पहले से निर्मित रंग हस्ताक्षर। |
|
वैकल्पिक। पहले से निर्मित रंग हस्ताक्षर। |
# Create the Color Signatures
RED_BOX = Colordesc(1, 255, 0, 0, 20, 0.9)
BLUE_BOX = Colordesc(0, 26, 255, 0, 20, 0.9)
# Create a Color Code with the Color Signatures
BOX_CODE = Codedesc(RED_BOX, BLUE_BOX)
Tagdesc#
Tagdesc एक AprilTag ID बनाता है। आप इसका उपयोग पहचानने योग्य AprilTag ID को परिभाषित करने के लिए कर सकते हैं, जिससे आपका कोड अधिक स्पष्ट और पढ़ने में आसान हो जाता है।
Usage:
Tagdesc(id)
पैरामीटर |
विवरण |
|---|---|
|
उपयोग की जाने वाली अप्रैलटैग आईडी। |
# Set AprilTag ID 7 to be the "goal"
goal = Tagdesc(7)