فهرست مطالب:
تصویری: Roomba با متلب: 4 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
این پروژه از 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: نتیجه گیری
به خاطر داشته باشید ، ممکن است از اسکریپتی که در بالا نوشتیم استفاده کنید ، اما همیشه می توانید آن را متناسب با نیازهای خود تغییر دهید. لازم نیست که توسط تلفن شما کنترل شود! (با این حال ، این کار آن را بیشتر سرگرم کننده می کند.) انتخاب کنید که برای کنترل ربات خود از کدام روش استفاده می کنید. با ربات خود رانندگی کنید و لذت ببرید!
توصیه شده:
پیشرفت برنامه نویسی قطارها در متلب: 6 مرحله
پیشرفت برنامه نویسی قطارها در MATLAB: هدف: هدف از این سیستم برنامه ریزی شده این است که در مقیاس کوچک آردوینو را بررسی کرده و از کدگذاری در مقیاس بزرگتر استفاده کند تا به طور بالقوه برخی از ویژگی های ایمنی سیستم های راه آهن Amtrak را افزایش دهد. برای انجام این کار ، سنسور رطوبت خاک را اضافه کرده ایم
آموزش نمونه گیری سیگنال آنالوگ - متلب: 8 مرحله
آموزش نمونه گیری سیگنال آنالوگ | متلب: در این آموزش ، ما نشان می دهیم که نمونه گیری چیست؟ و نحوه نمونه برداری از سیگنال آنالوگ با استفاده از نرم افزار MATLAB
نحوه انجام تست شنوایی بزرگسالان با استفاده از متلب: 6 مرحله
نحوه انجام آزمایش شنوایی بزرگسالان با استفاده از MATLAB: سلب مسئولیت: آزمایش ما تشخیص پزشکی نیست و نباید از آن استفاده شود. برای اندازه گیری دقیق شنوایی ، لطفاً به یک متخصص پزشکی مراجعه کنید. با استفاده از موادی که قبلاً داشتیم ، گروه ما یک تست شنوایی انجام داد. آزمون ما فقط برای بزرگسالان و نوجوانان است
راه اندازی RTL-SDR در متلب به عنوان گیرنده FM: 4 مرحله
راه اندازی RTL-SDR در متلب به عنوان گیرنده FM: این روزها RTL-SDR برای گیرنده های FM و سایر کارهای مرتبط با FM برای علاقه مندان و دانشجویان بسیار معروف است. این یک آموزش ساده برای شروع با SDR در MATLAB است. برای راهنمایی بیشتر از & quot؛ Communications System Toolbox Support Packa Support
تشخیص خودکار رتینوپاتی دیابتی از طریق متلب: 33 مرحله
تشخیص خودکار رتینوپاتی دیابتی از طریق MATLAB: (به طرح کلی کد بالا مراجعه کنید) رتینوپاتی دیابتی یک بیماری چشمی مرتبط با دیابت است که به دلیل بالا بودن سطح قند خون ایجاد می شود. سطح بالای قند خون باعث تورم رگ های خونی در شبکیه می شود که منجر به بزرگ شدن رگ های خونی و حتی رگ های خونی می شود