Isi kandungan:

Projek MATLAB Roomba: 5 Langkah
Projek MATLAB Roomba: 5 Langkah

Video: Projek MATLAB Roomba: 5 Langkah

Video: Projek MATLAB Roomba: 5 Langkah
Video: Amazing arduino project 2024, November
Anonim
Projek MATLAB Roomba
Projek MATLAB Roomba

Rencana terkini yang dimiliki NASA untuk Mars rover adalah untuk menjadi pengumpul data dan berkeliaran di sekitar Marikh, mengumpulkan sampel tanah untuk dibawa kembali ke Bumi sehingga para saintis dapat melihat apakah ada bentuk kehidupan sebelumnya di planet ini. Selain itu, rover menghantar kembali gambar kepada saintis, supaya mereka dapat menavigasi rover dan menyelesaikan masalah yang mungkin dihadapi.

Idea kumpulan kami untuk projek kami adalah agar rover melakukan hal yang sama seperti rover NASA yang akan meninggalkan bumi pada tahun 2020, tetapi juga untuk memetakan geografi tanah. Roomba akan dapat merasakan tebing dan berhenti sendiri sebelum jatuh, dan kemudian mundur, pusing, dan mengubah haluan sehingga tidak jatuh dan rosak. Idea lain kami yang disatukan ke dalam projek kami adalah agar roomba dapat memaparkan tanda tempat yang dilihatnya, dan menunjukkan plot setiap kali gelung selesai dan jalannya dijalankan.

Ini boleh digunakan untuk orang lain yang ingin membuat jenis kod yang sama untuk bilik mereka.

Langkah 1: Langkah 1: Bahan Yang Diperlukan

Langkah 1: Bahan Yang Diperlukan
Langkah 1: Bahan Yang Diperlukan
Langkah 1: Bahan Yang Diperlukan
Langkah 1: Bahan Yang Diperlukan

Anda perlu:

  1. A roomba
  2. MATLAB
  3. Fail ini untuk menjalankan roomba
  4. Permukaan yang rata
  5. Permukaan meja untuk bertindak sebagai "tebing"

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

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

Skrin anda akan kelihatan seperti ini setelah anda memasukkan fail.

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

Kod ini akan memberi tahu roomba anda dengan tepat sudut apa yang hendak dipusingkan, memeriksa maklumat bateri, memberitahu roomba anda seberapa cepat untuk pergi, dan untuk memeriksa seseorang melalui kamera roomba. Ia juga akan berbunyi jika mengenali seseorang, dan berhenti sebelum turun dari tebing.

% cuba rob.setLEDDigits ('') x = 0; y = 0; theta = 0; halangan = ; kitaran = 1; AngCorr = @ (x) x + 3.059. * X. ^ 0.4205; % Fungsi untuk membetulkan sudut giliran semasa rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0.1)% Go% Check For Person if AA_checkperson (rob) akhir. Beep% Periksa Cliff Sensor jika AA_cliffcheck (rob) rob.stop rob.setLEDDigits ('Cliff') jeda (0.5) halangan (kitaran) = 2; AA_cliffbeep (rob)% Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) akhir

Langkah 4: Langkah 4: Memeriksa Halangan

Kod ini akan memberi ruang untuk memeriksa barang di sekitarnya, dan akan memeriksa sensor bump untuk memastikannya berhenti sebelum merosakkan dirinya sendiri.

% Periksa Sensor Cahaya jika AA_lightcheck (rob) rob.stop rob.setLEDDigits ('Wall') jeda (0.5) halangan (kitaran) = 1; % Wall AA_wallbeep (rob)% Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end% Check Bump Sensor if AA_bumpcheck (rob) rob.stop rob.setLEDDigits ('Wall') jeda (0.5) halangan (kitaran) = 1; % Wall AA_wallbeep (rob)% Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end% Jika tiada jika isempty (rintangan) halangan (cycle) = 0; elseif panjang (halangan) <rintangan kitaran (kitaran) = 0; akhir

Langkah 5: Langkah 5: Memplot

Langkah 5: Memplot
Langkah 5: Memplot

Kod ini akan memberitahu ruangan anda untuk merancang apa yang dihadapinya dalam perjalanannya. Plot seperti ini akan muncul setelah roomba berhenti.

% Dapatkan Kedudukan d = rob.getDistance; jika kitaran == 1 theta (kitaran) = 0; x (kitaran) = d. * cosd (theta (kitaran)); % jumlah jarak perjalanan dalam x y (kitaran) = d. * sind (theta (kitaran)); % jumlah jarak perjalanan dalam yeta lain theta (kitaran) = theta (kitaran-1) + rob.getAngle; x (kitaran) = d. * cosd (theta (kitaran)) + x (kitaran-1); % jumlah jarak perjalanan dalam x y (kitaran) = d. * sind (theta (kitaran)). * d + y (kitaran-1); % jumlah jarak perjalanan dalam keadaan akhir end rob.stop untuk i = 1: kitaran jika halangan (i) == 1% Plot dinding (x (i), y (i), 'Marker', 'square', 'MarkerEdgeColor', 'r') lain jika halangan (i) == 2% Petak tebing (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') teks akhir (.9, 0.9, sprintf ('Square = Wall / nCircle = Cliff '),' Units ',' normalized ') tahan pada akhir% Distress Signal sementara rob.beep jeda yang betul (3) jika rob.getButtons.clean break end end% catch% rob.stop% end

Disyorkan: