Isi kandungan:

Roomba yang Membantu Angkasawan: 4 Langkah
Roomba yang Membantu Angkasawan: 4 Langkah

Video: Roomba yang Membantu Angkasawan: 4 Langkah

Video: Roomba yang Membantu Angkasawan: 4 Langkah
Video: jadi robot besar ?? 2024, Julai
Anonim
Roomba yang Membantu Angkasawan
Roomba yang Membantu Angkasawan

Projek ini dibuat dengan menggunakan Raspberry Pi 3 di iRobot Buat Versi 2. MATLAB digunakan untuk memprogram robot untuk mengikuti arahan khusus menggunakan sensor dan kamera. Sensor dan kamera digunakan untuk melakukan tugas-tugas khusus yang akan mengikuti angkasawan dan memberi dia kemampuan untuk berkomunikasi dengan pangkalan rumahnya jika ada yang tidak kena.

Langkah 1: Bahagian yang Diperlukan

Bahagian yang Diperlukan
Bahagian yang Diperlukan
Bahagian yang Diperlukan
Bahagian yang Diperlukan
Bahagian yang Diperlukan
Bahagian yang Diperlukan
Bahagian yang Diperlukan
Bahagian yang Diperlukan

1. iRobot Buat Versi 2

IRobot Create adalah bahagian terpenting dari projek ini kerana dapat diprogramkan dan dapat menjadi perwakilan yang hebat untuk pelayar sebenar yang mengikuti angkasawan dan membantu mereka di masa depan

2. Raspberry Pi 3

Raspberry Pi adalah program yang digunakan untuk projek ini. Kod ini direka untuk Pi dan versi Pi yang dilampirkan adalah 3 (model B). Papan yang boleh diprogramkan lain seperti arduino boleh digunakan, namun arduino dan kebanyakan papan lain memerlukan pengkodan yang berbeza daripada yang dijelaskan dalam langkah lain

3. Modul Kamera Raspberry Pi

Satu-satunya sambungan luar biasa ke Raspberry Pi yang diperlukan untuk projek ini adalah Modul Kamera. Modul kamera adalah bahagian tidak terpisahkan dari projek ini, kerana roomba hanya akan melakukan tugas berdasarkan apa yang dilihatnya di dalam kamera

4. MATLAB 2018a

Versi kedua terbaru MATLAB, 2018a, digunakan untuk pengekodan yang terlibat dalam persediaan ini. Kemungkinan banyak versi lain dari MATLAB akan berfungsi dengan baik kerana pengaturcaraan roomba sudah lama berjalan

Langkah 2: Konfigurasi Fail dan Kamera

Konfigurasi Fail dan Kamera
Konfigurasi Fail dan Kamera

1. Sambungan Raspberry Pi dan Kamera ke roomba

  • Pi boleh menyambung ke iRobot secara langsung dengan USB mikro. Itu sahaja yang perlu digunakan. Walau bagaimanapun, disarankan agar ia diletakkan dengan selamat di ruang bilik seperti yang ditunjukkan dalam gambar sepanjang pembentangan setakat ini.
  • Kamera mempunyai sambungan langsung ke Raspberry Pi dan sangat disarankan agar sesuatu dibeli atau dibuat untuk menahan kamera secara langsung ke atas. Tidak ada gunanya kamera jika tidak dapat ditahan di tempatnya untuk menunjukkan apa yang dilihat oleh roomba.

2. Fail

  • Setelah semuanya disiapkan dan disambungkan, pastikan robot diset semula dan bersedia untuk pergi dengan menahan butang "Spot" dan "Dock" selama 10 saat bersama.
  • Di sinilah MATLAB pertama kali diperlukan. Fail untuk roomba perlu dipasang terlebih dahulu dan semua yang diperlukan untuk menjalankan fail ini adalah kod yang disediakan pada pautan ini:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Langkah 3: Ujian Roomba Permulaan

Terdapat banyak pemeriksaan awal yang harus dilakukan di roomba untuk memastikan ia berfungsi.

1. Pastikan anda disambungkan ke rangkaian WiFi yang sama dengan roomba. Tanpa ini, anda tidak akan pernah melalui MATLAB.

2. Cari nombor mana yang ditugaskan oleh roomba anda sehingga anda dapat secara khusus menyambung ke roomba yang anda pilih. Sebagai contoh, jika nombor roomba anda adalah 30, anda akan menyambungnya dengan menaip roomba (30) ke tetingkap perintah di MATLAB.

3. Roomba dapat dikawal melalui struktur dalam MATLAB. Sebagai contoh, jika anda menetapkan kod anda untuk roomba (30) ke pemboleh ubah 'r', robot dapat bergerak maju dengan perintah r.moveDistance (0.2, 0.1).

4. Terdapat banyak perintah yang dapat dikomunikasikan ke roomba dan ini dapat dilihat dengan menaip 'doc roomba' ke tetingkap perintah.

5. Sensor untuk bacaan cahaya, bump, dan tebing semuanya dapat dibaca dengan menggunakan perintah yang dilihat di 'doc roomba' tetapi cara untuk mempunyai menu tetap, rapi untuk melihat data sensor dapat dilihat dengan menggunakan 'r.testSensors '.

6. Setelah menguji semua ini, perisian pengumpulan gambar robot dapat digunakan untuk membaca dan melihat gambar yang diambil. Kod asas untuk ini adalah img = r.getImage dan imshow (img);.

7. Nilai RGB gambar boleh didapati dengan kod red_mean = mean (mean (img (:,:, 1)));

green_mean = min (min (img (:,:, 2))); dan blue_mean = min (min (img (:,:, 3)));.

Langkah 4: Contoh Kod MATLAB

Contoh Kod MATLAB
Contoh Kod MATLAB

Pada ketika ini, anda kini bersedia menggunakan sensor dan perisian mengambil gambar untuk membuat putaran anda sendiri pada Prototaip Membantu Manusia Mars Rover. Contoh kami ialah mengikuti angkasawan dengan mengesan warna putih dan bergerak ke arahnya. Robot akan berbunyi jika sensornya membaca nilai tinggi sehingga angkasawan dapat menetapkan semula robot jika tersangkut atau pergi dan mengambilnya dan menetapkan semula jika tersangkut di tebing. Walau bagaimanapun, ia hanya membaca kesilapan ini selagi ia kelihatan putih. Tanpa dapat melihat warna putih, robot akan memasuki mod kesalahan. Ia diprogramkan untuk mengirim dua jenis e-mel kembali ke pangkalan rumah bergantung pada apa yang dilihatnya. Sekiranya ia melihat warna kulit angkasawan, itu jelas tidak bagus, maka ia akan memberi amaran kepada rumah jika angkasawan itu mempunyai kulit yang tidak berfungsi. Mesej yang lain disediakan sekiranya angkasawan itu hilang dari pandangan. Sekiranya tidak ada warna putih atau warna kulit untuk kamera, robot akan berputar dan menghantar e-mel lain, tetapi berbeza. Gambar di mana roomba tidak dapat melihat angkasawan akan dihantar bersama dengan mesej dalam e-mel. Kod untuk projek kami ditunjukkan di bawah:

untuk i = 1:.1: 3 img = r.getImage; gambar (img) red_mean = min (min (img (:,:, 1))); green_mean = min (min (img (:,:, 2))); blue_mean = min (min (img (:,:, 3))); jika red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || bonggol.kiri> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || cliff.leftFront <10 || cliff.rightFront <10 || cliff.right700 || light.leftFront> 700 || light.leftCenter> 700 || light.rightCenter> 700 || light.rightFront> 700 || light.right> 700 r.beep () r.beep () r.beep () r.beep () r.beep () r.stop lain untuk i = 1: 2 r.moveDistance (0.2, 0.1) r. setDriveVelocity (.3,.2) r.stop end end end jika green_mean <35 && blue_mean <35% warna kulit menunjukkan (perlu disesuaikan berdasarkan warna kulit angkasawan) r.beep (); r.beep (); r.beep (); mel = '[email protected]'; % menghantar e-mel yang menunjukkan saman dimatikan psswd = 'yeah'; hos = 'smtp.gmail.com'; pelabuhan = '465'; emailto = '[email protected]'; m_subject = 'subjek'; m_text = 'ujian'; setpref ('Internet', 'E_mail', mel); setpref ('Internet', 'SMTP_Server', hos); setpref ('Internet', 'SMTP_Username', mel); setpref ('Internet', 'SMTP_Password', psswd); alat peraga = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mel); props.setProperty ('mail.smtp.host', hos); props.setProperty ('mail.smtp.port', port); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'benar'); props.setProperty ('mail.smtp.socketFactory.port', port); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Help!', 'Seragam angkasawan tidak aktif!', img); tamat jika red_mean 135 || green_mean 135 || blue_mean 135 untuk j = 1: 2% jika putih tidak dapat dijumpai oleh robot r.turnAngle (360) mail = '[email protected]'; psswd = 'yeah'; hos = 'smtp.gmail.com'; pelabuhan = '465'; emailto = '[email protected]'; m_subject = 'subjek'; m_text = 'ujian'; setpref ('Internet', 'E_mail', mel); setpref ('Internet', 'SMTP_Server', hos); setpref ('Internet', 'SMTP_Username', mel); setpref ('Internet', 'SMTP_Password', psswd); alat peraga = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', mel); props.setProperty ('mail.smtp.host', hos); props.setProperty ('mail.smtp.port', port); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'benar'); props.setProperty ('mail.smtp.socketFactory.port', port); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Help!', 'angkasawan tidak dapat dijumpai!', img); r. henti hujung hujung

Jelas ia tidak kemas di sini, tetapi ia harus disingkirkan setelah disalin. Kata laluan dan e-mel untuk ini mesti diberikan oleh mereka yang melakukan projek ini.

Walau bagaimanapun, contoh kami adalah salah satu daripada banyak cara untuk bermain-main dengan robot ini agar sesuai dengan semua orang. Terdapat banyak perkara yang perlu dilakukan, yang boleh anda sesuaikan dengan diri sendiri.

Disyorkan: