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

مشروع Roomba MATLAB: 5 خطوات
مشروع Roomba MATLAB: 5 خطوات

فيديو: مشروع Roomba MATLAB: 5 خطوات

فيديو: مشروع Roomba MATLAB: 5 خطوات
فيديو: Amazing arduino project 2024, شهر نوفمبر
Anonim
مشروع رومبا ماتلاب
مشروع رومبا ماتلاب

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

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

هذا التوجيه مخصص لأي شخص آخر يرغب في إنشاء نفس النوع من الكود لجهاز roomba الخاص به.

الخطوة 1: الخطوة 1: المواد المطلوبة

الخطوة 1: المواد المطلوبة
الخطوة 1: المواد المطلوبة
الخطوة 1: المواد المطلوبة
الخطوة 1: المواد المطلوبة

سوف تحتاج:

  1. رومبا
  2. ماتلاب
  3. هذا الملف لتشغيل roomba
  4. سطح مستو
  5. سطح طاولة ليكون بمثابة "جرف"

الخطوة 2: الخطوة 2: إعداد / الحصول على رمز لـ Roomba

الخطوة 2: إعداد / الحصول على رمز لـ Roomba
الخطوة 2: إعداد / الحصول على رمز لـ Roomba

ستبدو شاشتك بهذا الشكل بمجرد إدخال الملفات.

الخطوة 3: الخطوة 3: إعداد مستشعرات الجرف / مصابيح LED

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

٪ جرب rob.setLEDDigits ('') x = 0 ؛ ص = 0 ؛ ثيتا = 0 ؛ عقبة = ؛ دورة = 1 ؛ AngCorr = @ (x) x + 3.059. * x. ^ 0.4205 ؛ ٪ وظيفة لتصحيح زوايا الانعطاف أثناء rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0.1)٪ Go٪ Check For Person إذا كان AA_checkperson (rob) rob.beep end٪ تحقق من Cliff Sensor إذا كان AA_cliffcheck (rob) rob.stop rob.setLEDDigits ('Cliff') pause (0.5) عقبة (دورة) = 2 ؛ AA_cliffbeep (rob)٪ Back Up And Turn rob.moveDistance (-.15) rob.turnAngle (30) end

الخطوة 4: الخطوة 4: التحقق من وجود عقبات

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

٪ تحقق من مستشعر الضوء إذا كان AA_lightcheck (rob) rob.stop rob.setLEDDigits ('Wall') pause (0.5) عقبة (دورة) = 1 ؛ ٪ جدار AA_wallbeep (rob)٪ نسخ احتياطي وقلب rob.moveDistance (-. 15) rob.turnAngle (30) end٪ تحقق من مستشعر الارتطام إذا توقف AA_bumpcheck (rob) rob.stop rob.setLEDDigits ('Wall') (0.5) عقبة (دورة) = 1 ؛ ٪ جدار AA_wallbeep (rob)٪ Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end٪ إذا لم يكن هناك إذا كان عقبة فارغة (عقبة) (دورة) = 0 ؛ طول آخر (عقبة) <عقبة دورة (دورة) = 0 ؛ نهاية

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

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

سيخبر هذا الرمز جهاز Roomba الخاص بك برسم ما سيواجهه في رحلته. ستظهر قطعة أرض كهذه بعد توقف غرفة الحجرة.

٪ الحصول على المركز d = rob.getDistance ؛ إذا كانت الدورة == 1 ثيتا (دورة) = 0 ؛ س (دورة) = د. * كوسد (ثيتا (دورة)) ؛ ٪ إجمالي المسافة المقطوعة في x y (دورة) = d. * sind (ثيتا (دورة)) ؛ إجمالي المسافة المقطوعة في y else theta (cycle) = theta (cycle-1) + rob.getAngle ؛ س (دورة) = د. * كوسد (ثيتا (دورة)) + س (دورة -1) ؛ ٪ إجمالي المسافة المقطوعة في x y (دورة) = d. * sind (ثيتا (دورة)). * d + y (دورة -1) ؛ ٪ إجمالي المسافة المقطوعة في y end٪ حالة الاستراحة إذا كانت rob.getButtons.clean break end٪ دورة دورة الزيادة = دورة + 1 ؛ end rob.stop لـ i = 1: دورة إذا كانت العقبة (i) == 1٪ مخطط الجدار (x (i)، y (i)، 'Marker'، 'square'، 'MarkerEdgeColor'، 'r') عقبة أخرى (i) == 2٪ مؤامرة Cliff (x (i)، y (i)، 'Marker'، 'o'، 'MarkerEdgeColor'، 'k') نص النهاية (.9، 0.9، sprintf ('مربع = جدار / nCircle = Cliff ') ، "الوحدات" ، "التسوية") انتظر في النهاية٪ إشارة استغاثة بينما توقف rob.beep حقيقي (3) إذا كان rob.getButtons.clean break end٪ catch٪ rob.stop٪ end

موصى به: