فهرست مطالب:
- مرحله 1: قطعات و مواد
- مرحله 2: فایل پایگاه داده Roomba
- مرحله 3: اتصال به Roomba
- مرحله 4: کد
- مرحله 5: نتیجه گیری
تصویری: Roomba کنترل شده MATLAB: 5 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
هدف این پروژه استفاده از MATLAB و همچنین یک روبات قابل برنامه ریزی iRobot است. گروه ما مهارت های برنامه نویسی ما را برای ایجاد یک اسکریپت MATLAB که از بسیاری از عملکردهای iRobot ، از جمله سنسورهای صخره ای ، سنسورهای سپر ، سنسورهای نور و دوربین استفاده می کند ، ترکیب کرد. ما از این قرائت سنسور و دوربین به عنوان ورودی استفاده کردیم و به ما این امکان را می دهد تا با استفاده از توابع و حلقه های کد MATLAB خروجی های خاصی را که می خواهیم ایجاد کنیم. ما همچنین از دستگاه تلفن همراه MATLAB و ژیروسکوپ به عنوان راهی برای اتصال به iRobot و کنترل آن استفاده می کنیم.
مرحله 1: قطعات و مواد
MATLAB 2018a
نسخه 2018 MATLAB بیشترین نسخه را ترجیح می دهد ، بیشتر به این دلیل که با کدی که به دستگاه تلفن همراه متصل می شود بهترین عملکرد را دارد. با این حال ، اکثر کدهای ما را می توان در اکثر نسخه های MATLAB تفسیر کرد.
iRobot ایجاد دستگاه
-این دستگاه یک دستگاه ساخته شده ویژه است که تنها هدف آن برنامه نویسی و برنامه نویسی است. (این خلاء واقعی نیست)
رزبری پای (با دوربین)
- این یک برد رایانه غیر گران است که به عنوان مغز iRobot عمل می کند. ممکن است کوچک باشد ، اما قادر به بسیاری از موارد است. دوربین یک افزودنی اضافی است. همچنین از رزبری pi برای به دست آوردن تمام توابع و دستورات خود استفاده می کند. دوربینی که در تصویر بالا مشاهده می کنید بر روی یک پایه چاپ سه بعدی نصب شده است ، که توسط بخش های مهندسی بنیاد در دانشگاه تنسی ایجاد شده است.
مرحله 2: فایل پایگاه داده Roomba
یک فایل اصلی وجود دارد که برای استفاده از توابع و دستورات مناسب برای roomba به آن نیاز دارید. این فایل جایی است که شما کد را نوشته اید ، عملکردها را می گیرد تا بتوانید عملکرد اتاق خود را بیشتر مدیریت کنید.
می توانید فایل را در این لینک یا فایل قابل بارگیری زیر بارگیری کنید
ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php
مرحله 3: اتصال به Roomba
ابتدا ، باید مطمئن شوید که ربات شما با استفاده از دوشاخه میکرو USB به برد تمشک pi شما متصل شده است. سپس باید کامپیوتر و ربات خود را به درستی به همان WiFi متصل کنید. پس از انجام این کار ، می توانید ربات خود را فعال کرده و با استفاده از دستور داده شده در فایل پایگاه داده ربات به آن متصل شوید. (همیشه قبل و بعد از استفاده از ربات خود را به سختی تنظیم مجدد کنید). به عنوان مثال ، ما از دستور "r.roomba (19)" برای اتصال به ربات خود استفاده می کنیم و متغیر r را به دستگاه خود اختصاص می دهیم. این به فایل پایگاه داده باز می گردد ، که متغیر ما را به عنوان ساختاری تنظیم می کند که می توانیم در هر لحظه به آن ارجاع دهیم.
مرحله 4: کد
ما کد کامل را در زیر پیوست کرده ایم ، اما در اینجا یک مرور کلی است که عناصر مهم اسکریپت ما را برجسته می کند. ما از همه سنسورها و همچنین دوربین برای حداکثر استفاده از پتانسیل ربات خود استفاده کردیم. ما همچنین کدی را وارد کردیم که به ما امکان می دهد یک دستگاه تلفن همراه را به ربات خود متصل کرده و از گریوسکوپ آن برای کنترل دستی آن استفاده کنیم.
ما با دستور ساده "r.setDriveVelocity (.06)" شروع به کار کردیم که سرعت روبات رو به جلو را به 0.06 متر بر ثانیه تنظیم می کند. این فقط برای این است که ربات از قبل حرکت کند
سپس ، اسکریپت اصلی ما با یک حلقه while شروع می شود که داده های ربات داده شده را با ایجاد ساختارهایی بازیابی می کند که می توانیم آنها را در دستورات زیر شرط بندی کرده و از آنها استفاده کنیم ، بنابراین به ما این امکان را می دهد که به روبات بگوییم دستور خاصی را بر اساس داده های ساختار اجرا کند. ربات با سنسورهای خود می خواند. ما آن را طوری تنظیم کردیم که ربات سنسورهای صخره ای خود را بخواند و یک مسیر سیاه را دنبال کند
در حالی که true٪ while حلقه ادامه می یابد تا چیزی "false" رخ دهد (در این مورد بی نهایت ادامه می یابد) data = r.getCliffSensors؛ data2 = r.getBumpers ؛٪ داده ها را به طور مداوم در مورد مقادیر سنسور صخره بازیابی می کند و آنها را به یک متغیر٪ img = r.getImage اختصاص می دهد ؛ ٪ از دوربین نصب شده عکس می گیرد٪ image (img)؛ ٪ تصویری را که گرفته شده است٪ red_mean = mean (میانگین (img (:، ، 1))) نشان می دهد ؛٪ در صورتی که data.rightFront <2000 r.turnAngle (-2) مقدار متوسط رنگ سبز را می گیرد. ٪ هنگامی که مقدار سنسورهای صخره جلویی سمت راست به زیر 2000 r.setDriveVelocity (.05) می رسد ، Roomba را تقریباً 2 درجه CW می چرخاند. elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1)؛ ٪ در صورتی که هر دو مقدار سنسورهای جلو و چپ جلو به زیر 2000٪ r.turnAngle (0) برسد ، به Roomba می گوید که با سرعت 0.2 متر بر ثانیه به جلو حرکت کند. ٪ به Roomba می گوید که اگر شرایط ذکر شده در بالا صادق است ، نروید
elseif data2.right == 1 r.moveDistance (-. 12) ؛ r.turnAngle (160) ؛ r.setDriveVelocity (.05) ؛ elseif data2.left == 1 r.move فاصله (-. 2) ؛ r.turnAngle (5) ؛ r.setDriveVelocity (.05) ؛ elseif data2.front == 1 r.move فاصله (-. 12) ؛ r.turnAngle (160) ؛ r.setDriveVelocity (.05) ؛
پس از این حلقه while ، یک حلقه while دیگر وارد می کنیم که داده های به دست آمده از طریق دوربین را فعال می کند. و ما از دستور if در داخل این حلقه while استفاده می کنیم که با استفاده از یک برنامه خاص (alexnet) یک تصویر را تشخیص می دهد و هنگامی که تصویر را شناسایی کرد ، بلافاصله کنترل از راه دور دستگاه تلفن همراه را فعال می کند
anet = alexnet؛ ٪ یادگیری عمیق alexnet را به متغیر true٪ Infinite while loop اختصاص می دهد img = r.getImage؛ img = imresize (img، [227، 227])؛ label = طبقه بندی (anet، img)؛ if label == "دستمال کاغذی" || label == "یخچال" label = "آب"؛ تصویر پایانی (img) ؛ عنوان (کاراکتر (برچسب)) ؛ کشیدن
حلقه while که به ما اجازه می دهد دستگاه را با تلفن خود کنترل کنیم ، داده ها را از ژیروسکوپ تلفن بازیابی می کند و آنها را به ماتریسی متصل می کنیم که به طور مداوم داده ها را در رایانه به متلب باز می گرداند. ما از دستور if استفاده می کنیم که داده های ماتریس را می خواند و خروجی ای را ایجاد می کند که دستگاه را بر اساس مقادیر خاصی از ژیروسکوپ تلفن حرکت می دهد. مهم است بدانید که ما از سنسورهای جهت گیری دستگاه تلفن همراه استفاده کردیم. ماتریس یک به سه ذکر شده در بالا بر اساس هر یک از عناصر سنسورهای جهت گیری گوشی ، که شامل آزیموت ، گام و جانبی است طبقه بندی می شود. عبارات if شرایطی را ایجاد کردند که بیان می کرد وقتی طرف از مقادیر 50 فراتر رود یا به زیر 50 برسد ، ربات فاصله معینی را به جلو (50 مثبت) یا عقب (منفی 50) حرکت می دهد. و همین امر در مورد مقدار گام نیز صادق است. اگر مقدار گام از مقدار 25 در زیر 25- فراتر رود ، ربات با زاویه 1 درجه (مثبت 25) یا منفی 1 درجه (منفی 25) می چرخد
در حالی که مکث واقعی (.1)٪.5 ثانیه قبل از هر مقدار گرفته می شود Controller = iphone. Orientation؛ ٪ ماتریسی را برای مقادیر جهت گیری iPhone به یک متغیر Azimuthal = Controller (1) اختصاص می دهد. ٪ اولین مقدار ماتریس را به متغیر Pitch = Controller (2) اختصاص می دهد. ٪ دومین مقدار ماتریس را به یک متغیر اختصاص می دهد (هنگامی که iPhone به صورت جانبی نگه داشته می شود به جلو و عقب) Side = Controller (3) ؛ ٪ سومین مقدار ماتریس را به یک متغیر اختصاص می دهد (هنگامی که iPhone به صورت چپ و راست نگه داشته می شود به سمت چپ و راست بپیوندید)٪ اگر بر اساس جهت تلفن خروجی ایجاد کند اگر Side> 130 || سمت (25. r.move) فاصله (-. 1)٪ Roomba را تقریباً به عقب می برد.1 متر در صورتی که آیفون حداقل 25 بار به عقب متمایل شده باشد. در صورتیکه آیفون حداقل 25 درجه کج باشد حداقل 25 درجه به سمت چپ بپیچید < / 25 r.turnAngle (1)
اینها تنها نکات برجسته اصلی قطعات اصلی کد ما هستند ، که در صورت نیاز به سرعت کپی و جایگذاری بخشی به نفع خود ، آنها را ذکر کردیم. با این حال ، در صورت نیاز کل کد ما در زیر ضمیمه شده است
مرحله 5: نتیجه گیری
این کدی که ما نوشتیم به طور خاص برای ربات ما و همچنین دید کلی ما از پروژه طراحی شده است. هدف ما این بود که از همه مهارت های برنامه نویسی MATLAB خود برای ایجاد یک اسکریپت طراحی خوب که از اکثر ویژگی های ربات استفاده می کند ، استفاده کنیم. استفاده از کنترلر تلفن آنقدرها هم که فکر می کنید دشوار نیست و امیدواریم کد ما بتواند به شما در درک بهتر مفهوم کدگذاری iRobot کمک کند.
توصیه شده:
مخزن کنترل شده 3D RC کنترل شده !!: 8 مرحله (همراه با تصاویر)
3D Printed RC Controlled Tank !!: آیا تا به حال خواسته اید یک وسیله نقلیه از راه دور داشته باشید که بتواند از جاده خارج شود و حتی می توانید از دوربین دید اول شخص مشاهده کنید ، پس این مخزن برای شما عالی است. ردیف های روی مخزن به شما امکان می دهد هنگام رانندگی در زمین هایی مانند خاک و چسبندگی زیاد ،
ESP8266 RGB LED STRIP WIFI کنترل - NODEMCU به عنوان یک کنترل از راه دور IR برای نوار LED کنترل شده بر روی Wifi - کنترل تلفن هوشمند RGB LED STRIP: 4 مرحله
ESP8266 RGB LED STRIP WIFI کنترل | NODEMCU به عنوان یک کنترل از راه دور IR برای نوار LED کنترل شده بر روی Wifi | RGB LED STRIP Smartphone Control: سلام بچه ها در این آموزش می آموزیم که چگونه از nodemcu یا esp8266 به عنوان ریموت IR برای کنترل نوار LED RGB استفاده کنید و Nodemcu توسط تلفن هوشمند از طریق وای فای کنترل می شود. بنابراین اساساً می توانید RGB LED STRIP را با تلفن هوشمند خود کنترل کنید
میکروکنترلر کنترل شده MATLAB (Arduino MKR1000): 4 مرحله
میکروکنترلر کنترل شده MATLAB (Arduino MKR1000): هدف پروژه ما استفاده از MATLAB و همچنین Arduino MKR1000 به بهترین نحو بود. هدف ما ایجاد اسکریپتی بود که به برخی از ویژگی های آردوینو اجازه دهد خروجی خاصی را بر اساس یک ورودی خاص انجام دهد. ما از بسیاری موارد استفاده کردیم
ربات Roomba کنترل شده با مرورگر با رزبری پای مدل 3 A+: 6 مرحله (همراه با تصاویر)
روبات Roomba کنترل شده با مرورگر با رزبری پای مدل 3 A+: مرور کلی این دستورالعمل بر چگونگی دادن مغز جدید به Roomba مرده (تمشک پای) ، چشم ها (وب کم) و راهی برای کنترل همه چیز از طریق مرورگر وب تمرکز می کند. هک های Roomba زیادی وجود دارد که امکان کنترل از طریق رابط سریال را فراهم می کند. ندارم
UCL - ماشین کنترل شده جاسازی شده: 5 مرحله
UCL - ماشین کنترل شده جاسازی شده: ما آرزوهای بزرگی برای این پروژه داشتیم. ماشین خودران! پیروی از یک خط سیاه یا رانندگی در اطراف بدون اجتناب از موارد احتمالی. اتصالات بلوتوث و دومین آردوینو برای کنترلر با ارتباط بی سیم خودرو. شاید دومین خودرویی که بتواند به دنبال آن باشد