جدول المحتويات:
- اللوازم
- الخطوة 1: مقدمة
- الخطوة 2: المواد والأدوات اللينة المستخدمة في هذا المشروع
- الخطوة الثالثة: ماذا تفعل؟
- الخطوة 4: المخططات
- الخطوة 5: كيف نفعل؟
- الخطوة 6: الكود الزائف
- الخطوة 7: الكود
- الخطوة 8: الروابط الخارجية
فيديو: روبوت تتبع الكرة: 8 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:37
لذا في هذا ، سأخبر كيف أجعل روبوتًا لتتبع الكرة وهو إنسان آلي سوف يتعرف على الكرة ويتبعها. إنها في الأساس تقنية مراقبة آلية يمكن استخدامها في العالم الحديث. لذا ، دعنا ندخل ونبدأ في البناء …
ملاحظة: هذه المهمة الجزئية المقدمة إلى جامعة ديكن ، كلية تكنولوجيا المعلومات ، SIT-210 Embedded Systems Development
اللوازم
www.hackster.io/junejarohan/ball-tracking-robot-7a9865
الخطوة 1: مقدمة
توفر المراقبة الحالية عيبًا رئيسيًا وهو أنها تعتمد على مشاركة البشر والتي كما نعلم جميعًا يمكن تشتيت انتباهنا بسهولة ، لذلك كان من الأهمية بمكان اكتشاف نظام يمكنه مراقبة المناطق بشكل مستقل ومستمر. ونريد أيضًا تحديد الأشياء البغيضة أو غير المرغوب فيها والمخاطر أثناء اتخاذ القرارات في نفس الوقت والاستجابة وفقًا لذلك. لذلك يعد تتبع الكائنات باستخدام الأنظمة الذكية وأجهزة الكمبيوتر أمرًا ضروريًا وحاسمًا لتحقيق المراقبة الآلية.
يجب أن يكون أي نظام مراقبة خارجي قادرًا على تتبع الأجسام المتحركة في مجال رؤيته وتصنيف هذه الكائنات واكتشاف بعض أنشطتها. لقد طورت طريقة لتتبع وتصنيف هذه الكائنات في سيناريوهات واقعية. يتم تنفيذ تتبع الكائن في كاميرا واحدة باستخدام الطرح الخلفي ، متبوعًا بمراسلات المنطقة. يأخذ هذا في الاعتبار إشارات متعددة بما في ذلك سرعات وأحجام ومسافات الصناديق المحيطة.
الخطوة 2: المواد والأدوات اللينة المستخدمة في هذا المشروع
مكونات الأجهزة المستخدمة:
- Raspberry Pi (x1)
- وحدة كاميرا Raspberry Pi (x1)
- جهاز استشعار بالموجات فوق الصوتية (x3)
- محركات SparkFun Dual H-Bridge للمحركات L298 (x1)
- محرك تيار مستمر (x1)
- اللوح (x1)
- توصيل الأسلاك
البرمجيات المستخدمة:
OpenCV
أدوات يدوية:
بايثون
الخطوة الثالثة: ماذا تفعل؟
يجب أن يكون أي نظام مراقبة خارجي قادرًا على تتبع الأجسام المتحركة في مجال رؤيته وتصنيف هذه الكائنات واكتشاف بعض أنشطتها. لقد طورت طريقة لتتبع وتصنيف هذه الكائنات في سيناريوهات واقعية. يتم تنفيذ تتبع الكائن في كاميرا واحدة باستخدام الطرح الخلفي ، متبوعًا بمراسلات المنطقة. يأخذ هذا في الاعتبار إشارات متعددة بما في ذلك سرعات وأحجام ومسافات الصناديق المحيطة.
كان الشيء الحاسم أثناء اكتشاف الصور إطارًا تلو الآخر هو تجنب أي إسقاط للإطار ، حيث يمكن للبوت أن يدخل في حالة من عدم اليقين إذا فشل الروبوت في ملاحظة اتجاه حركة الكرة بسبب قطرات الإطار. إذا خرجت الكرة عن نطاق الكاميرا ، فسوف تدخل إلى ما نسميه حالة النسيان ، وفي هذه الحالة ، يقوم الروبوت بدوران 360 درجة لعرض المساحة المحيطة به حتى تعود الكرة في إطار الكاميرا ثم تبدأ في التحرك في اتجاهها.
لتحليل الصورة ، آخذ كل إطار ثم أخفيه باللون المطلوب. ثم أجد كل الخطوط العريضة وأجد أكبرها فيما بينها وربطتها في مستطيل. وتظهر المستطيل على الصورة الرئيسية وتجد إحداثيات مركز المستطيل.
أخيرًا ، يحاول الروبوت إحضار إحداثيات الكرة إلى مركز محور الإحداثيات الخاص بها. هذه هي الطريقة التي يعمل بها الروبوت. يمكن تحسين ذلك بشكل أكبر باستخدام جهاز إنترنت الأشياء مثل جسيم الفوتون والذي يمكن أن يتيح لك إخبارك عند اكتشاف شيء ما وأن الروبوت يتابعه أو عندما يكون الروبوت قد فقد مساره ويعود الآن إلى القاعدة.
لغرض معالجة الصور ، تحتاج إلى تثبيت برنامج OpenCV على raspberry pi الذي كان صعبًا جدًا بالنسبة لي.
يمكنك الحصول على أي معلومات مطلوبة لتثبيت OpenCV من خلال هذا الرابط: انقر هنا
الخطوة 4: المخططات
لقد قدمت أعلاه المخططات لمشروعي ومعها لوحة الدوائر المطبوعة (PCB).
وإليك بعض الروابط الرئيسية التي عليك القيام بها:
• أولاً وقبل كل شيء ، يتم توصيل وحدة كاميرا Raspberry Pi مباشرةً بـ Raspberry Pi.
• يتم توصيل مستشعرات الموجات فوق الصوتية VCC بالطرف المشترك كما هو الحال مع GND (الأرضي) ويتم توصيل المنفذين المتبقيين لمستشعر الموجات فوق الصوتية بدبابيس GPIO على Raspberry Pi.
• يتم توصيل المحركات باستخدام H-Bridge.
• يتم توفير الطاقة باستخدام البطارية.
لقد أضفت أيضًا مقطع فيديو قد يساعد في فهم عمل مستشعر الموجات فوق الصوتية وكيف يعمل.
وأيضًا يمكنك متابعة هذا الرابط إذا لم تتمكن من العثور على الفيديو أعلاه.
الخطوة 5: كيف نفعل؟
لقد صنعت هذا المشروع الذي يصور روبوتًا أساسيًا يمكنه تتبع الكرة. يستخدم الروبوت كاميرا للقيام بمعالجة الصور عن طريق التقاط الإطارات وتتبع الكرة. لتتبع الكرة بميزات مختلفة مثل لونها وحجمها وشكلها.
يجد الروبوت لونًا مشفرًا ثم يبحث عن الكرة من هذا اللون ويتبعها. لقد اخترت Raspberry Pi كوحدة تحكم صغيرة في هذا المشروع لأنها تتيح لنا استخدام وحدة الكاميرا الخاصة بها وتوفر مرونة كبيرة في التعليمات البرمجية لأنها تستخدم لغة python سهلة الاستخدام للغاية كما تتيح لنا استخدام مكتبة OpenCV لتحليل الصور.
تم استخدام H-Bridge لتبديل اتجاه دوران المحركات أو لإيقافها.
لتحليل الصورة ، آخذ كل إطار ثم أخفيه باللون المطلوب. ثم أجد كل الخطوط العريضة وأجد أكبرها فيما بينها وربطتها في مستطيل. وتظهر المستطيل على الصورة الرئيسية وتجد إحداثيات مركز المستطيل.
أخيرًا ، يحاول الروبوت إحضار إحداثيات الكرة إلى مركز محور الإحداثيات الخاص بها. هذه هي الطريقة التي يعمل بها الروبوت. يمكن تحسين ذلك بشكل أكبر باستخدام جهاز إنترنت الأشياء مثل جسيم الفوتون والذي يمكن أن يتيح لك إخبارك عند اكتشاف شيء ما وأن الروبوت يتابعه أو عندما يكون الروبوت قد فقد مساره ويعود الآن إلى القاعدة. وللقيام بذلك ، سنستخدم نظامًا أساسيًا للبرامج عبر الإنترنت يربط الأجهزة ويسمح لها بتنفيذ إجراءات معينة على مشغلات محددة مثل مشغلات IFTTT.
الخطوة 6: الكود الزائف
هذا هو الكود الزائف لجزء الكشف باستخدام OpenCV حيث نكتشف كرة.
الخطوة 7: الكود
أعلاه هي مقتطفات من التعليمات البرمجية وفيما يلي الوصف التفصيلي للكود.
# استيراد الحزم الضرورية
نحن نستورد جميع الباقات المطلوبة
من picamera.array استيراد PiRGBArray # نظرًا لوجود مشكلة في الدقة في raspberry pi ، فلن تتمكن من التقاط الإطارات بواسطة VideoCapture
من picamera استيراد PiCamera استيراد RPi. GPIO كوقت استيراد GPIO استيراد numpy كـ np
نقوم الآن بإعداد الأجهزة وتخصيص الدبابيس المتصلة بـ RASPBERRY PI
GPIO.setmode (GPIO. BOARD)
GPIO_TRIGGER1 = 29 # مستشعر الموجات فوق الصوتية الأيسر
GPIO_ECHO1 = 31
GPIO_TRIGGER2 = 36 # مستشعر الموجات فوق الصوتية الأمامية
GPIO_ECHO2 = 37
GPIO_TRIGGER3 = 33 # مستشعر الموجات فوق الصوتية الأيمن
GPIO_ECHO3 = 35
MOTOR1B = 18 # المحرك الأيسر
المحرك 1E = 22
MOTOR2B = 21 # المحرك الأيمن
MOTOR2E = 19
LED_PIN = 13 # إذا عثرت على الكرة ، فسوف تضيء المصباح
# تعيين الدبابيس كإخراج وإدخال
GPIO.setup (GPIO_TRIGGER1، GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO1، GPIO. IN) # Echo GPIO.setup (GPIO_TRIGGER2، GPIO. OUT) # تشغيل GPIO.setup (GPIO_ECHO2، GPIO. IN) GPIO.setup (GPIO_TRIGGER3، GPIO. OUT) # تشغيل GPIO.setup (GPIO_ECHO3، GPIO. IN) GPIO.setup (LED_PIN، GPIO. OUT)
# تعيين الزناد على خطأ (منخفض)
GPIO.output (GPIO_TRIGGER1 ، خطأ) GPIO.output (GPIO_TRIGGER2 ، خطأ) GPIO.output (GPIO_TRIGGER3 ، خطأ)
تستخدم هذه الوظيفة جميع أجهزة الاستشعار التي تعمل بالموجات فوق الصوتية ، وتجمع المسافة من الكائنات الموجودة حول الروبوت لدينا
# اسمح للوحدة بالاستقرار
def sonar (GPIO_TRIGGER، GPIO_ECHO): بدء = 0 توقف = 0 # تعيين المسامير كإخراج وإدخال GPIO.setup (GPIO_TRIGGER، GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO، GPIO. IN) # Echo # اضبط المشغل على False (منخفض) GPIO.output (GPIO_TRIGGER ، خطأ) # اسمح للوحدة بضبط الوقت. الإخراج (GPIO_TRIGGER ، خطأ) يبدأ = time.time () بينما GPIO.input (GPIO_ECHO) == 0 و time.time ()
الحصول على محركات DC للعمل مع RASPBERRY PI
GPIO.setup (MOTOR1B ، GPIO. OUT)
GPIO.setup (MOTOR1E ، GPIO. OUT)
GPIO.setup (MOTOR2B ، GPIO. OUT) GPIO.setup (MOTOR2E ، GPIO. OUT)
تحديد وظائف تشغيل الروبوت وتحريكه في اتجاهات مختلفة
def إلى الأمام ():
GPIO.output (MOTOR1B، GPIO. HIGH) GPIO.output (MOTOR1E، GPIO. LOW) GPIO.output (MOTOR2B، GPIO. HIGH) GPIO.output (MOTOR2E، GPIO. LOW) عكسي (): GPIO.output (MOTOR1B ، GPIO. LOW) GPIO.output (MOTOR1E ، GPIO. HIGH) GPIO.output (MOTOR2B ، GPIO. LOW) GPIO.output (MOTOR2E ، GPIO. HIGH) مع الاتجاه الأيمن (): GPIO.output (MOTOR1B ، GPIO. LOW) GPIO.output (MOTOR1E، GPIO. HIGH) GPIO.output (MOTOR2B، GPIO. HIGH) GPIO.output (MOTOR2E، GPIO. LOW) الانعطاف الأيسر (): GPIO.output (MOTOR1B، GPIO. HIGH) GPIO.output (MOTOR1E ، GPIO. LOW) GPIO.output (MOTOR2B ، GPIO. LOW) إخراج GPIO (MOTOR2E ، GPIO. HIGH)
توقف def ():
GPIO.output (MOTOR1E ، GPIO. LOW) GPIO.output (MOTOR1B ، GPIO. LOW) GPIO.output (MOTOR2E ، GPIO. LOW) GPIO.output (MOTOR2B ، GPIO. LOW)
عمل وحدة الكاميرا وضبط الإعدادات
# التقاط الكاميرا
#initialize الكاميرا وانتزاع مرجع لكاميرا التقاط الكاميرا الأولية = PiCamera () camera.resolution = (160، 120) camera.framerate = 16 rawCapture = PiRGBArray (camera ، size = (160، 120)) # السماح للكاميرا وقت الإحماء ، النوم (0.001)
ننفذ الآن الشيء الرئيسي حيث يتبع الروبوت الكرة وتجنب أي عقبة في الطريق
بينما (1 <10): {# المسافة تأتي من مسافة مستشعر الموجات فوق الصوتية الأمامية C = السونار (GPIO_TRIGGER2، GPIO_ECHO2) # المسافة تأتي من مسافة مستشعر الموجات فوق الصوتية اليمنى R = السونار (GPIO_TRIGGER3، GPIO_ECHO3) # المسافة تأتي من مسافة مستشعر الموجات فوق الصوتية اليسرى L = السونار (GPIO_TRIGGER1) ، GPIO_ECHO1) إذا كانت (مسافة C = 8: rightturn () time.sleep (0.00625) توقف () time.sleep (0.0125) forward () time.sleep (0.00625) stop () time.sleep (0.0125) # while found == 0: leftturn () time.sleep (0.00625) elif DistanceL> = 8: leftturn () time.sleep (0.00625) stop () time.sleep (0.0125) forward () time.sleep (0.00625) stop () time.sleep (0.0125) rightturn () time.sleep (0.00625) stop () time.sle (0.0125) وإلا: stop () time.sleep (0.01) وإلا: #otherwise تتحرك للأمام () time.sleep (0.00625) إذا (المسافة C> 10): # يجلب إحداثيات الكرة إلى مركز المحور التخيلي للكاميرا. if (centre_x = 20): if (centre_x0): flag = 1 leftturn () time.sleep (0.025) forward () time.sleep (0.00003125)) توقف () time.sleep (0.00625) وإلا: توقف () time.sleep (0.01)
آخر:
# إذا وجدت الكرة وكانت قريبة جدًا ، فإنها تضيء المصباح. GPIO.output (LED_PIN، GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("draw"، frame) rawCapture.truncate (0) # امسح الدفق استعدادًا لـ الإطار التالي }
قم بالتنظيفات اللازمة
GPIO.cleanup () # حرر جميع دبابيس GPIO
الخطوة 8: الروابط الخارجية
رابط الفيديو التوضيحي: اضغط هنا (يوتيوب)
رابط إلى الكود على Git-hub: انقر هنا (Git-Hub)
موصى به:
كيفية بناء PHIL - روبوت تتبع خفيف: 6 خطوات (بالصور)
كيفية بناء PHIL - روبوت تتبع خفيف: في هذا Instructable ، سأوضح لك كيف صنعت روبوت تتبع الضوء ثنائي المحور باستخدام Arduino Uno. سيتم تضمين كل CAD والرمز حتى تتمكن من بنائه بنفسك دون الحاجة إلى أي مهارات برمجة أو تصميم. كل ما تحتاجه
روبوت تتبع الخط: 5 خطوات
روبوت يتبع الخط: مرحبًا بالجميع ، في هذا الدليل ، سأشارك كيفية إنشاء روبوت يتبع الخط باستخدام مجموعة من Amazon. لقد استخدمت هذه المجموعة لتعليم طفلي كيفية اللحام. عادةً ما تكون هذه المجموعات مباشرة إلى الأمام ، وتحصل على جميع المواد والمكونات وما إلى ذلك مع المجموعة
DIY الذكية روبوت تتبع مجموعات السيارات تتبع السيارات حساسة للضوء: 7 خطوات
DIY الذكية روبوت تتبع مجموعات السيارات تتبع السيارات حساس للضوء: التصميم بواسطة SINONING ROBOT يمكنك الشراء من تتبع سيارة الروبوت ، تقارن رقاقة TheoryLM393 بين المقاومين ، عندما يكون هناك جانب واحد من المقاوم الضوئي LED على الأبيض سيتوقف جانب المحرك على الفور ، والجانب الآخر من المحرك تدور ، بحيث
روبوت تتبع اللون على أساس العجلة متعددة الاتجاهات و OpenCV: 6 خطوات
روبوت تتبع الألوان استنادًا إلى العجلة متعددة الاتجاهات و OpenCV: أستخدم هيكل عجلة متعدد الاتجاهات لتنفيذ تتبع الألوان الخاص بي ، وأستخدم برنامجًا للهاتف المحمول يسمى OpenCVBot. شكرا لمطوري البرمجيات هنا ، شكرا لك. يقوم OpenCV Bot في الواقع باكتشاف أو تتبع أي كائن في الوقت الحقيقي من خلال معالجة الصور
روبوت موازنة / روبوت ذو 3 عجلات / روبوت STEM: 8 خطوات
موازنة الروبوت / روبوت ذو 3 عجلات / روبوت STEM: لقد بنينا موازنة مجمعة وروبوت ثلاثي العجلات للاستخدام التعليمي في المدارس والبرامج التعليمية بعد المدرسة. يعتمد الروبوت على Arduino Uno ، وهو درع مخصص (يتم توفير جميع تفاصيل البناء) ، وحزمة بطارية Li Ion (جميعها