جدول المحتويات:

اصنع سيارتك ذاتية القيادة - (هذه التعليمات قيد التنفيذ): 7 خطوات
اصنع سيارتك ذاتية القيادة - (هذه التعليمات قيد التنفيذ): 7 خطوات

فيديو: اصنع سيارتك ذاتية القيادة - (هذه التعليمات قيد التنفيذ): 7 خطوات

فيديو: اصنع سيارتك ذاتية القيادة - (هذه التعليمات قيد التنفيذ): 7 خطوات
فيديو: مراحل سواقة السيارة في السعودية 😂😂😂 2024, يونيو
Anonim
Image
Image

أهلا،

إذا ألقيت نظرة على Instructable الأخرى الخاصة بي على Drive Robot With Remote USB Gamepad ، فإن هذا المشروع مشابه ، ولكن على نطاق أصغر. يمكنك أيضًا متابعة أو الحصول على بعض المساعدة أو الإلهام من قوائم تشغيل الروبوتات أو التعرف على الصوت في المنزل أو السيارة ذاتية القيادة على Youtube.

لقد بدأت مع الروبوت الكبير (والاس 4) ، ولكن منذ أن بدأت مجموعة Meetup المحلية ، كنت بحاجة إلى شيء على نطاق أصغر ، وكانت المجموعة مهتمة جدًا برؤية الكمبيوتر.

لذلك صادفت دورة Udemy هذه: اصنع سيارتك ذاتية القيادة التي أعطتني فكرة هذا المشروع.

إذا كنت مهتمًا بدورة Udemy ، فيمكنك متابعة التحقق مرة أخرى هناك ؛ يتم طرحه للبيع بخصم كبير من وقت لآخر. ملاحظة: هناك جزء 1 وجزء 2 - تحتاج إلى إجراء بعض التحقيقات حول كيفية الحصول على الدورتين كحزمة (مخفضة).

الغرض من هذا التدريب ذو شقين. أولاً ، لإعطاء بعض المؤشرات والبدائل لأجزاء معينة من الدورة (مثل الأجزاء والأجهزة). وثانيًا ، للتوسع في الدورة.

الغرض الرئيسي من دورة Udemy:

هو أن تكون قادرًا على الحصول على سيارة روبوت صغيرة ذات عجلات للقيادة الذاتية على طريق متدرج من مسارين.

يجب أن يتعرف على خطوط الحارة ، وعندما يصل إلى نهاية الطريق.

يجب أن يتعرف على علامة قف (ويتوقف).

أيضا ، إشارة مرور حمراء وخضراء.

يجب أن تتعرف أيضًا على عقبة (سيارة أخرى) وتتحرك حولها.

ما يضيفه هذا Instructable إلى الدورة:

قم بقيادة السيارة الصغيرة باستخدام لوحة ألعاب USB بعيدة ، تمامًا مثل طريقة Instructable الأخرى.

أعط بعض البدائل لما تقدمه الدورة.

قد لا تضطر حتى إلى شراء الدورة:

قد يكون هذا Instructable هو كل ما تحتاجه للبدء.

اللوازم

الأجزاء الأساسية (المقترحة):

هيكل روبوت

أربعة محركات

اردوينو

Raspberry Pi (3، 3B +، 4)

الكاميرا (USB Webcam أو Picamera module)

طاقة البطارية

مفاتيح تشغيل / إيقاف

أسلاك العبور

المواجهات (البلاستيك وربما المعدن أيضًا)

يرجى مراجعة Instructable بالكامل وكذلك مقاطع الفيديو قبل محاولة شراء الأجزاء.

بعد الانتهاء من هذا المشروع ، أدركت أن الأجزاء الدقيقة ليست بهذه الأهمية.

الخطوة 1: مزيد من التفاصيل حول الأجزاء …

Image
Image
مزيد من التفاصيل حول الأجزاء …
مزيد من التفاصيل حول الأجزاء …
مزيد من التفاصيل حول الأجزاء …
مزيد من التفاصيل حول الأجزاء …

يدخل الفيديو المرتبط ببعض التفاصيل حول الأجزاء وبعض المشكلات التي وجدتها.

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

المواجهات البلاستيكية جيدة لتركيب الألواح على الهيكل (سائق المحرك ، Arduino ، Raspberry ، ثنائي الفينيل متعدد الكلور ، مفتاح التشغيل / الإيقاف ، إلخ).

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

حفر + لقم الثقب

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

يجعل استخدام المثقاب من السهل جدًا إعادة الوضع (خاصةً إذا كان الهيكل من البلاستيك) ويبدو أكثر احترافًا.

الخطوة الثانية: تشغيل السيارة أثناء التطوير

تشغيل السيارة أثناء التطوير
تشغيل السيارة أثناء التطوير
تشغيل السيارة أثناء التطوير
تشغيل السيارة أثناء التطوير

في رأيي ، الطريقة الأسرع والأسهل للبدء في هذا المشروع هي:

  • لتطوير برنامج Arduino Sketch ، ما عليك سوى توصيل Arduino بجهاز الكمبيوتر الخاص بك عبر USB
  • بالنسبة لبرنامج Raspberry Pi ، يجب أن يكون لديك طاقة 5 فولت USB يمكنها توفير 3 أمبير على الأقل. ويجب أن يحتوي على مفتاح تشغيل / إيقاف. ما لم يكن لديك محور USB جيد ومزود بالطاقة متصل بجهاز الكمبيوتر الخاص بك ، فمن المحتمل أنك لن تتمكن من تشغيل Raspberry مباشرة من جهاز الكمبيوتر الخاص بك.
  • عندما تكون مستعدًا لاختبار المحركات / العجلات ، فإن الأسهل (انظر الصورة) هو مصدر طاقة جيد. ومع ذلك ، هذه ليست رخيصة.

وجهة نظري في هذا القسم هي أن أقول إنك لا تريد استخدام طاقة البطارية أثناء التطوير ، لأن ذلك سيؤدي إلى إبطاء تقدمك بشكل كبير.

أيضًا ، من خلال القيام بشيء مشابه للاقتراحات المذكورة أعلاه ، لا داعي للقلق (حتى الآن) بشأن كيفية تشغيل السيارة بالضبط. يمكنك تأخير هذا القرار لاحقًا في المشروع.

الخطوة الثالثة: تشغيل السيارة أثناء الاستخدام الفعلي

تشغيل السيارة أثناء الاستخدام الفعلي
تشغيل السيارة أثناء الاستخدام الفعلي
تشغيل السيارة أثناء الاستخدام الفعلي
تشغيل السيارة أثناء الاستخدام الفعلي

إذا قررت اتباع الدورة التدريبية (أو ما قمت به) للحصول على طاقة 5 فولت للمنطق ، فكن على دراية بأنه ليست كل باور بانك USB 5 فولت جيدة لهذا المشروع.

النقطة الأساسية هنا هي أنك بحاجة إلى 5 فولت ولكنك تحتاج إلى 3 أمبير على الأقل! فكر في الأمر بهذه الطريقة - فأنت تريد بنك طاقة يعمل على تشغيل جهاز كمبيوتر محمول (ربما).

إذا كنت تعيش في الولايات المتحدة الأمريكية ، أعتقد أن أحد أفضل الطرق للقيام بذلك هو الشراء من Best Buy. لماذا ا؟ بسبب سياسة استرداد الأموال لمدة 14 يومًا الخاصة بالعائدات.

لقد اضطررت بالفعل إلى تجربة ثلاثة باور بانك مختلفة قبل أن أجد واحدًا من شأنه أن يعمل. الأسباب الأخرى تجعل Raspberry Pi يشتكي من انخفاض الجهد.

لقد بدأت مع بنك الطاقة الأقل تكلفة ، وواصلت تجربة النموذج التالي (الذي يكلف أكثر) ، حتى وجدت واحدًا يعمل.

كيفية تشغيل Arduino

في دورة Udemy ، اختار المؤلف تشغيل Arduino مباشرة من powerbank (من خلال لوحة الدوائر المطبوعة المخصصة التي صنعها) واستخدم دبابيس الطاقة على موصل GPIO الخاص بـ Arduino.

ومع ذلك ، اخترت فقط تشغيل Arduino مباشرة من Raspberry Pi ، عبر كابل USB.

سيكون عليك أن تقرر أيهما أفضل.

كيفية تشغيل المحركات / سائق المحرك

في دورة Udemy ، اختار المؤلف تشغيل المحركات / السائق مباشرة من powerbank 5V. هناك اعتباران إذا كنت تستخدم هذا النهج.

  1. عندما تبدأ المحركات في الدوران لأول مرة ، فإنها ترسم التيار. يمكن أن (سيؤدي) إلى انخفاض جهد الطاقة (انخفاض) إلى أقل من 5 فولت ، مما يؤدي إلى إعادة ضبط Raspberry.
  2. إن استخدام 5 فولت فقط لتشغيل المحركات يعني أنك لا توفر أكبر قدر ممكن من الطاقة للمحركات ، وستتحرك السيارة بشكل أبطأ (أكثر بطئًا). لقد اختبرت المحركات (مع مصدر الطاقة هذا) (انظر الصورة) إلى 9 فولت على الأقل. تعمل بشكل جيد في 9V.

ملاحظات حول 9V (أو أكثر)

إذا ألقيت نظرة على جميع الصور ومقاطع الفيديو الخاصة بهذا Instructable ، فقد لاحظت أنني قمت بتجميع PCB مخصص لإنشاء مصدر طاقة 9V الخاص بي. لقد تعلمت بعض الأشياء على طول الطريق.

في الوقت الحالي ، أستخدم عدة خلايا بطارية (3) 9 فولت بالتوازي لتشغيل المحركات. لقد استخدمت كلاً من البطاريات القابلة لإعادة الشحن القلوية و NiMH.

تجربة التعلم رقم 1: يستغرق شحن بطاريات NiMH 9V بشكل صحيح وقتًا طويلاً (عدة ساعات).

الحل المقترح: استثمر في شاحن NiMH متعدد البطاريات. يجب أن يكون شاحن "ذكي".

العيب: أنها ليست رخيصة الثمن.

تجربة التعلم رقم 2: تتكون بطاريات 9 فولت في الواقع من عدة خلايا داخلية صغيرة. إذا ماتت إحدى هذه الخلايا ، فإن البطارية بأكملها تكون عديمة الفائدة. لم أواجه هذه المشكلة ، لكني قرأت عنها.

تجربة التعلم رقم 3: ليست كل البطاريات 9V من نفس الجهد. هذا واحد مهم. لأنه كلما زاد الجهد ، زادت السرعة الممكنة. بعض خلايا البطاريات (وأجهزة الشحن) تبلغ 8.4 فولت فقط. البعض حتى أقل. بعضها 9.6 فولت.

تجربة التعلم # 4: بطاريات 9V ، وخاصة بطاريات NiMH ، خفيفة الوزن. شيء جيد. ومع ذلك ، فإن معظمهم يوفرون فقط مللي أمبير من تيار الإخراج. لهذا السبب كان علي أن أضعهما على التوازي. أنت بحاجة إلى سعة حالية إجمالية تقارب 2 أمبير ، حتى لفترات زمنية قصيرة.

تجربة التعلم رقم 5: توجد حزم بطارية 9.6 فولت ، تستخدم لأشياء مثل السيارات التي يتم التحكم فيها عن طريق الراديو. لم أستخدم واحدة حتى الآن ، لكنني أعتقد أنها توفر تيارًا أكثر من عمل بطاريات 9V المتوازية كما فعلت. أيضًا ، يمكنك شحن الوحدة الفردية. تأتي العبوات بأحجام مختلفة. وهناك اعتبار للوزن. وبعد ذلك ، هل تستخدم العبوة لتشغيل السيارة بأكملها ، أم المحركات فقط؟ إذا كانت السيارة بأكملها ، فستحتاج بعد ذلك إلى منظم تنحي بجهد 5 فولت لـ Raspberry Pi.

يتمتع L298 H-Bridge بالقدرة على إخراج 5 فولت لهذا الغرض ، لكنني قلق بشأن مقدار التيار الذي يمكن أن ينتجه لـ Raspberry Pi ، وما إذا كان سيكون ضغطًا كبيرًا على لوحة L298.

إذا قررت الحصول على مصدرين منفصلين للطاقة ، فقد تواجه مشكلة في الوزن (ثقيلة جدًا).

الخطوة 4: برمجة البرامج لـ Gamepad Driving

أعتقد أنني غطيت الكثير من هذا القسم بالفعل في Robot Driven Via Remote USB Gamepad Instructable ، لذلك لن أكرر ذلك هنا.

تعد أقسام البرمجة / البرامج في Instructable الأخرى مجرد اقتراحات. أعتقد أن المرء يتعلم أكثر عن طريق التجربة والخطأ.

الخطوة 5: إضافة كاميرا

إضافة كاميرا
إضافة كاميرا
إضافة كاميرا
إضافة كاميرا
إضافة كاميرا
إضافة كاميرا

في دورة Udemy ، أعتقد أن المؤلف يستخدم مسامير خشبية مستديرة ومسدس غراء لبناء طريقة لرفع الكاميرا.

سترغب في رفع الكاميرا بحيث تنظر لأسفل على الطريق ذي المسارين ، حتى تتمكن من التعرف على الممرات بسهولة أكبر.

حيث أعيش في الولايات المتحدة ، كانت المسامير الخشبية غير مكلفة للغاية. يمكنك شرائها من Lowe's أو Home Depot. اخترت المسامير المربعة بدلاً من المسامير المستديرة.

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

أيضًا ، صنعت البرج مع وضع الفكرة في الاعتبار أنني سأبدأ بكاميرا ويب USB ، ولكن ربما انتقل لاحقًا إلى استخدام وحدة Picamera.

قد ترغب في الاستثمار في كاميرا من نوع عين السمكة.

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

ثم قمت بتثبيت القاعدة على هيكل السيارة.

إذا أردت لاحقًا تحريك الأشياء ، فقمت فقط بفك القاعدة من الهيكل ، وحفر ثقوبًا جديدة في الموقع الجديد للهيكل ، وأعد تثبيت البرج على الهيكل.

أحضرت كود Python و Node.js "Follow-me" من الروبوت الكبير (Wallace Robot 4) كطريقة لاختبار كل شيء. يرجى الاطلاع على الصور في هذا القسم للحصول على قائمة اليوتيوب التي تقدم الكثير من التفاصيل حول "تابعني".

كما ذكرت ، كان من الأسهل تركيب كاميرا ويب USB أولاً. في وقت لاحق يمكنني تركيب وحدة Picamera.

الخطوة 6: التعرف على الوجه - تحديد الموضع

Image
Image

هذا الجزء ليس محور دورة Udemy ، لكنه كان تمرينًا ممتعًا.

إذا قمت ببعض البحث على الويب عن "التعرف على الوجوه python opencv" ، فستجد العديد من الأمثلة الجيدة حول كيفية القيام بذلك ، وكلهم يتبعون إلى حد كبير نفس الخطوات.

  1. تحميل ملف الوجه "haar"
  2. تهيئة الكاميرا
  3. ابدأ حلقة حيث تمسك بإطار
  4. تحويل الصورة الملونة إلى مقياس رمادي
  5. قم بإطعامها إلى opencv لتجد وجهًا (وجوه)
  6. ابدأ حلقة داخلية (لكل وجه موجود) (في حالتي ، أقوم بإضافة رمز للإيقاف إذا كان هناك أكثر من وجه واحد)

لهذا الغرض هنا ، بمجرد أن نكتشف وجهًا ، فإننا نعرف X و Y و W و H للمربع التخيلي الذي يحدد الوجه.

إذا كنت تريد أن يتحرك الروبوت للأمام أو للخلف ، عليك فقط التفكير في W. إذا كان W كبير جدًا (قريب جدًا) ، فدع الروبوت يتحرك للخلف. إذا كان W صغيرًا جدًا (بعيدًا جدًا) ، اجعل الروبوت يتحرك للأمام.

الحركة اليسرى / اليمنى أكثر تعقيدًا قليلاً ولكنها ليست مجنونة. ألق نظرة على الصورة لهذا القسم الذي يوضح بالتفصيل كيفية تحديد موضع الوجه الأيمن مقابل الأيسر.

ملاحظة:

إذا قمت بتشغيل أي من أمثلة OpenCV على الويب ، فستظهر جميعها العرض الفعلي لما يرى opencv "رؤيته" ، مع تحديد الوجه في مربع. إذا لاحظت ، فإن هذا المربع ليس ثابتًا (ثابتًا) ، حتى لو كنت لا تتحرك.

قد تتسبب هذه القيم المتغيرة في أن يتحرك الروبوت باستمرار ، للأمام أو للخلف ، لليسار أو لليمين.

وبالتالي ، سوف تحتاج إلى نوع من دلتا لكل من الأمام / الخلف ولليسار / اليمين.

لنأخذ اليسار مقابل اليمين:

بمجرد حساب اليسار واليمين ، احصل على الفرق (دلتا):

دلتا = القيمة المطلقة (يسار - يمين)

عليك أن تأخذ المطلق لأنك لا تعرف أيهما سيكون الرقم الأكبر.

ثم تقوم بإضافة بعض التعليمات البرمجية الشرطية لمحاولة التحرك فقط إذا كانت دلتا أكبر من حد أدنى.

ستفعل نفس الشيء للأمام مقابل الخلف.

الخطوة 7: وضع الوجه - روبوت متحرك

بمجرد أن تعرف أنك بحاجة إلى أن يتحرك الروبوت يسارًا أو يمينًا ، للأمام أو للخلف ، كيف تفعل ذلك؟

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

باختصار ، لدي الكود في طبقات.

يقوم برنامج Python للتعرف على الوجوه بإنشاء طلبات http إلى خادم Node.js

يستمع خادم Node.js إلى طلبات http لاتجاهات النقل ، ويحولها إلى بروتوكول تسلسلي مخصص

بروتوكول تسلسلي مخصص بين خادم Node.js و Arduino

رسم اردوينو يقوم بتنفيذ الأوامر الفعلية لتحريك الروبوت

دورة Udemy لا تفعل ذلك كما هو مذكور أعلاه. ولكن نظرًا لأنني أردت إحراز تقدم جيد والتركيز على التعرف الفعلي على الصور ، فقد أعدت استخدام الكود السابق في الوقت الحالي.

موصى به: