فهرست مطالب:

Roomba Parking Pal: 6 قدم
Roomba Parking Pal: 6 قدم

تصویری: Roomba Parking Pal: 6 قدم

تصویری: Roomba Parking Pal: 6 قدم
تصویری: Table Tennis Robot vs Human, Who Wins? Incredible Wonder Studio Ai #shorts 2024, نوامبر
Anonim
رومبا پارکینگ پال
رومبا پارکینگ پال

این پروژه از iRobot Create roomba قابل برنامه ریزی ، MATLAB r2018a و تلفن همراه MATLAB استفاده می کند. با استفاده از این سه رسانه و دانش ما در زمینه کد نویسی ، iRobot Create را برای تفسیر رنگها و استفاده از حسگرهای داخلی برای تکمیل وظایف برنامه ریزی کردیم. این پروژه به ارتباط Raspberry Pi و MATLAB بستگی دارد تا این وظایف را انجام دهد.

مرحله 1: مواد

مواد
مواد
مواد
مواد

1. iRobot Create Robot

2. MATLAB r2018a

3. تمشک پای

4. ماژول دوربین

5. پایه چاپ کننده سه بعدی دوربین تثبیت کننده

6. تلفن هوشمند با تلفن همراه متلب نصب شده است

7. لپ تاپ/کامپیوتر با متلب نصب شده

مرحله 2: اتصال

این مرحله مربوط به اتصال رزبری پای به ربات ، دوم اتصال ربات به رایانه شما و اتصال تلفن هوشمند به کامپیوتر است.

ساده ترین قسمت این فرایند اتصال Raspberry Pi به ربات شما است ، زیرا Raspberry Pi در بالای ربات نصب شده است. یک سیم از روبات وجود دارد که تنها کاری که باید انجام دهید این است که به کنار رزبری پای وصل شوید.

مرحله بعدی اتصال ربات به رایانه شما است تا بتوانید دستوراتی را برای عملکرد ربات اجرا کنید. اولین کاری که باید انجام دهید این است که رایانه خود را به شبکه بی سیم متصل کنید که roomba شما ایجاد می کند. در حال حاضر ، توصیه می شود از نماد Set Path در MATLAB برای تنظیم مسیر استفاده کنید تا بتوانید از توابع موجود در جعبه ابزار Roomba از MATLAB استفاده کنید. هر بار که در حال استفاده و پایان کار با ربات هستید ، باید یک "دو انگشت سلام" را به سختی تنظیم مجدد ربات انجام دهید ، به این معنی که دکمه های داک و نقطه را به مدت ده ثانیه نگه دارید تا چراغ کمرنگ نشان دهد که رها می شود. اگر شنیدید که ربات در مقیاس کوتاه بازی می کند ، با این تنظیم مجدد سخت موفق شدید. در مرحله بعد باید با استفاده از یک خط کد مانند "r = roomba (x)" به roomba متصل شوید که در آن 'x' شماره تعیین شده برای ربات شما است.

در نهایت ، شما باید تلفن همراه MATLAB را در هر دستگاه موبایلی که برای این پروژه استفاده می کنید بارگیری کنید ، و این برنامه در هر دو دستگاه Android و Apple موجود است. پس از نصب برنامه ، باید با استفاده از اطلاعات کاربری خود وارد شوید. سپس باید این دستگاه را به رایانه خود متصل کنید ، با استفاده از برگه با برچسب "بیشتر" -> سپس روی "تنظیمات" -> سپس روی "افزودن رایانه" کلیک کنید ، این باید صفحه نمایش داده شده در تصاویر بالا را نشان دهد. پس از مشاهده این ، گام بعدی که باید طی کنید فقط اتصال و ذخیره اطلاعاتی است که درخواست می کند. هنگامی که با موفقیت متصل شدید ، می توانید عملکردهایی را که در رایانه خود تعریف کرده اید در تلفن خود برای کنترل ربات خود فراخوانی کنید.

مرحله 3: ایجاد منطقی کد متلب برای استفاده از حسگرها

ایجاد منطقی کد متلب برای استفاده از حسگرها
ایجاد منطقی کد متلب برای استفاده از حسگرها

ایجاد کد به سادگی زمانی امکان پذیر است که اکثریت آن در حلقه while روشن باشد ، به طوری که roomba بتواند به طور مداوم مقادیر معتبر مورد نظر خود را به روز کند. در صورت وجود خطا ، MATLAB خطایی را نشان می دهد و در جایی که در کد ظاهر می شود ، عیب یابی را نسبتاً ساده می کند.

این کد که در r2018a MATLAB طراحی شده است ، از جعبه ابزارهای استاندارد ، جعبه ابزار iRobot Create و همچنین جعبه ابزار تلفن همراه MATLAB استفاده می کند. رومبا که در این مثال استفاده می شود 26 تعیین شده است و r = roomba (26) برای برقراری ارتباط کامل با اتاق بایستی فقط یکبار اجرا شود.

کد:

تابع parkassist (x) اگر x == 1

r = roomba (26)٪ به roomba متصل می شود

در حالی که حقیقت دارد

r.setDriveVelocity (.05 ،.05)٪ roomba را بر سرعت رانندگی کندتر تنظیم می کند

bump = r.getBumpers٪ داده ها را از حسگرهای bump دریافت می کند

cliff = r.getCliffSensors داده ها را از سنسورهای صخره دریافت می کند

light = r.getLightBumpers٪ داده ها را از سنسورهای برخورد نور دریافت می کند

img = r.getImage ؛٪ دوربین روبات را خاموش می خواند

red_mean = میانگین (میانگین (img (:،: 1)))٪ مقدار متوسط پیکسل های قرمز را می خواند

green_mean = میانگین (میانگین (img (:،: ، 2)))٪ میانگین مقدار پیکسل سبز را می خواند

blue_mean = میانگین (میانگین (img (:،: 3)))٪ مقدار متوسط پیکسل های آبی را می خواند

اگر bump.front == 1٪ سنسورهای ضربه جلو را می خواند

r.stop٪ roomba را متوقف می کند

msgbox ('Path Obscured!'، 'Parking Assistant Message')٪ پیام را نمایش می دهد که می گوید مسیر مبهم است شکستن٪ حلقه را تمام می کند

elseif green_mean> 150

r.stop٪ roomba را متوقف می کند

cont = questdlg ("ادامه دهی؟" ، "مسیر تکمیل شده است") کادر س questionال را برای ادامه درخواست می کند

if cont == 'بله'

parkassist (1)٪ کد را دوباره راه اندازی می کند

دیگری

پایان

شکست٪ حلقه را به پایان می رساند

elseif red_mean> 140

r.turnAngle (45)٪ اتاق را 45 درجه می چرخاند

r.timeStart٪ شمارنده زمان را شروع می کند

در حالی که حقیقت دارد

r.setDriveVelocity (.05 ،.05)٪ سرعت اتاق را تنظیم می کند

time = r.timeGet٪ زمان را به یک متغیر اختصاص می دهد

bump = r.getBumpers٪ داده ها را از حسگرهای bump دریافت می کند

cliff = r.getCliffSensors داده ها را از سنسورهای صخره دریافت می کند

light = r.getLightBumpers٪ داده ها را از سنسورهای برخورد نور دریافت می کند

img = r.getImage ؛٪ دوربین روبات را خاموش می خواند

red_mean = میانگین (میانگین (img (:،: 1)))٪ مقدار متوسط پیکسل های قرمز را می خواند

green_mean = میانگین (میانگین (img (:،: ، 2)))٪ میانگین مقدار پیکسل سبز را می خواند

blue_mean = میانگین (میانگین (img (:،: 3)))٪ مقدار متوسط پیکسل های آبی را می خواند

اگر blue_mean> 120 باشد

r.moveDistance (-0.01) the roomba را به عقب حرکت می دهد و یک آهنگ فاصله را پخش می کند پخش (r، 'T400، C، D، E، F، G، A، B، C^'، 'true')٪ مقیاس موسیقی رو به افزایش را پخش می کند

msgbox ('Water Found!'، 'Parking Assistant Message')٪ پیامی را نمایش می دهد که می گوید آب پیدا شده است r.turnAngle (-80)٪ roomba را 80 درجه می چرخاند

شکستن٪ حلقه جاری را به پایان می رساند

elseif light.rightFront> 25 || light.leftFront> 25٪ سنسورهای ضربه گیر نور را می خواند

r.moveDistance (-0.01)٪ roomba را به فاصله معینی به عقب حرکت می دهد

r.turnAngle (-35)٪ اتاق را 35 درجه می چرخاند

شکستن٪ حلقه جاری را به پایان می رساند

elseif cliff.rightFront <2500 && cliff.left جلو <2500٪ هر دو سنسور صخره را می خواند

r.moveDistance (-0.1)٪ roomba را در یک فاصله مشخص به عقب حرکت می دهد

r.turnAngle (-80)٪ roomba را 80 درجه می چرخاند

شکستن٪ حلقه جاری را به پایان می رساند

elseif time> = 3

r.stop٪ roomba را متوقف می کند

Contin = questdlg ("ایستگاه رایگان است ، ادامه می دهید؟" ، "پیام دستیار پارکینگ")٪ می پرسد که درصورت ادامه = "'بله" اتاق باید ادامه یابد؟

r.turnAngle (-90)٪ اتاق را 90 درجه می چرخاند

parkassist (1)٪ عملکرد را مجدداً راه اندازی می کند

دیگری

r.stop٪ roomba را متوقف می کند

پایان

دیگری

پایان

پایان

elseif cliff.rightF Front <2500 && cliff.left جلو <2500٪ هر دو سنسور صخره را می خواند

r.moveDistance (-0.1)٪ roomba را در یک فاصله مشخص به عقب حرکت می دهد

r.turnAngle (-90)٪ roomba را 90 درجه می چرخاند

elseif cliff.rightFront <2500٪ سنسور صخره سمت راست را می خواند

r.turnAngle (-5)٪ اتاق را کمی در جهت مخالف سنسور صخره می چرخاند

elseif cliff.leftFront <2500٪ سنسور صخره سمت چپ را می خواند

r.turnAngle (5)٪ کمی roomba را در جهت مخالف سنسور صخره می چرخاند

دیگری

پایان

پایان

پایان

مرحله 4: تست کد و روبات

تست کد و ربات
تست کد و ربات
تست کد و ربات
تست کد و ربات
تست کد و ربات
تست کد و ربات

پس از توسعه کد ، مرحله بعدی آزمایش کد و روبات بود. از آنجا که بسیاری از تنظیمات مختلف را می توان در کد ایجاد کرد ، مانند زاویه ای که ربات می چرخاند ، سرعت حرکت و آستانه های هر رنگ ، بهترین راه برای تعیین این مقادیر برای ربات شما آزمایش است. آنها را تغییر دهید و هر چه می خواهید تغییر دهید. برای هر روز کاری که داشتیم ، ما این ارزشها را دائماً تغییر می دادیم ، زیرا برخی از آنها به محیطی که ربات شما در آن کار می کند متکی هستند. بهترین راهی که ما پیدا کردیم این بود که roomba را در مسیری قرار دهیم که می خواهید آن را دنبال کند و داشته باشید یک مانع به اندازه کافی بالا به طوری که دوربین نمی تواند رنگهایی را که شما نمی خواهید تشخیص دهد. گام بعدی این است که اجازه دهید اجرا شود و وقتی می خواهید این کار را انجام دهد ، رنگ های مورد نظر خود را به آن نشان دهید. همانطور که پیش می روید ، اگر مشکلی را مشاهده کردید بهترین کار این است که سپر جلو را به داخل فشار داده و آن را متوقف کنید ، سپس پارامتری را که با آن مشکل داشتید تغییر دهید.

مرحله 5: تشخیص خطا

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

مرحله 6: نتیجه گیری

در حال حاضر شما همه ابزارها را برای بازی با roomba خود در اختیار دارید ، به این معنی که می توانید در هر صورت که می خواهید کد را برای دستیابی به اهداف مورد نظر خود دستکاری کنید. این باید بهترین قسمت از روز شما باشد ، بنابراین لذت ببرید و با خیال راحت رانندگی کنید!

توصیه شده: