Daftar Isi:
- Langkah 1: Bahan yang Dibutuhkan
- Langkah 2: Siapkan/Unduh
- Langkah 3: Kode Bagian 1: Fungsi Pelacakan
- Langkah 4: Kode Bagian 2: Sementara Loop
- Langkah 5: Bagian Kode 3: Bagian Email
Video: Proyek UTK EF 230 MarsRoomba Musim Gugur 2018: 5 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:57
Saat ini, penjelajah Mars digunakan untuk mengumpulkan data di permukaan Mars melalui berbagai metode, untuk mempelajari lebih lanjut tentang potensi planet ini untuk kehidupan mikroba. Penjelajah terutama menggunakan alat fotografi dan analisis tanah untuk pengumpulan data, tetapi penjelajah juga mencakup instrumen navigasi, detektor radiasi, sensor atmosfer, dan laser untuk penguapan sampel batuan. Tujuan misi rover 2020 yang direncanakan sebagian besar sama, tetapi dengan tugas khusus untuk "mengumpulkan sampel tanah dan batu dan menyimpannya di permukaan untuk kemungkinan kembali ke Bumi dengan misi masa depan," menurut NASA.
Namun, dengan premis bahwa penjelajah masa depan akan digunakan untuk bantuan manusia, tim kami mempertimbangkan aspek manusia yang dapat dipantau oleh penjelajah tersebut. Kami sampai pada kesimpulan bahwa jika suatu keadaan darurat membuat astronot tidak sadarkan diri dengan dukungan dan peralatan hidup yang gagal, rover kami dapat berfungsi sebagai suar mayday seluler dengan mengamati bahwa astronot yang diikutinya tidak bergerak dan menyampaikan pesan marabahaya. Untuk mengikuti manusia dan menentukan imobilitas, rover akan mengambil input seperti warna sepatu manusia dan gerakannya. Masukan lain yang perlu dipertimbangkan adalah bahwa ia harus mengingat jalurnya untuk menyampaikan sinyal marabahaya jika terjadi keadaan darurat. Penjelajah kami memenuhi kebutuhan di Mars karena mencoba misi mahal seperti itu di medan asing seperti itu memerlukan beberapa lapis brankas, dan jika seorang astronot tidak bisa mendapatkan bantuan mereka sendiri karena malfungsi atau ketidaksadaran, penjelajah dapat memperingatkan orang lain..
Instruksi ini dirancang untuk membantu pembaca dalam memprogram Roomba-nya agar berhasil mengikuti "astronot" dan mengirim sinyal marabahaya jika berlaku.
Langkah 1: Bahan yang Dibutuhkan
1) Komputer/laptop yang dapat diakses internet
2) MATLAB_R2018a
3) Unduh Roomba dan Roomba
Langkah 2: Siapkan/Unduh
Jalankan skrip ini di MATLAB untuk mengunduh perangkat lunak yang diperlukan untuk mengakses Roomba (disimpan dalam filenya sendiri di folder proyek)
Bantuan Tambahan:
% Program penginstalan untuk Proyek Roomba EF 230% Pembaruan terakhir: 13 September 2017 (Memperbaiki masalah keamanan yang terkait dengan server https dan menghapus peringatan penghapusan file jika terjadi kesalahan) fungsi roombaInstall clc; % daftar file untuk menginstal file = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % lokasi untuk menginstal dari options = weboptions('CertificateFilename', ''); % menyuruhnya untuk mengabaikan persyaratan sertifikat server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Instal/Perbarui Roomba'; % tampilan tujuan dan dapatkan konfirmasi prompt = { 'Program ini akan mengunduh file EF 230 Roomba ini:' '' strjoin(file, ') '' 'ke folder ini:' '' cd '' 'Apakah Anda ingin melanjutkan? ' }; berbunyi; yn = questdlg(prompt, … dlgTitle, … 'Ya', 'Tidak', 'Ya');
jika ~strcmp(yn, 'Ya'), kembalikan; akhir
% get list of files that existing_files = files(cellfun(@exist, files) > 0); if ~isempty(existing_files) % pastikan benar-benar ok untuk menggantinya prompt = {'Anda sedang mengganti file-file ini: '' strjoin(existing_files, ' ') '' 'OK untuk mengganti?' }; berbunyi; yn = questdlg(prompt, … dlgTitle, … 'Ya', 'Tidak', 'Ya'); jika ~strcmp(yn, 'Ya'), kembalikan; akhir akhir
% unduh file cnt = 0; untuk i=1:panjang(berkas) f=berkas{i}; disp(['Mengunduh ' f]); coba url = [server f]; websave(f, url, opsi); % opsi tambahan untuk menghindari kesalahan keamanan cnt = cnt + 1; catch disp(['Kesalahan mengunduh ' f]); dummy = [f '.html']; jika ada(dummy, 'file')==2 hapus(dummy) end end end
if cnt == length(files) msg = 'Instalasi Berhasil'; tunggu(kotak pesan(pesan, dlgTitle)); else msg = 'Kesalahan Instalasi - lihat jendela perintah untuk detailnya'; tunggu(errordlg(pesan, dlgTitle)); akhir
akhir %roombaInstal
Langkah 3: Kode Bagian 1: Fungsi Pelacakan
Fungsi ini mengambil variabel Roomba dan gambar dari kamera di Roomba dan menemukan koordinat pusat xy dari objek yang dilacak
Simpan kode ini di file lain di folder yang sama.
function [xm, ym] = trackingblue(r)%Input: variabel roomba %Output: nilai x dan y dari pusat objek berikut %Purpose: menemukan pusat objek biru yang diberi gambar %Usage [nilai x, y nilai] = trackingblue(variabel roomba) img=r.getImage; % membaca kamera dari subplot robot(1, 2, 2) subgambar(img); %menampilkan gambar di jendela yang sama dengan judul jalur('Gambar Pelacakan') red = img(:,:, 1); hijau = img(:,:, 2); biru = img(:,:, 3); justBlue = biru - hijau/2 - merah/2; bw = justBlue > 40; tunggu subplot(1, 2, 2) subgambar(bw); [x, y] = temukan(bw); if ~kosong(x) && ~kosong(y) xm = bulat(rata-rata(x)); ym = bulat(rata-rata(y)); xx = maks(1, xm-5):min(xm+5, ukuran(bw, 1)); yy = maks(1, ym-5):min(ym+5, ukuran(bw, 2)); bwbw = nol(ukuran(bw), 'uint8'); bwbw(xx, yy) = 255; tunggu subplot(1, 2, 2) subgambar(justBlue + bwbw); akhir
Langkah 4: Kode Bagian 2: Sementara Loop
Kode ini menggerakkan Roomba berdasarkan lokasi x dan y objek dari fungsi pelacakan. Ini akan membuat Roomba waspada terhadap dinding dan tebing, sambil mencari warna biru. Ini juga akan mengambil koordinat x dan y dari jalur Roomba dan membuat plot yang sesuai dengan gambar pelacakan. Jika bump sensor diaktifkan maka akan berpindah ke bagian email
%Proyek Penjelajah
%Jonah Zahn, Wade Price, Noah Sloan %jzahn2, wprice15, nsloan1 %Masukan: nilai ruang, data kamera, benjolan, sensor cahaya dan dinding Tujuan: Mengikuti astronot dan menghindari rintangan. Jika diperingatkan, roomba mengirimkan email % yang merinci peta dan di mana letaknya sesuai dengan posisi awalnya. %Penggunaan: jalankan program dengan mendeklarasikan variabel roomba, juga %memiliki objek hijau bergerak %Outputs: menampilkan gambar pelacakan gambar, mengirim peta email dan teks ke pengguna %% Bagian Mengikuti b=0; %Menginisialisasi variabel c=0; x=0; y=0; theta=0; sementara c==0 %Loop untuk mendeteksi objek biru dan rintangan t = r.timeGet; d = r.getJarak; [xval, yval] = trackingblue(r); tebing=getCliffSensors(r); %menginisialisasi struktur untuk nilai sensor light=getLightBumpers(r); benjolan= getBumper(r); if light.leftCenter >= 10 || light.rightCenter >= 10 %Merasakan jika ada tembok di dekat r.stop r.setLEDDigits('help') c=1 % sementara b==0 % jika bump.right == 1 || bump.left == 1 || bump.front == 1 %Merasa jika menabrak sesuatu setelah merasakan dinding % c=1 % b=1 % disp('bump') % end % end elseif bump.right == 1 || bump.left == 1 || bump.front == 1 %Merasa jika menabrak sesuatu, jika demikian, ia akan mengirim email r.stop c=1 b=1 elseif cliff.leftFront <= 100 || tebing.kananDepan <= 100 || tebing.kiri <= 100 || cliff.right <= 100 %Merasa jika ada tebing di dekat r.stop c=1 r.setLEDDigits('help') else %Mengatur kecepatan drive mengikuti warna biru jika yval = 100 r.setDriveVelocity(0.1) elseif yval 400 r.turnAngle(-5) ujung akhir theta = theta + r.getAngle; x = d.*cosd(theta) + x; % x koordinat ruang y = d.*sind(theta).*d + y; % y koordinat subplot roomba(1, 2, 1) plot(x, y, 'bd') % memplot path dan menambahkan judul judul('Roomba Path') tunggu; akhir
Langkah 5: Bagian Kode 3: Bagian Email
Ini akan mengambil jalur dan gambar yang diplot dan mengirimkannya ke alamat email yang ditentukan
(Tampil di sini dengan contoh email)
%% Bagian Email
if b==1 saveas(gcf, 'rovermap.png') %menyimpan angka setpref('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref('Internet', 'E_mail', '[email protected]'); % akun email untuk dikirim dari setpref('Internet', 'SMTP_Username', '[email protected]'); % nama pengguna pengirim setpref('Internet', 'SMTP_Password', 'gssegsse'); % 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('example email', 'RoverBeacon', 'Astronot telah berhenti bergerak. Untuk pemulihan, ikuti petunjuk dalam file terlampir.', 'rovermap.png') disp('email terkirim') end
Direkomendasikan:
Proyek Musim Panas 2020: 8 Langkah
Proyek Musim Panas 2020: Untuk proyek musim panas saya tahun 2020, saya membuat dua mobil robot dengan sasis yang sama. Satu mobil robot seharusnya menggunakan sensor ultrasonik untuk mendeteksi objek di depannya dan kemudian secara otomatis mengubah arah. Mobil lain seharusnya
Proyek Robot UTK 2017: 3 Langkah
Proyek Robot UTK 2017: Misi: Tim insinyur kami telah direkrut oleh Froogle, sebuah yayasan Nirlaba untuk pengembangan teknologi sumber terbuka, untuk mengembangkan tim "rover" Pembantu Mars yang Membantu Mars yang inovatif. adalah roomba yang kami kodekan untuk menjalankan serangkaian
Penangkap Lalat Venus - Musim Gugur ITM 2019: 5 Langkah
Venus Flytrap - ITM Fall 2019: Apa yang hilang dari meja semua orang? Penangkap Lalat Venus mekanis yang menampung pensil, pena, dan benda lainnya
Cara Menempatkan Gambar Kustom di Dasbor Xbox 360 Anda. (Pembaruan Pra Musim Gugur 08): 8 Langkah
Cara Menempatkan Gambar Kustom di Dasbor Xbox 360 Anda. (Pembaruan Pra Musim Gugur 08): Dalam instruksi ini saya akan menunjukkan kepada Anda cara menempatkan gambar khusus sebagai latar belakang Anda di xbox 360 Anda. Ada langkah-langkah yang sama untuk melakukan ini dengan dashboard baru dan lama. ketika saya mendapat kesempatan saya akan memperbarui semuanya dengan gambar baru
Cara Membuat Apel Garland untuk Musim Gugur atau Kembali ke Sekolah: 13 Langkah (dengan Gambar)
Cara Membuat Karangan Bunga Apel untuk Musim Gugur atau Kembali ke Sekolah: Anjeanette, dari RootsAndWingsCo membuat karangan bunga apel yang menggemaskan ini dari kain dan bahan. Itu adalah proyek sederhana yang bahkan mereka yang mengatakan mereka tidak bisa menjahit pun bisa melakukannya! (Selama Anda bisa memasukkan jarum Anda.)