Isi kandungan:

Roomba Explorer: 4 Langkah
Roomba Explorer: 4 Langkah

Video: Roomba Explorer: 4 Langkah

Video: Roomba Explorer: 4 Langkah
Video: Робот-пылесос: как правильно пользоваться 2024, November
Anonim
Penjelajah Roomba
Penjelajah Roomba

Dengan menggunakan Robot Buat2 MATLAB dan iRobot, projek ini akan meneroka pelbagai kawasan di lokasi yang tidak diketahui. Kami menggunakan sensor pada Robot untuk membantu menggerakkan kawasan yang berbahaya. Dengan mendapatkan gambar dan suapan video dari Raspberry Pi yang dilampirkan, kami dapat menentukan rintangan yang akan dihadapi oleh Robot, dan mereka akan diklasifikasikan.

Bahagian dan Bahan

Untuk projek ini, anda akan memerlukan

-komputer

-MATLAB versi terbaru (MATLAB R2018b digunakan untuk projek ini)

- kotak alat roombaInstall

-Robot Buat2 Robot

-Raspberry Pi dengan Kamera

Langkah 1: Permulaan dan Sensor

Permulaan dan Sensor
Permulaan dan Sensor

Sebelum memulakan sebarang pengaturcaraan, kami memuat turun kotak alat roombaInstall, yang membolehkan akses ke komponen Robot yang berbeza.

Pada mulanya, kami membuat GUI untuk menginisialisasi Robot apa pun. Untuk melakukan ini, anda perlu memasukkan nombor Robot sebagai input. Ini akan membolehkan akses untuk menjalankan program kami ke Robot Kami berusaha mendapatkan Robot untuk bergerak melalui banyak medan yang akan dihadapinya. Kami menerapkan Sensor Cliff, Light Bump Sensor, dan Physical Bump Sensor, dengan menggunakan outputnya untuk menjelajah Robot untuk mengubah kelajuan dan atau arahnya. Apabila salah satu dari enam Sensor Bump Cahaya mendeteksi objek, nilai yang dikeluarkannya akan berkurang, menyebabkan kecepatan Robot menurun untuk menghindari perlanggaran kecepatan penuh. Apabila Robot akhirnya bertembung dengan halangan, sensor Physical Bump akan melaporkan nilai lebih besar daripada sifar; kerana ini, Robot akan berhenti, jadi tidak akan ada lagi perlanggaran dan lebih banyak fungsi dapat dilakukan. Untuk Cliff Sensors, mereka akan membaca kecerahan kawasan di sekitarnya. Sekiranya nilainya lebih besar dari 2800, kami menentukan bahawa Robot akan berada di landasan yang stabil dan selamat. Tetapi, jika nilainya kurang dari 800, Cliff Sensor akan mengesan tebing, berhenti serta-merta agar tidak jatuh. Apa-apa nilai di antara ditentukan untuk mewakili air dan akan menyebabkan Robot menghentikan tindakannya. Dengan menggunakan sensor di atas, kelajuan Robot diubah memungkinkan kita untuk menentukan dengan lebih baik apakah ada bahaya.

Berikut adalah kod (dari MATLAB R2018b)

%% Permulaan

dlgPrompts = {'Roomba Number'};

dlgTitle = 'Pilih Roomba Anda';

dlgDefaults = {''};

opts. Resize = 'on';

dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts)% Buat tetingkap yang mendorong pengguna memasukkan nombor roomba mereka

n = str2double (dlgout {1});

r = roomba (n); % Memulakan pengguna yang ditentukan Roomba %% Penentuan kelajuan dari Light Bump Sensors sedangkan true s = r.getLightBumpers; % mendapat sensor lebam cahaya

lbumpout_1 = extractfield (s, 'kiri'); % mengambil nilai berangka sensor dan menjadikannya lebih berguna lbumpout_2 = extractfield (s, 'leftFront');

lbumpout_3 = extractfield (s, 'leftCenter');

lbumpout_4 = extractfield (s, 'rightCenter');

lbumpout_5 = extractfield (s, 'rightFront');

lbumpout_6 = extractfield (s, 'kanan');

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6]% menukar nilai menjadi matriks

sLbump = sort (lbout); % menyusun matriks hingga nilai terendah dapat diekstrak

lowLbump = sLbump (1); speed =.05 + (lowLbump) *. 005% menggunakan nilai terendah, yang mewakili rintangan dekat, untuk menentukan kelajuan, kelajuan lebih tinggi apabila tidak ada yang dikesan

r.setDriveVelocity (kelajuan, kelajuan)

akhir

% Bumper Fizikal

b = r.getBumpers; % Keluaran benar, salah

bsen_1 = ladang ekstrak (b, 'kiri')

bsen_2 = ladang ekstrak (b, 'kanan')

bsen_3 = ladang ekstrak (b, 'depan')

bsen_4 = extractfield (b, 'leftWheelDrop')

bsen_5 = extractfield (b, 'rightWheelDrop')

bumps = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = jumlah (bum)

jika tbump> 0 r.setDriveVelocity (0, 0)

akhir

% Sensor Tebing

c = r.getCliffSensors %% 2800 selamat, jika tidak air

csen_1 = ladang ekstrak (c, 'kiri')

csen_2 = ladang ekstrak (c, 'kanan')

csen_3 = extractfield (c, 'leftFront')

csen_4 = extractfield (c, 'kananFront')

tebing = [csen_1, csen_2, csen_3, csen_4]

ordcliff = sort (tebing)

jika ordcliff (1) <2750

r.setDriveVelocity (0, 0)

jika tebing <800

disp 'tebing'

yang lain

buang 'air'

akhir

r. TurnAngle (45)

akhir

Langkah 2: Mendapatkan Data

Setelah Sensor Bump Fizikal tersekat, Robot akan menggunakan Raspberry Pi di dalamnya untuk mengambil gambar halangan. Setelah mengambil gambar, menggunakan pengecaman teks jika ada teks dalam gambar, Robot akan menentukan apa halangan dan apa yang dikatakan oleh halangan tersebut.

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

foto = imread ('imgfromcamera.jpg')

ocrResults = ocr (foto)

diiktirafTeks = ocrResults. Text;

angka;

teks imshow (foto) (220, 0, teks yang dikenali, 'BackgroundColor', [1 1 1]);

Langkah 3: Menamatkan Misi

Apabila Robot menentukan bahawa halangan itu adalah RUMAH, ia akan menyelesaikan misinya dan tinggal di rumah. Setelah menyelesaikan misi, Robot akan menghantar amaran e-mel bahawa ia telah pulang, dan ia akan menghantar gambar yang diambil sepanjang perjalanannya.

% Menghantar E-mel

setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com');

setpref ('Internet', 'E_mail', '[email protected]'); % akaun mel untuk dihantar dari setpref ('Internet', 'SMTP_Username', 'masukkan e-mel pengirim'); % pengirim nama pengguna setpref ('Internet', 'SMTP_Password', 'masukkan kata laluan pengirim'); % Kata laluan pengirim

alat peraga = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'benar'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');

sendmail ('Masukkan email yang diterima', 'Roomba', 'Roomba telah pulang !!', 'imgfromcamera.jpg')% akaun mel untuk dihantar ke

Robot kemudian selesai.

Langkah 4: Kesimpulannya

Kesimpulannya
Kesimpulannya

Program MATLAB yang disertakan dipisahkan dari keseluruhan skrip yang digunakan dengan Robot. Dalam draf akhir, pastikan untuk memasukkan semua kod, kecuali langkah permulaan, ke dalam gelung sementara untuk memastikan bumper terus berjalan. Program ini dapat diedit agar sesuai dengan keperluan pengguna. Konfigurasi Robot kami ditunjukkan.

* Peringatan: Jangan lupa bahawa kotak alat roombaInstall diperlukan agar MATLAB berinteraksi dengan Robot dan Raspberry Pi di dalamnya.

Disyorkan: