এআই ভিশন#
ভূমিকা#
VEX AIM কোডিং রোবটের এআই ভিশন সেন্সর বস্তু, রঙ এবং এপ্রিলট্যাগ আইডি শনাক্ত ও ট্র্যাক করে। এর ফলে রোবটটি তার চারপাশ বিশ্লেষণ করতে, বস্তু অনুসরণ করতে এবং শনাক্তকৃত দৃশ্যমান তথ্যের ভিত্তিতে প্রতিক্রিয়া জানাতে পারে।
এআই ভিশন সেন্সরটির রেজোলিউশন হলো 320×240 পিক্সেল। মূলবিন্দু (0, 0) উপরের-বাম কোণে অবস্থিত, যা সেন্সরটির কেন্দ্রকে (160, 120) অবস্থানে স্থাপন করে, যেমনটি নীচের ডায়াগ্রামে দেখানো হয়েছে:

নিম্নে সকল মেথড এবং প্রপার্টির একটি তালিকা দেওয়া হলো:
ক্রিয়াকলাপ — এআই ভিশন ক্যামেরা ফিড দেখান বা লুকান।
show_aivision— রোবটের স্ক্রিনে এআই ভিশন ফিড প্রদর্শন করে।hide_aivision— স্ক্রিন থেকে এআই ভিশন ফিড লুকিয়ে রাখে।tag_detection— এপ্রিলট্যাগ আইডি সনাক্তকরণ চালু বা বন্ধ করে।
গেটার — রোবটটি কোনো বস্তু ধরে আছে কিনা তা শনাক্ত করে।
get_data— একটি নির্দিষ্ট সিগনেচারের জন্য সনাক্ত করা অবজেক্টগুলির একটি টাপল ফেরত দেয়।has_sports_ball— রোবটটির কাছে খেলার বল আছে কিনা তা ফেরত দেয়।has_any_barrel— রোবটটির কোনো ধরনের ব্যারেল আছে কিনা তা ফেরত দেয়।has_blue_barrel— রোবটটির একটি নীল ব্যারেল আছে কিনা তা ফেরত দেয়।has_orange_barrel— রোবটটির একটি কমলা ব্যারেল আছে কিনা তা ফেরত দেয়।
বৈশিষ্ট্য — get_data থেকে ফেরত আসা অবজেক্ট ডেটা।
exists— বস্তুটি বর্তমান সনাক্তকরণে একটি বুলিয়ান হিসাবে বিদ্যমান কিনা।width— সনাক্ত করা বস্তুর প্রস্থ।height— সনাক্ত করা বস্তুর উচ্চতা।centerX— বস্তুটির কেন্দ্রের X অবস্থান।centerY— বস্তুটির কেন্দ্রের Y অবস্থান।bearing— রোবটের সামনের সাপেক্ষে অনুভূমিক কোণ।rotation— বস্তুর অভিমুখ।originX— বস্তুটির উপরের-বাম কোণার X অবস্থান।originY— বস্তুটির উপরের-বাম কোণার Y অবস্থান।id— বস্তুটির শ্রেণীবিভাগ বা ট্যাগ আইডি।score— এআই শ্রেণীকরণের জন্য আত্মবিশ্বাস স্কোর।type— অবজেক্টটির ধরণ (AI, Tag, Color, অথবা Code) ফেরত দেয়।
কনস্ট্রাক্টর — রঙের স্বাক্ষর এবং কোড নির্ধারণ করে।
কালার সিগনেচার তৈরি করুন — RGB এবং হিউ/স্যাচুরেশন রেঞ্জের উপর ভিত্তি করে একটি নতুন কালার সিগনেচার তৈরি করে।
একটি কালার কোড তৈরি করুন — একাধিক কালার সিগনেচারকে একটি একক কালার কোডে একত্রিত করে।
কর্ম#
show_aivision#
show_aivision রোবটের স্ক্রিনে এআই ভিশন সেন্সরের লাইভ ডেটা ফিড প্রদর্শন করে। এই লাইভ ডেটা ফিড স্ক্রিনের অন্য যেকোনো ছবি বা লেখাকে ঢেকে দেবে।
দ্রষ্টব্য: hide_aivision ব্যবহার করে ফিডটি লুকানো না হলে স্ক্রিনে অন্য কোনো ছবি বা লেখা প্রদর্শিত হবে না।
Usage:
robot.screen.show_aivision()
প্যারামিটার |
বর্ণনা |
|---|---|
এই পদ্ধতিতে কোনো প্যারামিটার নেই। |
# Watch the AI Vision Sensor detect AI Classifications
# and AprilTag IDs as you move the robot
robot.screen.show_aivision()
hide_aivision#
hide_aivision রোবটের স্ক্রিন থেকে এআই ভিশন সেন্সরের লাইভ ডেটা ফিড সরিয়ে দেয়।
Usage:
robot.screen.hide_aivision()
প্যারামিটার |
বর্ণনা |
|---|---|
এই পদ্ধতিতে কোনো প্যারামিটার নেই। |
# View the AI Vision Sensor's feed for five seconds
robot.screen.show_aivision()
wait(5, SECONDS)
robot.screen.hide_aivision()
tag_detection#
tag_detection এপ্রিলট্যাগ আইডি শনাক্তকরণ সক্ষম বা অক্ষম করে, যেখানে অবস্থাটি একটি বুলিয়ান মান।
সেন্সরটি Circle21h7 ফ্যামিলির AprilTag আইডি ০ থেকে ৩৬ পর্যন্ত শনাক্ত করতে পারে।
Usage:
robot.vision.tag_detection(state)
প্যারামিটার |
বর্ণনা |
|---|---|
|
মানগুলো হলো: |
robot.screen.set_font(PROP30)
# Cut off AprilTag ID detection after 5 seconds
while True:
if timer.time(SECONDS) > 5:
robot.vision.tag_detection(False)
robot.screen.clear_screen()
robot.screen.set_cursor(3, 1)
apriltags = robot.vision.get_data(ALL_TAGS)
if apriltags[0].exists:
robot.screen.print("AprilTag ID detected!")
else:
robot.screen.print("Nothing detected!")
wait(0.1, SECONDS)
গেটার্স#
get_data#
get_data AI ভিশন সেন্সর ফ্রেম থেকে ডেটা ফিল্টার করে একটি একক সিগনেচারে নিয়ে আসে — যা হলো সেন্সর দ্বারা শনাক্তযোগ্য কোনো কিছুর একটি সংরক্ষিত বিবরণ, যেমন একটি প্রি-ট্রেইনড অবজেক্ট, একটি এপ্রিলট্যাগ আইডি, অথবা একটি কনফিগার করা কালার সিগনেচার বা কালার কোড — এবং একটি tuple রিটার্ন করে।
এই পদ্ধতিতে ব্যবহার করার আগে কালার সিগনেচার এবং কালার কোড প্রথমে এআই ভিশন ইউটিলিটিতে কনফিগার করতে হবে।
টাপল অবজেক্টগুলিকে প্রস্থ অনুসারে বড় থেকে ছোট ক্রমে সংরক্ষণ করে, যা সূচক 0 থেকে শুরু হয়। প্রতিটি অবজেক্টের বৈশিষ্ট্য তার সূচক ব্যবহার করে অ্যাক্সেস করা যেতে পারে। যদি কোনও মিলযুক্ত অবজেক্ট সনাক্ত করা না যায় তবে একটি খালি টাপল ফেরত দেওয়া হয়।
Usage:
robot.vision.get_data(signature, count)
প্যারামিটার |
বর্ণনা |
|---|---|
|
ডেটাসেটটিকে ফিল্টার করে শুধুমাত্র প্রদত্ত স্বাক্ষরের ডেটা অন্তর্ভুক্ত করা হয়। উপলব্ধ সিগনেচারগুলো হলো:
|
|
ঐচ্ছিক। ১ থেকে ২৪ পর্যন্ত ফেরতযোগ্য অবজেক্টের সর্বোচ্চ সংখ্যা নির্ধারণ করে (ডিফল্ট: ৮)। |
দ্রষ্টব্য: AIM প্রিন্টেবলস থেকে মুদ্রিত এপ্রিলট্যাগ আইডি ব্যবহার করে এপ্রিলট্যাগ আইডি 5 থেকে 37 পাওয়া যাবে।
# Move forward if a sports ball is detected
while True:
ball = robot.vision.get_data(SPORTS_BALL)
if ball[0].exists:
robot.move_for(10, 0)
wait(50, MSEC)
দ্রষ্টব্য: ফেরত আসা টাপলটিকে পাইথনের sorted ফাংশন ব্যবহার করে শুধুমাত্র প্রস্থ (width) নয়, যেকোনো প্রপার্টি অনুসারে সাজানো যেতে পারে। উদাহরণস্বরূপ, এপ্রিলট্যাগ আইডি (AprilTag ID) অনুসারে সাজানো:
# Print each detected AprilTag ID in ascending order by ID
while True:
apriltags = sorted(robot.vision.get_data(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(robot.vision.get_data(ALL_TAGS), key=lambda tag: tag.height)
for tag in apriltags_by_height:
print(tag.height)
wait(1, SECONDS)
ডেটা দেখা#
get_data দ্বারা ফেরত আসা টাপলটি প্রিন্ট করলে শনাক্ত করা সমস্ত অবজেক্টের সমস্ত প্রপার্টির একটি তালিকা প্রদর্শিত হয়:
# Display properties of all detected AprilTag IDs
while True:
vision_data = robot.vision.get_data(ALL_TAGS)
if vision_data[0].exists:
break
wait(0.25, SECONDS)
print(vision_data)

এআই শ্রেণিবিন্যাস#
এআইএম এআই ভিশন সেন্সর এই এআই শ্রেণীবিভাগগুলো শনাক্ত করতে পারে:
আইডি নম্বর |
এআই শ্রেণিবিন্যাস |
স্বাক্ষর |
|---|---|---|
০ |
বল |
|
১ |
নীল ব্যারেল |
|
২ |
কমলা ব্যারেল |
|
৩ |
এইম রোবট |
|
রঙিন স্বাক্ষর#
কালার সিগনেচার হলো একটি অনন্য রঙ যা এআই ভিশন সেন্সর চিনতে পারে। এই সিগনেচারগুলো সেন্সরকে বস্তুর রঙের উপর ভিত্তি করে সেগুলোকে শনাক্ত ও ট্র্যাক করতে সাহায্য করে। একবার একটি কালার সিগনেচার কনফিগার করা হলে, সেন্সর তার দৃষ্টিসীমার মধ্যে সেই নির্দিষ্ট রঙের বস্তুগুলোকে শনাক্ত করতে পারে। রিয়েল-টাইমে রঙিন বস্তু প্রসেস ও শনাক্ত করার জন্য get_data এর সাথে কালার সিগনেচার ব্যবহার করা হয়।

# Display if any objects match the Red_Box signature
while True:
robot.screen.set_cursor(1, 1)
robot.screen.clear_row(1)
# Change to any configured Color Signature
ai_objects = robot.vision.get_data(Red_Box)
if ai_objects[0].exists:
robot.screen.print("Color signature detected!")
রঙের কোড#
কালার কোড হলো ২ থেকে ৪টি রঙের স্বাক্ষর দিয়ে গঠিত একটি কাঠামোগত প্যাটার্ন, যা একটি নির্দিষ্ট ক্রমে সাজানো থাকে। এই কোডগুলো এআই ভিশন সেন্সরকে রঙের পূর্বনির্ধারিত প্যাটার্ন শনাক্ত করতে সাহায্য করে। জটিল বস্তু শনাক্ত করতে অথবা স্বয়ংক্রিয় নেভিগেশনের জন্য অনন্য মার্কার তৈরি করতে কালার কোডগুলো উপযোগী।

# Display if any objects match the BlueRed code
while True:
robot.screen.set_cursor(1, 1)
robot.screen.clear_row(1)
# Change to any configured Color Code
ai_objects = robot.vision.get_data(BlueRed)
if ai_objects[0].exists:
robot.screen.print("Color code detected!")
has_sports_ball#
has_sports_ball একটি বুলিয়ান মান রিটার্ন করে যা নির্দেশ করে রোবটটির কাছে বর্তমানে একটি খেলার বল আছে কিনা।
True— রোবটটির একটি খেলার বল আছে।False— রোবটটির কাছে খেলার বল নেই।
Usage:
robot.has_sports_ball()
প্যারামিটার |
বর্ণনা |
|---|---|
এই পদ্ধতিতে কোনো প্যারামিটার নেই। |
# Kick when the robot has a sports ball
while True:
if robot.has_sports_ball():
robot.kicker.kick(MEDIUM)
wait(50, MSEC)
has_any_barrel#
has_any_barrel একটি বুলিয়ান মান রিটার্ন করে যা নির্দেশ করে যে রোবটটির বর্তমানে কোনো ধরনের ব্যারেল আছে কি না।
True— রোবটটির একটি ব্যারেল আছে।False— রোবটটির কোনো ব্যারেল নেই।
Usage:
robot.has_any_barrel()
প্যারামিটার |
বর্ণনা |
|---|---|
এই পদ্ধতিতে কোনো প্যারামিটার নেই। |
# Push a barrel away when detected
while True:
if robot.has_any_barrel():
robot.kicker.place()
wait(50, MSEC)
has_blue_barrel#
has_blue_barrel একটি বুলিয়ান মান রিটার্ন করে যা নির্দেশ করে রোবটটির বর্তমানে একটি নীল ব্যারেল আছে কিনা।
True— রোবটটির একটি নীল ব্যারেল আছে।False— রোবটটির একটি নীল ব্যারেল নেই।
Usage:
robot.has_blue_barrel()
প্যারামিটার |
বর্ণনা |
|---|---|
এই পদ্ধতিতে কোনো প্যারামিটার নেই। |
# Push a blue barrel away when detected
while True:
if robot.has_blue_barrel():
robot.kicker.place()
wait(50, MSEC)
has_orange_barrel#
has_orange_barrel একটি বুলিয়ান মান রিটার্ন করে যা নির্দেশ করে রোবটটির কাছে বর্তমানে একটি কমলা রঙের ব্যারেল আছে কিনা।
True— রোবটটির একটি কমলা রঙের ব্যারেল আছে।False— রোবটটির একটি কমলা রঙের ব্যারেল নেই।
Usage:
robot.has_orange_barrel()
প্যারামিটার |
বর্ণনা |
|---|---|
এই পদ্ধতিতে কোনো প্যারামিটার নেই। |
# Push an orange barrel away when detected
while True:
if robot.has_orange_barrel():
robot.kicker.place()
wait(50, MSEC)
বৈশিষ্ট্য#
robot.vision.get_data মেথডটি ব্যবহার করার পর একটি টাপলে সংরক্ষিত প্রতিটি অবজেক্টের সাথে বারোটি প্রপার্টি অন্তর্ভুক্ত থাকে।
.id, .score, এবং .type বাদে বাকি সমস্ত প্রপার্টি ভ্যালু, robot.vision.get_data ব্যবহার করার মুহূর্তে শনাক্তকৃত বস্তুর অবস্থান, আকার, অভিমুখ বা দিক বর্ণনা করে। এই মানগুলি সেন্সরের 320 বাই 240 পিক্সেল রেজোলিউশনের উপর ভিত্তি করে পিক্সেল বা ডিগ্রিতে পরিমাপ করা হয়।

.exists#
.exists একটি বুলিয়ান মান রিটার্ন করে, যা নির্দেশ করে যে ইন্ডেক্সটি টাপলটিতে বিদ্যমান আছে কি না।
True— সূচকটি বিদ্যমান।False— সূচকটি বিদ্যমান নেই।
# Check if at least two objects are detected
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
ai_objects = robot.vision.get_data(ALL_CARGO)
if ai_objects[0].exists:
if ai_objects[1].exists:
robot.screen.print("At least 2")
else:
robot.screen.print("Less than 2")
wait(0.1, SECONDS)
.width#
.width শনাক্ত করা অবজেক্টটির প্রস্থ পিক্সেলে ফেরত দেয়, যা ১ থেকে ৩২০-এর মধ্যে একটি পূর্ণসংখ্যা।
দ্রষ্টব্য: পিক্সেল মান সেন্সরের স্থানাঙ্ক ব্যবস্থার সাপেক্ষে। রেফারেন্সের জন্য ভূমিকার চিত্র দেখুন।

# Move towards a Blue Barrel until its width is
# larger than 100 pixels
while True:
barrel = robot.vision.get_data(BLUE_BARREL)
if barrel[0].exists:
if barrel[0].width < 100:
robot.move_at(0)
else:
robot.stop_all_movement()
wait(50, MSEC)
.height#
.height শনাক্ত করা বস্তুটির উচ্চতা পিক্সেলে ফেরত দেয়, যা ১ থেকে ২৪০-এর মধ্যে একটি পূর্ণসংখ্যা।
দ্রষ্টব্য: পিক্সেল মান সেন্সরের স্থানাঙ্ক ব্যবস্থার সাপেক্ষে। রেফারেন্সের জন্য ভূমিকার চিত্র দেখুন।

# Move towards a Blue Barrel until its height is
# larger than 100 pixels
while True:
barrel = robot.vision.get_data(BLUE_BARREL)
if barrel[0].exists:
if barrel[0].height < 100:
robot.move_at(0)
else:
robot.stop_all_movement()
wait(50, MSEC)
.centerX#
.centerX শনাক্তকৃত বস্তুর কেন্দ্রের x-স্থানাঙ্ক পিক্সেলে ফেরত দেয়, যা 0 থেকে 320-এর মধ্যে একটি পূর্ণসংখ্যা।
দ্রষ্টব্য: পিক্সেল মান সেন্সরের স্থানাঙ্ক ব্যবস্থার সাপেক্ষে। রেফারেন্সের জন্য ভূমিকার চিত্র দেখুন।

# Turn slowly until a Blue Barrel is centered in
# front of the robot
robot.set_turn_velocity(30)
robot.turn(RIGHT)
while True:
barrel = robot.vision.get_data(BLUE_BARREL)
if barrel[0].exists:
if 140 < barrel[0].centerX < 180:
robot.stop_all_movement()
wait(10,MSEC)
.centerY#
.centerY শনাক্তকৃত বস্তুর কেন্দ্রের y-স্থানাঙ্ক পিক্সেলে ফেরত দেয়, যা 0 থেকে 240-এর মধ্যে একটি পূর্ণসংখ্যা।
দ্রষ্টব্য: পিক্সেল মান সেন্সরের স্থানাঙ্ক ব্যবস্থার সাপেক্ষে। রেফারেন্সের জন্য ভূমিকার চিত্র দেখুন।

# Move towards a Blue Barrel until its
# center y-coordinate is more than 140 pixels
while True:
barrel = robot.vision.get_data(BLUE_BARREL)
if barrel[0].exists:
if barrel[0].centerY < 140:
robot.move_at(0)
else:
robot.stop_all_movement()
wait(50, MSEC)
.bearing#
.bearing একটি দশমিক (ফ্লোট) ফেরত দেয় যা AI ভিশন সেন্সরের দৃশ্যের কেন্দ্র থেকে একটি বস্তু কতটা বামে বা ডানে ডিগ্রিতে রয়েছে তা প্রকাশ করে। 0 মান মানে এটি কেন্দ্রে রয়েছে, ধনাত্মক মান মানে বস্তুটি ডানদিকে এবং ঋণাত্মক মান মানে বস্তুটি বামদিকে রয়েছে।
# Turn to keep the Blue Barrel directly in front
robot.set_turn_velocity(40)
while True:
vision_data = robot.vision.get_data(BLUE_BARREL)
if vision_data[0].exists:
if vision_data[0].bearing > 5:
robot.turn(RIGHT)
elif vision_data[0].bearing < -5:
robot.turn(LEFT)
else:
robot.stop_all_movement()
else:
robot.stop_all_movement()
wait(0.1, SECONDS)
.rotation#
.rotation এআই ভিশন সেন্সরের ভিউয়িং প্লেনে বস্তুটির অভিমুখ ফেরত দেয়, যা ০ থেকে ৩৫৯ ডিগ্রির মধ্যে পরিমাপ করা হয়। একটি কালার কোডের কোণ ০° হয় যখন এর রঙগুলো একটি অনুভূমিক রেখায় সাজানো থাকে (যেমন, লাল–নীল)। যদি রঙগুলো ঘোরানো হয়, তাহলে কোণটি পরিবর্তিত হয় (যেমন, নীল-লাল সাজালে ১৮০° ফেরত আসে)।
নীচের উদাহরণটির জন্য, কালার কোডটি বাম দিকে লাল এবং ডান দিকে নীল রঙ দিয়ে কনফিগার করা হয়েছে।
এই ছবিতে, লালের উপরে নীল রাখাটা মূল কালার কোডটিকে ডানদিকে ২৭০ ডিগ্রী ঘোরানোর সমতুল্য।

# Slide left or right depending on how a Color Code (BlueRed)
# is rotated on the vertical plane
while True:
# Original Color Code is Red to the left, Blue to the right
code = robot.vision.get_data(BlueRed)
if code[0].exists:
# Check if Color Code is now Red on top of Blue
if 50 < code[0].rotation < 100 :
robot.move_at(90)
# Check if Color Code is now Blue on top of Red
elif 270 < code[0].rotation < 330 :
robot.move_at(270)
else:
robot.stop_all_movement()
else:
robot.stop_all_movement()
wait(50, MSEC)
.originX#
.originX শনাক্ত করা বস্তুর বাউন্ডিং বক্সের উপরের-বাম কোণার x-স্থানাঙ্ক পিক্সেলে ফেরত দেয়, যা 0 থেকে 320-এর মধ্যে একটি পূর্ণসংখ্যা।
দ্রষ্টব্য: পিক্সেল মান সেন্সরের স্থানাঙ্ক ব্যবস্থার সাপেক্ষে। রেফারেন্সের জন্য ভূমিকার চিত্র দেখুন।

# Display if an Orange Barrel is to the
# left or the right
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1,1)
orange_barrel = robot.vision.get_data(ORANGE_BARREL)
if orange_barrel[0].exists:
if orange_barrel[0].originX < 160:
robot.screen.print("To the left!")
else:
robot.screen.print("To the right!")
wait(50, MSEC)
.originY#
.originY শনাক্ত করা বস্তুর বাউন্ডিং বক্সের উপরের-বাম কোণার y-স্থানাঙ্ক পিক্সেলে ফেরত দেয়, যা 0 থেকে 240-এর মধ্যে একটি পূর্ণসংখ্যা।
দ্রষ্টব্য: পিক্সেল মান সেন্সরের স্থানাঙ্ক ব্যবস্থার সাপেক্ষে। রেফারেন্সের জন্য ভূমিকার চিত্র দেখুন।

# Display if an Orange Barrel is close or far
# from the robot
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
orange_barrel = robot.vision.get_data(ORANGE_BARREL)
if orange_barrel[0].exists:
if orange_barrel[0].originY < 80:
robot.screen.print("Far")
else:
robot.screen.print("Close")
wait(50, MSEC)
.id#
.id শনাক্তকৃত এআই ক্লাসিফিকেশন বা এপ্রিলট্যাগ আইডি-কে একটি পূর্ণসংখ্যা হিসেবে ফেরত দেয়।
একটি AprilTag ID-এর জন্য, .id প্রপার্টিটি 0 থেকে 37-এর মধ্যে সনাক্তকৃত AprilTag ID নম্বরকে বোঝায়। একটি AI Classification-এর জন্য, .id প্রপার্টিটি AI Classifications বিভাগে পূর্বনির্ধারিত ID-এর সাথে সঙ্গতিপূর্ণ।
# Move forward when AprilTag ID 1 is detected
while True:
apriltags = robot.vision.get_data(ALL_TAGS)
if apriltags[0].exists:
if apriltags[0].id == 1:
robot.move_at(0)
else:
robot.stop_all_movement()
wait(50, MSEC)
.score#
.score শনাক্তকৃত এআই ক্লাসিফিকেশনের কনফিডেন্স স্কোরকে ১ থেকে ১০০-এর মধ্যে একটি পূর্ণসংখ্যা হিসেবে ফেরত দেয়।
কম স্কোরের অর্থ হলো সেন্সরটি শনাক্ত করা বস্তুটি সম্পর্কে কম আত্মবিশ্বাসী, অন্যদিকে বেশি স্কোরের অর্থ হলো সেন্সরটি বেশি আত্মবিশ্বাসী।
# Look confident if an Orange Barrel is detected
while True:
barrel = robot.vision.get_data(ORANGE_BARREL)
if barrel[0].exists:
if barrel[0].score > 95:
robot.screen.show_emoji(CONFIDENT)
else:
robot.screen.hide_emoji()
wait(50, MSEC)
.type#
.type একটি পূর্ণসংখ্যা রিটার্ন করে যা শনাক্ত করা অবজেক্টের ধরন নির্দেশ করে। আপনি টাইপ নম্বর অথবা সংশ্লিষ্ট নামযুক্ত কনস্ট্যান্ট ব্যবহার করে এই মানটি তুলনা করতে পারেন:
বস্তুর প্রকার |
অন্তর্ভুক্ত বস্তুসমূহ |
|---|---|
|
— খেলার বল |
|
— এপ্রিলট্যাগ আইডি |
|
— রঙিন স্বাক্ষর |
|
— রঙের কোড |
# Display if an AprilTag ID or AI Classification
# is detected
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
vision_data = robot.vision.get_data(ALL_VISION)
if vision_data[0].exists:
if vision_data[0].type == AiVision.AI_OBJECT:
robot.screen.print("AI Object!")
elif vision_data[0].type == AiVision.TAG_OBJECT:
robot.screen.print("AprilTag ID!")
wait(0.1, SECONDS)
# Display a list of all detected objects
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
vision_data = robot.vision.get_data(ALL_VISION)
if vision_data[0].exists:
for obj in vision_data:
if obj.type == AiVision.AI_OBJECT:
robot.screen.print("- AI Object")
elif obj.type == AiVision.TAG_OBJECT:
robot.screen.print("- AprilTag ID")
robot.screen.next_row()
wait(0.1, SECONDS)
নির্মাণকারী#
Creating a Color Signature#
একটি নতুন কালার সিগনেচার Colordesc কনস্ট্রাক্টর ব্যবহার করে তৈরি করা হয় এবং তারপর color_description মেথড ব্যবহার করে এআই ভিশন সেন্সরের সাথে রেজিস্টার করা হয়। একটি Colordesc অবজেক্ট সেন্সরের জন্য সর্বোচ্চ ৭টি শনাক্তযোগ্য কালার সিগনেচারের মধ্যে ১টি নির্ধারণ করে, কিন্তু এটি কার্যকর হওয়ার জন্য color_description ব্যবহার করে অবশ্যই স্পষ্টভাবে সেট করতে হবে।
কালারডেস্ক ব্যবহার:
Colordesc(index, red, green, blue, hangle, hdsat)
প্যারামিটার |
বর্ণনা |
|---|---|
|
১ থেকে ৭ পর্যন্ত একটি পূর্ণসংখ্যা যা কালার সিগনেচার ইনডেক্স নির্দেশ করে। যদি দুটি কালার সিগনেচার একই ইনডেক্স ব্যবহার করে, তবে দ্বিতীয়টি প্রথমটিকে বাতিল করে দেবে। |
|
রঙের লাল উপাদানের জন্য ০ থেকে ২৫৫ পর্যন্ত একটি পূর্ণসংখ্যা। |
|
রঙের সবুজ অংশের জন্য ০ থেকে ২৫৫ পর্যন্ত একটি পূর্ণসংখ্যা। |
|
রঙটির নীল উপাদানের জন্য ০ থেকে ২৫৫ পর্যন্ত একটি পূর্ণসংখ্যা। |
|
১ থেকে ৪০ পর্যন্ত একটি ফ্লোট মান, যা রঙের পরিসরকে ডিগ্রিতে প্রকাশ করে। |
|
০.১০ থেকে ১.০০ পর্যন্ত একটি ফ্লোট মান, যা স্যাচুরেশন পরিসীমা নির্দেশ করে। |
color_description এর ব্যবহার:
robot.vision.color_description(object)
প্যারামিটার |
বর্ণনা |
|---|---|
|
শনাক্তযোগ্য কালার সিগনেচার হিসেবে সেট করার জন্য |
# Detect a red object
red_box = Colordesc(1, 207, 19, 25, 10.00, 0.20)
robot.vision.color_description(red_box)
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
red_boxes = robot.vision.get_data(red_box)
if red_boxes[0].exists:
robot.screen.print("Red detected!")
else:
robot.screen.print("No red detected.")
wait(0.2, SECONDS)
Creating a Color Code#
একটি নতুন কালার কোড Codedesc কনস্ট্রাক্টর ব্যবহার করে তৈরি করা হয় এবং তারপর code_description মেথড ব্যবহার করে সক্রিয় করা হয়। একটি কালার কোড ২ থেকে ৪টি বিদ্যমান Colordesc অবজেক্টকে একটি একক আইডেন্টিফায়ারে একত্রিত করে, যা এআই ভিশন সেন্সর একটি সিকোয়েন্স হিসাবে শনাক্ত করতে পারে, কিন্তু এটি কার্যকর হওয়ার জন্য code_description ব্যবহার করে অবশ্যই স্পষ্টভাবে সেট করতে হবে।
Codedesc ব্যবহার:
Codedesc(index, c1, c2, c3, c4, c5)
প্যারামিটার |
বর্ণনা |
|---|---|
|
কালার কোডের সূচক, ১ থেকে ৮ পর্যন্ত। দ্রষ্টব্য: যদি আপনি একই সূচক দিয়ে দুটি |
|
কোডের প্রথম |
|
কোডের দ্বিতীয় |
|
ঐচ্ছিক। একটি তৃতীয় |
|
ঐচ্ছিক। একটি চতুর্থ |
কোড_বর্ণনা ব্যবহার:
robot.vision.code_description(object)
প্যারামিটার |
বর্ণনা |
|---|---|
|
একটি |
# Create Color Signatures
red_box = Colordesc(1, 207, 19, 25, 10.00, 0.20)
purple_box = Colordesc(2, 98, 18, 227, 10.00, 0.20)
robot.vision.color_description(red_box)
robot.vision.color_description(purple_box)
# Detect a red_purple Color Code
red_purple = Codedesc(1, red_box, purple_box)
robot.vision.code_description(red_purple)
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
code_objects = robot.vision.get_data(red_purple)
if code_objects[0].exists:
robot.screen.print("Code detected!")
else:
robot.screen.print("No code detected.")
wait(0.2, SECONDS)