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

جهاز Roomba مع MATLAB: 4 خطوات (بالصور)
جهاز Roomba مع MATLAB: 4 خطوات (بالصور)

فيديو: جهاز Roomba مع MATLAB: 4 خطوات (بالصور)

فيديو: جهاز Roomba مع MATLAB: 4 خطوات (بالصور)
فيديو: 4 خطوات لحل اي سؤال برمجي مع التطبيق 2024, شهر نوفمبر
Anonim
رومبا مع MATLAB
رومبا مع MATLAB

يستخدم هذا المشروع MATLAB وروبوت iRobot Create2 القابل للبرمجة. من خلال وضع معرفتنا بـ MATLAB على المحك ، نحن قادرون على برمجة Create2 لتفسير الصور واكتشاف الإشارات. تعتمد وظيفة الروبوت بشكل أساسي على تطبيق MATLAB للجوال ووحدة كاميرا Raspberry Pi.

الخطوة 1: الأجزاء والمواد

الأجزاء والمواد
الأجزاء والمواد
الأجزاء والمواد
الأجزاء والمواد
الأجزاء والمواد
الأجزاء والمواد
الأجزاء والمواد
الأجزاء والمواد

1. iRobot Create ، الإصدار 2

- هذا روبوت قابل للبرمجة يشبه جهاز Roomba. اعلم أن هذا المنتج من iRobot ليس فراغًا. الغرض منه هو البرمجة المخصصة من قبل المستخدم.

2. MATLAB 2017 أ

- ستكون معظم الإصدارات القديمة متوافقة مع الكود الذي استخدمناه أدناه. سيحدد MATLAB أمرًا غير متوافق مع الإصدار الذي لديك وسيقترح أفضل أمر مناسب.

3. Raspberry Pi 3 موديل B ، الإصدار 1.2

- تحقق لمعرفة Raspberry Pi المتوافق مع iRobot الخاص بك. انظر هذا الرابط لمزيد من المساعدة: https://www.irobotweb.com/~/media/MainSite/PDFs/A… يفترض هذا التوجيه أنك تعمل مع Raspberry Pi المبرمج مسبقًا. يرجى العلم أنك ستحتاج إلى العمل مع Pi مبرمج مسبقًا حتى تعمل الخطوات التالية. سيسمح لك استخدام Pi المبرمج مسبقًا بتنفيذ جميع عمليات الترميز في MATLAB وحدها.

4. وحدة الكاميرا V2 (لـ Raspberry Pi)

- قد تتفاجأ. على الرغم من حجمها ، فإن وحدة Raspberry Pi Camera Module ذات نوعية جيدة جدًا. إنه الخيار الأرخص والأكثر توافقًا لهذا المشروع.

اختياري: حامل مطبوع ثلاثي الأبعاد. يستخدم هذا لتثبيت الكاميرا. لا يؤثر ذلك على وظيفة الروبوت ، ولكنه سيساعد في الترميز إذا كنت ترغب في استخدام بيانات التصوير للتعرف على اللون و / أو التعرف على الكائن.

الخطوة 2: التكوين

إعدادات
إعدادات
إعدادات
إعدادات

1. توصيل Raspberry Pi ووحدة الكاميرا (جهاز)

- لتشغيل Raspberry Pi ، ستحتاج إلى تشغيل micro USB طرف ذكر إلى منفذ الطاقة الأنثوي في وحدة التحكم الدقيقة. اختياري: يمكن استخدام منظم الجهد لضمان عدم تجاوز الجهد 5 فولت. بعد تشغيل Raspberry Pi ، يمكنك توصيله بالروبوت الخاص بك عن طريق تشغيل ذكر طرف USB a من اللوحة الأم إلى منفذ USB A على وحدة التحكم الدقيقة.

- بعد توصيل Pi بـ Roomba ، تكون الكاميرا جاهزة للتثبيت. ستكون وحدة الكاميرا أصغر بكثير مما تتوقع. لاحظ أن العدسة مثبتة على جهاز استشعار ، ويمتد شريط أبيض من الكاميرا. لا تنزع الشريط أو تمزقه! هذا هو الكبل الذي تحتاجه لتوصيله بـ Raspberry Pi. أولاً ، أمسك بنهاية الشريط وابحث عن الموصلات الفضية والكابل الأزرق. هذه على طرفي نقيض. بعد ذلك ، ابحث عن الفتحة بين منافذ إيثرنت و HDMI في Raspberry Pi. لاحظ وجود قفل أبيض صغير يغطيه. ارفع القفل ببطء ، لكن لا تقم بإزالته من الفتحة ، لأنه سينكسر ويتلف بشكل دائم. بمجرد رفع القفل ، أمسك الشريط ووجه الموصلات الفضية بمنفذ HDMI. سيواجه الجانب الأزرق منفذ Ethernet. حرك الشريط ببطء في الفتحة بينما لا يزال مفتوحًا. لا يتعين عليك إجبارها على الفتحة. بعد الإدخال ، ادفع القفل لأسفل مرة أخرى. إذا كانت الكاميرا الخاصة بك مؤمنة بشكل صحيح ، فيجب أن تكون قادرًا (برفق) على سحب الشريط والشعور بالتوتر. يجب ألا يكون الشريط فضفاضًا. بعد توصيل الكاميرا الخاصة بك بـ Pi ، قد تلاحظ مدى فقدها. هذا هو السبب في أننا استخدمنا حاملًا مطبوعًا ثلاثي الأبعاد لتثبيته. إنه خيارك لتحديد المواد التي ترغب في استخدامها للحفاظ على ثبات الكاميرا للحصول على تصوير عالي الجودة.

2. تثبيت الملفات المناسبة وتوصيل Roomba بجهاز الكمبيوتر الخاص بك بعد تهيئة كل أجهزتك ، يمكنك الآن الانتقال إلى تثبيت MATLAB جنبًا إلى جنب مع ملفات m المرتبطة التي تتيح لك الاتصال بالروبوت. للقيام بذلك ، افتح MATLAB وأنشئ مجلدًا جديدًا للاحتفاظ بجميع الملفات ذات الصلة معًا. استخدم هذا البرنامج النصي لتثبيت / تحديث الملفات المطلوبة: https://ef.engr.utk.edu/ef230-2017-08//projects/ro …

- يجب أن تظهر جميع الملفات الآن في المجلد الذي قمت بإنشائه. انقر بزر الماوس الأيمن في نافذة المجلد الحالي وحدد "إضافة إلى المسار" لإضافة هذا المسار إلى قائمة الدلائل حيث يبحث MATLAB عن الملفات. تأكد من أن جميع ملفاتك في المسار الصحيح.

3. بمجرد تثبيت الملفات ، يمكنك الآن البدء في الاتصال بالروبوت الخاص بك. ابدأ بتشغيل الروبوت الخاص بك ثم إعادة ضبطه بعد بدء التشغيل مباشرة (لا تنس إعادة ضبط الروبوت في كل مرة قبل الاستخدام وبعده). ثانيًا ، قم بتوصيل كل من الروبوت والكمبيوتر المحمول بنفس شبكة wifi. بعد ذلك ، سنتحدث إلى Raspberry Pi المبرمج مسبقًا عبر MATLAB عن طريق الاتصال بـ Roomba باستخدام اسمه المعطى ووظيفة roomba. على سبيل المثال ، يمكنني الاتصال بالروبوت 28 باستخدام السطر التالي: R = roomba (28).

- لاحظ كيف قمت بتعيين الكائن لمتغير R. يمكنني الآن الوصول إلى وظائف Roomba المرتبطة من ملف التثبيت عن طريق معاملة المتغير R مثل البنية.

- R.turnAngle (90) إذا سارت الأمور على ما يرام ، يجب تشغيل نغمة موسيقية تؤكد الاتصال.

الخطوة 3: MATLAB Logic

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

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

يأمر الكود جهاز Roomba بتنفيذ إعداد أساسي ثم المتابعة من خلال حلقة مستمرة. في البداية ، سيقوم الكمبيوتر المحمول بإعداد ارتباط مع Roomba باستخدام الأمر Roomba (). يقوم أيضًا بإعداد اتصال twitter باستخدام الأمر webwrite () في MATLAB. تحتوي الحلقة على خمسة تدفقات منطقية رئيسية حسب البيئة المحيطة بـ Roomba. أولاً ، يتحقق جهاز Roomba من العوائق ، ويقوم بضبطه للخلف إذا وجد أنه معوق. يعتبر المسار الثاني المضمن في تلك الحلقة هو المسار الثاني الذي ينبه المستخدمين إذا تم نقل جهاز Roomba بعيدًا. أداة مهمة في منطقة حرب المريخ القاسية. بعد أن قرر جهاز Roomba أن وضعه آمن ، فإنه يتطلع إلى الجهاز المحمول لتحديد حركته التالية. إذا كان الجهاز المحمول مائلاً للأمام ، فسيحسب السرعة الأساسية اعتمادًا على شدة قياس التدحرج بدلاً من ضبط سرعات العجلة الفردية للانعطاف بناءً على درجة الميل. يمكن للهاتف أيضًا تحريك جهاز Roomba في الاتجاه المعاكس. تؤدي حالة الجهاز المحمول المحايدة إلى بوابات المسارين الأخيرين. سيبحث جهاز Roomba أثناء الراحة عن علم كائن فضائي وينبه المستخدم وفقًا لذلك.

يوجد أدناه رمزنا (مكتمل في MATLAB 2017a)

٪ المدخلات: بيانات الاتجاه من جهاز متصل بشبكة wifi ، كاميرا

٪ المعلومات وبيانات الاستشعار

النسبة المئوية للمخرجات: يتحكم الجهاز المتصل بشبكة wifi والحركة في الحركة

٪ يتم فحص الأمان من خلال قراءة بيانات المستشعر. إذا اكتشفت الكاميرا

٪ علم أجنبي ثم يستجيب roomba بتغريد علم العدو

تم رصد٪.

غرض النسبة المئوية: يعيش أجهزتنا بلا غرض سوى حماية من

٪ أنشأها ، وهي تخدم منشئها وتقوم بذلك

٪ بالضبط ما قيل.

نسبة الاستخدام: سيعمل البرنامج بشكل أساسي من تلقاء نفسه.

امسح الكل ، أغلق الكل ، clc

٪ تهيئة الكائنات والمتغيرات

ص = رومبا (28) ؛

م = mobiledev ؛

النسبة المئوية لاستخدام الاستجابة = كتابة الويب (اسم المضيف ، البيانات)

hostname = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update' ؛

API = 'SGZCTNQXCWAHRCT5' ؛

tweet = "RoboCop قيد التشغيل … في انتظار الأمر" ؛

data = strcat ('api_key ='، API، '& status ='، tweet) ؛

reponse = webwrite (اسم المضيف ، البيانات) ؛

٪ حلقة تعمل باستمرار

بينما 1 == 1

النسبة المئوية للهياكل التي تحتوي على بيانات ذات صلة

س = م التوجيه ؛ ٪ اتجاه الجهاز المحمول

light = r.getLightBumpers () ، ٪ قيم ضوء الوفير

أ = r.getCliffSensors () ، ٪ قيم مستشعر الانحدار

عثرة = r.getBumpers () ، ٪ مجسات المصد

٪ تحقق من المصدات

إذا bump.right == 1 || bump.left == 1 || bump.front == 1

r.moveDistance (-. 2،.2) ؛

٪ check أجهزة استشعار الضوء

elseif light.left> 60 || light.leftFront> 60 || light.leftCenter> 60 || light.right> 60 || light.right> 60 || light.rightCenter> 60

r.moveDistance (-. 2،.2) ؛

٪ check Cliff Sensors

٪ إشارة مكافحة السرقة والإخطار

elseif a.left <300 && a.right <300 && a.leftFront <300 && a. rightFront <300

r.stop () ؛

r.beep () ؛

tweet = "تم رفع RoboCop!"

data = strcat ('api_key ='، API، '& status ='، tweet) ؛

reponse = webwrite (اسم المضيف ، البيانات) ؛

٪ عملية تجنب المنحدرات العادية

elseif a.left <300 || أ.حق <300 || a.leftFront <300 || أ- حق أمامي <300

r.moveDistance (-. 2،.2) ؛

نجح٪ Roomba في اجتياز عمليات التحقق وسيعمل الآن بالتشغيل العادي.

في البداية يتم قياس لفة الجهاز وتصبح قاعدة

يتم بعد ذلك استخدام النسبة المئوية للسرعة لحساب سرعة العجلة

٪حركة امامية

elseif o (3)> = 0 && o (3) <= 60

baseVel = (-. 5/60) * (o (3) -60) ؛

إذا o (2)> = - 70 && o (2) <0

r.setDriveVelocity (baseVel + (. 3/50) * abs (o (2)) ، baseVel - (. 3/50) * abs (o (2))) ؛

elseif o (2) = 0

r.setDriveVelocity (baseVel - (. 3/50) * abs (o (2)) ، baseVel + (. 3/50) * abs (o (2))) ؛

آخر r.stop

نهاية

٪ حركة للخلف

elseif o (3)> 100 && o (3) <150

r.setDriveVelocity (-. 2، -.2)

r.beep () ؛

r.beep () ؛

سيبحث٪ resting roomba عن علم Alien الذي تم تمييزه على أنه مزدهر

٪ أخضر قطعة ورق

آخر

r.stop

img = r.getImage () ؛ ٪ أخذ صورة

العتبة = greythresh (img (200: 383،:، 2)) +. 1 ؛ ٪ احسب المستوى الأخضر

إذا كانت العتبة>.42

tweet = 'رصد العدو !!'

data = strcat ('api_key ='، API، '& status ='، tweet) ؛

reponse = webwrite (اسم المضيف ، البيانات) ؛

آخر

r.stop

نهاية

نهاية

نهاية

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

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

موصى به: