رؤية#
مقدمة#
تحتوي طائرة VEX AIR بدون طيار على مستشعري رؤية يكتشفان ويتتبعان معرّفات AprilTag. وهذا يسمح للطائرة بتحليل محيطها، ومتابعة الأجسام، والتفاعل بناءً على البيانات المرئية المكتشفة.
فيما يلي قائمة بجميع الكتل المتاحة:
الإجراءات — التحكم في بث الرؤية والتقاط بيانات الكائنات.
get object data — يلتقط البيانات لمعرفات AprilTag.
الإعدادات — اضبط العناصر التي يتم الوصول إليها بعد اكتشافها.
set Vision object item — يحدد كائنًا معينًا من قائمة الكائنات المكتشفة.
القيم — استرجاع معلومات عن وجود الكائن وتصنيفه وخصائصه.
يوجد كائن رؤية — يُبلغ عما إذا تم اكتشاف كائن.
كائن الرؤية هو معرف AprilTag — يتحقق مما إذا كان معرف AprilTag المكتشف يطابق معرفًا محددًا.
عدد الكائنات المرئية — يعرض عدد الكائنات التي تم اكتشافها.
خاصية كائن الرؤية — يسترجع تفاصيل مثل:
الإجراءات#
الحصول على بيانات الكائن#
تقوم كتلة الحصول على بيانات الكائن بتصفية البيانات من إطار مستشعر الرؤية. ويمكن لمستشعرات الرؤية اكتشاف معرّفات AprilTag.
تحتوي مجموعة البيانات على كائنات مرتبة من الأكبر إلى الأصغر حسب العرض، بدءًا من الفهرس 0. يمكن الوصول إلى خصائص كل كائن باستخدام كتلة Vision object property. يتم الإبلاغ عن مجموعة بيانات فارغة في حال عدم العثور على أي كائنات مطابقة.
احصل على بيانات [كل AprilTags v] من Vision كاميرا [للأمام v]
المعلمة |
وصف |
|---|---|
إمضاء |
يقوم هذا الإجراء بتصفية مجموعة البيانات بحيث لا تتضمن إلا البيانات التي تحمل التوقيع المحدد. التوقيع المتاح هو جميع علامات شهر أبريل. |
آلة تصوير |
مستشعر الرؤية لاسترجاع البيانات منه، إما للأمام أو للأسفل. |
مثال
عند البدء
[Climb upward when an AprilTag ID is detected.]
ارتفع إلى [300] [مم v] ▶
للأبد
احصل على بيانات [كل AprilTags v] من Vision كاميرا [للأمام v]
إذا <كائن Vision موجود؟> إذن
ارتفع [لأعلى v] لمسافة [200] [مم v] ▶
إعدادات#
مجموعة عناصر كائن الرؤية#
تحدد كتلة المكدس set Vision object item العنصر المراد استخدامه في مجموعة البيانات.
اضبط عنصر كائن Vision إلى [1]
حدود |
وصف |
|---|---|
غرض |
رقم العنصر المراد استخدامه في مجموعة البيانات. |
مثال
عند البدء
[Display the smallest-appearing AprilTag ID.]
للأبد
احصل على بيانات [كل AprilTags v] من Vision كاميرا [للأمام v]
امسح وحدة التحكم
إذا <كائن Vision موجود؟> إذن
اضبط عنصر كائن Vision إلى (عدد كائنات Vision)
اطبع (كائن Vision [المعرف v]) على وحدة التحكم ▶
قيم#
يوجد كائن رؤية#
تقوم كتلة Vision object exists المنطقية بالإبلاغ عما إذا كان مستشعر الرؤية المحدد يكتشف حاليًا أي كائنات.
صحيح — يكتشف مستشعر الرؤية المحدد وجود جسم ما.
خطأ — لا يكتشف مستشعر الرؤية المحدد أي جسم.
<كائن Vision موجود؟>
المعلمة |
وصف |
|---|---|
لا يحتوي هذا الجزء على أي معلمات. |
مثال
عند البدء
[Climb upward when an AprilTag ID is detected.]
ارتفع إلى [300] [مم v] ▶
للأبد
احصل على بيانات [كل AprilTags v] من Vision كاميرا [للأمام v]
إذا <كائن Vision موجود؟> إذن
ارتفع [لأعلى v] لمسافة [200] [مم v] ▶
كائن الرؤية هو معرف AprilTag#
كائن الرؤية هو معرف AprilTag كتلة منطقية تُبلغ عما إذا كان معرف AprilTag هو رقم معرف محدد.
صحيح — معرف AprilTag هو الرقم.
خطأ — معرف AprilTag ليس هو الرقم.
<Vision object is AprilTag ID [1]>
حدود |
وصف |
|---|---|
رقم تعريف AprilTag |
الرقم المراد مقارنته برقم تعريف AprilTag المكتشف من 0 إلى 37. |
مثال
عند البدء
[Display when the target AprilTag ID is detected.]
للأبد
احصل على بيانات [كل AprilTags v] من Vision كاميرا [للأمام v]
امسح وحدة التحكم
إذا <كائن Vision موجود؟> إذن
إذا <Vision object is AprilTag ID [21]> إذن
اطبع [Target found!] على وحدة التحكم ▶
fin
عدد عناصر الرؤية#
تقوم وحدة الإبلاغ عن عدد الكائنات المرئية بالإبلاغ عن عدد الكائنات المكتشفة في مجموعة البيانات كرقم صحيح.
(عدد كائنات Vision)
حدود |
وصف |
|---|---|
لا يحتوي هذا الجزء على أي معلمات. |
مثال
عند البدء
[Display how many AprilTag IDs are detected.]
للأبد
احصل على بيانات [كل AprilTags v] من Vision كاميرا [للأمام v]
امسح وحدة التحكم
اطبع (عدد كائنات Vision) على وحدة التحكم ▶
انتظر [0.2] ثانية
خاصية كائن الرؤية#
هناك خصائص متعددة يتم تضمينها مع كل كائن (موضح أدناه) يتم تخزينها بعد استخدام كتلة get object data.
(كائن Vision [العرض v])
تصف جميع قيم الخصائص، باستثناء id، موضع الكائن المكتشف وحجمه واتجاهه وزاوية وقوفه لحظة استخدام كتلة get object data. تُقاس هذه القيم بالبكسل أو الدرجات. لكل مستشعر رؤية دقة مختلفة.
الشاشة الأمامية: 640 × 480 بكسل
موجه للأسفل: 640 × 400 بكسل
المعلمة |
وصف |
|---|---|
ملكية |
Which property of the detected object to use: |
عرض#
تُبلغ خاصية العرض عن عرض الكائن المكتشف بالبكسل كرقم صحيح من 1 إلى 640.
(كائن Vision [العرض v])
مثال
عند البدء
[Show if the AprilTag ID appears large or small.]
للأبد
احصل على بيانات [كل AprilTags v] من Vision كاميرا [للأمام v]
امسح وحدة التحكم
إذا <كائن Vision موجود؟> إذن
إذا <(كائن Vision [العرض v]) [math_greater_than v] [100]> إذن
اطبع [Large] على وحدة التحكم ▶
وإلا
اطبع [Small] على وحدة التحكم ▶
fin
fin
انتظر [0.2] ثانية
ارتفاع#
تُظهر خاصية الارتفاع ارتفاع الكائن المكتشف بالبكسل كرقم صحيح من 1 إلى 480.
(كائن Vision [الارتفاع v])
مثال
عند البدء
[Show if the AprilTag ID appears large or small.]
للأبد
احصل على بيانات [كل AprilTags v] من Vision كاميرا [للأمام v]
امسح وحدة التحكم
إذا <كائن Vision موجود؟> إذن
إذا <(كائن Vision [الارتفاع v]) [math_greater_than v] [100]> إذن
اطبع [Large] على وحدة التحكم ▶
وإلا
اطبع [Small] على وحدة التحكم ▶
fin
fin
انتظر [0.2] ثانية
سنتر إكس#
تقوم خاصية centerX بالإبلاغ عن الإحداثي السيني لمركز الكائن المكتشف بالبكسل كرقم صحيح من 1 إلى 640.
(كائن Vision [centerX v])
مثال
عند البدء
[Show if an AprilTag ID is to the left or the right of the camera.]
للأبد
احصل على بيانات [كل AprilTags v] من Vision كاميرا [للأمام v]
امسح وحدة التحكم
إذا <كائن Vision موجود؟> إذن
إذا <(كائن Vision [centerX v]) [math_less_than v] [320]> إذن
اطبع [To the left] على وحدة التحكم ▶
وإلا
اطبع [To the right] على وحدة التحكم ▶
fin
fin
انتظر [0.2] ثانية
سنتري#
تقوم خاصية centerY بالإبلاغ عن إحداثيات y لمركز الكائن المكتشف بالبكسل كرقم صحيح من 1 إلى 480.
(كائن Vision [centerY v])
مثال
عند البدء
[Take off and attempt to align the drone with an AprilTag ID on the wall.]
[Adjust the takeoff height to observe different results.]
ارتفع إلى [800] [مم v] ▶
احصل على بيانات [كل AprilTags v] من Vision كاميرا [للأمام v]
إذا <كائن Vision موجود؟> إذن
إذا <(كائن Vision [centerY v]) [math_less_than v] [240]> إذن
اطبع [Below the target!] على وحدة التحكم ▶
وإلا
اطبع [Above the target!] على وحدة التحكم ▶
fin
وإلا
اطبع [No target found!] على وحدة التحكم ▶
محمل#
تُشير خاصية الاتجاه إلى زاوية تُحدد موقع الجسم بالنسبة للطائرة بدون طيار. ويعتمد هذا السلوك على نوع مستشعر الرؤية المستخدم.
تشير قيمة 0° إلى أن مركز الجسم والمستشعر متطابقان. القيم الموجبة تعني أن الجسم يقع على اليمين، بينما القيم السالبة تعني أن الجسم يقع على اليسار.
مستشعر |
المرتجعات |
|---|---|
إلى الأسفل |
يجب أن تدور مقدمة الطائرة بدون طيار بزاوية من -180 درجة إلى 180 درجة لتتماشى مع مركز الجسم. |
إلى الأمام |
الدرجات التي يتم إزاحة الجسم بها إلى اليسار أو اليمين من مركز مستشعر الرؤية من -180 درجة إلى 180 درجة. |
(كائن Vision [الاتجاه v])
أمثلة
عند البدء
[Align the front of the drone to an AprilTag ID.]
اضبط سرعة الدوران إلى (15)%
ارتفع إلى [500] [مم v] ▶
للأبد
احصل على بيانات [كل AprilTags v] من Vision كاميرا [للأسفل v]
إذا <كائن Vision موجود؟> إذن
إذا <[-20] [math_less_than v] (كائن Vision [الاتجاه v]) [math_less_than v] [20]> إذن
[Hover once sensor is centered on the AprilTag ID.]
تحليق
تشغيل صوت [نجاح v] ▶
وإلا إذا <(كائن Vision [الاتجاه v]) [math_less_than v] [-21]> إذن
استدر [يسار v]
وإلا
استدر [يمين v]
تناوب#
تشير خاصية الدوران إلى اتجاه معرف AprilTag المكتشف كرقم صحيح بالدرجات من 1 إلى 359.
(كائن Vision [دوران v])
مثال
عند البدء
[Turn left or right based on the rotation of an AprilTag ID.]
ارتفع إلى [1000] [مم v] ▶
للأبد
احصل على بيانات [كل AprilTags v] من Vision كاميرا [للأمام v]
إذا <كائن Vision موجود؟> إذن
إذا <[240] [math_less_than v] (كائن Vision [دوران v]) [math_less_than v] [300]> إذن
استدر [يسار v] بمقدار [90] درجة ▶
وإلا إذا <[60] [math_less_than v] (كائن Vision [دوران v]) [math_less_than v] [120]> إذن
استدر [يمين v] بمقدار [90] درجة ▶
وإلا
تحليق
IX#
تشير خاصية originX إلى الإحداثي السيني للزاوية العلوية اليسرى من المربع المحيط بالكائن المكتشف بالبكسل كرقم صحيح من 1 إلى 640.
(كائن Vision [originX v])
مثال
عند البدء
[Draw lines to the AprilTag ID origin from all corners.]
للأبد
امسح الشاشة
get [all AprilTags v] data from vision [forward v] camera
إذا <كائن Vision موجود؟> إذن
ارسم خطاً [0] [0] (كائن Vision [originX v]) (كائن Vision [originY v]) على الشاشة
ارسم خطاً [0] [480] (كائن Vision [originX v]) (كائن Vision [originY v]) على الشاشة
ارسم خطاً [640] [0] (كائن Vision [originX v]) (كائن Vision [originY v]) على الشاشة
ارسم خطاً [640] [480] (كائن Vision [originX v]) (كائن Vision [originY v]) على الشاشة
fin
انتظر [0.2] ثانية
الأصل Y#
تشير خاصية originY إلى إحداثيات y للزاوية العلوية اليسرى من المربع المحيط بالكائن المكتشف بالبكسل كرقم صحيح من 1 إلى 480.
(كائن Vision [originY v])
مثال
عند البدء
[Draw lines to the AprilTag ID origin from all corners.]
للأبد
امسح الشاشة
get [all AprilTags v] data from vision [forward v] camera
إذا <كائن Vision موجود؟> إذن
ارسم خطاً [0] [0] (كائن Vision [originX v]) (كائن Vision [originY v]) على الشاشة
ارسم خطاً [0] [480] (كائن Vision [originX v]) (كائن Vision [originY v]) على الشاشة
ارسم خطاً [640] [0] (كائن Vision [originX v]) (كائن Vision [originY v]) على الشاشة
ارسم خطاً [640] [480] (كائن Vision [originX v]) (كائن Vision [originY v]) على الشاشة
fin
انتظر [0.2] ثانية
بطاقة تعريف#
تقوم خاصية id بالإبلاغ عن رقم تعريف AprilTag ID المكتشف كرقم صحيح.
(كائن Vision [المعرف v])
مثال
عند البدء
[Display the detected AprilTag ID.]
للأبد
احصل على بيانات [كل AprilTags v] من Vision كاميرا [للأمام v]
امسح وحدة التحكم
إذا <كائن Vision موجود؟> إذن
اطبع (كائن Vision [المعرف v]) على وحدة التحكم ▶
fin
انتظر [0.2] ثانية