Daftar Isi:

MATLAB Controlled Roomba: 5 Langkah
MATLAB Controlled Roomba: 5 Langkah

Video: MATLAB Controlled Roomba: 5 Langkah

Video: MATLAB Controlled Roomba: 5 Langkah
Video: How to set up iRobot Roomba vacuums & mops to map different floors 2024, Juli
Anonim
Kamar Terkendali MATLAB
Kamar Terkendali MATLAB
Ruang Terkendali MATLAB
Ruang Terkendali MATLAB

Tujuan dari proyek ini adalah untuk memanfaatkan MATLAB serta robot yang dapat diprogram iRobot yang dimodifikasi. Kelompok kami menggabungkan keterampilan pengkodean kami untuk membuat skrip MATLAB yang menggunakan banyak fungsi iRobot, termasuk sensor tebing, sensor bumper, sensor cahaya, dan kamera. Kami menggunakan sensor dan pembacaan kamera ini sebagai input, memungkinkan kami untuk membuat output tertentu yang kami inginkan menggunakan fungsi dan loop kode MATLAB. Kami juga menggunakan perangkat seluler MATLAB dan giroskop sebagai cara untuk terhubung ke iRobot dan mengontrolnya.

Langkah 1: Bagian dan Bahan

Bagian dan Bahan
Bagian dan Bahan
Bagian dan Bahan
Bagian dan Bahan
Bagian dan Bahan
Bagian dan Bahan
Bagian dan Bahan
Bagian dan Bahan

MATLAB 2018a

-MaTLAB versi 2018 adalah versi yang paling disukai, sebagian besar karena berfungsi paling baik dengan kode yang terhubung ke perangkat seluler. Namun, sebagian besar kode kami dapat ditafsirkan di sebagian besar versi MATLAB.

iRobot Buat Perangkat

-Perangkat ini adalah perangkat yang dibuat khusus yang tujuan utamanya adalah untuk pemrograman dan pengkodean. (Ini bukan ruang hampa yang sebenarnya)

Raspberry Pi (dengan kamera)

- Ini adalah papan komputer tidak mahal yang berfungsi sebagai otak iRobot. Ini mungkin kecil, tetapi mampu melakukan banyak hal. Kamera adalah tambahan tambahan. Itu juga menggunakan raspberry pi untuk mendapatkan semua fungsi dan perintahnya. Kamera yang digambarkan di atas dipasang pada dudukan cetak 3D, dibuat oleh departemen Teknik Fundamental di University of Tennessee

Langkah 2: File Database Roomba

File Database Roomba
File Database Roomba

Ada file utama yang Anda perlukan untuk menggunakan fungsi dan perintah yang tepat untuk roomba Anda. File ini adalah tempat Anda menulis kode untuk mengambil fungsi agar pengoperasian roomba Anda lebih mudah dikelola.

Anda dapat mengunduh file di tautan ini atau file yang dapat diunduh di bawah ini

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

Langkah 3: Menghubungkan ke Roomba

Pertama, Anda harus memastikan bahwa robot Anda terhubung ke papan raspberry pi Anda dengan menggunakan colokan micro USB. Maka Anda perlu menghubungkan komputer dan robot Anda dengan benar ke WiFi yang sama. Setelah ini selesai, Anda dapat menghidupkan robot Anda dan menghubungkannya menggunakan perintah yang diberikan dalam file database robot. (Selalu hard reset robot Anda sebelum dan sesudah Anda menggunakannya). Misalnya, kita menggunakan perintah "r.roomba(19)" untuk menghubungkan ke robot kita, menetapkan variabel r ke perangkat kita. Ini merujuk kembali ke file database, yang mengatur variabel kami sebagai struktur yang dapat kami referensikan pada saat tertentu.

Langkah 4: Kode

Kode
Kode
Kode
Kode

Kami telah melampirkan kode lengkap di bawah ini, tetapi di sini adalah ikhtisar singkat yang menyoroti elemen penting dalam skrip kami. Kami menggunakan semua sensor, serta kamera untuk memaksimalkan potensi robot kami sepenuhnya. Kami juga menyertakan kode yang memungkinkan kami menghubungkan perangkat seluler ke robot kami dan menggunakan gryoscope-nya untuk mengontrolnya secara manual.

Kami memulai dengan perintah sederhana "r.setDriveVelocity(.06)" yang mengatur kecepatan maju robot menjadi.06 m/s. Ini hanya untuk membuat robot bergerak terlebih dahulu

Kemudian, skrip utama kami dimulai dengan loop sementara yang mengambil data dari robot yang diberikan dengan membuat struktur yang dapat kami rujuk dan gunakan dalam pernyataan bersyarat di bawah ini, sehingga memungkinkan kami untuk memberi tahu robot menjalankan perintah tertentu berdasarkan data struktur robot membaca dengan sensornya. Kami mengaturnya agar robot membaca sensor tebingnya dan mengikuti jalur hitam

while true % while loop berjalan sampai terjadi sesuatu yang "false" (dalam hal ini berlangsung tanpa batas) data = r.getCliffSensors; data2 = r.getBumpers;% mengambil data secara terus menerus tentang nilai sensor tebing dan menetapkannya ke variabel % img = r.getImage; % Mengambil gambar dari kamera yang terpasang % image(img); % Menampilkan gambar yang diambil % red_mean = mean(mean(img(:,:, 1)));% Mengambil nilai rata-rata untuk warna hijau jika data.rightFront < 2000 r.turnAngle(-2); % mengubah Roomba sekitar.2 derajat CW setelah nilai untuk sensor tebing kanan depan turun di bawah 2000 r.setDriveVelocity(.05); elseif data.kiriFront data.leftFront && 2000 > data.rightFront r.moveDistance(.1); % memberitahu Roomba untuk terus maju dengan kecepatan sekitar.2 m/s jika kedua nilai dari sensor depan kanan dan depan kiri turun di bawah 2000 % r.turnAngle(0); % memberitahu Roomba untuk tidak berbalik jika kondisi yang disebutkan di atas benar

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

Setelah loop while ini, kita memasuki loop while lain yang memicu data yang diperoleh melalui kamera. Dan kami menggunakan pernyataan if di dalam loop while ini yang mengenali gambar menggunakan program tertentu (alexnet), dan setelah mengidentifikasi gambar, itu segera memicu remote control perangkat seluler

anet = alexnet; % Menetapkan pembelajaran mendalam alexnet ke variabel while true % Infinite while loop img = r.getImage; img = imresize(img, [227, 227]); label = klasifikasi(anet, img); if label == "handuk kertas" || label == "kulkas" label = "air"; gambar akhir (img); judul(char(label)); ditarik;

Loop while yang memungkinkan kita untuk mengontrol perangkat dengan telepon kita mengambil data itu dari giroskop telepon dan kita menghubungkannya ke matriks yang terus mengalirkan data kembali ke MATLAB di komputer. Kami menggunakan pernyataan if yang membaca data matriks dan memberikan output yang menggerakkan perangkat berdasarkan nilai tertentu dari giroskop ponsel. Penting untuk diketahui bahwa kami menggunakan sensor Orientasi perangkat seluler. Matriks satu per tiga yang disebutkan di atas dikategorikan berdasarkan masing-masing elemen sensor orientasi ponsel, yaitu azimuth, pitch, dan side. Pernyataan if menciptakan kondisi yang menyatakan ketika sisi melebihi nilai 50 atau turun di bawah -50, maka robot bergerak sejauh tertentu ke depan (positif 50) atau mundur (negatif 50). Dan hal yang sama berlaku untuk nilai nada. Jika nilai pitch melebihi nilai 25 jatuh di bawah -25, robot berputar pada sudut 1 derajat (positif 25) atau negatif 1 derajat (negatif 25)

sementara true pause(.1) % Jeda 0,5 detik sebelum setiap nilai diambil Controller=iphone. Orientation; % Menetapkan matriks untuk nilai orientasi iPhone ke variabel Azimuthal=Controller(1); % Menetapkan nilai pertama dari matriks ke variabel Pitch=Controller(2); % Menetapkan nilai kedua dari matriks ke variabel (miring ke depan dan ke belakang saat iPhone dipegang menyamping) Side=Controller(3); % Menetapkan nilai ketiga dari matriks ke variabel (miring ke kiri dan kanan saat iPhone dipegang menyamping) % Menyebabkan keluaran berdasarkan orientasi telepon jika Sisi > 130 || Sisi 25 r.moveDistance(-.1) % Memindahkan Roomba mundur sekitar.1 meter jika iPhone dimiringkan ke belakang setidaknya 25 derajat jika tidak Sisi 25 r.turnAngle(-1) % Memutar Roomba sekitar 1 derajat CCW jika iPhone dimiringkan ke kiri setidaknya 25 derajat jika Pitch < -25 r.turnAngle(1) % Memutar Roomba sekitar 1 derajat CW jika iPhone dimiringkan setidaknya 25 derajat ujung

Ini hanyalah sorotan dari bagian utama kode kami, yang kami sertakan jika Anda perlu menyalin dan menempelkan bagian dengan cepat untuk keuntungan Anda. Namun, seluruh kode kami dilampirkan di bawah ini jika diperlukan

Langkah 5: Kesimpulan

Kode yang kami tulis ini dirancang khusus untuk robot kami serta visi proyek kami secara keseluruhan. Tujuan kami adalah menggunakan semua keterampilan pengkodean MATLAB kami untuk membuat skrip desain yang memanfaatkan sebagian besar fitur robot. Menggunakan pengontrol telepon tidak sesulit yang Anda bayangkan, dan kami berharap kode kami dapat membantu Anda lebih memahami konsep di balik pengkodean iRobot.

Direkomendasikan: