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

مارس رومبا: 6 خطوات
مارس رومبا: 6 خطوات

فيديو: مارس رومبا: 6 خطوات

فيديو: مارس رومبا: 6 خطوات
فيديو: ايقاع رومبا 6 (مده طويله) 2024, يوليو
Anonim
المريخ رومبا
المريخ رومبا

سيرشدك هذا Instructable في اتجاهات تشغيل روبوت الفراغ الذي يتحكم فيه Raspberry Pi. نظام التشغيل الذي سنستخدمه هو من خلال MATLAB.

الخطوة 1: المستلزمات

ما سوف تحتاج إلى جمعه من أجل تنفيذ هذا المشروع:

  • روبوت المكنسة الكهربائية Create2 Roomba من iRobot
  • فطيرة التوت
  • كاميرا Raspberry Pi
  • أحدث نسخة من MATLAB
  • صندوق أدوات تثبيت Roomba لـ MATLAB
  • تطبيق MATLAB لجهاز خلوي

الخطوة الثانية: بيان المشكلة

بيان المشكلة
بيان المشكلة

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

الخطوة 3: جهاز التحكم عن بعد بالبلوتوث

جهاز تحكم عن بعد بلوتوث
جهاز تحكم عن بعد بلوتوث

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

رمز على النحو التالي:

بينما 0 == 0

وقفة (.5)

PhoneData = M. Orientation ؛

Azi = PhoneData (1) ،

الملعب = بيانات الهاتف (2) ؛

الجانب = بيانات الهاتف (3) ؛

المطبات = r.getBumpers ؛

إذا الجانب> 80 || الجانب <-80

r.stop

r.beep ("C ، E ، G ، C ^ ، G ، E ، C")

استراحة

elseif سايد> 20 && Side <40

r.turnAngle (-5) ؛

elseif سايد> 40

r.turnAngle (-25) ؛

elseif سايد 40

ص زاوية الدوران (5) ؛

جانب آخر <-40

ص زاوية الدوران (25) ؛

نهاية

إذا كان الملعب> 10 && الملعب <35

المسافة r.move (.03)

elseif الملعب> -35 && الملعب <-10

المسافة (- 03)

نهاية

نهاية

الخطوة 4: التعرف على التأثير

التعرف على التأثير
التعرف على التأثير

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

يظهر رمز أدناه:

بينما 0 == 0

المطبات = r.getBumpers ؛

r.setDriveVelocity (.1)

إذا كانت المطبات اليسار == 1

msgbox ("Oof!") ؛

المسافة r.move (-0.2)

r.setTurnVelocity (.2)

ص زاوية الدوران (-35)

r.setDriveVelocity (.2)

elseif bumps.front == 1

msgbox ("Oof!") ؛

المسافة r.move (-0.2)

r.setTurnVelocity (.2)

ص زاوية الدوران (90)

r.setDriveVelocity (.2)

elseif bumps.right == 1

msgbox ("Oof!") ؛

المسافة r.move (-0.2)

r.setTurnVelocity (.2)

ص زاوية الدوران (35)

r.setDriveVelocity (.2)

elseif bumps.leftWheelDrop == 1

msgbox ("Oof!") ؛

المسافة r.move (-0.2)

r.setTurnVelocity (.2)

ص زاوية الدوران (-35)

r.setDriveVelocity (.2)

elseif bumps.rightWheelDrop == 1

msgbox ('Oof!') ؛

المسافة r.move (-0.2)

r.setTurnVelocity (.2)

ص زاوية الدوران (35)

r.setDriveVelocity (.2)

نهاية

نهاية

الخطوة 5: التعرف على الحياة

التعرف على الحياة
التعرف على الحياة

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

رمز على النحو التالي:

ر = 10 ؛

أنا = 0 ؛

بينما t == 10

img = r.getImage ؛ imshow (IMG)

وقفة (0.167)

أنا = أنا + 1 ؛

red_mean = يعني (يعني (img (: ،: ، 1))) ؛

blue_mean = يعني (يعني (img (: ،: ، 3))) ؛

green_mean = يعني (يعني (img (: ،: ، 2))) ؛

white_mean = (blue_mean + green_mean + red_mean) / 3 ؛ ٪ يريدون هذا val 100 تقريبًا

9_plus_ten = 21 ؛

العتبة الخضراء = 125 ؛

العتبة الزرقاء = 130 ؛

حد_اللون الأبيض = 124 ؛

العتبة الحمراء = 115 ؛

بينما nine_plus_ten == 21٪ أخضر - حياة

if green_mean> green_threshold && blue_mean <blue_threshold && red_mean <red_threshold

المسافة (-.1)

a = msgbox ('تم العثور على مصدر حياة محتمل ، تم رسم الموقع') ؛

بوز (2)

حذف (أ)

[y2، Fs2] = audioread ('z_speak2.wav') ؛

صوت (y2، Fs2)

بوز (2)

٪ مصنع = r.getImage ؛ ٪ imshow (نبات) ؛

٪ save ('plant_img.mat' ، مصنع ') ؛

٪ موقع قطعة الأرض باللون الأخضر

أنا = 5 ؛

استراحة

آخر

9_plus_ten = 19 ؛

نهاية

نهاية

9_plus_ten = 21 ؛

بينما nine_plus_ten == 21٪ أزرق - woder

إذا كان blue_mean> blue_threshold && green_mean <green_threshold && white_mean <white_threshold && red_mean <red_threshold

المسافة (-.1)

a = msgbox ('تم العثور على مصدر للمياه ، الموقع مخطط') ؛

بوز (2)

حذف (أ)

[y3، Fs3] = audioread ('z_speak3.wav') ،

الصوت (y3 ، Fs3) ؛

٪ woder = r.getImage ؛ ٪ imshow (woder)

٪ حفظ ('water_img.mat'، woder)

٪ موقع قطعة الأرض باللون الأزرق

أنا = 5 ؛

استراحة

آخر

9_plus_ten = 19 ؛

نهاية

نهاية

9_plus_ten = 21 ؛

بينما nine_plus_ten == 21٪ أبيض - monkaS مخلوقات فضائية

إذا كان white_mean> white_threshold && blue_mean <blue_threshold && green_mean <green_threshold

[y5، Fs5] = صوت مسموع ('z_speak5.wav') ؛

الصوت (y5، Fs5) ؛

بوز (3)

r.setDriveVelocity (0،.5)

[ys، Fss] = audioread ('z_scream.mp3') ؛

الصوت (ys، Fss) ؛

بوز (3)

r.stop

٪ أجنبي = r.getImage ؛ ٪ imshow (أجنبي) ؛

٪ save ('alien_img.mat' ، كائن فضائي) ؛

أنا = 5 ؛

استراحة

آخر

9_plus_ten = 19 ؛

نهاية

نهاية

إذا كنت == 5

أ = 1 ؛ ٪ زاوية المنعطفات

ر = 9 ؛ ٪ إنهاء حلقة كبيرة

أنا = 0 ؛

نهاية

نهاية

الخطوة 6: قم بتشغيلها

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

استمتع باستخدام الروبوت الخاص بك !!

موصى به: