নিশ্চিত করুন যে আপনার AI ভিশন সেন্সরের সাথে কালার সিগনেচার এবং কালার কোড কনফিগার করা আছে যাতে সেগুলি আপনার ব্লকের সাথে ব্যবহার করা যায়। এগুলি কীভাবে কনফিগার করবেন সে সম্পর্কে আরও জানতে, আপনি নীচের নিবন্ধগুলি পড়তে পারেন:
- VEXcode V5-এ AI ভিশন সেন্সর ব্যবহার করে রঙের স্বাক্ষর কনফিগার করা
- VEXcode V5 এ AI ভিশন সেন্সর দিয়ে কালার কোড কনফিগার করা
এআই ভিশন সেন্সরটি এআই ক্লাসিফিকেশন এবং এপ্রিলট্যাগও শনাক্ত করতে পারে। এই সনাক্তকরণ মোডগুলি কীভাবে সক্ষম করবেন তা জানতে, এখানে যান:
- এআই ভিশন সেন্সরের সাহায্যে এআই শ্রেণীবিভাগ ব্যবহার করা
- এআই ভিশন সেন্সরের সাথে এপ্রিলট্যাগ ব্যবহার করা
এআই ভিশন সেন্সর দিয়ে ভিজ্যুয়াল ডেটা সংগ্রহ করুন
প্রতিটি AI Vision Sensor কমান্ড কনফিগার করা AI Vision Sensor এর নাম দিয়ে শুরু হবে। এই প্রবন্ধের সকল উদাহরণের জন্য, ব্যবহৃত AI ভিশন সেন্সরের নাম হবে ai_vision_1।
ছবি তোলা
take_snapshot পদ্ধতিটি AI ভিশন সেন্সর বর্তমানে যা দেখছে তার একটি ছবি তোলে এবং সেই স্ন্যাপশট থেকে ডেটা সংগ্রহ করে যা পরে একটি প্রকল্পে ব্যবহার করা যেতে পারে। যখন একটি স্ন্যাপশট নেওয়া হয়, তখন আপনাকে নির্দিষ্ট করতে হবে যে AI ভিশন সেন্সর কোন ধরণের বস্তুর তথ্য সংগ্রহ করবে:
- Aরঙের স্বাক্ষর অথবারঙের কোড
- এই ভিজ্যুয়াল স্বাক্ষরগুলি AI ভিশন সেন্সরের নাম, ডাবল আন্ডারস্কোর এবং তারপর ভিজ্যুয়াল স্বাক্ষরের নাম দিয়ে শুরু হয়, উদাহরণস্বরূপ:
ai_vision_1__Blue।
- এই ভিজ্যুয়াল স্বাক্ষরগুলি AI ভিশন সেন্সরের নাম, ডাবল আন্ডারস্কোর এবং তারপর ভিজ্যুয়াল স্বাক্ষরের নাম দিয়ে শুরু হয়, উদাহরণস্বরূপ:
-
এআই শ্রেণীবিভাগ -
AiVision.ALL_AIOBJS -
এপ্রিলট্যাগ-
AiVision.ALL_TAGS
একটি স্ন্যাপশট নিলে আপনার নির্দিষ্ট করা সমস্ত সনাক্ত করা বস্তুর একটি টুপল তৈরি হবে। উদাহরণস্বরূপ, যদি আপনি একটি "নীল" রঙের স্বাক্ষরসনাক্ত করতে চান, এবং AI ভিশন সেন্সর 3টি ভিন্ন নীল বস্তু সনাক্ত করে, তাহলে তিনটিরই ডেটা টিপলে রাখা হবে।
এই উদাহরণে, vision_objects ভেরিয়েবলটি AI ভিশন সেন্সর থেকে সনাক্ত করা "Purple"Color Signatures ধারণকারী একটি টুপল সংরক্ষণ করে যার নাম ai_vision_1। এটি সনাক্ত করা বস্তুর সংখ্যা প্রদর্শন করে এবং প্রতি ০.৫ সেকেন্ডে একটি নতুন স্ন্যাপশট ক্যাপচার করে।
while True:
# সমস্ত বেগুনি রঙের সিগনেচারের একটি স্ন্যাপশট নিন এবং এটি vision_objects-এ সংরক্ষণ করুন।
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Purple)
# ডেটা টানার আগে স্ন্যাপশটে কোনো অবজেক্ট শনাক্ত হয়েছে কিনা তা পরীক্ষা করা।
যদি vision_objects[0].exists == True হয়
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("অবজেক্ট সংখ্যা:", len(vision_objects))
wait(0.5, SECONDS)বস্তুর বৈশিষ্ট্য
স্ন্যাপশটের প্রতিটি বস্তুর আলাদা আলাদা বৈশিষ্ট্য রয়েছে যা সেই বস্তু সম্পর্কে তথ্য রিপোর্ট করতে ব্যবহার করা যেতে পারে। উপলব্ধ সম্পত্তিগুলি নিম্নরূপ:
- আইডি
- সেন্টারএক্স এবং সেন্টারওয়াই
- অরিজিনএক্স এবং অরিজিনওয়াই
- প্রস্থ
- উচ্চতা
- কোণ
- স্কোর
- বিদ্যমান
কোনও বস্তুর সম্পত্তি অ্যাক্সেস করতে, টুপল সংরক্ষণকারী ভেরিয়েবলের নাম ব্যবহার করুন, তারপরে অবজেক্ট ইনডেক্স ব্যবহার করুন।
অবজেক্ট ইনডেক্সটি নির্দেশ করে যে আপনি কোন নির্দিষ্ট অবজেক্টের সম্পত্তি পুনরুদ্ধার করতে চান। স্ন্যাপশট নেওয়ার পর, এআই ভিশন সেন্সর স্বয়ংক্রিয়ভাবে আকার অনুসারে বস্তু বাছাই করে। সবচেয়ে বড় বস্তুটিকে সূচক ০ দেওয়া হয়, যেখানে ছোট বস্তুগুলিকে উচ্চতর সূচক সংখ্যা দেওয়া হয়।
উদাহরণস্বরূপ, vision_objects ভেরিয়েবলের ভিতরে বৃহত্তম বস্তুর প্রস্থকে কল করলে হবে: vision_objects[0].width।
আইডি
id সম্পত্তিটি শুধুমাত্র এপ্রিল ট্যাগ এবং AI শ্রেণীবিভাগের জন্য উপলব্ধ।
একটিAprilTagএর জন্য, id বৈশিষ্ট্যটি সনাক্ত করাAprilTag(গুলি) আইডি নম্বরটি উপস্থাপন করে।
নির্দিষ্ট এপ্রিলট্যাগ সনাক্ত করলে নির্বাচনী নেভিগেশনের সুযোগ তৈরি হয়। আপনি আপনার রোবটকে নির্দিষ্ট ট্যাগের দিকে এগিয়ে যাওয়ার জন্য প্রোগ্রাম করতে পারেন, অন্যগুলিকে উপেক্ষা করে, কার্যকরভাবে স্বয়ংক্রিয় নেভিগেশনের জন্য সাইনপোস্ট হিসাবে ব্যবহার করতে পারেন।
AI শ্রেণীবিভাগএর জন্য, id বৈশিষ্ট্যটি সনাক্ত করা নির্দিষ্ট ধরণের AI শ্রেণীবিভাগকে প্রতিনিধিত্ব করে।
নির্দিষ্ট এআই শ্রেণীবিভাগসনাক্তকরণ রোবটকে শুধুমাত্র নির্দিষ্ট বস্তুর উপর ফোকাস করতে দেয়, যেমন শুধুমাত্র একটি লাল বাকিবলের দিকে নেভিগেট করতে চাওয়া, নীল রঙের দিকে নয়।
এপ্রিলট্যাগ এবং এআই ক্লাসিফিকেশন এবং এআই ভিশন ইউটিলিটিতে কীভাবে তাদের সনাক্তকরণ সক্ষম করবেন সে সম্পর্কে আরও তথ্যের জন্য এই নিবন্ধগুলি দেখুন।
কেন্দ্রX এবং কেন্দ্রY
এটি পিক্সেলের মাধ্যমে সনাক্ত করা বস্তুর কেন্দ্র স্থানাঙ্ক।
CenterX এবং CenterY স্থানাঙ্কগুলি নেভিগেশন এবং অবস্থান নির্ধারণে সহায়তা করে। এআই ভিশন সেন্সরটির রেজোলিউশন ৩২০ x ২৪০ পিক্সেল।
আপনি দেখতে পাচ্ছেন যে AI ভিশন সেন্সরের কাছাকাছি থাকা কোনও বস্তুর CenterY স্থানাঙ্ক দূরবর্তী কোনও বস্তুর তুলনায় কম থাকবে।
এই উদাহরণে, যেহেতু AI ভিশন সেন্সরের ভিউয়ের কেন্দ্র (160, 120), রোবটটি ডানদিকে ঘুরবে যতক্ষণ না সনাক্ত করা বস্তুর সেন্টারএক্স স্থানাঙ্ক 150 পিক্সেলের বেশি কিন্তু 170 পিক্সেলের কম হয়।
while True:
# সমস্ত নীল রঙের সিগনেচারের একটি স্ন্যাপশট নিন এবং এটিকে vision_objects-এ সংরক্ষণ করুন।
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)
# ডেটা টানার আগে স্ন্যাপশটে কোনো অবজেক্ট শনাক্ত হয়েছে কিনা তা পরীক্ষা করা।
যদি vision_objects[0].exists == True
# বস্তুটি এআই ভিশন সেন্সরের দৃশ্যের কেন্দ্রে নেই কিনা তা পরীক্ষা করুন।
যদি vision_objects[0].centerX > 150 এবং 170 হয় > vision_objects[0].centerX:
# বস্তুটি দৃশ্যের কেন্দ্রে না আসা পর্যন্ত ডানদিকে ঘোরাতে থাকুন।
ড্রাইভট্রেন ডানদিকে ঘুরবে (
) অন্যথায়:
ড্রাইভট্রেন থামবে (2)
অপেক্ষা করবে (5 মিলিসেকেন্ড)
অরিজিনX এবং অরিজিন
OriginX এবং OriginY হল পিক্সেলের মাধ্যমে সনাক্ত করা বস্তুর উপরের-বাম কোণে স্থানাঙ্ক।
OriginX এবং OriginY স্থানাঙ্ক নেভিগেশন এবং অবস্থান নির্ধারণে সহায়তা করে। এই স্থানাঙ্কটিকে বস্তুর প্রস্থ এবং উচ্চতার সাথে একত্রিত করে, আপনি বস্তুর বাউন্ডিং বাক্সের আকার নির্ধারণ করতে পারেন। এটি চলমান বস্তুগুলি ট্র্যাক করতে বা বস্তুগুলির মধ্যে নেভিগেট করতে সাহায্য করতে পারে।
প্রস্থ এবং উচ্চতা
এটি পিক্সেলের মাধ্যমে সনাক্ত করা বস্তুর প্রস্থ বা উচ্চতা।
প্রস্থ এবং উচ্চতা পরিমাপ বিভিন্ন বস্তু সনাক্ত করতে সাহায্য করে। উদাহরণস্বরূপ, একটি বাকিবলের উচ্চতা একটি রিংয়ের চেয়ে বেশি হবে।
প্রস্থ এবং উচ্চতা এআই ভিশন সেন্সর থেকে কোনও বস্তুর দূরত্বও নির্দেশ করে। ছোট পরিমাপ সাধারণত বোঝায় যে বস্তুটি আরও দূরে, যখন বড় পরিমাপ ইঙ্গিত দেয় যে এটি আরও কাছে।
এই উদাহরণে, বস্তুর প্রস্থ নেভিগেশনের জন্য ব্যবহৃত হয়েছে। রোবটটি বস্তুটির কাছে যাবে যতক্ষণ না প্রস্থ একটি নির্দিষ্ট আকারে পৌঁছায় এবং থামে।
while True:
# সমস্ত নীল রঙের সিগনেচারের একটি স্ন্যাপশট নিন এবং এটিকে vision_objects-এ সংরক্ষণ করুন।
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)
# ডেটা টানার আগে স্ন্যাপশটে কোনো অবজেক্ট শনাক্ত হয়েছে কিনা তা পরীক্ষা করা।
যদি vision_objects[0].exists == True
# বৃহত্তম বস্তুটি AI ভিশন সেন্সরের কাছাকাছি কিনা তা তার প্রস্থ পরিমাপ করে পরীক্ষা করুন।
যদি vision_objects[0].width < 250 হয়:
# বস্তুটির আরও কাছে যান যতক্ষণ না এটি 250 পিক্সেলের চেয়ে চওড়া হয়।
ড্রাইভট্রেন.ড্রাইভ(ফরওয়ার্ড)
অন্যথায়:
ড্রাইভট্রেন.স্টপ()
ওয়েট(5, মিলিসেকেন্ড)কোণ
কোণ বৈশিষ্ট্যটি শুধুমাত্ররঙ কোড এবংএপ্রিলট্যাগএর জন্য উপলব্ধ।
এটি সনাক্ত করা রঙের কোডঅথবা এপ্রিলট্যাগ ভিন্নভাবে পরিচালিত কিনা তা নির্দেশ করে।
আপনি দেখতে পাবেন যে রোবটটিকালার কোড অথবাএপ্রিলট্যাগ এর সাথে ভিন্নভাবে পরিচালিত কিনা এবং সেই অনুযায়ী নেভিগেশনের সিদ্ধান্ত নিতে পারবেন।
উদাহরণস্বরূপ, যদি একটিরঙের কোড সঠিক কোণে সনাক্ত না করা হয়, তাহলে এটি যে বস্তুটি উপস্থাপন করে তা রোবট দ্বারা সঠিকভাবে তোলা সম্ভব নাও হতে পারে।
স্কোর
AI ভিশন সেন্সর দিয়েAI ক্লাসিফিকেশন সনাক্ত করার সময় স্কোর বৈশিষ্ট্যটি ব্যবহার করা হয়।
আত্মবিশ্বাসের স্কোর নির্দেশ করে যে এআই ভিশন সেন্সর তার সনাক্তকরণের বিষয়ে কতটা নিশ্চিত। এই ছবিতে, এই চারটি বস্তুর AI শ্রেণীবিভাগ সনাক্ত করার ক্ষেত্রে এটি ৯৯% আত্মবিশ্বাসী। আপনার রোবটটি শুধুমাত্র অত্যন্ত আত্মবিশ্বাসী সনাক্তকরণের উপর ফোকাস করে তা নিশ্চিত করতে আপনি এই স্কোরটি ব্যবহার করতে পারেন।
বিদ্যমান
শেষ তোলা স্ন্যাপশটে একটি নির্দিষ্ট ভিজ্যুয়াল সিগনেচার সনাক্ত করা হয়েছে কিনা তা সনাক্ত করতে exists প্রপার্টি ব্যবহার করা হয়।
এটি আপনাকে পূর্ববর্তী স্ন্যাপশটে কোনও সনাক্ত করা বস্তু সনাক্ত করা হয়েছে কিনা তা পরীক্ষা করতে দেয়। যখন কোন বস্তু বিদ্যমান থাকে তখন এই বৈশিষ্ট্যটি True এবং যখন কোন বস্তু বিদ্যমান থাকে না তখন False প্রদান করবে।