جدول المحتويات:
- الخطوة 1: الأجزاء والمواد
- الخطوة 2: ملف قاعدة بيانات Roomba
- الخطوة 3: الاتصال بـ Roomba
- الخطوة 4: الكود
- الخطوة 5: الخاتمة
فيديو: جهاز MATLAB للتحكم في جهاز Roomba: 5 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:39
الهدف من هذا المشروع هو استخدام MATLAB بالإضافة إلى روبوت iRobot المعدل القابل للبرمجة. جمعت مجموعتنا مهاراتنا في الترميز من أجل إنشاء نص MATLAB يستخدم العديد من وظائف iRobot ، بما في ذلك مستشعرات المنحدرات ، وأجهزة استشعار المصد ، وأجهزة استشعار الضوء ، والكاميرا. استخدمنا قراءات المستشعر والكاميرا هذه كمدخلات ، مما يسمح لنا بإنشاء مخرجات معينة نريدها باستخدام وظائف وحلقات كود MATLAB. نستخدم أيضًا جهاز MATLAB المحمول والجيروسكوب كوسيلة للاتصال بـ iRobot والتحكم فيه.
الخطوة 1: الأجزاء والمواد
ماتلاب 2018a
-إصدار 2018 من MATLAB هو الإصدار الأكثر تفضيلاً ، لأنه يعمل بشكل أفضل مع الكود الذي يتصل بالجهاز المحمول. ومع ذلك ، يمكن تفسير معظم التعليمات البرمجية الخاصة بنا في غالبية إصدارات MATLAB.
iRobot إنشاء جهاز
- هذا الجهاز هو جهاز مصنوع خصيصًا لغرض وحيد هو البرمجة والتشفير. (إنه ليس فراغًا فعليًا)
Raspberry Pi (مع الكاميرا)
- هذه لوحة كمبيوتر غير مكلفة تعمل كعقل iRobot. قد تكون صغيرة لكنها قادرة على أشياء كثيرة. الكاميرا هي إضافة إضافية. كما أنه يستخدم raspberry pi للحصول على جميع وظائفه وأوامره. الكاميرا التي تظهر في الصورة أعلاه مثبتة على حامل مطبوع ثلاثي الأبعاد ، تم إنشاؤه بواسطة أقسام أساسيات الهندسة في جامعة تينيسي
الخطوة 2: ملف قاعدة بيانات 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 بشكل أفضل.
موصى به:
إعادة استخدام جهاز تحكم عن بعد LED RF للتحكم في "أي شيء": 5 خطوات
إعادة استخدام جهاز تحكم عن بعد LED RF للتحكم في "أي شيء"!: في هذا المشروع سأوضح لك كيفية إعادة استخدام جهاز تحكم عن بعد LED RF للتحكم في أي شيء تريده إلى حد كبير. هذا يعني أننا سنلقي نظرة فاحصة على عملية إرسال جهاز التحكم عن بعد RF ، ونقرأ في البيانات المرسلة باستخدام Arduino C
استخدم التعاويذ للتحكم في جهاز الكمبيوتر الخاص بك: 7 خطوات (بالصور)
استخدم التعويذات للتحكم في جهاز الكمبيوتر الخاص بك !: هل أردت يومًا استخدام تعويذات مثل هاري بوتر؟ مع القليل من العمل وبعض التعرف على الصوت ، يمكن إتقان هذا. الأشياء التي تحتاجها لهذا المشروع: جهاز كمبيوتر مع ميكروفون Windows XP أو VistaA بعض الوقت والصبر! إذا كنت قد استمتعت بهذا Instructable
كيفية صنع جهاز إنترنت الأشياء للتحكم في الأجهزة ومراقبة الطقس باستخدام Esp8266: 5 خطوات
كيفية صنع جهاز إنترنت الأشياء للتحكم في الأجهزة ومراقبة الطقس باستخدام Esp8266: إنترنت الأشياء (IoT) هو شبكة بينية للأجهزة المادية (يشار إليها أيضًا باسم & quot ؛ الأجهزة المتصلة & quot ؛ و & quot ؛ الأجهزة الذكية & quot ؛) والمباني ، وغيرها من العناصر - المضمنة مع الإلكترونيات والبرامج وأجهزة الاستشعار والمشغلات و
جهاز روفر للتحكم في الهاتف بتكلفة ميسورة: 6 خطوات
جهاز روفر يتم التحكم فيه بالهاتف بتكلفة ميسورة: منذ فترة وجيزة قمت بصنع عربة جوالة يتم التحكم فيها بالهاتف باستخدام MotorAir. كنت أرغب في إعادة النظر في الفكرة الأساسية ولكن باستخدام قطع أرخص ، ومتوفرة على نطاق أوسع. أيضًا نظرًا لأن هذا يعتمد على Arduino ، فهو نقطة انطلاق رائعة لأكثر من مجرد عربة جوالة تقود
جهاز Roomba مع MATLAB: 4 خطوات (بالصور)
Roomba مع MATLAB: يستخدم هذا المشروع MATLAB وروبوت iRobot Create2 القابل للبرمجة. من خلال وضع معرفتنا بـ MATLAB على المحك ، نحن قادرون على برمجة Create2 لتفسير الصور واكتشاف الإشارات. تعتمد وظيفة الروبوت بشكل أساسي على