فهرست مطالب:

Roomba با متلب: 4 مرحله (همراه با تصاویر)
Roomba با متلب: 4 مرحله (همراه با تصاویر)

تصویری: Roomba با متلب: 4 مرحله (همراه با تصاویر)

تصویری: Roomba با متلب: 4 مرحله (همراه با تصاویر)
تصویری: آموزش متلب قسمت چهارم | محاسبات ماتریس ها 2024, نوامبر
Anonim
Roomba با متلب
Roomba با متلب

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

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

قطعات و مواد
قطعات و مواد
قطعات و مواد
قطعات و مواد
قطعات و مواد
قطعات و مواد
قطعات و مواد
قطعات و مواد

1. iRobot Create ، نسخه 2

- این یک ربات قابل برنامه ریزی است که شبیه Roomba است. توجه داشته باشید که این محصول iRobot خلاء نیست. این برنامه برای برنامه نویسی سفارشی توسط کاربر در نظر گرفته شده است.

2. MATLAB 2017a

- اکثر نسخه های قدیمی با کدی که در زیر استفاده کردیم سازگار خواهد بود. MATLAB فرمانی را تشخیص می دهد که با نسخه ای که دارید سازگار نیست و بهترین فرمان را برای شما پیشنهاد می کند.

3. رزبری پای 3 مدل B ، نسخه 1.2

- بررسی کنید ببینید کدام رزبری پای با iRobot شما سازگار است. برای راهنمایی بیشتر به این پیوند مراجعه کنید: https://www.irobotweb.com/~/media/MainSite/PDFs/A… این دستورالعمل فرض می کند که شما با رزبری پای از پیش برنامه ریزی شده کار می کنید. لطفاً توجه داشته باشید که برای انجام مراحل زیر باید با Pi از پیش برنامه ریزی شده کار کنید. استفاده از Pi از پیش برنامه ریزی شده به شما امکان می دهد تمام برنامه نویسی خود را به تنهایی در MATLAB انجام دهید.

4. دوربین ماژول V2 (برای رزبری پای)

- ممکن است تعجب کنید ؛ با وجود اندازه آن ، ماژول دوربین رزبری پای کیفیت بسیار خوبی دارد. این ارزان ترین و سازگارترین گزینه برای این پروژه است.

اختیاری: پایه چاپ سه بعدی این مورد برای تثبیت دوربین استفاده می شود. این بر عملکرد ربات تأثیر نمی گذارد ، اما در صورت تمایل به استفاده از داده های تصویربرداری برای تشخیص رنگ و/یا تشخیص اشیاء ، به کد نویسی شما کمک می کند.

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

پیکربندی
پیکربندی
پیکربندی
پیکربندی

1. اتصال Raspberry Pi و ماژول دوربین (سخت افزار)

- برای تغذیه رزبری پای ، باید یک میکرو USB مردانه را به پورت تغذیه زن روی میکروکنترلر اجرا کنید. اختیاری: ممکن است از یک تنظیم کننده ولتاژ برای اطمینان از ولتاژ بیش از 5 ولت استفاده شود. پس از تغذیه Raspberry Pi ، می توانید آن را با استفاده از USB نهایی A از مادربرد به پورت USB A روی میکروکنترلر به ربات خود متصل کنید.

- پس از اتصال Pi به Roomba ، دوربین آماده نصب است. ماژول دوربین بسیار کوچکتر از آنچه انتظار دارید خواهد بود. توجه داشته باشید که لنز روی یک سنسور نصب شده است و یک روبان سفید از دوربین امتداد یافته است. روبان را جدا یا پاره نکنید! این کابل مورد نیاز برای اتصال آن به رزبری پای است. ابتدا انتهای روبان را نگه دارید و اتصالات نقره ای و کابل آبی را پیدا کنید. اینها در طرف مقابل قرار دارند. در مرحله بعد ، شکاف بین پورت اترنت و HDMI را در Raspberry Pi خود پیدا کنید. توجه کنید که یک قفل کوچک سفید رنگ آن را پوشانده است. قفل را به آرامی بلند کنید ، اما آن را از شکاف خارج نکنید ، زیرا محکم می شود و برای همیشه آسیب می بیند. هنگامی که قفل را برداشته اید ، روبان را بگیرید و کانکتورهای نقره ای را به درگاه HDMI برسانید. طرف آبی رو به درگاه اترنت است. روبان را به آرامی داخل شکاف بکشید در حالی که هنوز باز نشده است. لازم نیست آن را به زور وارد شکاف کنید. پس از قرار دادن ، قفل را به عقب فشار دهید. اگر دوربین شما به درستی محافظت شده است ، باید بتوانید (به آرامی) روبان را بکشید و تنش را احساس کنید. روبان نباید شل شود. پس از اتصال دوربین خود به Pi ، ممکن است متوجه شل بودن آن شوید. به همین دلیل است که از یک پایه پرینت سه بعدی برای ثابت نگه داشتن آن استفاده کردیم. انتخاب شما این است که از چه موادی می خواهید برای ثابت نگه داشتن دوربین خود برای تصویربرداری با کیفیت بالا استفاده کنید.

2. نصب فایل های مناسب و اتصال Roomba به رایانه پس از پیکربندی تمام سخت افزار ، اکنون می توانید به نصب MATLAB به همراه فایل های m مربوطه که به شما امکان برقراری ارتباط با ربات می دهد ، ادامه دهید. برای انجام این کار ، MATLAB را باز کرده و یک پوشه جدید ایجاد کنید تا همه پرونده های مرتبط با هم نگه داشته شوند. از این اسکریپت برای نصب/به روز رسانی فایل های مورد نیاز استفاده کنید:

- همه فایلها باید در پوشه ایجاد شده شما نشان داده شوند. در پنجره Current Folder راست کلیک کرده و "Add to Path" را انتخاب کنید تا آن مسیر را به فهرست دایرکتوری هایی که MATLAB به دنبال فایل ها می باشد اضافه کنید. اطمینان حاصل کنید که همه پرونده های شما در مسیر صحیح هستند.

3. پس از نصب فایل ها ، اکنون می توانید اتصال به ربات خود را آغاز کنید. با روشن کردن ربات خود و سپس بازنشانی سخت آن را مستقیماً پس از راه اندازی شروع کنید (فراموش نکنید که هر بار قبل و بعد از استفاده از ربات خود را به سختی تنظیم مجدد کنید). دوم ، هر دو ربات و لپ تاپ خود را به یک شبکه wifi متصل کنید. پس از این ، ما با Raspberry Pi از پیش برنامه ریزی شده از طریق MATLAB صحبت می کنیم و با Roomba با نام مشخص شده و عملکرد roomba تماس می گیریم. به عنوان مثال ، من با استفاده از خط زیر به ربات 28 متصل می شوم: R = roomba (28).

- توجه کنید که چگونه شی را به یک متغیر R. اختصاص داده ام. اکنون می توانم با رفتار متغیر R مانند یک ساختار ، از فایل install به توابع Roomba مرتبط دسترسی پیدا کنم.

- R.turnAngle (90) اگر همه چیز خوب پیش رفت ، باید صدای موسیقی پخش شود که ارتباط را تأیید می کند.

مرحله 3: منطق متلب

سند PDF در پایین این مرحله یک نمودار جریان منطقی دقیق برای فرآیند کدگذاری ما در MATLAB است. ما سنسورهای صخره ، نور و برآمدگی نور را فعال کردیم تا به ربات اجازه دهیم وقتی شیئی را در مجاورت خود تشخیص داد با ما ارتباط برقرار کند. به عنوان مثال ، وقتی روبات به جلو حرکت می کند ، حسگرهای نور آن با توجه به بردار که در آن حرکت می کند ، اشیاء را در مسیر خود جستجو می کند. ما یک آستانه فاصله برای ربات انتخاب کردیم تا وقتی به یک شی نزدیک می شود ، به جای برخورد با آن ، معکوس شود. ربات ما همچنین با توییتر پیکربندی شده است ، که ما آن را در فرآیند کدگذاری خود مشخص کرده ایم (این مورد در زیر نشان داده می شود).

برای افزایش تجربه ، ما از برنامه MATLAB در دستگاه های تلفن همراه خود استفاده کردیم تا بتوانیم حرکات ربات را فقط با کج کردن تلفن های خود کنترل کنیم. این یک فعالیت اختیاری است ، زیرا مطمئناً می توانید با استفاده از فرمان moveDistance در بخش کد MATLAB ، روبات را حرکت دهید. به خاطر داشته باشید که اگر هدف شما دقیق باشد ، استفاده از دستورات MATLAB برای کنترل ربات ترجیح داده می شود. اگر می خواهید روبات خود را طوری هدف بگیرید که دوربین در مکان خاصی عکس بگیرد ، بهتر است حرکات ربات را در MATLAB کدگذاری کنید. در حالی که سرگرم کننده است ، استفاده از برنامه MATLAB برای کنترل ربات شما برای دقت مطلوب نیست.

کد به Roomba دستور می دهد تا تنظیمات اولیه را انجام دهد و سپس از طریق یک حلقه پیوسته ادامه دهد. در ابتدا لپ تاپ با استفاده از دستور Roomba () پیوندی با Roomba ایجاد می کند. همچنین اتصال twitter را با استفاده از دستور webwrite () در MATLAB ایجاد می کند. این حلقه بسته به محیط اطراف Roomba ، شامل پنج جریان اصلی منطقی است. ابتدا Roomba موانع را بررسی می کند و اگر متوجه شد که مانع است ، به عقب تنظیم می شود. در این حلقه راه دوم قرار دارد که در صورت انتقال Roomba به کاربران هشدار می دهد. یک ابزار مهم در منطقه جنگی سخت مریخ. بعد از اینکه Roomba تعیین کرد که موقعیت آن ایمن است ، به نظر می رسد که دستگاه بعدی حرکت بعدی خود را تعیین می کند. اگر دستگاه تلفن همراه به جلو متمایل شود ، بسته به شدت اندازه گیری رول ، سرعت پایه را محاسبه می کند تا اینکه سرعت چرخ های جداگانه را بر اساس درجه پیچ بچرخاند. این تلفن همچنین می تواند Roomba را به صورت معکوس حرکت دهد. حالت دستگاه تلفن همراه خنثی دو مسیر نهایی را باز می کند. Roomba در حال استراحت ، یک پرچم بیگانه را جستجو می کند و کاربر را بر این اساس هشدار می دهد.

در زیر کد ما (در MATLAB 2017a تکمیل شده است)

٪ ورودی: داده های جهت گیری از دستگاه متصل به فای ، دوربین

٪ اطلاعات ، داده های حسگر

٪ خروجی: حرکت توسط دستگاه متصل به وای فای و حرکت کنترل می شود

٪ با خواندن داده های حسگر ایمنی بررسی می شود. اگر دوربین تشخیص دهد

flag یک پرچم بیگانه ، سپس roomba با توییت زدن پرچم دشمن پاسخ می دهد

٪ مشاهده شده است

٪ هدف: دستگاه ما بدون هیچ هدفی زندگی می کند مگر برای محافظت از کسانی که

٪ آن را ایجاد کرده است ، در خدمت خالق آن است و انجام می دهد

٪ دقیقاً همان چیزی است که گفته شده است

٪ استفاده: اساساً برنامه به تنهایی اجرا می شود.

پاک کردن همه ، بستن همه ، clc

٪ راه اندازی اولیه اشیاء و متغیرها

r = roomba (28) ؛

m = mobiledev؛

٪ use response = webwrite (نام میزبان ، داده)

نام میزبان = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update' ؛

API = 'SGZCTNQXCWAHRCT5' ؛

tweet = 'RoboCop عملیاتی است … در انتظار فرمان'؛

data = strcat ('api_key ='، API، '& status ='، توییت)؛

پاسخ = نوشتن وب (نام میزبان ، داده) ؛

٪ حلقه دائماً در حال اجرا

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

٪ ساختارهای حاوی داده های Relavent

o = m. جهت گیری؛ درصد جهت گیری دستگاه تلفن همراه

light = r.getLightBumpers ()؛ ٪ ارزش سپر نور

a = r.getCliffSensors ()؛ ٪ ارزش سنسور CLiff

bump = r.getBumpers ()؛ ٪ سنسورهای سپر

٪ ضربه گیرها را چک کنید

if bump.right == 1 || bump.left == 1 || bump.front == 1

r.moveDistance (-. 2 ،.2) ؛

٪ سنسورهای نور را بررسی کنید

elseif light.left> 60 || light.left جلو> 60 || light.leftCenter> 60 || light.right> 60 || light.rightF Front> 60 || light.rightCenter> 60

r.moveDistance (-. 2 ،.2) ؛

٪ بررسی سنسورهای کلیف

٪ سیگنال و اطلاع رسانی ضد سرقت

elseif a.left <300 && a.right <300 && a.leftFront <300 && a.rightFront <300

r.stop ()؛

r.epep () ؛

tweet = 'RoboCop برداشته شد!'

data = strcat ('api_key ='، API، '& status ='، توییت)؛

پاسخ = نوشتن وب (نام میزبان ، داده) ؛

٪ عملیات اجتناب از صخره معمولی

elseif a.left <300 || a.right <300 || a.leftFront <300 || a.rightFront <300

r.moveDistance (-. 2 ،.2) ؛

٪ Roomba چک ها را گذراند و اکنون با عملکرد عادی اجرا می شود.

٪ در ابتدا رول دستگاه اندازه گیری می شود و به یک پایه تبدیل می شود

٪ سرعت که برای محاسبه سرعت چرخ استفاده می شود

٪حرکت رو به جلو

elseif o (3)> = 0 && o (3) <= 60

baseVel = (-. 5/60)*(o (3) -60) ؛

اگر o (2)> =-70 && o (2) <0

r.setDriveVelocity (baseVel+(. 3/50)*abs (o (2)) ، baseVel-(. 3/50)*abs (o (2))) ؛

elseif o (2) = 0

r.setDriveVelocity (baseVel-(. 3/50)*abs (o (2)) ، baseVel+(. 3/50)*abs (o (2))) ؛

در غیر این صورت r.stop

پایان

٪ حرکت عقب

elseif o (3)> 100 && o (3) <150

r.setDriveVelocity (-. 2 ، -.2)

r.epep () ؛

r.epep () ؛

٪ roomba در حال استراحت ، پرچم بیگانه را که به عنوان فلورسنت مشخص شده است ، جستجو می کند

٪ سبز تکه کاغذ

دیگری

r. توقف

img = r.getImage ()؛ ٪ گرفتن عکس

آستانه = خاکستری (img (200: 383 ،: ، 2))+. 1؛ calc سطح سبز کالک

اگر آستانه>.42

tweet = 'دشمن لکه دار شد !!'

data = strcat ('api_key ='، API، '& status ='، توییت)؛

پاسخ = نوشتن وب (نام میزبان ، داده) ؛

دیگری

r. توقف

پایان

پایان

پایان

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

به خاطر داشته باشید ، ممکن است از اسکریپتی که در بالا نوشتیم استفاده کنید ، اما همیشه می توانید آن را متناسب با نیازهای خود تغییر دهید. لازم نیست که توسط تلفن شما کنترل شود! (با این حال ، این کار آن را بیشتر سرگرم کننده می کند.) انتخاب کنید که برای کنترل ربات خود از کدام روش استفاده می کنید. با ربات خود رانندگی کنید و لذت ببرید!

توصیه شده: