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

جهاز MATLAB للتحكم في جهاز Roomba: 5 خطوات
جهاز MATLAB للتحكم في جهاز Roomba: 5 خطوات

فيديو: جهاز MATLAB للتحكم في جهاز Roomba: 5 خطوات

فيديو: جهاز MATLAB للتحكم في جهاز Roomba: 5 خطوات
فيديو: خطوة بخطوة | مشروع اردوينو كامل بـ الماتلاب - التحكم فى اتجاه دوران محرك مستمر عن طريق اليد 2024, يوليو
Anonim
جهاز MATLAB الذي يتم التحكم فيه عن طريق جهاز Roomba
جهاز MATLAB الذي يتم التحكم فيه عن طريق جهاز Roomba
MATLAB جهاز تحكم Roomba
MATLAB جهاز تحكم Roomba

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

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

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

ماتلاب 2018a

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

iRobot إنشاء جهاز

- هذا الجهاز هو جهاز مصنوع خصيصًا لغرض وحيد هو البرمجة والتشفير. (إنه ليس فراغًا فعليًا)

Raspberry Pi (مع الكاميرا)

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

الخطوة 2: ملف قاعدة بيانات Roomba

ملف قاعدة بيانات Roomba
ملف قاعدة بيانات Roomba

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

يمكنك تنزيل الملف على هذا الرابط أو الملف القابل للتنزيل أدناه

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

الخطوة 3: الاتصال بـ Roomba

أولاً ، يجب عليك التأكد من أن الروبوت الخاص بك متصل بلوحة raspberry pi الخاصة بك باستخدام قابس USB صغير. فأنت بحاجة إلى توصيل الكمبيوتر والروبوت بشكل صحيح بنفس شبكة WiFi. بمجرد الانتهاء من ذلك ، يمكنك تشغيل الروبوت الخاص بك والاتصال به باستخدام الأمر المحدد في ملف قاعدة بيانات الروبوت. (قم دائمًا بإعادة ضبط الروبوت الخاص بك قبل وبعد استخدامه). على سبيل المثال ، نستخدم الأمر "r.roomba (19)" للاتصال بالروبوت الخاص بنا ، مع تخصيص المتغير r لجهازنا. يشير هذا إلى ملف قاعدة البيانات ، والذي يُنشئ متغيرنا كهيكل يمكننا الرجوع إليه في أي لحظة.

الخطوة 4: الكود

الرمز
الرمز
الرمز
الرمز

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

بدأنا بالأمر البسيط "r.setDriveVelocity (.06)" الذي يضبط السرعة الأمامية للروبوت على 0.06 م / ث. هذا فقط لتحريك الروبوت مسبقًا

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

بينما يستمر true٪ while loop حتى يحدث شيء "خطأ" (في هذه الحالة يستمر بلا حدود) data = r.getCliffSensors؛ data2 = r.getBumpers؛٪ يسترجع البيانات باستمرار حول قيم مستشعر الجرف ويعينها لمتغير٪ img = r.getImage؛ ٪ يأخذ صورة من الكاميرا المركبة٪ صورة (img) ؛ ٪ يظهر الصورة التي تم التقاطها٪ red_mean = متوسط (متوسط (img (: ،: ، 1))) ؛٪ يأخذ القيمة المتوسطة للون الأخضر إذا كانت data.rightFront <2000 r.turnAngle (-2) ؛ يقوم ٪ بتحويل Roomba تقريبًا.2 درجة CW بمجرد أن تنخفض قيمة مستشعرات الجرف الأمامي الأيمن إلى أقل من 2000 r.setDriveVelocity (.05) ؛ elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1) ؛ يقوم٪ بإخبار Roomba بالاستمرار في المضي قدمًا بسرعة.2 م / ث تقريبًا إذا كانت كلتا القيمتين من المستشعرات الأمامية اليمنى واليسرى أقل من 2000٪ r.turnAngle (0) ؛ ٪ يطلب من Roomba عدم الانعطاف إذا كانت الشروط المذكورة أعلاه صحيحة

elseif data2.right == 1 r.moveDistance (-. 12) ؛ ص زاوية الدوران (160) ؛ r.setDriveVelocity (.05) ؛ elseif data2.left == 1 r.moveDistance (-. 2) ؛ ص زاوية الدوران (5) ؛ r.setDriveVelocity (.05) ؛ elseif data2.front == 1 r.moveDistance (-. 12) ؛ ص زاوية الدوران (160) ؛ r.setDriveVelocity (.05) ؛

بعد هذه الحلقة ، ندخل حلقة أثناء أخرى تقوم بتشغيل البيانات التي تم الحصول عليها من خلال الكاميرا. ونستخدم عبارة if داخل حلقة while هذه التي تتعرف على صورة باستخدام برنامج معين (alexnet) ، وبمجرد تحديدها للصورة ، يتم تشغيل جهاز التحكم عن بُعد في الجهاز المحمول على الفور

أنيت = alexnet ؛ ٪ يعين التعلم العميق alexnet لمتغير بينما صحيح٪ Infinite while loop img = r.getImage؛ img = imresize (img، [227، 227]) ؛ التسمية = تصنيف (anet ، img) ؛ إذا الملصق == "منشفة ورقية" || التسمية == تسمية "الثلاجة" = "الماء" ؛ صورة النهاية (img) ؛ العنوان (شار (التسمية)) ؛ سحبناو.

تسترد الحلقة while التي تسمح لنا بالتحكم في الجهاز بهاتفنا تلك البيانات من جيروسكوب الهاتف ونقوم بتوصيلها بمصفوفة تقوم باستمرار بتدفق البيانات مرة أخرى إلى MATLAB على الكمبيوتر. نستخدم عبارة if التي تقرأ بيانات المصفوفة وتعطي ناتجًا يحرك الجهاز بناءً على قيم معينة لجيروسكوب الهاتف. من المهم معرفة أننا استخدمنا مستشعرات التوجيه للجهاز المحمول. يتم تصنيف المصفوفة واحدًا بثلاثة المذكورة أعلاه حسب كل عنصر من عناصر مستشعرات التوجيه للهاتف ، وهي السمت والنغمة والجانب. خلقت عبارات if شروطًا تنص عندما يتجاوز الجانب القيم 50 أو يقل عن -50 ، ثم يتحرك الروبوت مسافة معينة للأمام (موجب 50) أو للخلف (سالب 50). وينطبق الشيء نفسه على قيمة الملعب. إذا تجاوزت قيمة الملعب قيمة 25 من السقوط إلى ما دون -25 ، يدور الروبوت بزاوية 1 درجة (موجب 25) أو سالب 1 درجة (سالب 25)

بينما الوقفة الحقيقية (.1)٪ وقفة لمدة 0.5 ثوانٍ قبل أن يتم أخذ كل قيمة Controller = iphone. Orientation ؛ ٪ يعين المصفوفة لقيم اتجاه iPhone إلى متغير Azimuthal = Controller (1) ؛ ٪ يعين القيمة الأولى للمصفوفة إلى متغير درجة الصوت = وحدة تحكم (2) ؛ ٪ يعين القيمة الثانية من المصفوفة لمتغير (إمالة للأمام وللخلف عندما يكون iPhone ممسوكًا بشكل جانبي) Side = Controller (3) ؛ ٪ يعين القيمة الثالثة للمصفوفة إلى متغير (إمالة إلى اليسار واليمين عند إمساك iPhone بشكل جانبي)٪ يؤدي إلى إخراج بناءً على اتجاه الهاتف إذا كان Side> 130 || الجانب 25 ص الحركة المسافة (-. 1)٪ يحرك جهاز Roomba للخلف حوالي 0.1 متر إذا كان iPhone مائلًا للخلف على الأقل 25 درجة أخرىإذا كان الجانب 25 صًا زاوية الدوران (-1)٪ يدير جهاز Roomba بدرجة واحدة تقريبًا في CCW إذا كان iPhone مائل لليسار بمقدار 25 درجة على الأقل إذا كانت درجة الانحدار <-25 درجة دوران (1)٪ يدير جهاز Roomba بمقدار 1 درجة مئوية تقريبًا إذا كان جهاز iPhone مائلاً بمقدار 25 درجة على الأقل

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

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

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

موصى به: