Daftar Isi:

Proyek Roomba MATLAB: 5 Langkah
Proyek Roomba MATLAB: 5 Langkah

Video: Proyek Roomba MATLAB: 5 Langkah

Video: Proyek Roomba MATLAB: 5 Langkah
Video: Amazing arduino project 2024, Juli
Anonim
Proyek MATLAB Roomba
Proyek MATLAB Roomba

Rencana saat ini yang dimiliki NASA untuk penjelajah Mars adalah menjadi pengumpul data dan berkeliaran di sekitar Mars, mengumpulkan sampel tanah untuk dibawa kembali ke Bumi sehingga para ilmuwan dapat melihat apakah ada bentuk kehidupan sebelumnya di planet ini. Selain itu, rover mengirimkan kembali gambar ke para ilmuwan, sehingga mereka dapat membantu menavigasi rover dan memperbaiki masalah apa pun yang mungkin ada.

Ide kelompok kami untuk proyek kami adalah agar rover melakukan hal yang sama dengan rover NASA yang akan meninggalkan bumi pada tahun 2020, tetapi juga untuk memetakan geografi daratan. Roomba akan dapat merasakan tebing dan berhenti sendiri sebelum jatuh, dan kemudian kembali, berbalik, dan mengubah arahnya sehingga tidak akan jatuh dan rusak. Ide kami yang lain yang diintegrasikan ke dalam proyek kami adalah agar roomba dapat memplot landmark yang dilihatnya, dan menunjukkan plot setiap kali loop selesai dan jalurnya telah dijalankan.

Instruksi ini untuk siapa saja yang ingin membuat jenis kode yang sama untuk roomba mereka.

Langkah 1: Langkah 1: Bahan yang Dibutuhkan

Langkah 1: Bahan yang Dibutuhkan
Langkah 1: Bahan yang Dibutuhkan
Langkah 1: Bahan yang Dibutuhkan
Langkah 1: Bahan yang Dibutuhkan

Anda akan perlu:

  1. Sebuah kamar
  2. MATLAB
  3. File ini untuk menjalankan roomba
  4. Permukaan datar
  5. Permukaan meja untuk bertindak sebagai "tebing"

Langkah 2: Langkah 2: Menyiapkan/Mendapatkan Kode untuk Roomba

Langkah 2: Menyiapkan/Mendapatkan Kode untuk Roomba
Langkah 2: Menyiapkan/Mendapatkan Kode untuk Roomba

Layar Anda akan terlihat seperti ini setelah Anda memasukkan file.

Langkah 3: Langkah 3: Menyiapkan Sensor Tebing/Lampu LED

Kode ini akan memberi tahu roomba Anda sudut yang tepat untuk berbelok, memeriksa info baterai, memberi tahu roomba Anda seberapa cepat untuk pergi, dan untuk memeriksa seseorang melalui kamera roomba. Itu juga akan berbunyi bip jika mengidentifikasi seseorang, dan berhenti sendiri sebelum turun dari tebing.

% coba rob.setLEDDigits('') x=0; y=0; theta=0; hambatan = ; siklus = 1; AngCorr = @(x)x + 3.059.*x.^0.4205; %Fungsi untuk mengoreksi sudut belok saat rob.getBatteryInfo.percent > 15 rob.setLEDDigits('') rob.setDriveVelocity(0.1) %Pergi %Periksa Orang jika AA_checkperson(rob) rob.beep end %Periksa Sensor Tebing jika AA_cliffcheck(rob)) rob.stop rob.setLEDDigits('Cliff') pause(0.5) rintangan(siklus) = 2; AA_cliffbeep(rob) %Back Up Dan Putar rob.moveDistance(-.15) rob.turnAngle(30) end

Langkah 4: Langkah 4: Memeriksa Hambatan

Kode ini akan mendapatkan roomba untuk memeriksa barang-barang di sekitarnya, dan akan memeriksa bump sensor untuk memastikannya berhenti sebelum merusak dirinya sendiri.

%Periksa Sensor Cahaya jika AA_lightcheck(rob) rob.stop rob.setLEDDigits('Wall') pause(0.5) obstacle(cycle) = 1; %Wall AA_wallbeep(rob) %Back Up Dan Putar rob.moveDistance(-.15) rob.turnAngle(30) end %Periksa Bump Sensor jika AA_bumpcheck(rob) rob.stop rob.setLEDDigits('Wall') pause(0.5) rintangan(siklus) = 1; %Wall AA_wallbeep(rob) %Back Up Dan Putar rob.moveDistance(-.15) rob.turnAngle(30) end %Jika tidak ada jika kosong(rintangan) rintangan(siklus) = 0; elseif panjang(rintangan) < siklus rintangan(siklus) = 0; akhir

Langkah 5: Langkah 5: Merencanakan

Langkah 5: Merencanakan
Langkah 5: Merencanakan

Kode ini akan memberi tahu roomba Anda untuk merencanakan apa yang ditemuinya dalam perjalanannya. Plot seperti ini akan muncul setelah roomba berhenti.

%Dapatkan Posisi d = rob.getDistance; jika siklus == 1 theta(siklus) = 0; x(siklus) = d.*cosd(theta(siklus)); % total jarak yang ditempuh dalam x y(siklus) = d.*sind(theta(siklus)); % total jarak yang ditempuh dalam y else theta(cycle) = theta(cycle-1) + rob.getAngle; x(siklus) = d.*cosd(theta(siklus)) + x(siklus-1); % total jarak yang ditempuh dalam x y(siklus) = d.*sind(theta(siklus)).*d + y(siklus-1); % total jarak tempuh pada akhir y %Kondisi rusak jika rob.getButtons.clean break end %Peningkatan siklus siklus = siklus + 1; akhiri rob.stop untuk i = 1:siklus jika rintangan(i) == 1 %Plot dinding(x(i), y(i), 'Penanda', 'persegi', 'PenandaEdgeColor', 'r') elseif rintangan (i) == 2 %Cliff plot(x(i), y(i), 'Marker', 'o', 'MarkerEdgeColor', 'k') teks akhir(.9, 0.9, sprintf('Square = Wall \nLingkaran = Tebing'), 'Unit', 'dinormalisasi') tahan %Distress Signal sementara rob.beep benar jeda(3) jika rob.getButtons.clean break end end % catch % rob.stop % end

Direkomendasikan: