Isi kandungan:

MATLAB terkawal Roomba: 5 Langkah
MATLAB terkawal Roomba: 5 Langkah

Video: MATLAB terkawal Roomba: 5 Langkah

Video: MATLAB terkawal Roomba: 5 Langkah
Video: How to Calculate and Design Uncontrolled Halfwave Rectifier with R Load | MATLAB Simulink 2024, Julai
Anonim
MATLAB terkawal Roomba
MATLAB terkawal Roomba
MATLAB terkawal Roomba
MATLAB terkawal Roomba

Matlamat projek ini adalah untuk menggunakan MATLAB dan juga robot yang dapat diprogramkan iRobot yang telah diubah suai. Kumpulan kami menggabungkan kemahiran pengekodan kami untuk membuat skrip MATLAB yang menggunakan banyak fungsi iRobot, termasuk sensor tebing, sensor bumper, sensor cahaya, dan kamera. Kami menggunakan pembacaan sensor dan kamera ini sebagai input, memungkinkan kami membuat output tertentu yang kami inginkan menggunakan fungsi dan gelung kod MATLAB. Kami juga menggunakan peranti mudah alih dan giroskop MATLAB sebagai cara untuk menyambung ke iRobot dan mengawalnya.

Langkah 1: Bahagian dan Bahan

Bahagian dan Bahan
Bahagian dan Bahan
Bahagian dan Bahan
Bahagian dan Bahan
Bahagian dan Bahan
Bahagian dan Bahan
Bahagian dan Bahan
Bahagian dan Bahan

MATLAB 2018a

MATLAB versi 2018 adalah versi yang paling disukai, terutamanya kerana ia berfungsi paling baik dengan kod yang menghubungkan ke peranti mudah alih. Walau bagaimanapun, sebahagian besar kod kami dapat ditafsirkan dalam kebanyakan versi MATLAB.

iRobot Buat Peranti

-Peranti ini adalah peranti buatan khas yang tujuannya hanya untuk pengaturcaraan dan pengekodan. (Ini bukan kekosongan sebenarnya)

Raspberry Pi (dengan kamera)

- Ini adalah papan komputer yang tidak mahal yang berfungsi sebagai otak iRobot. Ia mungkin kecil, tetapi mampu melakukan banyak perkara. Kamera adalah tambahan tambahan. Ia juga menggunakan raspberry pi untuk mendapatkan semua fungsi dan perintahnya. Kamera yang digambarkan di atas dipasang pada pendirian bercetak 3D, yang dibuat oleh jabatan Asas Kejuruteraan di University of Tennessee

Langkah 2: Fail Pangkalan Data Roomba

Fail Pangkalan Data Roomba
Fail Pangkalan Data Roomba

Terdapat fail utama yang anda perlukan untuk menggunakan fungsi dan perintah yang tepat untuk ruangan anda. Fail ini adalah tempat anda menulis fungsi menarik kod untuk menjadikan operasi bilik anda lebih terkawal.

Anda boleh memuat turun fail di pautan ini atau fail yang boleh dimuat turun di bawah

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

Langkah 3: Bersambung ke Roomba

Pertama, anda mesti memastikan bahawa robot anda disambungkan ke papan pi raspberry anda dengan menggunakan palam USB mikro. Oleh itu, anda perlu menyambungkan komputer dan robot anda dengan betul ke WiFi yang sama. Setelah ini selesai, anda dapat menghidupkan robot anda dan menyambungkannya menggunakan perintah yang diberikan dalam fail pangkalan data robot. (Sentiasa keras menetapkan semula robot anda sebelum dan selepas anda menggunakannya). Sebagai contoh, kami menggunakan arahan "r.roomba (19)" untuk menyambung ke robot kami, memberikan pemboleh ubah r ke peranti kami. Ini merujuk kepada fail pangkalan data, yang menetapkan pemboleh ubah kita sebagai struktur yang dapat kita rujuk pada saat tertentu.

Langkah 4: Kodnya

Kod tersebut
Kod tersebut
Kod tersebut
Kod tersebut

Kami telah melampirkan kod lengkap di bawah, tetapi berikut adalah gambaran keseluruhan ringkas yang menyoroti elemen penting dalam skrip kami. Kami menggunakan semua sensor, serta kamera untuk memaksimumkan potensi robot kami. Kami juga memasukkan kod yang membolehkan kami menyambungkan peranti mudah alih ke robot kami dan menggunakan gryoscopenya untuk mengawalnya secara manual.

Kami memulakan dengan perintah mudah "r.setDriveVelocity (.06)" yang menetapkan kelajuan hadapan robot ke.06 m / s. Ini hanya untuk membuat robot bergerak terlebih dahulu

Kemudian, skrip utama kami dimulakan dengan gelung sementara yang mengambil data robot yang diberikan dengan membuat struktur yang dapat kita rujuk dan gunakan dalam pernyataan bersyarat di bawah, sehingga memungkinkan kita memberitahu robot melaksanakan perintah tertentu berdasarkan data struktur robot membaca dengan sensornya. Kami menyiapkannya supaya robot membaca sensor tebingnya dan mengikuti jalan hitam

manakala true% while loop berterusan sehingga berlaku sesuatu yang "false" (dalam kes ini berlaku tanpa henti) data = r.getCliffSensors; data2 = r.getBumpers;% mengambil data secara berterusan mengenai nilai sensor tebing dan memberikannya kepada% img = r.getImage yang berubah-ubah; % Mengambil gambar dari kamera terpasang% gambar (img); % Menunjukkan gambar yang diambil% red_mean = mean (mean (img (:,:, 1)));% Mengambil nilai purata untuk warna hijau jika data.rightFront <2000 r.turnAngle (-2); % menjadikan Roomba lebih kurang.2 darjah CW setelah nilai untuk sensor tebing depan kanan jatuh di bawah 2000 r.setDriveVelocity (.05); elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % memberitahu Roomba untuk terus maju pada kira-kira.2 m / s jika kedua-dua nilai dari sensor depan kanan dan kiri jatuh di bawah 2000% r.turnAngle (0); % memberitahu Roomba untuk tidak berpaling sekiranya keadaan yang disebutkan di atas adalah benar

elseif data2.right == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05); elseif data2.left == 1 r.moveDistance (-. 2); r.turnAngle (5); r.setDriveVelocity (.05); elseif data2.front == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05);

Selepas loop sementara ini, kita memasukkan loop sementara yang lain yang mencetuskan data yang diperoleh melalui kamera. Dan kami menggunakan pernyataan if di dalam loop sementara ini yang mengenali gambar menggunakan program tertentu (alexnet), dan setelah ia mengenal pasti gambar, ia segera mencetuskan alat kawalan jauh peranti mudah alih

anet = alexnet; Menugaskan pembelajaran mendalam alexnet kepada pembolehubah sementara% Infinite while loop img = r.getImage; img = imresize (img, [227, 227]); label = mengelaskan (anet, img); jika label == "tuala kertas" || label == "peti sejuk" label = "air"; gambar akhir (img); tajuk (char (label)); penarikan;

Gelung sementara yang membolehkan kami mengawal peranti dengan telefon kami mengambil data dari giroskop telefon dan kami memasangkannya ke dalam matriks yang terus mengalirkan data kembali ke MATLAB di komputer. Kami menggunakan pernyataan if yang membaca data matriks dan memberikan output yang menggerakkan peranti berdasarkan nilai tertentu giroskop telefon. Penting untuk mengetahui bahawa kami menggunakan sensor Orientasi peranti mudah alih. Matriks satu demi tiga yang disebutkan di atas dikategorikan oleh setiap elemen sensor orientasi telefon, yaitu azimuth, pitch, dan side. Sekiranya pernyataan mewujudkan keadaan yang menyatakan apabila sisi melebihi nilai 50 atau jatuh di bawah -50, maka robot bergerak jarak tertentu ke depan (positif 50) atau ke belakang (negatif 50). Begitu juga dengan nilai nada. Sekiranya nilai nada melebihi nilai 25 jatuh di bawah -25, robot berpusing pada sudut 1 darjah (positif 25) atau negatif 1 darjah (negatif 25)

sementara jeda benar (.1)% Jeda.5 saat sebelum setiap nilai diambil Pengawal = iphone. Orientasi; % Menetapkan matriks untuk nilai-nilai orientasi iPhone kepada pemboleh ubah Azimuthal = Pengawal (1); % Menetapkan nilai pertama matriks ke pemboleh ubah Pitch = Controller (2); % Menetapkan nilai kedua matriks ke pemboleh ubah (condong ke depan dan ke belakang ketika iPhone dipegang ke sisi) Sisi = Pengawal (3); % Menetapkan nilai ketiga matriks ke pemboleh ubah (condong ke kiri dan kanan ketika iPhone dipegang ke sisi)% Menyebabkan output berdasarkan orientasi telefon jika Sisi> 130 || Side 25 r.moveDistance (-. 1)% Menggerakkan Roomba ke belakang kira-kira.1 meter jika iPhone dimiringkan ke belakang sekurang-kurangnya 25 degress lainif Jika Side 25 r.turnAngle (-1)% Menghidupkan Roomba sekitar 1 darjah CCW jika iPhone miring ke kiri sekurang-kurangnya 25 darjah yang lain jika Pitch <-25 r.turnAngle (1)% Menghidupkan Roomba kira-kira 1 darjah CW jika iPhone dimiringkan sekurang-kurangnya 25 darjah akhir

Ini hanyalah sorotan utama dari kod kami, yang kami sertakan jika anda perlu menyalin dan menampal bahagian dengan cepat untuk kepentingan anda. Walau bagaimanapun, keseluruhan kod kami dilampirkan di bawah jika diperlukan

Langkah 5: Kesimpulannya

Kod ini yang kami tulis direka khas untuk robot kami dan juga keseluruhan visi kami mengenai projek ini. Tujuan kami adalah untuk menggunakan semua kemahiran pengkodan MATLAB kami untuk membuat skrip reka bentuk yang baik yang menggunakan sebahagian besar ciri robot. Menggunakan pengawal telefon tidaklah sukar seperti yang anda fikirkan, dan kami berharap kod kami dapat membantu anda memahami konsep di sebalik pengekodan iRobot.

Disyorkan: