كود البحث

الدرس 9 من 10: تجنب العوائق باستخدام سيارة ذكية رباعية الدفع Raspberry Pi Pico

الدرس 9 من 10: تجنب العوائق باستخدام سيارة ذكية رباعية الدفع Raspberry Pi Pico

مقدمة

هذا الدليل، المستند إلى الدرس 9 من 10 من دورة Robojax، يوضح كيفية بناء روبوت يتجنب العوائق باستخدام مجموعة سيارة SunFounder Raspberry Pi Pico 4WD الذكية. يجمع المشروع بين مستشعر فوق صوتي مدفوع بمحرك سيرفو والتحكم في المحركات لإنشاء روبوت يمكنه التنقل في بيئته بشكل مستقل. من خلال تحريك المستشعر مثل الرادار، تكتشف السيارة العوائق وتختار بذكاء مسارًا واضحًا للمتابعة، مما يجعله مقدمة مثالية للروبوتات وتكامل المستشعرات والتنقل الذاتي.

هذا المشروع ليس مجرد لعبة؛ إنه أساس للعديد من التطبيقات العملية. إليك بعض الأفكار لإلهامك:

  • روبوت استكشاف ذاتي: قم ببناء روبوت يمكنه رسم خريطة واستكشاف غرفة أو منطقة خارجية دون تدخل بشري.
  • مكنسة كهربائية ذكية: استخدم نفس المبادئ لإنشاء روبوت يتنقل في غرفة، متجنبًا الأثاث والجدران أثناء التنظيف.
  • روبوت دورية أمنية: برمج السيارة للقيام بدوريات حول محيط واستخدم المستشعر فوق الصوتي لاكتشاف والإبلاغ عن العوائق أو الاقتحامات غير المتوقعة.
  • منصة تعليمية للذكاء الاصطناعي: استخدم هذا المشروع كخطوة أولى لتعلم خوارزميات أكثر تعقيدًا مثل إيجاد المسار والتحديد المتزامن للموقع ورسم الخرائط (SLAM).

يركز هذا الدرس على المنطق الأساسي والكود الذي يمكن السيارة من اتخاذ القرارات. تستخدم السيارة محرك سيرفو لتدوير مستشعر فوق صوتي، يعمل كرادار لقياس المسافات من 0 إلى 180 درجة. يحلل الكود هذه البيانات للعثور على أوسع مسار فارغ ويوجه السيارة للتحرك للأمام أو لليسار أو لليمين وفقًا لذلك. يعرض الفيديو العملية بأكملها، من اختبار المكونات الفردية إلى تشغيل خوارزمية تجنب العوائق النهائية في متاهة واقعية.

الأجهزة/المكونات

يعتمد هذا المشروع على مجموعة سيارة SunFounder Raspberry Pi Pico 4WD الذكية. المكونات الأساسية المستخدمة في هذا الدرس هي:

  • لوحة المتحكم الدقيق Raspberry Pi Pico
  • هيكل سيارة SunFounder 4WD الذكي مع أربعة محركات
  • لوحة تشغيل المحركات
  • مستشعر المسافة فوق الصوتي (نوع HC-SR04)
  • محرك سيرفو (لتدوير المستشعر فوق الصوتي)
  • مصدر الطاقة (بطاريات للسيارة)

دليل التوصيل

مجموعة SunFounder مصممة لسهولة التجميع، وعادة ما تكون التوصيلات متصلة مسبقًا عبر لوحة توسعة مخصصة. يتم تثبيت المستشعر فوق الصوتي على محرك السيرفو، والذي يتم توصيله بعد ذلك بلوحة التحكم الرئيسية. يسمح هذا الإعداد بتدوير المستشعر لمسح البيئة. للحصول على مخطط توصيل مفصل خاص بمجموعتك، يرجى الرجوع إلى وثائق SunFounder الرسمية.

تتضمن التوصيلات الأساسية دبابيس الإطلاق والصدى للمستشعر فوق الصوتي، ودبوس إشارة محرك السيرفو، وكلها متصلة بدبابيس GPIO محددة على Raspberry Pi Pico. كما يتم توصيل مشغل المحركات بـ Pico للتحكم في محركات الدفع الأربعة. يذكر الفيديو أن الوثائق الكاملة، بما في ذلك مخططات التوصيل، متاحة للتنزيل مع المجموعة.

شرح الكود

يركز هذا الدرس على المنطق داخل مثال `obstacle_avoid`. الكود مكتوب بلغة MicroPython. بينما البرنامج الكامل متاح للتنزيل، سنركز على المعلمات الرئيسية القابلة للتخصيص من قبل المستخدم والتي تتحكم في سلوك السيارة. توجد هذه عادةً في أعلى السكربت.

إليك المتغيرات الرئيسية التي يمكنك ضبطها لضبط أداء الروبوت الخاص بك:


# معلمات الرادار والحركة
radar_reference = 20  # الحد الأدنى للمسافة بالسنتيمتر لاعتبارها آمنة
step_angle = 10       # زيادة الزاوية لكل خطوة مسح رادار
forward_speed = 30    # سرعة المحرك للتحرك للأمام (0-100)
turn_speed = 50       # سرعة المحرك للدوران (0-100)
forward_scan_angle = 50  # الزاوية التي يمسحها السيرفو عند عدم اكتشاف عائق
  • radar_reference: هذه هي مسافة الأمان الحاسمة بالسنتيمتر. إذا تم اكتشاف عائق أقرب من هذه القيمة، ستعتبره السيارة "خطرًا" وتبدأ مناورة تجنب. في الفيديو، تم ضبطها على 20 سم.
  • step_angle: يحدد هذا دقة مسح الرادار. قيمة أصغر (مثل 10 درجات) تعني مسحًا أكثر تفصيلاً ولكنها تستغرق وقتًا أطول. قيمة أكبر ستكون أسرع ولكنها قد تفوت عوائق ضيقة.
  • forward_speed و turn_speed: يتحكمان في الطاقة المرسلة إلى المحركات. يمكنك ضبطهما لتغيير السرعة الإجمالية وخفة حركة السيارة. غالبًا ما يتم ضبط سرعة الدوران أعلى لضمان قدرة السيارة على الالتفاف بفعالية.
  • forward_scan_angle: عندما لا يوجد خطر فوري أمام السيارة، تضيق نطاق مسحها إلى هذه الزاوية (متمركزة على الأمام) للتحقق من العوائق بشكل متكرر في مسارها المباشر، مما يسمح بحركة أمامية أكثر سلاسة.

يشرح الفيديو أيضًا منطق اتخاذ القرار الرئيسي. تقوم دالة `get_direction()` بتحليل قائمة قراءات المسافة (المحولة إلى 1 و 0 للآمن/غير الآمن) للعثور على أوسع مسار مستمر من "1". بناءً على مكان هذا المسار الأوسع، ترجع الدالة اتجاهًا: "forward" أو "left" أو "right". ثم تنفذ الحلقة الرئيسية الإجراء المقابل، وتدير السيارة وتعيد المسح حتى يصبح المسار أمامها واضحًا.

المشروع المباشر/العرض التوضيحي

يقدم الفيديو عرضًا توضيحيًا شاملاً للمشروع. يبدأ باختبار مستشعر الموجات فوق الصوتية بمفرده لإظهار كيفية قياسه للمسافة وطباعة القيم على الطرفية. ثم يشرح المدرب خوارزمية تجنب العوائق باستخدام مخطط انسيابي، مع تفصيل عملية اتخاذ القرار للانعطاف يسارًا ويمينًا. أخيرًا، يتم وضع السيارة في متاهة صغيرة مصنوعة من الصناديق لإظهار سلوك تجنب العوائق الكامل أثناء العمل. تنجح السيارة في اجتياز المتاهة، وتنعطف يسارًا ويمينًا لإيجاد مسار واضح للأمام.

فصول الفيديو

  • [00:00] مقدمة حول تجنب العوائق
  • [01:31] نظرة عامة على مجموعة سيارة SunFounder الذكية وميزاتها
  • [02:47] كيفية عمل ميزة تجنب العوائق
  • [03:34] اختبار مستشعر الموجات فوق الصوتية
  • [07:45] شرح خوارزمية تجنب العوائق والمخطط الانسيابي
  • [12:49] تحليل الكود الرئيسي لتجنب العوائق
  • [15:43] عرض توضيحي مباشر لمنطق تجنب العوائق
  • [22:53] عرض توضيحي نهائي باستخدام متاهة من العوائق
  • [24:35] الخاتمة والخطوات التالية
لا يوجد رمز مرفق.

الموارد والمراجع

لا توجد موارد حتى الآن.

ملفات📁

لا توجد ملفات متاحة.