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

مستكشف Roomba Scout: 8 خطوات
مستكشف Roomba Scout: 8 خطوات

فيديو: مستكشف Roomba Scout: 8 خطوات

فيديو: مستكشف Roomba Scout: 8 خطوات
فيديو: Roomba Balloon Roulette 😱 2024, يوليو
Anonim
مستكشف Roomba Scout
مستكشف Roomba Scout

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

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

الخطوة 1: المعدات

-Roomba مع كاميرا قابلة للحاق (مع اسم محدد معروف)

-خادم متصل

- Windows 10 / Mac مع اتصال بالإنترنت

-منصة مشرقة

- أرضية مظلمة

- أي كائنات طائشة ذات تصميم أحادي اللون

الخطوة 2: إعداد MATLAB

إعداد MATLAB
إعداد MATLAB

من أجل إنشاء مهام ووظائف لجهاز roomba الخاص بك ، يجب أن يكون لديك الأكواد المحددة ومجموعات الأدوات التي تحتوي على أوامر roomba.

باستخدام MATLAB 2016a وما بعده ، قم بإنشاء مجلد يحتوي على ملفات الروبوت هذه وأدخل ملف MATLAB التالي أدناه في المجلد وقم بتشغيله لتثبيت ملفات roomba المتبقية الضرورية.

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

الآن ، استخدم الأمر أدناه في نافذة الأوامر لإعداد roomba:

ص = رومبا (#).

الرمز # هو "رقم" الغرفة المحددة ؛ ومع ذلك ، إذا كنت ترغب فقط في محاكاة غرفة Roomba ، فقم ببساطة بكتابة الأمر التالي:

ص = رومبا (0).

يوصى باستخدام المحاكاة لاختبار أنماط الحركة.

إذا كنت مهتمًا بالأوامر التي يمكن أن يتبعها جهاز Roomba ، فاكتب ما يلي في نافذة الأوامر:

دوك رومبا.

لمزيد من التفاصيل ، قم بزيارة الموقع التالي:

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

الخطوة 3: الوظيفة: الحركة

الوظيفة: الحركة
الوظيفة: الحركة
الوظيفة: الحركة
الوظيفة: الحركة

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

لتقليل الضرر ، يجب على الروبوت تقليل السرعة إلى سرعة أقل.

- عند الاقتراب من جرف أو جدار ، يتحرك الروبوت في الاتجاه المعاكس ويغير زاويته حسب نقطة التأثير

-بعد بعض الوقت من القيادة ، ستتوقف غرفة Roomba في النهاية وتلتقط صورًا للمنطقة المحيطة

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

الخطوة 4: الوظيفة: معالجة الصور

الوظيفة: معالجة الصور
الوظيفة: معالجة الصور

بناءً على الطلب ، تم تكليفنا بتعديل بيانات صورة (أو عدة صور) تم استلامها بواسطة كاميرا الروبوت ، والتي قررنا جعل Roomba "يحسب" عدد الكائنات التي تراها في الصورة.

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

لاحظ أن هذه الوظيفة لا يمكن أن تعمل في جهاز المحاكاة نظرًا لعدم توفير كاميرا ؛ في حالة المحاولة ، سيحدث خطأ يعلن أنه يمكن استخدام مصفوفة (: ،: ، 3) فقط.

الخطوة 5: الوظيفة: رسم الخرائط

الوظيفة: رسم الخرائط
الوظيفة: رسم الخرائط
الوظيفة: رسم الخرائط
الوظيفة: رسم الخرائط
الوظيفة: رسم الخرائط
الوظيفة: رسم الخرائط
الوظيفة: رسم الخرائط
الوظيفة: رسم الخرائط

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

من أجل إضافة حد لطول وقت تشغيل الوظيفة ، تم استخدام الحد n <20 في حلقة while لأغراض الاختبار.

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

الخطوة 6: التجاور

تجاور
تجاور
تجاور
تجاور
تجاور
تجاور
تجاور
تجاور

نظرًا لأنه سيتم وضع كل هذا في ملف واحد ، فقد أنشأنا وظيفة باستخدام كل من الخطوتين السابقتين كوظائف فرعية لها. تم عمل مسودة نهائية بالتعديل التالي لوظيفة الإعادة المسماة "ريكون". لتجنب الالتباس مع MATLAB ، تمت إعادة تسمية نصي "العداد" و "rombplot3" كوظائف مضمنة "CountR" و "plotr" ، على التوالي.

كان لابد من إجراء العديد من التغييرات في النسخة النهائية على عكس النصوص السابقة:

- سيتم تمييز الأصل دائمًا بدائرة حمراء

- في كل مرة يتوقف فيها جهاز Roomba عن مصداته ، يتم تمييز الموقع بدائرة سوداء

- في كل مرة يتوقف فيها جهاز Roomba عن مستشعرات الجرف ، يتم تمييز الموقع بدائرة زرقاء

- في كل مرة يتوقف فيها جهاز Roomba عن التحقيق في المنطقة ، يتم تمييز الموقع بدائرة خضراء

- يتم تعديل الصور لإزالة الجزء العلوي بسبب احتمال تداخل الطابع الزمني مع النتائج

- لن يتم احتساب الحدود ككائن بسبب الأعداد الكبيرة المكتسبة

- تم تغيير العديد من المتغيرات ، وذلك لتجنب الالتباس ، استخدم الإصدارات أعلاه كمرجع.

الخطوة 7: الاختبار

اختبارات
اختبارات

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

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

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

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

الخطوة 8: الخاتمة

استنتاج
استنتاج

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

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

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

موصى به: