فهرست مطالب:

Roomba Explorer: 4 مرحله
Roomba Explorer: 4 مرحله

تصویری: Roomba Explorer: 4 مرحله

تصویری: Roomba Explorer: 4 مرحله
تصویری: Best Robot Vacuums 2024 - The Only 5 You Should Consider Today 2024, نوامبر
Anonim
Roomba Explorer
Roomba Explorer

با استفاده از MATLAB و iRobot's Robot Create2 ، این پروژه مناطق مختلف یک مکان ناشناخته را کاوش می کند. ما از حسگرهای روی ربات برای کمک به مانور در یک زمین خطرناک استفاده کردیم. با گرفتن عکس ها و ویدئو از رزبری پای که ضمیمه شده است ، ما توانستیم موانعی را که روبات با آن روبرو خواهد شد تعیین کنیم و آنها طبقه بندی می شوند.

قطعات و مواد

برای این پروژه ، شما نیاز دارید

-یک کامپیوتر

-جدیدترین نسخه MATLAB (MATLAB R2018b برای این پروژه استفاده شد)

- roomba جعبه ابزار را نصب کنید

ربات -iRobot's Create2

تمشک پای با دوربین

مرحله 1: راه اندازی اولیه و حسگرها

راه اندازی اولیه و حسگرها
راه اندازی اولیه و حسگرها

قبل از شروع برنامه نویسی ، جعبه ابزار roombaInstall را بارگیری کردیم که به اجزای مختلف ربات اجازه دسترسی می داد.

در ابتدا ، ما یک GUI برای راه اندازی اولیه هر ربات ایجاد کردیم. برای انجام این کار ، باید شماره Robot را به عنوان ورودی وارد کنید. این به برنامه اجازه می دهد تا برنامه خود را به رباتی که روی آن مانور داده و مانور بسیاری از مناطق مختلف را پیدا می کند ، اجرا کند. ما سنسورهای Cliff ، Light Bump Sensors و Physical Bump سنسورها را با استفاده از خروجی های آنها برای حرکت روبات و تغییر سرعت و جهت آن پیاده کردیم. هنگامی که هر یک از شش سنسور نور ضربه ای در حال تشخیص یک شی هستند ، مقدار خروجی آنها کاهش می یابد و باعث می شود سرعت ربات کاهش یابد تا از برخورد کامل جلوگیری شود. هنگامی که بالاخره روبات با مانعی برخورد می کند ، حسگرهای Physical Bump مقدار بیش از صفر را گزارش می دهند. به همین دلیل ، ربات متوقف می شود ، بنابراین هیچ برخورد دیگری وجود ندارد و می توان عملکردهای بیشتری را وارد عمل کرد. برای سنسورهای صخره ای ، آنها روشنایی منطقه اطراف خود را می خوانند. اگر مقدار بیشتر از 2800 باشد ، ما تعیین کردیم که ربات در زمین پایدار و ایمن خواهد بود. اما ، اگر مقدار کمتر از 800 باشد ، سنسورهای صخره ای یک صخره را تشخیص می دهند و بلافاصله متوقف می شوند تا سقوط نکنند. هر مقدار در این بین نشان دهنده آب است و باعث می شود که ربات عملکرد خود را متوقف کند. با استفاده از سنسورهای فوق ، سرعت ربات تغییر می کند و به ما این امکان را می دهد که هرگونه خطری را بهتر تشخیص دهیم.

در زیر کد (از MATLAB R2018b) آمده است

٪٪ مقداردهی اولیه

dlgPrompts = {'شماره Roomba'}؛

dlgTitle = 'Roomba خود را انتخاب کنید'؛

dlgDefaults = {""}؛

opts. Resize = 'روشن'؛

dlgout = inputdlg (dlgPrompts، dlgTitle، 1، dlg پیش فرض ها ، انتخاب ها)٪ ایجاد پنجره ای که از کاربر درخواست می کند شماره roomba خود را وارد کند

n = str2double (dlgout {1}) ؛

r = roomba (n) ؛ ٪ Roomba تعیین شده توسط کاربر ٪٪ تعیین سرعت را از سنسورهای ضربات نور در حالی که واقعی است s = r.getLightBumpers؛ ٪ دارای سنسور ضربه گیر نور هستند

lbumpout_1 = extractfield (s، 'left')؛ ٪ مقدار عددی سنسورها را گرفته و آنها را بیشتر قابل استفاده می کند lbumpout_2 = extractfield (s، 'leftFront')؛

lbumpout_3 = extractfield (s، 'leftCenter')؛

lbumpout_4 = extractfield (s، 'rightCenter')؛

lbumpout_5 = extractfield (s ، 'rightFront')؛

lbumpout_6 = extractfield (s ، 'right')؛

lbout = [lbumpout_1 ، lbumpout_2 ، lbumpout_3 ، lbumpout_4 ، lbumpout_5 ، lbumpout_6]٪ مقادیر را به ماتریس تبدیل می کند

sLbump = مرتب سازی (lbout) ؛ ٪ مرتب سازی ماتریس به کمترین مقدار را می توان استخراج کرد

lowLbump = sLbump (1) ؛ سرعت =.05+(lowLbump)*. 005٪ با استفاده از کمترین مقدار ، که نشان دهنده موانع نزدیک است ، برای تعیین سرعت ، سرعت بالاتر هنگامی که هیچ چیز تشخیص داده نمی شود

r.setDriveVelocity (سرعت ، سرعت)

پایان

٪ ضربه گیر فیزیکی

b = r.getBumpers ؛ ٪ خروجی درست ، نادرست

bsen_1 = extractfield (b ، 'left')

bsen_2 = extractfield (b ، 'right')

bsen_3 = extractfield (b ، 'front')

bsen_4 = extractfield (b ، 'leftWheelDrop')

bsen_5 = extractfield (b ، 'rightWheelDrop')

bumps = [bsen_1 ، bsen_2 ، bsen_3 ، bsen_4 ، bsen_5] tbump = مجموع (bums)

if tbump> 0 r.setDriveVelocity (0 ، 0)

پایان

٪ سنسورهای صخره ای

c = r.getCliffSensors ٪٪ 2800 سالم ، در غیر این صورت آب

csen_1 = extractfield (c ، 'left')

csen_2 = extractfield (c ، 'right')

csen_3 = extractfield (c ، 'leftFront')

csen_4 = extractfield (c ، 'rightFront')

صخره = [csen_1 ، csen_2 ، csen_3 ، csen_4]

ordcliff = مرتب سازی (صخره ها)

اگر ordcliff (1) <2750

r.setDriveVelocity (0 ، 0)

اگر صخره <800

دیپ 'صخره'

دیگری

پخش کردن "آب"

پایان

r TurnAngle (45)

پایان

مرحله 2: به دست آوردن داده ها

پس از خراب شدن سنسورهای فیزیکی ضربه ، روبات رزبری پای خود را برای عکاسی از موانع پیاده می کند. پس از گرفتن عکس ، با استفاده از تشخیص متن در صورت وجود متن در تصویر ، روبات تعیین می کند که مانع چیست و مانع چه می گوید.

img = r.getImage؛ imshow (img)؛

imwrite (img، 'imgfromcamera.jpg')

photo = imread ('imgfromcamera.jpg')

ocrResults = ocr (عکس)

nasText = ocrResults. Text؛

شکل؛

نمایش تصویر (عکس) (220 ، 0 ، شناخته شده متن ، 'BackgroundColor' ، [1 1 1]) ؛

مرحله 3: پایان ماموریت

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

٪ ارسال ایمیل

setpref ("اینترنت" ، "SMTP_Server" ، "smtp.gmail.com") ؛

setpref ("اینترنت" ، "E_mail" ، "[email protected]") ؛ ٪ ایمیل برای ارسال از setpref ("اینترنت" ، "SMTP_Username" ، "وارد کردن ایمیل فرستنده") ؛ ٪ فرستنده نام کاربری setpref ("اینترنت" ، "SMTP_Password" ، "وارد کردن رمز فرستنده") ؛ ٪ رمز عبور فرستندگان

props = java.lang. System.getProperties؛ props.setProperty ('mail.smtp.auth' ، 'true') ؛ props.setProperty ('mail.smtp.socketFactory.class' ، 'javax.net.ssl. SSLSocketFactory') ؛ props.setProperty ('mail.smtp.socketFactory.port' ، '465') ؛

sendmail ('ایمیل دریافتی را وارد کنید' ، 'Roomba' ، 'Roomba به خانه بازگشت !!' ، 'imgfromcamera.jpg')٪ حساب ایمیل برای ارسال به

سپس ربات به پایان می رسد.

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

نتیجه
نتیجه

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

*یادآوری: فراموش نکنید که جعبه ابزار roombaInstall برای ارتباط متلب با ربات و رزبری پای روی برد لازم است.

توصیه شده: