تأكد من أن لديك توقيعات لونية و رمز لوني تم تكوينها باستخدام مستشعر الرؤية AI الخاص بك حتى يمكن استخدامها مع الكتل الخاصة بك. لمعرفة المزيد حول كيفية تكوينها، يمكنك قراءة المقالات أدناه:
- تكوين توقيعات الألوان باستخدام توقيع AI Vision في VEXcode EXP
- تكوين أكواد الألوان باستخدام توقيع AI Vision في VEXcode EXP
يمكن لمستشعر الرؤية AI أيضًا اكتشاف تصنيفات AI وAprilTags. لتعلم كيفية تمكين أوضاع الكشف هذه، انتقل إلى هنا:
- تصنيفات الذكاء الاصطناعي باستخدام مستشعر رؤية الذكاء الاصطناعي في VEXcode EXP
- علامات أبريل مع مستشعر الرؤية AI في VEXcode EXP
لمعرفة المزيد من التفاصيل حول هذه الأوامر الفردية وكيفية استخدامها في VEXcode، انتقل إلى موقع API.
احصل على البيانات المرئية باستخدام مستشعر الرؤية AI
سيبدأ كل أمر من أوامر AI Vision Sensor باسم AI Vision Sensor الذي تم تكوينه. بالنسبة لجميع الأمثلة المذكورة في هذه المقالة، سيكون اسم مستشعر الرؤية AI المستخدم هو AIVision.
التقط لقطة
تلتقط طريقة صورة لما يراه مستشعر الرؤية AI حاليًا وتستخرج البيانات من تلك اللقطة التي يمكن استخدامها بعد ذلك في مشروع. عند التقاط لقطة، يتعين عليك تحديد نوع الكائن الذي يجب أن يجمع مستشعر الرؤية AI بيانات عنه:
- توقيع اللون أورمز اللون
- تبدأ هذه التوقيعات المرئية باسم مستشعر الرؤية الذكية، ثم الشرطة السفلية المزدوجة، ثم اسم التوقيع المرئي، على سبيل المثال:
AIVision1__Blue.
- تبدأ هذه التوقيعات المرئية باسم مستشعر الرؤية الذكية، ثم الشرطة السفلية المزدوجة، ثم اسم التوقيع المرئي، على سبيل المثال:
-
تصنيفات الذكاء الاصطناعي -
aivision::ALL_AIOBJS -
AprilTags-
aivision::ALL_TAGS
سيؤدي التقاط لقطة إلى إنشاء مجموعة من جميع الكائنات المكتشفة التي حددتها. على سبيل المثال، إذا كنت تريد اكتشاف توقيع لون "أزرق" ، واكتشف مستشعر الرؤية بالذكاء الاصطناعي 3 كائنات زرقاء مختلفة، فسيتم وضع البيانات من الثلاثة في المصفوفة.
في هذا المثال، تم التقاط لقطة من توقيع اللون "الأزرق" من مستشعر الرؤية الذكية المسمى AIVision1. يعرض عدد الكائنات التي تم اكتشافها في المصفوفة ويلتقط لقطة جديدة كل 0.5 ثانية.
بينما (صحيح) {
// احصل على لقطة لجميع الكائنات ذات اللون الأزرق.
AIVision.takeSnapshot(AIVision1__Blue);
// تحقق للتأكد من اكتشاف كائن في اللقطة قبل سحب البيانات.
إذا (AIVision.objectCount > 0) {
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
wait(5, msec);
}
أشياء
يتمتع كل كائن من لقطة ما بخصائص مختلفة يمكن استخدامها للإبلاغ عن معلومات حول هذا الكائن. تتيح لك طريقة الكائنات الوصول إلى هذه الخصائص.
الخصائص المتوفرة هي كما يلي:
- بطاقة تعريف
- مركز X ومركز Y
- الأصل X والأصل Y
- عرض
- ارتفاع
- زاوية
- موجود
- نتيجة
للوصول إلى خصائص الكائن، استخدم اسم AI Vision Sensor، متبوعًا بطريقة الكائنات، ثم فهرس الكائن.
يشير مؤشر الكائن إلى خاصية الكائن المحددة التي تريد استردادها. بعد التقاط لقطة، يقوم مستشعر الرؤية AI بفرز الكائنات حسب الحجم تلقائيًا. يتم تعيين أكبر كائن إلى الفهرس 0، مع حصول الكائنات الأصغر على أرقام فهرس أعلى.
على سبيل المثال، استدعاء عرض الكائن الأكبر سيكون AIVision1.objects[0].width.
بطاقة تعريف
الخاصية id متاحة فقط لتصنيفات الذكاء الاصطناعي AprilTags و
بالنسبة لـAprilTag، تمثل الخاصية id رقم معرف AprilTag(s)المكتشف
إن تحديد AprilTags محددة يسمح بالتنقل الانتقائي. يمكنك برمجة الروبوت الخاص بك للتحرك نحو علامات معينة مع تجاهل علامات أخرى، واستخدامها بشكل فعال كعلامات إرشادية للملاحة الآلية.
بالنسبة لتصنيفات الذكاء الاصطناعي، تمثل الخاصية id النوع المحدد لتصنيف الذكاء الاصطناعي المكتشف.
يتيح تحديد تصنيفات الذكاء الاصطناعيالتركيز فقط على أشياء محددة، مثل الرغبة في التنقل نحو كرة Buckyball الحمراء فقط، وليس الزرقاء.
انتقل إلى هذه المقالات للحصول على مزيد من المعلومات حول تصنيفات الذكاء و وكيفية تمكين اكتشافها في AI Vision Utility
مركز X و مركز Y
هذه هي إحداثيات مركز الكائن المكتشف بالبكسل.
تساعد إحداثيات CenterX وCenterY في التنقل وتحديد المواقع. يتمتع مستشعر الرؤية AI بدقة 320 × 240 بكسل.
يمكنك أن ترى أن الكائن الأقرب إلى مستشعر الرؤية AI سيكون له إحداثيات مركز Y أقل من الكائن الأبعد.
في هذا المثال، نظرًا لأن مركز رؤية مستشعر الرؤية الذكية هو (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 هو الإحداثي في الزاوية العلوية اليسرى للكائن المكتشف بالبكسل.
تساعد إحداثيات OriginX وOriginY في التنقل وتحديد المواقع. من خلال الجمع بين هذا الإحداثي مع عرض الكائن وارتفاعه، يمكنك تحديد حجم الصندوق المحيط بالكائن. يمكن أن يساعد هذا في تتبع الكائنات المتحركة أو التنقل بين الكائنات.
عرض و ارتفاع
هذا هو العرض أو الارتفاع للكائن المكتشف بالبكسل.
تساعد قياسات العرض والارتفاع في تحديد الكائنات المختلفة. على سبيل المثال، سيكون ارتفاع كرة باكي أكبر من الحلقة.
يشير العرض والارتفاع أيضًا إلى مسافة الكائن من مستشعر الرؤية AI. عادةً ما تعني القياسات الأصغر أن الجسم أبعد، في حين تشير القياسات الأكبر إلى أنه أقرب.
في هذا المثال، يتم استخدام عرض الكائن للتنقل. سوف يقترب الروبوت من الجسم حتى يصل عرضه إلى حجم معين قبل التوقف.
بينما (صحيح) {
// احصل على لقطة لجميع الكائنات الزرقاء.
AIVision.takeSnapshot(AIVision1__Blue);
// تحقق للتأكد من اكتشاف كائن في اللقطة قبل سحب البيانات.
إذا (AIVision.objectCount > 0) {
إذا (AIVision.objects[0].width < 250.0) {
Drivetrain.drive(forward);
} وإلا {
Drivetrain.stop();
}
}
انتظر(5، مللي ثانية);
}
زاوية
خاصية الزاوية متاحة فقط لرموز الألوان وAprilTags.
يمثل هذا ما إذا كان رمز اللون الذي تم اكتشافهأو AprilTag موجهًا بشكل مختلف.
يمكنك معرفة ما إذا كان الروبوت موجهًا بشكل مختلف فيما يتعلق برمز اللون أوAprilTag واتخاذ قرارات التنقل وفقًا لذلك.
على سبيل المثال، إذا لم يتم اكتشاف رمز اللون بزاوية مناسبة، فقد لا يتمكن الروبوت من التقاط الكائن الذي يمثله بشكل صحيح.
نتيجة
يتم استخدام خاصية النتيجة عند اكتشاف تصنيفين للذكاء باستخدام مستشعر الرؤية بالذكاء الاصطناعي.
تشير درجة الثقة إلى مدى ثقة مستشعر الرؤية AI في اكتشافه. في هذه الصورة، هناك ثقة بنسبة 99% في تحديد تصنيفات الذكاء الاصطناعي لهذه الكائنات الأربعة. يمكنك استخدام هذه النتيجة للتأكد من أن الروبوت الخاص بك يركز فقط على الاكتشافات الواثقة للغاية.
موجود
يتم استخدام الخاصية موجود لكشف ما إذا كان قد تم اكتشاف توقيع مرئي محدد في آخر لقطة تم التقاطها.
يتيح لك هذا التحقق مما إذا كان قد تم اكتشاف أي كائنات تم اكتشافها في اللقطة السابقة. ستقوم هذه الخاصية بإرجاع قيمة True عندما يكون الكائن موجودًا، وقيمة False عندما لا يكون الكائن موجودًا.
عدد الكائنات
تعيد طريقة objectCount عدد الكائنات المكتشفة في اللقطة الأخيرة.
في هذا المثال، تم اكتشاف كائنين بتوقيع اللون"". سيتم وضعهما معًا في المصفوفة عند استخدام طريقة takeSnapshot.
يقوم مقتطف التعليمات البرمجية هذا بتحديث EXP Brain بشكل مستمر بعدد الكائنات المكتشفة. بناءً على المثال المقدم، سيتم إرسال القيمة 2 بشكل متكرر، مما يشير إلى أنه تم اكتشاف كائنين.
بينما (صحيح) {
// احصل على لقطة لجميع الكائنات الزرقاء.
AIVision.takeSnapshot(AIVision__Blue);
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
// تحقق للتأكد من اكتشاف كائن في اللقطة قبل سحب البيانات.
إذا (AIVision.objectCount > 0) {
Brain.Screen.print(AIVision1.objectCount);
}
wait(5, msec);
}