📚 برمجة روبوت للتنقل في منطقة محاطة بالجدار
المفاهيم الأساسية
عنصر البرمجة الجديد: وحدة برمجة منفصلة تُستخدم لتقسيم المهام المختلفة.
خريطة المفاهيم
```markmap
مستشعرات العين
أنواع مستشعرات العين في الروبوت
مستشعر العين الأمامية (FrontEye)
- الموقع: الجزء الأمامي (مكان مستشعر المسافة)
- الاتجاه: للأمام
- الوظيفة: اكتشاف الكائنات القريبة
مستشعر العين السفلية (DownEye)
- الموقع: أسفل الروبوت
- الاتجاه: للأسفل
- الوظيفة: اكتشاف الكائنات التي تحته
قدرات الاستشعار
- اكتشاف وجود كائن
- اكتشاف الألوان (الأحمر، الأخضر، الأزرق)
- اكتشاف غياب اللون ("لا شيء")
لبنات برمجة مستشعر العين (في فئة الاستشعار)
اللبنات المستخدمة في هذا الدرس
- ( ) يمثل مجسم قريب؟ ( ) is near object? ( )
- ( ) يستشعر ؟ ( ) ( ) detects ( ) ( )
لبنة أخرى
- ( ) نسبة السطوع بال % ( ) brightness in (%) ( )
استخدام لبنة "يمثل مجسم قريب؟"
المستشعرات المستخدمة
- مستشعر العين الأمامية (FrontEye)
- مستشعر العين السفلية (Bottom Eye)
مثال تطبيقي
#### برمجة روبوت للتحرك والتوقف عند استشعار كائن
- الخوارزمية: البدء ← التحرك للأمام ← التحقق من رؤية مجسم قريب ← (إذا خطأ) العودة للتحرك ← (إذا صواب) إيقاف القيادة ← النهاية
استخدام لبنة مستشعر المسافة (Distance)
الوظيفة
- مراقبة المسافة الفعلية (بالملليمتر) التي يكتشفها مستشعر العين الأمامية للكائن.
مثال من الصفحة
- يكتشف مستشعر العين الأمامية المجسم على مسافة 65 مليمتر.
مثال 2: استشعار كائن عبر مستشعر العين السفلية (DownEye)
المهمة
- برمجة روبوت لالتقاط وإسقاط أقراص معدنية باستخدام مستشعر العين السفلية والمغناطيس الكهربائي.
خطوات تنفيذ المثال
يتحرك الروبوت للأمام لاكتشاف القرص المعدني (باستخدام مستشعر العين السفلية).
يلتقط القرص المعدني (باستخدام المغناطيس الكهربائي).
يتحرك للخلف.
يسقط القرص داخل المربع الأزرق (نقطة البداية).
لبنات البرمجة المستخدمة
#### من فئة (Magnet)
- لبنة تفعيل مغناطيس للـ ( ) (energize magnet to ( ))
- عمليتان داخليتان:
- تعزيز (boost): لالتقاط القرص المعدني.
- إسقاط (drop): لإسقاط القرص المعدني.
التحكم بالمغناطيس الكهربائي
لبنة الانتظار حتى (until wait)
- الاستخدام: عندما يتطلب الأمر انتظاراً حتى يستشعر المستشعر السفلي لا يستشعر شيئاً.
تسلسل البرمجة الكامل (من الصفحة)
البداية
تحرك إلى الأمام
هل يكتشف مستشعر العين السفلية مجسماً؟
- إذا خطأ: العودة للتحرك
- إذا صواب: المتابعة
التقط القرص المعدني (تفعيل مغناطيس للتعزيز)
تحرك إلى الخلف 800 ملليمتر
أسقطه في المربع الأزرق (تفعيل مغناطيس للإسقاط)
النهاية
استخدام لبنة "يستشعر" للكشف عن الألوان
مثال 3: استشعار لون عبر مستشعر العين الأمامية
- المهمة: برمجة روبوت ليتحرك للأمام، وعندما يستشعر مستشعر العين الأمامية اللون الأخضر، ينعطف 90 درجة لليمين.
- لبنة رئيسية: لبنة الانتظار حتى ( ) Wait until ( ) تستخدم لانتظار استشعار اللون الأخضر.
- ملاحظة: يمكن تغيير المستشعر في القائمة المنسدلة للبنة لاستخدام مستشعر العين السفلية.
قراءة لوحة القيادة
- إذا لم يستشعر المستشعر لوناً (أحمر، أخضر، أزرق)، تعرض اللوحة:
-
Object: خطأ (False)
- Color: لا يوجد لون.
مثال 4: توجيه روبوت الواقع الافتراضي حسب عوائق البيئة المحيطة
المهمة
- برمجة روبوت للتنقل في ملعب عوائق متنوعة باستخدام مستشعر العين الأمامية للوصول من نقطة البداية (المربع الأخضر) إلى نقطة النهاية (القرص المعدني الأحمر).
خطوات الخوارزمية
التحرك إلى الأمام حتى يستشعر العين الأمامية الأقراص الخضراء والزرقاء.
التحرك إلى الخلف حتى تصبح المسافة من القرص أكبر من 80 ملليمتر.
الانعطاف 90 درجة إلى اليمين عند اكتشاف قرص أخضر، و90 درجة إلى اليسار عند اكتشاف قرص أزرق.
إنشاء مقاطع برمجية جديدة
#### Route after green disk
- الشرط: إذا استشعرت العين الأمامية اللون الأخضر.
- الإجراءات:
1. التحرك إلى الخلف.
2. الانتظار حتى تصبح المسافة الأمامية (بالملليمتر) أكبر من حد معين.
3. الانعطاف يميناً 90 درجة.
4. التحرك إلى الأمام.
- النتيجة: ينعطف الروبوت 90 درجة يميناً أمام القرص الأخضر وعلى مسافة معينة منه.
#### Route after blue disk
- الشرط: إذا استشعرت العين الأمامية اللون الأزرق.
- الإجراءات:
1. التحرك إلى الخلف.
2. الانتظار حتى تصبح المسافة الأمامية (بالملليمتر) أكبر من حد معين.
3. الانعطاف يساراً 90 درجة.
4. التحرك إلى الأمام.
- النتيجة: ينعطف الروبوت 90 درجة يساراً أمام القرص الأزرق وعلى مسافة معينة منه.
قراءة لوحة القيادة (حالة الروبوت)
- Heading: 90°
- Rotation: 90°
- Front Eye: Object: False, Color: None
- Down Eye: Object: False, Color: None
- Location: X: -402 mm, Y: -207 mm
- Location Angle: 90°
- Bumper: Left: False, Right: False
- Distance: 301 mm
- Timer: 00:02:4
مثال 5: استخدام العين الأمامية للتحرك واكتشاف الأقراص الملونة
المهمة
- إنشاء مقطع برمجي يتحكم في روبوت الواقع الافتراضي في ملعب نقل القرص (Disk Transport).
- استخدام القرصين المعدنين (اللونين الأحمر والأزرق) الموجودين على الجانب الأيسر من المنطقة المحاطة بالجدار.
- نقل القرصين إلى المنطقة المربعة (منطقة البداية).
المقطع البرمجي الرئيسي
- عندما بدأت
- تحرك إلى الأمام
- تكرار حتى يستشعر أحمر العين الأمامية
- Route after green disk
- Route after blue disk
- أوقف القيادة
برمجة روبوت للتنقل في منطقة محاطة بالجدار
العنصر البرمجي الأول: الوصول إلى المنطقة المحاطة
- الهدف: توجيه الروبوت للوصول إلى المنطقة المحاطة بالجدار.
- المستشعر المستخدم: مستشعر المسافة (Distance).
- الشرط: عندما تصبح المسافة من القلعة أقل من 400 مليمتر.
- الإجراء: الانعطاف يساراً بمقدار 90 درجة.
- إعدادات السرعة: ضبط سرعة الروبوت إلى 20% للكشف الدقيق والتوقف في الوقت المناسب.
العنصر البرمجي الثاني: الحركة داخل المنطقة المحاطة
- الهدف: توجيه الروبوت للتحرك داخل المنطقة المحاطة بالجدار.
- الإجراءات المطلوبة:
1. الانعطاف يميناً بمقدار 90 درجة على مسافة من الجدار (باستخدام مستشعر العين الأمامية).
2. التوقف عن الحركة إذا اكتشف مستشعر العين السفلية الأقواس الحمراء.
لبنات البرمجة المستخدمة (من الشريط الجانبي)
- تعريف (To the walled area):
- اضبط سرعة القيادة إلى 20%
- تحرك إلى الأمام
- انتظار حتى (شرط)
- انعطف يميناً لمدة 90 درجة
- إذا (العين السفلية تستشعر أحمر)
- إذا (العين الأمامية يمثل مجسم قريب)
- تحرك إلى الخلف 30 مليمتر
- انعطف يميناً لمدة 90 درجة
```
نقاط مهمة
- يتم تقسيم مهمة التنقل المعقدة إلى وحدات برمجة منفصلة (عناصر برمجة جديدة) لتسهيل البرمجة.
- ضبط سرعة الروبوت إلى نسبة منخفضة (20%) ضروري لاستخدام المستشعرات بدقة والتوقف في الوقت المناسب.
- يستخدم الروبوت مستشعر المسافة للوصول إلى المنطقة المحاطة، ومستشعر العين الأمامية للانعطاف داخلها، ومستشعر العين السفلية للكشف عن الأقواس الحمراء والتوقف.