Isi kandungan:

Roomba Dengan MATLAB: 4 Langkah (dengan Gambar)
Roomba Dengan MATLAB: 4 Langkah (dengan Gambar)

Video: Roomba Dengan MATLAB: 4 Langkah (dengan Gambar)

Video: Roomba Dengan MATLAB: 4 Langkah (dengan Gambar)
Video: Getting Started with MATLAB Support Package for Raspberry Pi 2024, November
Anonim
Roomba Dengan MATLAB
Roomba Dengan MATLAB

Projek ini menggunakan MATLAB dan robot iRobot Create2 yang dapat diprogramkan. Dengan menguji pengetahuan MATLAB, kami dapat memprogramkan Create2 untuk mentafsirkan gambar dan mengesan isyarat. Fungsi robot bergantung terutamanya pada aplikasi mudah alih MATLAB dan modul kamera Raspberry Pi.

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

1. iRobot Buat, Versi 2

- Ini adalah robot yang dapat diprogramkan seperti Roomba. Ketahuilah bahawa produk ini dari iRobot bukanlah kekosongan. Ia bertujuan untuk pengaturcaraan khusus oleh pengguna.

2. MATLAB 2017a

- Sebilangan besar versi lama akan serasi dengan kod yang kami gunakan di bawah. MATLAB akan mengenal pasti arahan yang tidak sesuai dengan versi yang anda ada dan akan mencadangkan perintah yang paling sesuai.

3. Raspberry Pi 3 Model B, Versi 1.2

- Periksa untuk mengetahui Raspberry Pi mana yang sesuai dengan iRobot anda. Lihat pautan ini untuk mendapatkan bantuan lebih lanjut: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Ini boleh diandaikan dengan andaian anda bekerja dengan Raspberry Pi yang telah diprogramkan. Perlu diketahui bahawa anda perlu bekerja dengan Pi yang telah diprogramkan agar langkah-langkah berikut dapat berfungsi. Menggunakan Pi yang diprogramkan akan membolehkan anda melakukan semua pengekodan anda dalam MATLAB sahaja.

4. Modul Kamera V2 (untuk Raspberry Pi)

- Anda mungkin terkejut; walaupun saiznya, Modul Kamera Raspberry Pi sangat berkualiti. Ini adalah pilihan paling murah dan paling serasi untuk projek ini.

Pilihan: pendirian bercetak 3D. Ini digunakan menstabilkan kamera. Itu tidak mempengaruhi fungsi robot, tetapi akan membantu pengekodan anda jika anda ingin menggunakan data pengimejan untuk pengecaman warna dan / atau objek.

Langkah 2: Konfigurasi

Konfigurasi
Konfigurasi
Konfigurasi
Konfigurasi

1. Menyambungkan Raspberry Pi dan modul kamera (Perkakasan)

- Untuk menghidupkan Raspberry Pi, anda perlu menjalankan USB mikro lelaki ke port kuasa wanita pada mikrokontroler. Pilihan: Pengatur voltan boleh digunakan untuk memastikan voltan tidak melebihi 5V. Setelah menghidupkan Raspberry Pi, anda boleh menyambungkannya ke robot anda dengan menjalankan USB akhir lelaki dari papan induk ke port USB A pada mikrokontroler.

- Setelah menyambungkan Pi ke Roomba, kamera siap dipasang. Modul Kamera akan jauh lebih kecil daripada yang anda jangkakan. Perhatikan bahawa lensa dipasang ke sensor, dan pita putih memanjang dari kamera. JANGAN menanggalkan atau merobek pita! Ini adalah kabel yang anda perlukan untuk menyambungkannya ke Raspberry Pi. Pertama, pegang hujung pita dan cari penyambung perak dan kabel biru. Ini berada di seberang. Seterusnya, cari slot antara port ethernet dan HDMI pada Raspberry Pi anda. Perhatikan ada kunci kecil berwarna putih yang menutupinya. Angkat kunci secara perlahan, tetapi jangan lepaskan dari slot, kerana ia akan terkunci dan rosak lama. Setelah mengangkat kunci, ambil pita dan hadapi penyambung perak ke port HDMI. Bahagian biru akan menghadap port Ethernet. Perlahan-lahan masukkan pita ke dalam slot semasa ia masih tidak terkunci. Anda tidak perlu memaksanya masuk ke dalam slot. Selepas memasukkan, tekan kunci ke bawah. Sekiranya kamera anda dilindungi dengan betul, anda seharusnya dapat dengan perlahan menarik pita dan merasakan ketegangan. Pita tidak boleh longgar. Setelah menyambungkan kamera anda ke Pi, anda mungkin menyedari betapa longgarnya kamera tersebut. Inilah sebabnya mengapa kami menggunakan pelekap cetak 3D untuk memperbaikinya. Ini adalah pilihan anda untuk menentukan bahan apa yang ingin anda gunakan untuk memastikan kamera anda tetap untuk pengimejan berkualiti tinggi.

2. Memasang Fail Yang Benar dan Menghubungkan Roomba ke Komputer Anda Setelah semua perkakasan anda dikonfigurasi, anda kini boleh terus memasang MATLAB bersama dengan m-fail yang berkaitan yang membolehkan anda berkomunikasi dengan robot. Untuk melakukan ini, buka MATLAB dan buat folder baru untuk menyatukan semua fail yang berkaitan. Gunakan skrip ini untuk memasang / mengemas kini fail yang diperlukan:

- Semua fail sekarang harus muncul di folder yang anda buat. Klik kanan pada tetingkap Folder Semasa dan pilih 'Tambah ke Laluan' untuk menambahkan jalan itu ke senarai direktori di mana MATLAB mencari fail. Pastikan semua fail anda berada di jalan yang betul.

3. Setelah fail dipasang, anda kini boleh mula menyambung ke robot anda. Mulailah dengan menghidupkan robot anda dan kemudian menetapkannya semula secara sukar selepas memulakannya (jangan lupa untuk menetapkan semula robot anda setiap kali sebelum dan selepas digunakan). Kedua, sambungkan robot dan komputer riba anda ke rangkaian wifi yang sama. Selepas ini, kita akan bercakap dengan Raspberry Pi yang sudah diprogramkan melalui MATLAB dengan memanggil Roomba menggunakan nama yang diberikan dan fungsi roomba. Sebagai contoh, saya akan menyambung ke robot 28 dengan menggunakan baris berikut: R = roomba (28).

- Perhatikan bagaimana saya memberikan objek ke pemboleh ubah R. Saya kini dapat mengakses fungsi Roomba yang berkaitan dari fail pemasangan dengan memperlakukan pemboleh ubah R seperti struktur.

- R.turnAngle (90) Jika semuanya berjalan lancar, nada muzik harus dimainkan, yang mengesahkan hubungannya.

Langkah 3: Logik MATLAB

Dokumen PDF di bahagian bawah langkah ini adalah carta aliran logik terperinci untuk proses pengkodan kami di MATLAB. Kami mengaktifkan sensor tebing, cahaya, dan bump cahaya untuk membolehkan robot berkomunikasi dengan kami ketika mengesan objek di sekitarnya. Sebagai contoh, ketika robot bergerak ke depan, sensor cahaya mengimbas objek di jalannya mengikut vektor di mana ia bergerak. Kami memilih ambang jarak untuk robot sehingga ketika menghampiri objek, ia akan terbalik dan bukannya bertembung dengannya. Robot kami juga dikonfigurasi dengan Twitter, yang kami nyatakan dalam proses pengkodan kami (ini akan ditunjukkan di bawah).

Untuk meningkatkan pengalaman, kami memanfaatkan aplikasi MATLAB pada peranti mudah alih kami sehingga kami dapat mengawal pergerakan robot hanya dengan memiringkan telefon kami. Ini adalah aktiviti pilihan, kerana anda pasti dapat membuat robot bergerak dengan menggunakan perintah moveDistance di segmen kod MATLAB. Perlu diingat bahawa menggunakan arahan MATLAB untuk mengawal robot anda lebih disukai jika tujuan anda adalah tepat. Sekiranya anda ingin mengarahkan robot anda agar kamera mengambil gambar di lokasi tertentu, mungkin lebih baik untuk mengekod pergerakan robot di MATLAB. Semasa berhibur, penggunaan aplikasi MATLAB untuk mengawal robot anda tidak diinginkan untuk ketepatan.

Kod memerintahkan Roomba untuk melakukan penyusunan asas kemudian meneruskan gelung berterusan. Pada mulanya komputer riba akan membuat pautan dengan Roomba menggunakan perintah Roomba (). Ini juga mengatur sambungan twitter menggunakan perintah webwrite () di MATLAB. Gelung mengandungi lima aliran logik utama bergantung pada persekitaran di sekitar Roomba. Mula-mula Roomba memeriksa halangan, dan menyesuaikan diri ke belakang jika mendapati halangannya terhalang. Terlibat dalam gelung itu adalah jalan kedua yang memberi amaran kepada pengguna jika Roomba terbawa-bawa. Utiliti penting dalam Martian Warzone yang keras. Setelah Roomba menentukan kedudukannya selamat, ia akan melihat ke peranti mudah alih untuk menentukan pergerakannya yang seterusnya. Sekiranya peranti mudah alih dimiringkan ke hadapan, ia akan mengira halaju asas bergantung pada keparahan pengukuran gulungan daripada menyesuaikan kelajuan roda individu untuk berpusing berdasarkan tahap nada. Telefon juga boleh menggerakkan Roomba secara terbalik. Keadaan peranti mudah alih yang neutral memasuki dua jalan terakhir. Roomba yang sedang berehat akan mencari bendera Alien dan memberi amaran kepada pengguna dengan sewajarnya.

Berikut adalah kod kami (dilengkapkan dalam MATLAB 2017a)

% input: Data orientasi dari peranti, kamera bersambung wifi

% maklumat, data sensor

% output: gerakan dikawal oleh peranti yang disambungkan wifi dan gerakannya

% diperiksa keselamatan dengan membaca data sensor. Sekiranya kamera mengesan

% bendera asing maka roomba membalas dengan tweet bendera musuh

% telah dilihat.

% tujuan: peranti kami hidup tanpa tujuan kecuali untuk melindungi mereka yang

% menciptanya, ia melayani penciptanya dan tidak

% betul apa yang diberitahu.

% Penggunaan: pada dasarnya program ini akan berjalan sendiri.

kosongkan semua, tutup semua, clc

% Memulakan Objek dan Pemboleh ubah

r = roomba (28);

m = mobiledev;

% menggunakan tindak balas = penulisan web (nama host, data)

nama hos = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop adalah Operasional … Menunggu Perintah';

data = strcat ('api_key =', API, '& status =', tweet);

reponse = webwrite (nama host, data);

% gelung yang sentiasa berjalan

sementara 1 == 1

% Struktur Yang Mengandungi Data Relavent

o = m.orientasi; % orientasi Peranti Mudah Alih

light = r.getLightBumpers (); % Nilai Bumper Ringan

a = r.getCliffSensors (); % Nilai Sensor CLiff

bump = r.getBumpers (); % Sensor Bumper

% semak bumper

jika bump.right == 1 || bump.left == 1 || bump.front == 1

r.moveDistance (-. 2,.2);

% periksa Sensor cahaya

otherif light.left> 60 || light.leftFront> 60 || light.leftCenter> 60 || light.right> 60 || light.rightFront> 60 || light.rightCenter> 60

r.moveDistance (-. 2,.2);

% periksa Cliff Sensors

% Isyarat dan pemberitahuan Anti-Kecurian

otherif a.left <300 && a.right <300 && a.leftFront <300 && a.rightFront <300

r.stop ();

r.beep ();

tweet = 'RoboCop telah diangkat!'

data = strcat ('api_key =', API, '& status =', tweet);

reponse = webwrite (nama host, data);

Operasi Penghindaran Tebing Biasa

otherif a.left <300 || a. betul <300 || a.leftFront <300 || a.rightFront <300

r.moveDistance (-. 2,.2);

% Roomba lulus pemeriksaan dan sekarang akan dijalankan dengan operasi normal.

Pada mulanya gulungan peranti diukur dan menjadi asas

% halaju yang kemudian digunakan untuk mengira kelajuan roda

Pergerakan ke hadapan

otherif o (3)> = 0 && o (3) <= 60

baseVel = (-. 5/60) * (o (3) -60);

jika o (2)> = - 70 && o (2) <0

r.setDriveVelocity (baseVel + (. 3/50) * abs (o (2)), baseVel - (. 3/50) * abs (o (2)));

otherif o (2) = 0

r.setDriveVelocity (baseVel - (. 3/50) * abs (o (2)), baseVel + (. 3/50) * abs (o (2)));

lain r.stop

akhir

Pergerakan ke belakang

otherif o (3)> 100 && o (3) <150

r.setDriveVelocity (-. 2, -.2)

r.beep ();

r.beep ();

% roomba yang sedang berehat akan mencari Bendera Alien yang ditandai sebagai cahaya bulan

% hijau Kepingan kertas

yang lain

r.berhenti

img = r.getImage (); % mengambil gambar

ambang = greythresh (img (200: 383,:, 2)) +. 1; % tahap hijau calc

jika ambang>.42

tweet = 'Musuh Dilihat !!'

data = strcat ('api_key =', API, '& status =', tweet);

reponse = webwrite (nama host, data);

yang lain

r.berhenti

akhir

akhir

akhir

Langkah 4: Kesimpulannya

Ingat, anda mungkin menggunakan skrip yang kami tulis di atas, tetapi anda selalu boleh mengubahnya agar sesuai dengan keperluan anda. Ia tidak perlu dikawal oleh telefon anda! (Walau bagaimanapun, ia menjadikannya lebih menyeronokkan.) Pilih kaedah yang anda lebih suka gunakan untuk mengawal robot anda. Berkeliling dengan robot anda dan nikmati!

Disyorkan: