فهرست مطالب:

Roomba-کمک فضانوردان: 4 مرحله
Roomba-کمک فضانوردان: 4 مرحله

تصویری: Roomba-کمک فضانوردان: 4 مرحله

تصویری: Roomba-کمک فضانوردان: 4 مرحله
تصویری: The invisible life hidden beneath Antarctica's ice | Ariel Waldman 2024, جولای
Anonim
Roomba-کمک فضانوردان
Roomba-کمک فضانوردان

این پروژه با استفاده از Raspberry Pi 3 روی iRobot ایجاد نسخه 2 ساخته شده است. از MATLAB برای برنامه ریزی روبات برای پیروی از دستورالعمل های خاص با استفاده از سنسورها و دوربین استفاده می شود. سنسورها و دوربینها برای انجام وظایف خاصی استفاده می شوند که در پی یک فضانورد بوده و در صورت بروز مشکل ، می تواند با پایگاه خانه خود ارتباط برقرار کند.

مرحله 1: قطعات مورد نیاز

قطعات مورد نیاز
قطعات مورد نیاز
قطعات مورد نیاز
قطعات مورد نیاز
قطعات مورد نیاز
قطعات مورد نیاز
قطعات مورد نیاز
قطعات مورد نیاز

1. iRobot ایجاد نسخه 2

iRobot Create ضروری ترین بخش این پروژه است زیرا قابل برنامه ریزی است و می تواند نمایشی عالی برای مریخ نوردی باشد که فضانوردان را دنبال می کند و در آینده به آنها کمک می کند

2. تمشک پای 3

Raspberry Pi قابل برنامه ریزی برای این پروژه استفاده شد. کد برای Pi طراحی شده است و نسخه Pi پیوست شده 3 است (مدل B). سایر بردهای قابل برنامه ریزی مانند آردوینو قابل استفاده هستند ، با این حال ، آردوینو و اکثر تابلوهای دیگر به کد نویسی متفاوتی نیاز دارند که در مرحله دیگر توضیح داده شده است

3. ماژول دوربین رزبری پای

تنها اتصال اضافی به رزبری پای مورد نیاز برای این پروژه ، ماژول دوربین است. ماژول دوربین بخش جدایی ناپذیر این پروژه است ، زیرا roomba تنها بر اساس آنچه در دوربین می بیند وظایف خود را انجام می دهد

4. MATLAB 2018a

دومین نسخه اخیر MATLAB ، 2018a ، برای کدگذاری مربوط به این تنظیم استفاده شد. به احتمال زیاد بسیاری از نسخه های دیگر MATLAB با این برنامه کار خواهند کرد زیرا برنامه نویسی roomba مدتی است که وجود دارد

مرحله 2: پیکربندی فایل ها و دوربین

پیکربندی فایلها و دوربین
پیکربندی فایلها و دوربین

1. رزبری پای و اتصال دوربین به roomba

  • Pi می تواند مستقیماً با میکرو USB به iRobot متصل شود. این تمام چیزی است که باید آماده استفاده باشد. با این حال ، توصیه می شود که آن را به طور ایمن روی اتاق اتاق قرار دهید ، همانطور که در تصاویر ارائه شده تا کنون نشان داده شده است.
  • این دوربین ارتباط مستقیم با رزبری پای دارد و توصیه می شود که چیزی را بخرید یا تهیه کنید تا دوربین را مستقیماً بالا نگه دارید. اگر دوربین را نتوانید در جای خود نگه دارید تا آنچه را که roomba می بیند ثابت نگه دارد ، هیچ نکته ای برای دوربین وجود ندارد.

2. فایل ها

  • پس از تنظیم و اتصال همه چیز ، با نگه داشتن دکمه های "Spot" و "Dock" به مدت 10 ثانیه با یکدیگر ، مطمئن شوید که ربات بازنشانی شده و آماده حرکت است.
  • اینجاست که ابتدا به متلب نیاز است. فایل های roomba ابتدا باید نصب شوند و تنها کاری که برای این فایل ها لازم است اجرای کد ارائه شده در این پیوند است:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

مرحله 3: آزمایش اولیه Roomba

بسیاری از بررسی های اولیه برای اطمینان از کارکرد اتاق روی اتاق انجام می شود.

1. مطمئن شوید که به همان شبکه وای فای متصل شده اید. بدون این ، شما هرگز از طریق MATLAB متصل نمی شوید.

2. دریابید که roomba شما به چه شماره ای اختصاص داده شده است تا بتوانید به طور خاص به roomba که انتخاب کرده اید متصل شوید. به عنوان مثال ، اگر شماره roomba شما 30 است ، با تایپ roomba (30) در پنجره فرمان در MATLAB به آن متصل می شوید.

3. اتاق را می توان از طریق ساختارهای متلب کنترل کرد. به عنوان مثال ، اگر کد خود را برای roomba (30) روی متغیر 'r' تنظیم کنید ، می توانید ربات را با دستور r.moveDistance (0.2 ، 0.1) به جلو حرکت دهید.

4- دستورات مختلفی وجود دارد که می توان به roomba منتقل کرد و با تایپ کردن "doc roomba" در پنجره فرمان می توان آنها را مشاهده کرد.

5- سنسورهای نور ، برآمدگی و صخره ها را می توان با استفاده از دستورات مشاهده شده در "doc roomba" خواند ، اما راهی برای داشتن یک منوی ثابت و منظم برای مشاهده داده های سنسور با استفاده از "r.testSensors" قابل مشاهده است. '.

6. پس از آزمایش همه این موارد ، نرم افزار جمع آوری تصویر روبات می تواند برای خواندن و مشاهده تصاویر گرفته شده استفاده شود. کد اصلی برای این امر img = r.getImage و imshow (img) خواهد بود. به

7. مقادیر RGB تصویر را می توان با کدهای red_mean = mean (میانگین (میانگین (img (: ،: 1)))) پیدا کرد.

green_mean = میانگین (میانگین (img (:،: ، 2))) ؛ و blue_mean = میانگین (میانگین (img (:،: ، 3))) ؛ به

مرحله 4: مثال کد MATLAB

مثال کد متلب
مثال کد متلب

در این مرحله ، شما اکنون آماده استفاده از حسگرها و نرم افزارهای عکسبرداری برای ایجاد چرخش خود در نمونه اولیه Mars Rover به کمک انسان هستید. مثال ما این است که با ردیابی رنگ سفید و حرکت به سمت آن ، فضانورد را دنبال کنید. اگر سنسورهایش مقادیر بالایی را بخوانند ، ربات می تواند بوق بزند تا فضانورد بتواند ربات را در صورت گیر افتادن مجدد تنظیم کند یا بروید و در صورت گیر افتادن روی صخره آن را بردارید و تنظیم مجدد کنید. با این حال ، فقط تا زمانی که سفید را ببیند ، این خطاها را می خواند. بدون مشاهده رنگ سفید ، ربات وارد حالت خطا می شود. برنامه ریزی شده است که بسته به آنچه می بیند ، دو نوع مختلف ایمیل به پایگاه اصلی ارسال کند. اگر رنگ پوست فضانورد را ببیند ، بدیهی است که خوب نیست ، بنابراین اگر پوست فضانورد با نقص کت و شلوار نشان داده شود ، به خانه خود هشدار می دهد. اگر فضانورد به سادگی از دید ناپدید شود ، پیام دیگر آماده می شود. اگر رنگ سفید یا رنگ پوست برای دوربین ها نمایش داده نشود ، ربات می چرخد و ایمیل دیگری اما متفاوت ارسال می کند. تصاویری که اتاقک فضانورد را نمی بیند همراه با پیام در ایمیل ها ارسال می شود. کد پروژه ما در زیر نشان داده شده است:

برای i = 1:.1: 3 img = r.getImage؛ تصویر (img) red_mean = میانگین (میانگین (img (:،: ، 1))) ؛ green_mean = میانگین (میانگین (img (:،: ، 2))) ؛ blue_mean = میانگین (میانگین (img (:،: ، 3))) ؛ if red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.left> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || cliff.left جلو <10 || cliff.rightF Front <10 || cliff.right700 || light.left جلو> 700 || light.leftCenter> 700 || light.rightCenter> 700 || light.rightF Front> 700 || light.right> 700 r.epep () r.beep () r.beep () r.beep () r.beep () r.stap else for i = 1: 2 r.move فاصله (0.2 ، 0.1) r setDriveVelocity (.3 ،.2) r.stand end end end if if green_mean <35 && blue_mean <35٪ رنگ پوست نشان داده می شود (باید بر اساس رنگ پوست فضانورد تنظیم شود) r.beep ()؛ r.epep () ؛ r.epep () ؛ mail = '[email protected]'؛ ٪ ایمیل ارسال می کند که نشان می دهد کت و شلوار خاموش است psswd = 'yeah'؛ host = 'smtp.gmail.com'؛ بندر = '465'؛ emailto = '[email protected]'؛ m_subject = 'موضوع' ؛ m_text = 'test'؛ setpref ("اینترنت" ، "E_mail" ، نامه) ؛ setpref ("اینترنت" ، "SMTP_Server" ، میزبان) ؛ setpref ("اینترنت" ، "SMTP_Username" ، نامه) ؛ setpref ("اینترنت" ، "SMTP_Password" ، psswd) ؛ props = java.lang. System.getProperties؛ props.setProperty ('mail.smtp.user' ، mail) ؛ props.setProperty ('mail.smtp.host' ، میزبان) ؛ props.setProperty ('mail.smtp.port' ، بندر) ؛ props.setProperty ('mail.smtp.starttls.enable' ، 'true') ؛ props.setProperty ('mail.smtp.debug' ، 'true') ؛ props.setProperty ('mail.smtp.auth' ، 'true') ؛ props.setProperty ('mail.smtp.socketFactory.port' ، port) ؛ props.setProperty ('mail.smtp.socketFactory.class' ، 'javax.net.ssl. SSLSocketFactory') ؛ props.setProperty ('mail.smtp.socketFactory.fallback' ، 'false') ؛ sendmail (emailto، 'Help!'، 'لباس فضانوردان خاموش است!'، img)؛ پایان اگر red_mean 135 || green_mean 135 || blue_mean 135 for j = 1: 2٪ اگر سفید توسط روبات r.turnAngle (360) mail = '[email protected]' پیدا نشود ؛ psswd = 'بله'؛ host = 'smtp.gmail.com'؛ بندر = '465'؛ emailto = '[email protected]'؛ m_subject = 'موضوع' ؛ m_text = 'test'؛ setpref ("اینترنت" ، "E_mail" ، نامه) ؛ setpref ("اینترنت" ، "SMTP_Server" ، میزبان) ؛ setpref ("اینترنت" ، "SMTP_Username" ، نامه) ؛ setpref ("اینترنت" ، "SMTP_Password" ، psswd) ؛ props = java.lang. System.getProperties؛ props.setProperty ('mail.smtp.user' ، mail) ؛ props.setProperty ('mail.smtp.host' ، میزبان) ؛ props.setProperty ('mail.smtp.port' ، بندر) ؛ props.setProperty ('mail.smtp.starttls.enable' ، 'true') ؛ props.setProperty ('mail.smtp.debug' ، 'true') ؛ props.setProperty ('mail.smtp.auth' ، 'true') ؛ props.setProperty ('mail.smtp.socketFactory.port' ، port) ؛ props.setProperty ('mail.smtp.socketFactory.class' ، 'javax.net.ssl. SSLSocketFactory') ؛ props.setProperty ('mail.smtp.socketFactory.fallback' ، 'false') ؛ sendmail (emailto، 'Help!'، 'فضانورد پیدا نمی شود!'، img)؛ r.stop end end end

بدیهی است که اینجا کثیف است ، اما پس از کپی شدن باید از بین برود. گذرواژه ها و ایمیل های مربوط به این امر باید توسط افرادی که به طور واضح این پروژه را انجام می دهند ارائه شود.

با این حال ، مثال ما تنها یکی از بسیاری از راه هایی است که می توانید با این ربات کار کنید و آن را برای همه مناسب کنید. کارهای مختلفی وجود دارد که باید انجام دهید ، که می توانید آنها را برای خودتان مناسب کنید.

توصیه شده: