Daftar Isi:
- Langkah 1: Persediaan
- Langkah 2: Kembangkan Coding untuk Memuaskan Hasil yang Diinginkan
- Langkah 3: Pengujian
- Langkah 4: Amati Output Visual
Video: IRobot Create-Mars Expedition Rover Mark I: 4 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:57
Instruksi ini akan mengajari Anda cara mengatur iRobot Create dengan menggunakan pengkodean MatLab. Robot Anda akan memiliki kemampuan untuk mencari mineral dengan membedakan bentuk, manuver medan kasar melalui penggunaan sensor tebing, dan memiliki kemampuan untuk dikontrol secara manual melalui umpan langsung.
Langkah 1: Persediaan
Untuk proyek ini, Anda memerlukan iRobot Create, yang merupakan versi penyedot debu robot Roomba yang dapat diprogram. Robot dilengkapi dengan semua sensor yang diperlukan untuk proyek ini, khususnya sensor benturan, sensor tebing, dan sensor "Light Bump". Anda juga memerlukan Raspberry Pi dan kamera video, yang digunakan untuk komunikasi nirkabel, pemrograman langsung, dan umpan video langsung. Terakhir, Anda memerlukan dudukan cetak 3D untuk Raspberry Pi dan kamera.
Langkah 2: Kembangkan Coding untuk Memuaskan Hasil yang Diinginkan
Setelah Anda menghubungkan Roomba Anda, Anda perlu membuat kode Matlab yang akan memberikan output yang Anda inginkan setelah input yang Anda inginkan.
Kodenya bisa dilihat di sini:
%Roomba Proyek%Brenten Arnold (barnol15); Julianne Korn (qdp218); Mike Heal(mheal) %4/11/19 %Masalah Deskripsi: Buat rover untuk membantu manusia selama %exploration/habitation of mars. %Metode solusi: Cari bahan organik (hijau) melalui penggunaan % bumper ringan, sensor tebing, dan kamera untuk memeriksa bahan organik. Izinkan %penjelajah menavigasi medan kasar melalui penggunaan bemper, sensor %tebing, dan sensor ketinggian roda. Memungkinkan manusia untuk mengontrol rover dari %jarak aman dan mencari mineral secara manual. pilihan = {'LIFE', 'TERRAIN KASAR', 'USER CONTROL'}; %Tiga opsi dalam menu dialog Pengaturan = menu('', pilihan) jika Pengaturan>0 %Jika opsi yang dipilih meminta konfirmasi pengguna, pilihan2 = {'Ya', 'Tidak'} %Buat larik sel untuk "ya" atau "Tidak " choice Confirm = menu(['Anda memilih mode "' choice{Setting} '".'], options2) %Konfirmasi pilihan pengaturan pengguna jika Konfirmasi==1 jika Pengaturan==1 %Periksa apakah pengaturan "LIFE" dipilih i =0 while i==0 r.setLEDDigits(num2str('LIFE')) %Tampilkan 'LIFE' pada LED untuk i=1:100 r.setDriveVelocity(0.05) %Pindahkan roomba ke depan pada 0,05 m/sy = r.getCliffSensors %Ambil dan simpan nilai sensor tebing dalam struktur sel "y" l = r.getLightBumpers %Ambil dan simpan nilai benjolan ringan dalam struktur "f" jika l.kiri>100 %Periksa apakah bemper lampu kiri tertutup r.moveDistance(-0,05) %Pindahkan ruanganba ke belakang 0,05 meter r.turnAngle(20) %Putar ruanganba 20 derajat CCW img=r.getImage %Dapatkan gambar dari kamera pai rasberry di ruanganba rect = [100 0 150 150]; img = imcrop(img, rect) %crop gambar untuk fokus di tengah merah = mean(mean(img(:,:, 1))) %rata-rata intensitas merah hijau = mean(mean(img(:,:, 2))) %intensitas hijau rata-rata biru = mean(mean(img(:,:, 3))) %intensitas biru rata-rata jika hijau>merah && hijau>biru %Periksa apakah tanaman ada dalam gambar d=msgbox(['Kehidupan ditemukan! ']); %Menampilkan kotak pesan yang mengatakan "Kehidupan ditemukan!" tunggu(d); end elseif l.leftFront>100 %Cek kiri/lampu depan bumper tertutup r.moveDistance(-0.05) %Pindahkan roomba mundur 0,05 meter img=r.getImage %Dapatkan gambar dari kamera rasberry pie di roomba dan simpan di variabel 'img ' persegi = [100 0 150 150]; img = imcrop(img, rect) %crop gambar untuk fokus di tengah merah = mean(mean(img(:,:, 1))) %rata-rata intensitas merah hijau = mean(mean(img(:,:, 2))) %intensitas hijau rata-rata biru = mean(mean(img(:,:, 3))) %intensitas biru rata-rata jika hijau>merah && hijau>biru %Periksa apakah tanaman ada dalam gambar d=msgbox(['Kehidupan ditemukan! ']); %Menampilkan kotak pesan yang mengatakan "Kehidupan ditemukan!" tunggu(d); end elseif l.leftCenter>100 %Periksa apakah bumper lampu kiri/tengah tertutup r.moveDistance(-0.05) %Pindahkan roomba ke belakang 0,05 meter img=r.getImage %Dapatkan gambar dari kamera rasberry pie di roomba dan simpan di variabel 'img ' persegi = [100 0 150 150]; img = imcrop(img, rect) %crop gambar untuk fokus di tengah merah = mean(mean(img(:,:, 1))) %rata-rata intensitas merah hijau = mean(mean(img(:,:, 2))) %intensitas hijau rata-rata biru = mean(mean(img(:,:, 3))) %intensitas biru rata-rata jika hijau>merah && hijau>biru %Periksa apakah tanaman ada dalam gambar d=msgbox(['Kehidupan ditemukan! ']); %Menampilkan kotak pesan yang mengatakan "Kehidupan ditemukan!" tunggu(d); end elseif l.rightCenter>100 %Periksa apakah bumper lampu kanan/tengah tertutup r.moveDistance(-0.05)%Pindahkan roomba mundur 0,05 meter img=r.getImage %Dapatkan gambar dari kamera rasberry pie di roomba dan simpan di variabel 'img ' persegi = [100 0 150 150]; img = imcrop(img, rect) %crop gambar untuk fokus di tengah merah = mean(mean(img(:,:, 1))) %rata-rata intensitas merah hijau = mean(mean(img(:,:, 2))) %intensitas hijau rata-rata biru = mean(mean(img(:,:, 3))) %intensitas biru rata-rata jika hijau>merah && hijau>biru %Periksa apakah tanaman ada dalam gambar d=msgbox(['Kehidupan ditemukan! ']); %Menampilkan kotak pesan yang mengatakan "Kehidupan ditemukan!" tunggu(d); end elseif l.rightFront>100 %Periksa apakah bumper kanan/depan tertutup r.moveDistance(-0.05)%Pindahkan roomba ke belakang 0,05 meter img=r.getImage %Dapatkan gambar dari kamera rasberry pie di roomba dan simpan di variabel 'img ' persegi = [100 0 150 150]; img = imcrop(img, rect) %crop gambar untuk fokus di tengah merah = mean(mean(img(:,:, 1))) %rata-rata intensitas merah hijau = mean(mean(img(:,:, 2))) %intensitas hijau rata-rata biru = mean(mean(img(:,:, 3))) %intensitas biru rata-rata jika hijau>merah && hijau>biru %Periksa apakah tanaman ada dalam gambar d=msgbox(['Kehidupan ditemukan! ']); %Menampilkan kotak pesan yang mengatakan "Kehidupan ditemukan!" tunggu(d); end elseif l.kanan>100 %Periksa apakah bumper lampu kanan tertutup r.moveDistance(-0.05)%Pindah ruanganba mundur 0,05 meter r.turnAngle(-20)%Putar ruanganba 20 derajat CW img=r.getImage %Dapatkan gambar dari kamera pie rasberry di roomba dan simpan di variabel 'img' rect = [100 0 150 150]; img = imcrop(img, rect) %crop gambar untuk fokus di tengah merah = mean(mean(img(:,:, 1))) %rata-rata intensitas merah hijau = mean(mean(img(:,:, 2))) %intensitas hijau rata-rata biru = mean(mean(img(:,:, 3))) %intensitas biru rata-rata jika hijau>merah && hijau>biru %Periksa apakah tanaman ada dalam gambar d=msgbox(['Kehidupan ditemukan! ']); %Menampilkan kotak pesan yang mengatakan "Kehidupan ditemukan!" tunggu(d); end elseif y.leftFront<1500 %Periksa apakah bagian kiri/depan roomba keluar dari tebing r.moveDistance(-0.1, 0.05) %Pindahkan roomba mundur 0,1 meter pada 0,05 m/s r.turnAngle(-5) %Putar roomba 5 derajat CW elseif y.rightFront<1500 %Periksa apakah bagian kanan/depan roomba menjauhi tebing r.moveDistance(-0.1, 0.05) %Pindahkan roomba mundur 0,1 meter pada 0,05 m/s r.turnAngle(5) %Putar roomba 5 derajat CCW kalau tidak y.kiri<1000 %Periksa apakah sisi kiri roomba berada di luar tebing r.moveDistance(-0.05, 0.05) %Pindahkan roomba ke belakang 0,05 meter pada 0,05 m/s r.turnAngle(-10) %Putar roomba 10 derajat CW elseif y.right0 %Run jika tombol ditekan jika Continue==1 i=0 %Lanjutkan mencari life else i=1 %End LIFE mode end end end end elseif Setting==2 %Periksa apakah pengaturan "ROUGH TERRAIN" dipilih i=0 while i==0 r.setLEDDigits(num2str('RGH')) %Tampilan 'Kasar' pada Layar LED untuk i=1:1000 r.setDriveVelocity(0,05) %Setel kecepatan drive roomba ke 0,05 m/sx = r.getBumpers %Mengambil dan menyimpan nilai sensor bumper dalam struktur "x" y = r.get CliffSensors %Ambil dan simpan nilai sensor tebing dalam struktur "y" jika x.kanan==1 %Periksa apakah bumper kanan ditekan r.turnAngle(10) %Putar ruanganba 10 derajat CCW jika tidak x.kiri==1 %Periksa jika kiri bumper ditekan r.turnAngle(-10) %Putar ruanganba 10 derajat CW lain jika x.depan==1 %Periksa apakah bumper depan ditekan r.turnAngle(20) %Putar ruanganba 20 derajat CCW elseif x.rightWheelDrop==1 % Periksa apakah roda kanan turun r.turnAngle(-20)%Putar ruanganba 20 derajat CW jika tidak x.leftWheelDrop==1 %Periksa apakah roda kiri turun r.turnAngle(20) %Putar ruanganba 20 derajat CCW jika tidak y.kiriDepan< 1500 %Periksa apakah bagian kiri depan roomba berada di luar tebing r.moveDistance(-0.05, 0.05) %Pindah roomba ke belakang 0,05 meter pada 0,05 m/s r.turnAngle(-5)%Putar roomba 5 derajat CW jika tidak y.kananDepan< 1500 %Periksa apakah bagian kanan depan roomba tidak berada di tebing %Periksa apakah bagian kiri o f roomba turun tebing r.moveDistance(-0.05, 0.05)%Pindah roomba mundur 0,05 meter pada 0,05 m/s r.turnAngle(-10)%Putar roomba 10 derajat CW jika tidak y.kanan0 jika Lanjutkan==1 i=0 %Lanjutkan medan kasar else i=1 %Akhiri medan kasar akhiri ujung lain %Mode Manual i=0 r.setLEDDigits(num2str('USER')) %Tampilkan 'USER' pada Tampilan LED d=msgbox(['Tombol Panah - Pindah; S - Berhenti Rover; ESC - Kontrol Pengguna Akhir; A - Cari Sumber Daya']); tunggu(d); sementara i==0 r.showCamera %Buka umpan langsung kamera pai rasberry di jendela terpisah D=getkey(1) %Retrieve key ditekan oleh pengguna, simpan nilai ASCII sebagai variabel D jika D==30 %Periksa apakah panah "atas" memiliki telah ditekan r.setDriveVelocity(0.1) %Kirim roomba maju dengan kecepatan 0,2 m/s jika D==28 %Periksa apakah panah "kiri" ditekan r.setDriveVelocity(0) %Hentikan roomba dari bergerak maju atau mundur r.turnAngle(15, 0.05)%Putar roomba 45 derajat CCW pada 0,05 m/s jika D==31 %Periksa apakah panah "bawah" ditekan r.setDriveVelocity(-0,1) %Pindahkan roomba mundur pada 0,2 m/s jika tidak D==29 % Periksa apakah panah "kanan" ditekan r.setDriveVelocity(0) %Hentikan roomba dari bergerak maju atau mundur r.turnAngle(-15, 0.05) %Putar roomba 45 derajat CW pada 0,05 m/s jika tidak D==27 %Periksa apakah tombol "esc" (escape) ditekan i=1 %Ubah nilai variabel "i" untuk keluar dari loop d=msgbox('Keluar dari "Kontrol Pengguna"') %Beri tahu pengguna bahwa mode manual sedang keluar jika tidak D== 115 %Periksa apakah tombol "s" telah ditekan r.setDriveVelocity(0) %Hentikan roomba dari maju atau mundur elseif D==97 %Periksa apakah "a" telah ditekan image = r.getImage; imwrite(image, 'image.png') W = Klasifikasi(gambar) K = mode(W) if K == 3 d=msgbox('Sumber daya ditemukan') %Tampilkan jika sumber daya persegi panjang terdeteksi waitfor(d); %Tunggu pengguna untuk menutup kotak pesan "d" elseif K == 0 d=msgbox('Not Resource:(') %Tampilkan jika sumber daya persegi tidak terdeteksi waitfor(d); %Tunggu pengguna untuk menutup kotak pesan "d" end else d=msgbox('Bukan input kunci yang valid.') %Tampilkan jika pengguna menutup menu "pilih pengaturan" waitfor(d); %Tunggu pengguna menutup kotak pesan "d" end waitfor(d); %Tunggu pengguna untuk menutup kotak pesan "d" end end end else d=msgbox('Goodbye') %Mengucapkan selamat tinggal jika opsi ditutup end waitfor(d);
Langkah 3: Pengujian
Setelah kode Anda ditulis, Anda perlu menguji Roomba Anda. Meskipun kode Anda mungkin tampak benar, banyak nilai Anda, terutama untuk warna atau bentuk, perlu diubah agar dapat mengenali objek yang Anda inginkan agar diidentifikasi oleh Roomba dengan benar.
Langkah 4: Amati Output Visual
Akan sangat jelas apakah Anda berhasil memprogram Roomba Anda berdasarkan output visualnya.
Keluaran meliputi:
- Deteksi Bentuk: Kemampuan Roomba untuk membedakan bentuk dengan benar untuk menemukan mineral yang benar
- Manuver Medan Kasar: Menghindari tebing atau area gelap
- Mode Manual: Umpan langsung dan kemampuan untuk mengontrol Roomba
- Gambar: Gambar mineral
- Life Found!: Kotak teks MatLab yang menandakan bahwa tanaman Anda telah mengidentifikasi kehidupan organik.
Itulah akhir dari tutorial kami, nikmati penjelajahan Mars baru Anda!
Direkomendasikan:
Helm Iron Man Mark II: 4 Langkah
Iron Man Mark II Helm: Casco réplica mark II de 2 partes, casco y pulsera unidos por cadena que conduce el cableado, alimentado por 4 baterías AA ubicadas en la parte posterior junto al microcontrolador y el switch de encendido.Casco: Servomotores para el cierre y apert
Mark Twain House Haunting: 5 Langkah
Mark Twain House Haunting: Rumah Mark Twain dikabarkan dihantui oleh penulis terkenal. Dalam Instruksi ini, saya telah "menemukan" sebuah foto lama yang membuktikan tanpa bayang-bayang keraguan bahwa hantu Twain memang menghantui rumah tua bersejarah ini
Mesin Beer Pong Terbaik - PongMate CyberCannon Mark III: 6 Langkah (dengan Gambar)
Mesin Beer Pong Terbaik - PongMate CyberCannon Mark III: PendahuluanPongMate CyberCannon Mark III adalah teknologi beer pong terbaru dan tercanggih yang pernah dijual ke publik. Dengan CyberCannon baru, siapa pun bisa menjadi pemain yang paling ditakuti di meja bir pong. Bagaimana ini p
Menggunakan Modul Perintah IRobot Create dengan Linux: 4 Langkah
Menggunakan Modul Perintah Buat IRobot Dengan Linux: Karena iRobot belum menyediakan cara bagi pengguna linux untuk menggunakan modul perintah, saya harus mencari tahu sendiri. Jangan terintimidasi, ini sama sekali tidak sulit, kok. Yang perlu Anda lakukan hanyalah menjalankan beberapa skrip. Mari kita mulai, oke?
Memodifikasi IRobot Create to Paint: 6 Langkah (dengan Gambar)
Memodifikasi IRobot Create to Paint: Ini adalah proyek robotika yang mungkin bisa diselesaikan oleh seseorang yang tidak memiliki pengalaman dengan robot sama sekali. Saya mengatakan ini karena, sebelum saya mulai, saya tidak memiliki pengalaman dengan robot. Atau menulis program. Sebenarnya, saya tahu cara melukis dan itu