Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Instruksi ini akan memandu Anda ke arah pengoperasian bot vakum Roomba yang dikendalikan Raspberry Pi. Sistem operasi yang akan kita gunakan adalah melalui MATLAB.
Langkah 1: Persediaan
Apa yang perlu Anda kumpulkan untuk melaksanakan proyek ini:
- bot penyedot debu Create2 Roomba dari iRobot
- Raspberry Pi
- Kamera Raspberry Pi
- Versi terbaru MATLAB
- Kotak alat penginstalan Roomba untuk MATLAB
- Aplikasi MATLAB untuk perangkat seluler
Langkah 2: Pernyataan Masalah
Kami ditugaskan untuk menggunakan MATLAB untuk mengembangkan penjelajah yang dapat digunakan di Mars untuk membantu para ilmuwan dalam mengumpulkan data planet. Fungsi yang kami bahas dalam proyek kami adalah kendali jarak jauh, pengenalan dampak objek, pengenalan air, pengenalan kehidupan, dan pemrosesan gambar. Untuk mencapai prestasi ini, kami membuat kode menggunakan perintah kotak peralatan Roomba untuk memanipulasi banyak fungsi dari Create2 Roomba iRobot.
Langkah 3: Kendali Jarak Jauh Bluetooth
Slide ini akan memandu kode untuk mengontrol pergerakan Roomba menggunakan kemampuan Bluetooth perangkat smartphone Anda. Untuk memulai, unduh aplikasi MATLAB ke ponsel cerdas Anda dan masuk ke akun Mathworks Anda. Setelah masuk, buka "lebih", "pengaturan", dan sambungkan ke komputer Anda menggunakan alamat IP-nya. Setelah terhubung, kembali ke "lebih" dan pilih "sensor." Ketuk sensor ketiga di bilah alat atas layar, dan ketuk mulai. Sekarang, smartphone Anda adalah remote control!
Kodenya adalah sebagai berikut:
sedangkan 0 == 0
jeda(.5)
PhoneData = M. Orientasi;
Azi = Data Telepon(1);
Pitch = Data Telepon(2);
Samping = PhoneData(3);
benjolan = r.getBumper;
jika Sisi>80 || Sisi<-80
r.stop
r.bip('C, E, G, C^, G, E, C')
merusak
elseif Sisi>20 && Sisi<40
r.turnAngle(-5);
elseif Sisi> 40
r.turnAngle(-25);
elseif Sisi-40
r.turnAngle(5);
sisi lain jika <-40
r.turnAngle(25);
akhir
jika Pitch >10 && Pitch<35
r.moveDistance(.03)
elseif Pitch>-35 && Pitch<-10
r.moveDistance(-.03)
akhir
akhir
Langkah 4: Pengenalan Dampak
Fungsi lain yang kami terapkan adalah mendeteksi dampak Roomba ke dalam objek dan kemudian memperbaiki jalurnya saat ini. Untuk melakukan ini, kami harus menggunakan kondisional dengan pembacaan dari sensor bumper untuk menentukan apakah suatu objek dipukul. Jika robot menabrak objek, ia akan mundur sejauh.2 meter, dan berputar pada sudut yang ditentukan oleh bumper mana yang dipukul. Setelah item dipukul, menu muncul menampilkan kata "oof."
Kode ditunjukkan di bawah ini:
sedangkan 0 == 0
benjolan = r.getBumper;
r.setDriveVelocity(.1)
jika terbentur.kiri == 1
msgbox('Aduh!');
r.moveDistance (-0,2)
r.setTurnVelocity(.2)
r.turnAngle (-35)
r.setDriveVelocity(.2)
elseif bumps.front == 1
msgbox('Aduh!');
r.moveDistance (-0,2)
r.setTurnVelocity(.2)
r.turnAngle(90)
r.setDriveVelocity(.2)
elseif bumps.right == 1
msgbox('Aduh!');
r.moveDistance (-0,2)
r.setTurnVelocity(.2)
r.turnAngle(35)
r.setDriveVelocity(.2)
elseif bumps.leftWheelDrop ==1
msgbox('Aduh!');
r.moveDistance (-0,2)
r.setTurnVelocity(.2)
r.turnAngle (-35)
r.setDriveVelocity(.2)
elseif bumps.rightWheelDrop ==1
msgbox('Aduh!');
r.moveDistance (-0,2)
r.setTurnVelocity(.2)
r.turnAngle(35)
r.setDriveVelocity(.2)
akhir
akhir
Langkah 5: Pengakuan Kehidupan
Kami mengkodekan sistem pengenalan kehidupan untuk membaca warna objek di depannya. Tiga jenis kehidupan yang kami kodekan adalah tumbuhan, air, dan alien. Untuk melakukan ini, kami mengkodekan sensor untuk menghitung nilai rata-rata merah, biru, hijau, atau putih. Nilai-nilai ini dibandingkan dengan ambang batas yang ditetapkan secara manual untuk menentukan warna yang dilihat kamera. Kode juga akan memplot jalur ke objek dan membuat peta.
Kodenya adalah sebagai berikut:
t = 10;
saya = 0;
sedangkan t == 10
img = r.getGambar; tampilkan (img)
jeda(0.167)
saya = saya + 1;
red_mean = mean(rata-rata(img(:,:, 1)));
blue_mean = mean(rata-rata(img(:,:, 3)));
green_mean = mean(rata-rata(img(:,:, 2)));
white_mean = (blue_mean + green_mean + red_mean) / 3; %ingin nilai ini kira-kira 100
sembilan_plus_ten = 21;
green_threshold = 125;
ambang_biru = 130;
ambang_putih = 124;
ambang_merah = 115;
sementara nine_plus_ten == 21 %hijau - hidup
if green_mean > green_threshold && blue_mean < blue_threshold && red_mean < red_threshold
r.moveDistance(-.1)
a = msgbox('kemungkinan sumber kehidupan ditemukan, lokasi diplot');
jeda (2)
hapus (a)
[y2, Fs2] =audioread('z_speak2.wav');
suara (y2, Fs2)
jeda (2)
%tanaman = r.getImage; %imshow(tanaman);
%save('plant_img.mat', tanam');
%plot lokasi berwarna hijau
saya = 5;
merusak
lain
sembilan_plus_ten = 19;
akhir
akhir
sembilan_plus_ten = 21;
sementara nine_plus_ten == 21 %biru - heran
if blue_mean > blue_threshold && green_mean < green_threshold && white_mean < white_threshold && red_mean < red_threshold
r.moveDistance(-.1)
a = msgbox('sumber air telah ditemukan, lokasi diplot');
jeda (2)
hapus (a)
[y3, Fs3] =audioread('z_speak3.wav');
suara(y3, Fs3);
%woder = r.getImage; %imshow(mengherankan)
%save('water_img.mat', woder)
%plot lokasi dengan warna biru
saya = 5;
merusak
lain
sembilan_plus_ten = 19;
akhir
akhir
sembilan_plus_ten = 21;
sementara nine_plus_ten == 21 %putih - alien monkaS
if white_mean > white_threshold && blue_mean < blue_threshold && green_mean < green_threshold
[y5, Fs5] =audioread('z_speak5.wav');
suara(y5, Fs5);
jeda(3)
r.setDriveVelocity(0,.5)
[ys, Fss] =audioread('z_scream.mp3');
suara(ys, Fss);
jeda(3)
r.stop
% alien = r.getImage; %imshow(alien);
% save('alien_img.mat', alien);
saya = 5;
merusak
lain
sembilan_plus_ten = 19;
akhir
akhir
jika saya == 5
a = 1; % putaran sudut
t = 9; %mengakhiri putaran besar
saya = 0;
akhir
akhir
Langkah 6: Jalankan
Setelah semua kode ditulis, gabungkan semuanya menjadi satu file dan voila! Bot Roomba Anda sekarang akan berfungsi penuh dan beroperasi seperti yang diiklankan! Namun, kontrol Bluetooth harus berada dalam file terpisah atau terpisah dari kode lainnya dengan %%.
Nikmati menggunakan robot Anda!!