Mündəricat:

Roomba Explorer: 4 addım
Roomba Explorer: 4 addım

Video: Roomba Explorer: 4 addım

Video: Roomba Explorer: 4 addım
Video: Возведение перегородок санузла из блоков. Все этапы. #4 2024, Noyabr
Anonim
Roomba Explorer
Roomba Explorer

MATLAB və iRobotun Create2 Robotundan istifadə edərək, bu layihə naməlum bir yerin müxtəlif sahələrini araşdıracaq. Təhlükəli bir ərazidə manevr etmək üçün Robotdakı sensorlardan istifadə etdik. Əlavə edilmiş bir Raspberry Pi -dən fotoşəkillər və video lent əldə edərək, Robotun qarşılaşacağı maneələri təyin edə bildik və onlar təsnif ediləcək.

Parçalar və materiallar

Bu layihə üçün sizə lazım olacaq

-Kompüter

-MATLAB -ın ən yeni versiyası (bu layihə üçün MATLAB R2018b istifadə edilmişdir)

- roombaInstall alət qutusu

-iRobotun Create2 Robotu

-Kamera ilə Raspberry Pi

Addım 1: Başlatma və Sensorlar

Başlatma və Sensorlar
Başlatma və Sensorlar

Hər hansı bir proqramlaşdırmaya başlamazdan əvvəl, Robotun müxtəlif komponentlərinə daxil olmağa imkan verən roombaInstall alətlər qutusunu yüklədik.

Əvvəlcə hər hansı bir Robotu işə salmaq üçün bir GUI yaratdıq. Bunu etmək üçün giriş olaraq Robotun nömrəsini yazmalısınız. Bu, Robotun qarşılaşacağı bir çox ərazidə manevr etməsi üçün çalışdığımız Robota proqramımızı işə salmağa imkan verəcək. Sürətini və ya istiqamətini dəyişdirmək üçün Robotu açmaq üçün onların çıxışlarından istifadə edərək Cliff Sensors, Light Bump Sensors və Physical Fump Sensorlarını tətbiq etdik. Altı İşıq Təmiri Sensorundan hər hansı biri bir obyekti aşkar etdikdə, çıxardıqları dəyər azalacaq və tam sürətlə toqquşmamaq üçün Robotun sürətinin azalmasına səbəb olacaq. Robot nəhayət bir maneə ilə toqquşduqda, Fiziki Bump sensorlar sıfırdan böyük bir dəyər bildirəcək; bu səbəbdən Robot dayanacaq, buna görə heç bir toqquşma olmayacaq və daha çox funksiya hərəkətə keçə bilər. Cliff Sensorları üçün ətrafdakıların parlaqlığını oxuyacaqlar. Dəyər 2800 -dən çox olarsa, Robotun sabit bir yerdə və təhlükəsiz olacağını təyin etdik. Lakin, dəyər 800 -dən azdırsa, uçurum sensorlar uçurumu aşkar edəcək və düşməmək üçün dərhal dayanacaq. Aralarındakı hər hansı bir dəyər, suyu təmsil etmək üçün təyin edildi və Robotun hərəkətini dayandırmasına səbəb olacaq. Yuxarıdakı sensorlar istifadə edərək, Robotun sürəti dəyişdirilərək hər hansı bir təhlükənin olub olmadığını daha yaxşı təyin edə bilərik.

Aşağıda kod var (MATLAB R2018b -dən)

%% Başlanğıc

dlgPrompts = {'Roomba nömrəsi'};

dlgTitle = 'Otağınızı seçin';

dlgDefaults = {''};

opts. Resize = 'açıq';

dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % İstifadəçidən otaq nömrəsini daxil etməsini istəyən bir pəncərə yaradın

n = str2double (dlgout {1});

r = otaq (n); İstifadəçi tərəfindən təyin edilən Roomba %% Light Bump Sensorlarından Sürət təyinini doğru olaraq başlatdıqda s = r.getLightBumpers; yüngül zərbə sensorlar almaq

lbumpout_1 = çıxarış sahəsi (lər, 'sol'); % sensorların ədədi dəyərlərini alır və onları daha istifadəyə yararlı edir lbumpout_2 = extractfield (s, 'leftFront');

lbumpout_3 = çıxarış sahəsi (lər, 'leftCenter');

lbumpout_4 = extractfield (s, 'rightCenter');

lbumpout_5 = extractfield (s, 'rightFront');

lbumpout_6 = çıxarış sahəsi (lər, 'sağda');

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % dəyərləri matrisə çevirir

sLbump = sırala (lbout); %sıralanan matris ən aşağı dəyərə çıxarıla bilər

lowLbump = sLbump (1); sürət =.05+(lowLbump)*. Heç bir şey aşkar edilmədikdə sürəti, daha yüksək sürəti təyin etmək üçün yaxın maneələri təmsil edən ən aşağı dəyərdən istifadə edən 005 %.

r.setDriveVelocity (sürət, sürət)

bitmək

Fiziki tamponlar

b = r.getBampers; Çıxış doğru, yalan

bsen_1 = çıxarış sahəsi (b, 'sol')

bsen_2 = çıxarış sahəsi (b, 'sağ')

bsen_3 = çıxarış sahəsi (b, 'ön')

bsen_4 = çıxarış sahəsi (b, 'leftWheelDrop')

bsen_5 = çıxarış sahəsi (b, 'rightWheelDrop')

bumps = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = sum (bums)

əgər tbump> 0 r.setDriveVelocity (0, 0)

bitmək

Uçurum Sensorları

c = r.getCliffSensors %% 2800 təhlükəsiz, başqa su

csen_1 = çıxarış sahəsi (c, 'sol')

csen_2 = çıxarış sahəsi (c, 'sağ')

csen_3 = çıxarış sahəsi (c, 'leftFront')

csen_4 = çıxarış sahəsi (c, 'rightFront')

uçurumlar = [csen_1, csen_2, csen_3, csen_4]

ordcliff = sırala (uçurumlar)

əgər ordcliff (1) <2750

r.setDriveVelocity (0, 0)

uçurum <800

disp 'uçurum'

başqa

disp 'su'

bitmək

r. TurnAngle (45)

bitmək

Addım 2: Məlumat əldə etmək

Fiziki Çarpma Sensorları açıldıqdan sonra, Robot maneənin fotoşəkilini çəkmək üçün Raspberry Pi təyyarəsini tətbiq edəcək. Fotoşəkil çəkdikdən sonra, mətn tanınması istifadə edərək, şəkildə mətn varsa, Robot maneənin nə olduğunu və maneənin nə dediyini təyin edəcək.

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

foto = imread ('imgfromcamera.jpg')

OcrResults = ocr (şəkil)

tanınmışText = ocrResults. Text;

rəqəm;

imshow (şəkil) mətni (220, 0, tanınmışText, 'BackgroundColor', [1 1 1]);

Addım 3: Missiyanı bitirmək

Robot maneənin HOME olduğunu müəyyən etdikdə, missiyasını tamamlayacaq və evdə qalacaq. Missiya başa çatdıqdan sonra, Robot evə qayıtdığını bildirən bir e-poçt xəbərdarlığı göndərəcək və səyahət zamanı çəkdiyi şəkilləri göndərəcək.

E-poçt göndərilməsi

setpref ('İnternet', 'SMTP_Server', 'smtp.gmail.com');

setpref ('İnternet', 'E_mail', '[email protected]'); setpref -dən göndəriləcək % poçt hesabı ('İnternet', 'SMTP_Username', 'göndərən e -poçt daxil edin'); % göndərən istifadəçi adı setpref ('İnternet', 'SMTP_Password', 'göndərən parolunu daxil edin'); % Göndərənlərin şifrəsi

rekvizit = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'doğru'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');

sendmail ('Qəbul e -poçtunu daxil edin', 'Roomba', 'Roomba evə qayıtdı!', 'imgfromcamera.jpg') göndərmək üçün % poçt hesabı

Robot daha sonra bitdi.

Addım 4: Nəticə

Nəticə
Nəticə

Daxil olan MATLAB proqramı, Robotla birlikdə istifadə edilən bütün skriptdən ayrılmışdır. Son qaralamada, tamponların daim işlədiyinə əmin olmaq üçün başlanğıc mərhələsi istisna olmaqla bütün kodu bir müddətlik döngəyə daxil etdiyinizə əmin olun. Bu proqram istifadəçinin ehtiyaclarına uyğun olaraq düzəldilə bilər. Robotumuzun konfiqurasiyası göstərilir.

*Xatırlatma: MATLAB -ın Robot və göyərtədəki Raspberry Pi ilə qarşılıqlı əlaqədə olması üçün roombaInstall alətlər qutusuna ehtiyac olduğunu unutmayın.

Tövsiyə: