Isi kandungan:

Mars Roomba: 6 Langkah
Mars Roomba: 6 Langkah

Video: Mars Roomba: 6 Langkah

Video: Mars Roomba: 6 Langkah
Video: Could we actually live on Mars? - Mari Foroutan 2024, November
Anonim
Mars Roomba
Mars Roomba

Instructable ini akan membimbing anda ke arah mengendalikan bot vakum Roomba yang dikendalikan Raspberry Pi. Sistem operasi yang akan kita gunakan adalah melalui MATLAB.

Langkah 1: Bekalan

Apa yang perlu anda kumpulkan untuk melaksanakan projek ini:

  • Bot pembersih vakum iRobot's Create2 Roomba
  • Pai raspberi
  • Kamera Raspberry Pi
  • Versi MATLAB terkini
  • Kotak alat pemasangan Roomba untuk MATLAB
  • Aplikasi MATLAB untuk peranti selular

Langkah 2: Penyataan Masalah

Penyataan Masalah
Penyataan Masalah

Kami ditugaskan untuk menggunakan MATLAB untuk mengembangkan rover yang dapat digunakan di Mars untuk membantu para saintis mengumpulkan data planet. Fungsi yang kami hadapi dalam proyek kami adalah alat kawalan jauh, pengecaman dampak objek, pengecaman air, pengecaman hidup, dan pemrosesan gambar. Untuk mencapai prestasi ini, kami membuat kod menggunakan perintah kotak alat Roomba untuk memanipulasi banyak fungsi Create2 Roomba iRobot.

Langkah 3: Alat Kawalan Jauh Bluetooth

Alat Kawalan Jauh Bluetooth
Alat Kawalan Jauh Bluetooth

Slaid ini akan menerangkan kod untuk mengawal pergerakan Roomba menggunakan keupayaan Bluetooth pada peranti telefon pintar anda. Untuk memulakan, muat turun aplikasi MATLAB ke telefon pintar anda dan log masuk ke akaun Mathworks anda. Setelah log masuk, pergi ke "lebih banyak", "tetapan", dan sambungkan ke komputer anda menggunakan alamat IP-nya. Setelah disambungkan, kembali ke "lebih banyak" dan pilih "sensor." Ketuk sensor ketiga di bar alat atas layar, dan ketuk mula. Sekarang, telefon pintar anda adalah alat kawalan jauh!

Kodnya adalah seperti berikut:

sementara 0 == 0

jeda (.5)

PhoneData = M. Orientasi;

Azi = DataData (1);

Pitch = DataData (2);

Sebelah = DataData (3);

lebam = r.getBumpers;

jika Sebelah> 80 || Sebelah <-80

r.berhenti

r. beep ('C, E, G, C ^, G, E, C')

rehat

otherif Side> 20 && Side <40

r.turnAngle (-5);

otherif Side> 40

r.turnAngle (-25);

lain-lain jika sisi-40

r.turnAngle (5);

otherif Sebelah <-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: Pengiktirafan Kesan

Pengiktirafan Kesan
Pengiktirafan Kesan

Fungsi lain yang kami laksanakan adalah untuk mengesan kesan Roomba ke dalam objek dan kemudian membetulkan jalannya yang sekarang. Untuk melakukan ini, kita harus menggunakan syarat dengan pembacaan dari sensor bumper untuk menentukan apakah objek disambar. Sekiranya robot memukul objek, ia akan mundur 0,2 meter, dan berputar pada sudut yang ditentukan oleh bumper mana yang dipukul. Setelah item dipukul, menu muncul memaparkan kata "oof."

Kod ditunjukkan di bawah:

sementara 0 == 0

lebam = r.getBumpers;

r.setDriveVelocity (.1)

jika bumps.left == 1

kotak msg ('Oof!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.front == 1

kotak msg ('Oof!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (90)

r.setDriveVelocity (.2)

elseif bumps.right == 1

kotak msg ('Oof!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

elseif bumps.leftWheelDrop == 1

kotak msg ('Oof!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.rightWheelDrop == 1

kotak msg ('Oof!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

akhir

akhir

Langkah 5: Pengiktirafan Hidup

Pengiktirafan Hidup
Pengiktirafan Hidup

Kami mengodkan sistem pengecaman hidup untuk membaca warna objek di hadapannya. Tiga jenis kehidupan yang kita kodkan adalah tumbuhan, air, dan makhluk asing. Untuk melakukan ini, kami mengodkan sensor untuk mengira nilai purata merah, biru, hijau, atau putih. Nilai-nilai ini dibandingkan dengan ambang yang ditetapkan secara manual untuk menentukan warna yang dilihat kamera. Kod ini juga akan memplot jalan ke objek dan membuat peta.

Kodnya adalah seperti berikut:

t = 10;

i = 0;

sementara t == 10

img = r.getImage; imshow (img)

jeda (0.167)

i = i + 1;

red_mean = min (min (img (:,:, 1)));

blue_mean = min (min (img (:,:, 3)));

green_mean = min (min (img (:,:, 2)));

white_mean = (blue_mean + green_mean + red_mean) / 3; % mahukan nilai ini lebih kurang 100

nine_plus_ten = 21;

green_threshold = 125;

blue_threshold = 130;

white_threshold = 124;

red_threshold = 115;

sementara sembilan_plus_ten == 21% hijau - hidup

jika green_mean> green_threshold && blue_mean <blue_threshold && red_mean <red_threshold

r.moveDistance (-. 1)

a = msgbox ('kemungkinan sumber kehidupan dijumpai, lokasi diplot');

berhenti sebentar (2)

padam (a)

[y2, Fs2] = audioread ('z_speak2.wav');

bunyi (y2, Fs2)

berhenti sebentar (2)

% tanaman = r.getImage; % imshow (tanaman);

% jimat ('plant_img.mat', plant ');

% lokasi plot dalam warna hijau

i = 5;

rehat

yang lain

nine_plus_ten = 19;

akhir

akhir

nine_plus_ten = 21;

sementara Nine_plus_ten == 21% biru - woder

jika blue_mean> blue_threshold && green_mean <green_threshold && white_mean <white_threshold && red_mean <red_threshold

r.moveDistance (-. 1)

a = msgbox ('sumber air telah dijumpai, lokasi diplot');

berhenti sebentar (2)

padam (a)

[y3, Fs3] = audioread ('z_speak3.wav');

bunyi (y3, Fs3);

% woder = r.getImage; % imshow (woder)

% jimat ('water_img.mat', woder)

% lokasi plot dengan warna biru

i = 5;

rehat

yang lain

nine_plus_ten = 19;

akhir

akhir

nine_plus_ten = 21;

sementara Nine_plus_ten == 21% putih - monkaS alien

jika white_mean> white_threshold && blue_mean <blue_threshold && green_mean <green_threshold

[y5, Fs5] = audioread ('z_speak5.wav');

bunyi (y5, Fs5);

berhenti seketika (3)

r.setDriveVelocity (0,.5)

[ys, Fss] = audioread ('z_scream.mp3');

bunyi (ys, Fss);

berhenti sebentar (3)

r.berhenti

% alien = r.getImage; % imshow (asing);

% simpan ('alien_img.mat', alien);

i = 5;

rehat

yang lain

nine_plus_ten = 19;

akhir

akhir

jika saya == 5

a = 1; % memusingkan sudut

t = 9; % menamatkan gelung besar

i = 0;

akhir

akhir

Langkah 6: Jalankan

Setelah semua kod ditulis, gabungkan semuanya menjadi satu fail dan voila! Bot Roomba anda kini akan berfungsi sepenuhnya dan beroperasi seperti yang diiklankan! Walau bagaimanapun, kawalan Bluetooth harus berada dalam fail yang berasingan atau dipisahkan dari kod yang lain dengan %%.

Selamat menggunakan robot anda !!

Disyorkan: