Isi kandungan:
- Langkah 1: Bahan dan Bekalan:
- Langkah 2:
- Langkah 3: Menyusun "Taman" Anda
- Langkah 4: Menulis Kod
- Langkah 5: Salin Kod
Video: Bot Pembantu Taman Roomba: 8 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
Kiara Myers, Ahmad Alghadeer, dan Madison Tippet
Tujuan:
Instruksional ini akan mengajar anda cara memprogram Bot Roomba, menggunakan MATLAB, untuk menavigasi taman, mengesan buah / sayur berbentuk bulat yang cukup matang untuk dipetik berdasarkan ukurannya. Robot ini juga menghantar e-mel kepada anda, memberitahu anda berapa buah yang siap dipetik dan jalan di mana ia dilalui.
Ciri-ciri:
- Menggunakan sensor cahaya untuk mengesan dinding dan berpusing sedikit agar tidak memukulnya
- Menggunakan sensor bump untuk mematahkan program ketika memukul batu di hujung kebun
- Menggunakan pemprosesan gambar untuk mengesan bulatan di kebun dan kemudian menentukan jejarinya
- Menggunakan sensor tebing untuk mengesan pita berwarna yang menunjukkan kehadiran buah
Langkah 1: Bahan dan Bekalan:
- Satu Komputer riba
- MATLAB 2017
- Pembersih Vakum Roomba
- Pai raspberi
- Blok kayu
- Kertas putih
- Kertas Hitam
- Pita berwarna / jalur nipis kertas berwarna
- Batu Besar
Langkah 2:
Langkah 3: Menyusun "Taman" Anda
- Ambil kertas hitam anda dan potong bulatan dengan pelbagai saiz
-
Ketatkan lingkaran hitam ini ke atas kertas putih yang besar
Perbezaan ini akan diperlukan semasa mengesan buah
-
Gunakan sekatan kayu anda untuk membina jalan kebun seperti labirin agar robot anda dapat menavigasi
Kami memilih jalan berbentuk U seperti gambar di atas
- Di hujung kebun anda, tambahkan batu atau pintu atau objek lain agar robot anda mengetahui ia sudah selesai
-
Pita kertas putih anda dengan bulatan ke dinding taman
Kami menggunakan baldi untuk merakamnya kerana dinding kami terlalu pendek untuk kamera
- Letakkan pita berwarna / jalur nipis kertas berwarna di tanah di hadapan buah
Langkah 4: Menulis Kod
Melayari Taman
Menggunakan Sensor Bump: Untuk menjalankan program, kami meletakkan pengekodan dalam pernyataan sementara yang melingkari pelbagai pernyataan jika pernyataan sehingga kodnya rosak. Sekiranya salah satu bumper terkena, itu akan menghasilkan nilainya sama dengan benar (yang di Boolean adalah nilai 1). Pernyataan if digunakan untuk memecahkan kod apabila salah satu nilainya sama dengan 1.
Menggunakan Cliff Sensors: Dalam pernyataan sementara, kami menggunakan pernyataan if untuk memberitahu Roomba kapan ia tiba di lokasi kilang. Roomba mengesan pita berwarna di lantai dengan memeriksa ambang merah yang diambil oleh sensor tebing. Sekiranya sensor tebing kiri atau kanan mengesan warna dengan ambang yang lebih besar daripada permukaan tanah, maka ia akan menghentikan robot selama 2 saat (menggunakan perintah jeda). Selama 2 saat ini, Roomba akan mengambil dan memaparkan gambar buah. Dengan menggunakan perintah imfindcircles, tetapkan jarak untuk jari-jari lingkaran anda, dan Roomba anda akan menemui buah yang disebut.
Menggunakan Pemprosesan Imej: Dalam pernyataan if, kami menyertakan pernyataan if yang lain yang mengatakan: jika jari-jari yang dikesan, radii3, lebih besar daripada atau sama dengan keperluan minimum buah masak kami, r1 (anda memutuskan ini), kemudian hitung dan tampilkan Roomba berapa buah yang siap dan belok untuk terus melalui kebun. Sekiranya tidak, giliran untuk terus melalui kebun. Catatan: anda mungkin perlu menyesuaikan sudut yang anda putar kerana setiap Roomba berbeza
Menggunakan Light Bumpers: Dalam pernyataan if lain, bumper cahaya dianalisis untuk memastikan tidak ada yang menjadi lebih besar daripada ambang yang ditentukan kami. Sekiranya bumper cahaya kiri, kanan, kiri, tengah kanan, depan kiri, atau kanan depan berada di atas ambang pintu, maka Roomba akan berpusing sedikit pada sudut yang sesuai untuk mengelakkan memukul dinding. Oleh itu, menavigasi labirin.
Selebihnya kod digunakan untuk merancang jalan yang diambil oleh Roomba dan kemudian menghantar hasilnya ke e-mel anda
Langkah 5: Salin Kod
Tujuan: Berdasarkan ukurannya, roomba akan melalui kebun dan membezakan sayur-sayuran / buah-buahan yang siap dipetik. % Input: Sensor Lightbump, Sensor Cliff, Bump sensor, gambar dari kamera Kod itu pecah apabila roomba menabrak% objek, menghantar angkasawan e-mel mengenai berapa buah yang siap untuk dipetik dan pemetaan pergerakan roomba. % Penggunaan: Jika dan semasa pernyataan, merancang arahan, kod e-mel dari MATLAB
k = 0
tic
timerVal = tic
walaupun benar
v =.2; % halaju r.setDriveVelocity (v, v);% roomba maju L = r.getLightBumpers; LC = L.leftCenter; Rr = L. betul; Lf = L.kiri; RC = L.rightCenter; LF = L.leftFront; RF = L.rightFront; S = 75; ambang%. RTH = 30; Ambang merah tinggi RTL = 10; Ambang merah rendah B = r.getBumpers S = r.getCliffSensors; r1 = 24; r3 = 10; PL1 = 1800; sekiranya S.leftFront> PL1 || S.rightFront> PL1% mengesan jika warna di atas tanah melebihi ambang r.stop jeda (2) berlaluTime = toc (timerVal-2) tic timerVal = tic% jeda selama 2 saat img = r.getImage; % take image imshow (img)% display image [center3, radii3] = imfindcircles (img, [30 50], 'ObjectPolarity', 'dark', 'Sensitivity', 0.9); h = lingkaran lingkaran (pusat3, jejari3); % cari bulatan jejari w / dalam julat yang ditentukan dalam gambar jika radii3> = r1 T = 1 k = k + 1 dist1 = 0.2. * berlaluSaat% Sekiranya jejari yang dikesan lebih besar daripada atau sama dengan minimum% keperluan buah masak, maka Roomba menghitung buah ini jika radii3 <= r3 T = 0 yang lain T = 0 dist2 = 0.2. * berlaluTime% Sekiranya tidak, maka ia tidak akan mengira hujung buahnya
jika T == 1 r.setLEDDigits (num2str (k)) r.beep r.beep r.beep r.turnAngle (78)% Sekiranya buah dikesan, maka tunjukkan nombor di Roomba,% buat bising, dan putar elseif T == 2 r.turnAngle (78)% Sekiranya 2 buah dikesan, maka belok untuk meneruskan melalui% kebun lain jika LC> Q r.stop r.turnAngle (-7) elseif RC> Q r.stop r.turnAngle (7) elseif LF> Q r.stop r.turnAngle (-7) otherif RF> Q r.stop r. turnAngle (7) elseif Lf> Q r.stop r.turnAngle (-7) elseif Rr> Q r.stop r.turnAngle (7) akhir% Sekiranya ada nilai bumper cahaya melebihi ambang, maka% Roomba akan berpusing sedikit ke arah yang sesuai untuk mengelakkan% memukul dinding
jika B.right == 1 || B.kiri == 1 || B.front == 1 dist3 = 0.2. * Berlalu Masa r.stop r.beep ('F # * 2, F # * 2, c, F # * 2, F # * 2') r.turnAngle (360)% Sekiranya ada bilah dipukul, kemudian roomba memainkan bunyi, berputar,% dan memecahkan kodnya
akhir rehat
hamburan akhir (0,533, 0, '^') tahan pada penyebaran (0,533, dist1, '<') tahan pada hamburan (-dist2, dist1, 'v') tahan pada penyebaran (-dist2, 0, 'd') saveas (gcf, 'Movement.png')
kmsg = num2str (k) mail = '[email protected]' kata laluan = 'Srsora123 #' host = 'smtp.gmail.com' port = '465'
setpref ('Internet', 'E_mail', mel); setpref ('Internet', 'SMTP_Server', host) alat peraga = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mel); props.setProperty ('mail.smtp.host', hos); props.setProperty ('mail.smtp.port', port); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'benar'); props.setProperty ('mail.smtp.socketFactory.port', port); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (mel, 'Hello Astronaut! Terdapat banyak buah di kebun', kmsg, {'movement.png'})
Disyorkan:
WLED (pada ESP8266) + IFTTT + Pembantu Google: 5 Langkah
WLED (pada ESP8266) + IFTTT + Google Assistant: Tutorial ini akan memulakan anda menggunakan IFTTT dan Google Assistant untuk WLED pada ESP8266. Untuk menyiapkan WLED & ESP8266, ikuti panduan ini di tynick: https: //tynick.com/blog/11-03-2019/getting-started..Cari Aircookie untuk perisian yang hebat
Pembantu Cuaca DIY: 6 Langkah
Pembantu Cuaca DIY: Kali terakhir saya menggunakan ESP32 untuk membuat stesen siaran cuaca, yang dapat menyiarkan cuaca semasa. Sekiranya anda berminat, anda boleh menyemak arahan sebelumnya. Sekarang saya ingin membuat versi yang ditingkatkan, bahawa saya akan menetapkan bandar untuk memeriksa
Matrik LED Terkawal Pembantu Google!: 7 Langkah (dengan Gambar)
Matrik LED terkawal Pembantu Google!: Dalam tutorial ini, saya akan menunjukkan kepada anda bagaimana anda boleh membuat Matriks LED Terkawal Pembantu Google yang boleh anda kendalikan borang di mana sahaja menggunakan telefon pintar, Jadi mari kita mulakan
Permainan Bot Bot Bot Laser: 4 Langkah (dengan Gambar)
Permainan Bot Bot Bot Laser: Ini adalah permainan di mana anda mengarahkan penunjuk laser ke perut robot untuk " melumpuhkan " ia. Apabila anda terkena titik lemah bot, matanya menjadi gelap dan anda mendengar bunyi laser. Setelah kelima-lima bot dilumpuhkan, permainan akan diset semula dan bot kembali hidup satu
PEMBANTU KAWALAN GOOGLE PEMBANTU MENGGUNAKAN NODEMCU: 9 Langkah
GOOGLE ASSISTANT CONTROLLED SWITCH MENGGUNAKAN NODEMCU: Bukankah lebih baik untuk menghidupkan atau mematikan sesuatu dengan bantuan pembantu Google .. !!! Oleh itu, dalam Instructables ini, saya akan menunjukkan cara mengawal sebarang peralatan elektrik dengan bantuan pembantu Google , sama seperti Alexa Amazon. Banyak peranti komersial