Daftar Isi:

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 memanfaatkan MATLAB dan Robot Create2 iRobot, proyek ini akan menjelajahi berbagai area di lokasi yang tidak diketahui. Kami menggunakan sensor pada Robot untuk membantu manuver medan berbahaya. Dengan mendapatkan foto dan video feed dari Raspberry Pi yang terpasang, kami dapat menentukan hambatan yang akan dihadapi Robot, dan akan diklasifikasikan.

Bagian dan Bahan

Untuk proyek ini, Anda akan membutuhkan

-komputer

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

- roombaInstal kotak peralatan

-Robot Buat2 iRobot

-Raspberry Pi dengan Kamera

Langkah 1: Inisialisasi dan Sensor

Inisialisasi dan Sensor
Inisialisasi dan Sensor

Sebelum memulai pemrograman apa pun, kami mengunduh kotak alat roombaInstall, yang memungkinkan akses ke berbagai komponen Robot.

Awalnya, kami membuat GUI untuk menginisialisasi Robot apa pun. Untuk melakukan ini, Anda perlu mengetikkan nomor Robot sebagai input. Ini akan memungkinkan akses untuk menjalankan program kami ke Robot Kami bekerja untuk membuat Robot bermanuver melalui banyak medan yang akan dihadapinya. Kami menerapkan Cliff Sensors, Light Bump Sensors, dan Physical Bump Sensors, dengan menggunakan outputnya untuk menggerakkan Robot untuk mengubah kecepatan dan atau arahnya. Ketika salah satu dari enam Light Bump Sensors mendeteksi suatu objek, nilai yang mereka keluarkan akan berkurang, menyebabkan kecepatan Robot berkurang untuk menghindari tabrakan kecepatan penuh. Ketika Robot akhirnya bertabrakan dengan rintangan, sensor Bump Fisik akan melaporkan nilai yang lebih besar dari nol; karena itu, Robot akan berhenti, sehingga tidak akan ada lagi tabrakan dan lebih banyak fungsi dapat dijalankan. Untuk Cliff Sensor, mereka akan membaca kecerahan area di sekitar mereka. Jika nilainya lebih besar dari 2800, kami menentukan bahwa Robot akan berada di tanah yang stabil dan aman. Tapi, Jika nilainya kurang dari 800, Sensor Tebing akan mendeteksi tebing, segera berhenti agar tidak jatuh. Nilai apa pun di antaranya ditentukan untuk mewakili air dan akan menyebabkan Robot menghentikan aksinya. Dengan menggunakan sensor di atas, kecepatan Robot diubah sehingga kami dapat menentukan dengan lebih baik jika ada bahaya.

Di bawah ini adalah kode (dari MATLAB R2018b)

%% Inisialisasi

dlgPrompts = {'Nomor Kamar'};

dlgTitle = 'Pilih Roomba Anda';

dlgDefault = {''};

opts. Ubah ukuran = 'aktif';

dlgout = inputdlg(dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Buat jendela yang meminta pengguna untuk memasukkan nomor roomba mereka

n=str2ganda(dlgout{1});

r=ruangan(n); % Menginisialisasi Roomba yang ditentukan pengguna %% Penentuan kecepatan dari Light Bump Sensors saat true s=r.getLightBumpers; % dapatkan sensor benturan ringan

lbumpout_1=bidang ekstrak(s, 'kiri'); % mengambil nilai numerik dari sensor dan membuatnya lebih berguna lbumpout_2=extractfield(s, 'leftFront');

lbumpout_3=bidang ekstrak(s, 'kiriTengah');

lbumpout_4=bidang ekstrak(s, 'rightCenter');

lbumpout_5=bidang ekstrak(s, 'rightFront');

lbumpout_6=bidang ekstrak(s, 'kanan');

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

sLbump=sort(lbout); % mengurutkan matriks ke nilai terendah yang dapat diekstraksi

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

r.setDriveVelocity(kecepatan, kecepatan)

akhir

% Bumper Fisik

b=r.getBumper; %Keluaran benar, salah

bsen_1=bidang ekstrak(b, 'kiri')

bsen_2=bidang ekstrak(b, 'kanan')

bsen_3=bidang ekstrak(b, 'depan')

bsen_4=bidang ekstrak(b, 'leftWheelDrop')

bsen_5=bidang ekstrak(b, 'rightWheelDrop')

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

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

akhir

% Sensor Tebing

c=r.getCliffSensors %% 2800 aman, kalau tidak air

csen_1=bidang ekstrak(c, 'kiri')

csen_2=bidang ekstrak(c, 'kanan')

csen_3=bidang ekstrak(c, 'depan kiri')

csen_4=bidang ekstrak(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'

lain

celupkan 'air'

akhir

r. TurnAngle(45)

akhir

Langkah 2: Mendapatkan Data

Setelah Sensor Bump Fisik tersandung, Robot akan mengimplementasikan Raspberry Pi di papan untuk mengambil foto rintangan. Setelah mengambil foto, menggunakan pengenalan teks jika ada teks dalam gambar, Robot akan menentukan apa penghalang dan apa yang dikatakan penghalang.

img = r.getGambar; tampilkan (img);

imwrite(img, 'imgfromcamera.jpg')

foto = imread('imgfromcamera.jpg')

ocrResult = ocr(foto)

dikenaliTeks = ocrResults. Teks;

angka;

imshow(foto) teks(220, 0, teks yang dikenali, 'Warna Latar Belakang', [1 1 1]);

Langkah 3: Menyelesaikan Misi

Ketika Robot menentukan bahwa rintangannya adalah RUMAH, ia akan menyelesaikan misinya dan tinggal di rumah. Setelah menyelesaikan misi, Robot akan mengirimkan e-mail peringatan bahwa ia telah kembali ke rumah, dan akan mengirimkan gambar yang diambil selama perjalanannya.

% Mengirim Email

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

setpref('Internet', 'E_mail', '[email protected]'); % akun email untuk dikirim dari setpref('Internet', 'SMTP_Username', 'masukkan email pengirim'); % nama pengguna pengirim setpref('Internet', 'SMTP_Password', 'masukkan kata sandi pengirim'); % Sandi pengirim

props = 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 penerima', 'Roomba', 'Roomba telah kembali ke rumah!!', 'imgfromcamera.jpg') % akun email untuk dikirim ke

Robot kemudian selesai.

Langkah 4: Kesimpulan

Kesimpulan
Kesimpulan

Program MATLAB yang disertakan terpisah dari keseluruhan script yang digunakan dengan Robot. Dalam draf akhir, pastikan untuk memasukkan semua kode, kecuali untuk langkah inisialisasi, ke dalam loop while untuk memastikan bahwa bumper terus berjalan. Program ini dapat diedit sesuai dengan kebutuhan pengguna. Konfigurasi Robot kami ditampilkan.

*Pengingat: Jangan lupa bahwa toolbox roombaInstall diperlukan agar MATLAB dapat berinteraksi dengan Robot dan Raspberry Pi yang terpasang.

Direkomendasikan: