فهرست مطالب:

مریخ رومبا: 6 قدم
مریخ رومبا: 6 قدم

تصویری: مریخ رومبا: 6 قدم

تصویری: مریخ رومبا: 6 قدم
تصویری: ( قصه حقيقيه ) كلب أليف بيتدرب وبيتحول لكلب شرس وبينقذ محمية بطاريق من التعالب .. ملخص فيلم Oddball 2024, جولای
Anonim
مریخ رومبا
مریخ رومبا

این دستورالعمل شما را در جهت استفاده از ربات خلاء Roomba تحت کنترل Raspberry Pi راهنمایی می کند. سیستم عامل مورد استفاده ما از طریق MATLAB است.

مرحله 1: لوازم

آنچه برای انجام این پروژه باید جمع آوری کنید:

  • ربات جاروبرقی Create2 Roomba iRobot
  • تمشک پای
  • دوربین رزبری پای
  • آخرین نسخه MATLAB
  • جعبه ابزار Roomba را برای MATLAB نصب کنید
  • برنامه MATLAB برای دستگاه تلفن همراه

مرحله 2: بیان مشکل

بیانیه مشکل
بیانیه مشکل

ما موظف شدیم از MATLAB برای ساخت یک مریخ نورد استفاده کنیم که بتواند در مریخ مورد استفاده قرار گیرد تا به دانشمندان در جمع آوری داده های سیاره کمک کند. عملکردهایی که ما در پروژه خود به آنها اشاره کردیم عبارت بودند از کنترل از راه دور ، تشخیص ضربه روی اجسام ، تشخیص آب ، تشخیص زندگی و پردازش تصویر. برای دستیابی به این موفقیت ها ، ما با استفاده از دستورات جعبه ابزار Roomba دستکاری بسیاری از عملکردهای iRobot's Create2 Roomba را انجام دادیم.

مرحله 3: کنترل از راه دور بلوتوث

کنترل از راه دور بلوتوث
کنترل از راه دور بلوتوث

این اسلاید کد را کنترل می کند تا حرکت Roomba را با استفاده از قابلیت های بلوتوث دستگاه تلفن هوشمند شما کنترل کند. برای شروع ، برنامه MATLAB را در تلفن هوشمند خود بارگیری کرده و وارد حساب Mathworks خود شوید. پس از ورود به سیستم ، به "بیشتر" ، "تنظیمات" بروید و با استفاده از آدرس IP آن به رایانه خود متصل شوید. پس از اتصال ، به "بیشتر" برگردید و "سنسورها" را انتخاب کنید. روی سنسور سوم در نوار ابزار بالای صفحه ضربه بزنید و روی شروع ضربه بزنید. اکنون ، تلفن هوشمند شما یک کنترل از راه دور است!

کد به شرح زیر است:

در حالی که 0 == 0

مکث (.5)

PhoneData = M. Orientation؛

Azi = PhoneData (1) ؛

پیچ = PhoneData (2) ؛

سمت = PhoneData (3) ؛

bumps = r.getBumpers؛

اگر طرف> 80 || طرف <-80

r. توقف

r.epep ('C، E، G، C^، G، E، C')

زنگ تفريح

elseif Side> 20 && Side <40

r.turnAngle (-5) ؛

elseif طرف> 40

r.turnAngle (-25) ؛

elseif Side-40

r.turnAngle (5) ؛

elseif طرف <-40

r.turnAngle (25) ؛

پایان

اگر Pitch> 10 && Pitch <35

r.moveDistance (.03)

elseif Pitch> -35 && Pitch <-10

r.moveDistance (-. 03)

پایان

پایان

مرحله 4: تشخیص تاثیر

تشخیص تاثیر
تشخیص تاثیر

یکی دیگر از عملکردهای ما این بود که تاثیر Roomba را روی یک شی تشخیص دهیم و سپس مسیر فعلی آن را اصلاح کنیم. برای انجام این کار ، ما باید از شرطی ها با قرائت سنسورهای سپر برای تعیین اینکه آیا جسمی ضربه خورده است یا خیر استفاده کنیم. اگر ربات به جسمی برخورد کند ، 2 متر عقب می رود و با زاویه ای تعیین می شود که توسط ضربه گیر ضربه گیر مشخص شده است. پس از ضربه زدن به یک مورد ، منویی ظاهر می شود که کلمه "oof" را نشان می دهد.

کد زیر نشان داده شده است:

در حالی که 0 == 0

bumps = r.getBumpers؛

r.setDriveVelocity (.1)

if bumps.left == 1

msgbox ('اوف!')؛

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.front == 1

msgbox ('اوف!')؛

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (90)

r.setDriveVelocity (.2)

elseif bumps.right == 1

msgbox ('اوف!')؛

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

elseif bumps.leftWheelDrop == 1

msgbox ('اوف!')؛

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.rightWheelDrop == 1

msgbox ('اوف!')؛

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

پایان

پایان

مرحله 5: شناخت زندگی

شناخت زندگی
شناخت زندگی

ما یک سیستم تشخیص زندگی را برای خواندن رنگ اشیاء روبرو کدگذاری کردیم. سه نوع زندگی که ما برای آن کد گذاری کردیم گیاهان ، آب و بیگانگان است. برای انجام این کار ، سنسورها را برای محاسبه مقادیر متوسط قرمز ، آبی ، سبز یا سفید کدگذاری کردیم. این مقادیر با آستانه هایی که به صورت دستی برای تعیین رنگی که دوربین به آن نگاه می کند تعیین شده است ، مقایسه شد. کد همچنین مسیر مورد نظر و ایجاد نقشه را ترسیم می کند.

کد به شرح زیر است:

t = 10 ؛

i = 0 ؛

در حالی که t == 10

img = r.getImage؛ نمایش (img)

مکث (0.167)

i = i + 1 ؛

red_mean = میانگین (میانگین (img (:،: ، 1))) ؛

blue_mean = میانگین (میانگین (img (:،: ، 3))) ؛

green_mean = میانگین (میانگین (img (:،: ، 2))) ؛

سفید_معنا = (معنی_آبی + معنی_سبز + معنای_قرمز) / 3 ؛ ٪ این مقدار را تقریبا 100 می خواهند

nine_plus_ten = 21؛

سبز_آستانه = 125؛

آبی_آستانه = 130؛

آستانه_ سفید = 124 ؛

red_threshold = 115؛

در حالی که nine_plus_ten == 21٪ سبز - عمر

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

r.moveDistance (-. 1)

a = msgbox ('منبع حیات ممکن یافت شد ، محل ترسیم شده است')؛

مکث (2)

حذف (الف)

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

صدا (y2 ، Fs2)

مکث (2)

٪ گیاه = r.getImage؛ ٪ imshow (گیاه) ؛

٪ save ('plant_img.mat'، plant ')؛

٪ محل طرح با رنگ سبز

i = 5 ؛

زنگ تفريح

دیگری

nine_plus_ten = 19؛

پایان

پایان

nine_plus_ten = 21؛

در حالی که nine_plus_ten == 21٪ آبی - woder

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

r.moveDistance (-. 1)

a = msgbox ('منبع آب پیدا شده است ، نقشه ترسیم شده است')؛

مکث (2)

حذف (الف)

[y3 ، Fs3] = صوتی ('z_speak3.wav') ؛

صدا (y3 ، Fs3) ؛

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

٪ صرفه جویی ('water_img.mat' ، woder)

٪ محل طرح به رنگ آبی

i = 5 ؛

زنگ تفريح

دیگری

nine_plus_ten = 19؛

پایان

پایان

nine_plus_ten = 21؛

در حالی که nine_plus_ten == 21٪ سفید - بیگانگان monkaS

if 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. توقف

٪ alien = r.getImage؛ ٪ imshow (بیگانه) ؛

٪ save ('alien_img.mat'، alien)؛

i = 5 ؛

زنگ تفريح

دیگری

nine_plus_ten = 19؛

پایان

پایان

اگر من == 5

a = 1 ؛ ٪ زاویه چرخش

t = 9 ؛ ٪ خاتمه حلقه بزرگ

i = 0 ؛

پایان

پایان

مرحله 6: اجرا کنید

پس از نوشتن تمام کد ، همه را در یک فایل و voila ترکیب کنید! ربات Roomba شما اکنون کاملاً کاربردی خواهد بود و طبق تبلیغات عمل می کند! با این حال ، کنترل بلوتوث یا باید در یک فایل جداگانه باشد یا با ٪٪ از بقیه کد جدا شود.

از استفاده از ربات خود لذت ببرید !!

توصیه شده: