Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Pengenalan Gerakan Menggunakan Akselerometer dan ESP

Komponen dan persediaan

Arduino 101
Termasuk akselerometer bawaan, jadi tidak diperlukan komponen atau sirkuit tambahan.
× 1
Arduino UNO
Anda dapat menggunakan Arduino Uno (atau Arduino lain) daripada Arduino 101, tetapi Anda akan butuh akselerometer juga.
× 1
Adafruit Analog Accelerometer:ADXL335
Gunakan ini (atau yang setara dengan SparkFun) jika Anda menggunakan Arduino selain Arduino 101 ( yang memiliki akselerometer bawaan).
× 1
SparkFun Triple Axis Accelerometer Breakout - ADXL335
Gunakan ini (atau yang setara dengan Adafruit) jika Anda menggunakan Arduino selain Arduino 101 ( yang memiliki akselerometer bawaan).
× 1

Tentang proyek ini

Ikhtisar

Tutorial ini menunjukkan kepada Anda bagaimana memasukkan pengenalan gerakan dasar ke dalam proyek Arduino Anda menggunakan sistem ESP. Misalnya, Anda mungkin mengenali gestur tenis yang berbeda seperti forehand, backhand, dan servis; elemen rutinitas tarian; gerakan angkat berat; dll. Gerakan tersebut dirasakan menggunakan akselerometer dan dikirim ke aplikasi ESP yang berjalan di komputer Anda. ESP menggunakan algoritme pembelajaran mesin sederhana untuk mencocokkan data akselerometer langsung dengan contoh yang direkam dari gerakan yang berbeda, mengirim pesan kembali ke Arduino ketika mengenali gerakan yang mirip dengan salah satu contoh. Sistem hanya mengenali kemunculan individu dari gestur terpisah; itu tidak memberikan informasi tentang bagaimana gerakan itu dilakukan. Namun, ini dapat digunakan untuk berbagai aplikasi interaktif.

Unduh aplikasi pengenalan gerakan ESP:

  • Mac:ESP-Gestures-Mac-20161028.zip
  • Windows:ESP-Gestures-Win-20161028.zip. Anda mungkin juga memerlukan Visual C++ Redistributable (Pembaruan 3) dari Microsoft.
  • Ubuntu:ESP-Gestures-Ubuntu-20161028.tar.gz
  • Contoh Gerakan:ForehandBackhandServe.grt

Langkah 1. Hubungkan akselerometer Anda.

Jika Anda menggunakan Arduino 101, yang memiliki akselerometer bawaan, Anda dapat melewati langkah ini. Jika tidak, Anda harus menghubungkan akselerometer Anda. Untuk melakukan ini, pertama-tama solder pin header male ke papan breakout, jika Anda belum melakukannya. Kemudian Anda akan menghubungkan akselerometer ke Arduino.

Sebagai jalan pintas, Anda dapat mencolokkan breakout akselerometer langsung ke pin input analog Arduino Uno (atau Arduino lain dengan faktor bentuk yang sama). Kemudian dalam kode Arduino, Anda dapat mengonfigurasi pin yang sesuai untuk memberikan daya dan ground ke akselerometer.

Atau, Anda dapat mencolokkan akselerometer Anda ke papan tempat memotong roti dan menyambungkannya ke Arduino, menghubungkan pin daya dan groundnya ke pin 5V dan GND Arduino, dan pin sumbu X-, Y-, dan Z-nya ke tiga input analog. dari papan Arduino.

Langkah 2. Unggah kode Arduino.

Anda dapat menggunakan salah satu program Arduino di bawah ini untuk membaca data dari akselerometer dan mengirimkannya melalui serial (USB) ke komputer. Pertama, periksa apakah pin yang ditentukan dalam program Arduino cocok dengan cara Anda memasang kabel akselerometer (misalnya xpin sesuai dengan pin input analog yang terhubung ke pin sumbu X akselerometer Anda). (Ini tidak berlaku jika Anda menggunakan Arduino 101, di mana akselerometer terhubung secara internal.) Kemudian pilih board dan port serial yang sesuai dari menu alat Arduino dan unggah sketsa Arduino.

Langkah 3. Periksa data di monitor serial.

Buka monitor serial Arduino, atur ke 9600 baud, dan periksa apakah Anda mendapatkan data akselerometer dari Arduino Anda. Anda akan melihat tiga kolom angka yang berubah saat menggerakkan akselerometer. Gunakan plotter serial Arduino untuk melihat grafik angka-angka ini.

Pastikan untuk menutup monitor serial dan plotter serial sebelum melanjutkan, karena jika tidak, mereka akan memblokir aplikasi ESP untuk berbicara dengan Arduino Anda.

Langkah 4. Jalankan aplikasi pengenalan gerakan ESP dan pilih port serial Anda.

Unduh aplikasi pengenalan gerakan ESP:

  • Mac:ESP-Gestures-Mac-20160812.zip
  • Windows:ESP-Gestures-Win-20160812.zip

Pilih port serial yang sesuai dengan papan Arduino Anda dari menu konfigurasi. (Klik judul "Pilih port serial" untuk membuka daftar port.) 

Anda akan melihat streaming data langsung di plot "Data Mentah". Tiga garis di plot sesuai dengan tiga sumbu akselerometer Anda:garis merah sesuai dengan sumbu X, hijau ke sumbu Y, dan biru ke sumbu Z.

Langkah 5. Catat sampel kalibrasi.

Agar aplikasi ESP memahami kisaran nilai yang diharapkan dari akselerometer dan Arduino Anda, Anda harus merekam sampel kalibrasi. Tempatkan akselerometer Anda pada permukaan yang datar, dengan sumbu Z menghadap ke atas. Tekan dan tahan tombol "1" selama sekitar satu detik untuk merekam sampel kalibrasi "Tegak". Anda akan melihat plot sampel muncul. Kemudian, balikkan akselerometer Anda dan, jaga agar tetap rata dan diam, tahan tombol "2" untuk merekam sampel kalibrasi terbalik. Sistem ESP menggunakan data ini untuk mengetahui nilai numerik mana yang sesuai dengan 0g percepatan (pada sumbu X dan Y) dan mana yang sesuai dengan 1g percepatan (pada sumbu Z).

Langkah 6. Rekam contoh gerakan.

Lanjutkan ke tab "Pelatihan" pada aplikasi ESP dengan mengkliknya atau dengan mengetik huruf kapital "T". Tab ini memungkinkan Anda untuk merekam atau memuat contoh gerakan yang ingin dikenali oleh sistem ESP. Anda dapat merekam contoh hingga sembilan gerakan berbeda.

Untuk merekam contoh gerakan, buat gerakan sambil menekan tombol yang sesuai dengan label yang ingin Anda kaitkan dengan gerakan. Misalnya, untuk merekam gerakan dengan label 1, tahan tombol "1" pada keyboard Anda saat membuat gerakan. (Atau, Anda dapat memuat contoh gerakan tenis di ForehandBackhandServe.grt.)

Pastikan untuk merekam contoh gerakan dengan akselerometer dalam konfigurasi yang sama seperti yang akan dilakukan nanti, saat Anda ingin sistem mengenali gerakan tersebut. Misalnya, Anda mungkin memegang akselerometer di tangan Anda dengan orientasi tertentu, atau menempelkannya ke objek yang akan Anda pegang dengan orientasi tertentu.

Sampel yang baik berisi data yang sesuai dengan keseluruhan gestur, tetapi tanpa banyak data dasar tambahan di awal atau akhir. Artinya, sampel harus dimulai dan diakhiri dengan periode garis yang relatif datar, tidak terlalu panjang atau hilang sama sekali. Selain itu, jika gestur Anda berakhir di tempat yang berbeda dari awalnya, pastikan tidak untuk mencatat waktu saat Anda mengembalikan akselerometer ke posisi awal. Misalnya, jika Anda merekam gerakan gesek ke kanan, Anda hanya ingin merekam sebagian gerakan saat tangan Anda bergerak dari kiri ke kanan, bukan saat tangan Anda kembali ke posisi semula.

Setiap contoh tambahan yang Anda rekam adalah contoh lain yang dapat dicocokkan oleh algoritme pembelajaran mesin saat mengenali gerakan. Itu berarti bahwa jika Anda ingin sistem mengenali variasi yang berbeda dari suatu isyarat (misalnya cara yang berbeda di mana itu dibuat oleh orang yang berbeda), mungkin membantu untuk merekam sampel dari setiap variasi. Di sisi lain, jika Anda memiliki sampel yang buruk, mereka dapat membingungkan sistem; lebih banyak sampel belum tentu lebih baik. Secara umum, kami beruntung merekam sekitar 5 hingga 10 sampel untuk setiap gerakan, meskipun sekali lagi, kualitas sampel individu lebih penting daripada kuantitasnya.

Jika Anda tidak menyukai sampel (misalnya karena Anda menekan tombol pada waktu yang salah dan melewatkan data yang terkait dengan bagian dari gerakan), Anda dapat menghapusnya dengan mengklik kotak di sebelah kata "hapus" di bawah sampel . Anda dapat memangkas sampel dengan mengklik dan menyeret plot sampel untuk memilih bagian sampel yang ingin Anda simpan, lalu mengklik kotak berlabel "trim". Anda dapat menavigasi di antara sampel yang berbeda di kelas dengan mengklik ikon panah di bawah plot untuk sampel. Jika Anda merekam sampel di kelas yang salah, Anda dapat memindahkannya dengan mengklik tombol "label ulang" dan kemudian menekan tombol yang sesuai dengan label yang ingin Anda berikan sampelnya. Untuk memberi nama isyarat, klik tombol "ganti nama", ketik nama dan tekan enter.

Langkah 7. Latih sistem untuk mengenali isyarat.

Setelah Anda merekam beberapa contoh gerakan, Anda dapat melatih sistem ESP untuk mengenali gerakan tersebut dari contoh Anda. Tekan tombol "t" pada keyboard Anda untuk melatih sistem. Anda akan melihat pesan "pelatihan berhasil" muncul di bagian bawah jendela. Sekarang, ketika Anda membuat gerakan yang mirip dengan salah satu contoh rekaman Anda, Anda akan melihat namanya muncul di plot data sensor langsung.

Sistem mungkin tidak bekerja dengan baik saat pertama kali Anda melatihnya. Sangat membantu untuk melatih dan menguji sistem sesering Anda merekam gerakan contoh Anda, sehingga Anda bisa merasakan bagaimana perilakunya.

Khususnya, jika sistem tidak mengenali gerakan yang Anda pikir seharusnya, Anda mungkin ingin merekam contoh tambahan dari gerakan itu. Jika sistem mengenali gerakan saat seharusnya tidak, Anda mungkin ingin menghapus atau memangkas contoh yang terlihat berbeda dari yang lain, atau yang berisi periode panjang garis yang relatif datar. Pastikan untuk menekan "t" setelah Anda mengubah contoh Anda untuk melatih ulang sistem.

Langkah 8. Sesuaikan konfigurasi sistem sesuai kebutuhan.

Meskipun memodifikasi contoh pelatihan Anda mungkin merupakan cara paling penting untuk membantu sistem bekerja dengan benar, ESP juga memungkinkan Anda untuk mengonfigurasi beberapa parameter sistem yang mendasarinya. Untuk melakukannya, klik label "klik untuk membuka konfigurasi". Anda akan melihat dua parameter:variabilitas dan batas waktu. Perhatikan bahwa setelah mengubah parameter ini, Anda perlu melatih ulang sistem dengan menekan "t".

Parameter variabilitas mengontrol seberapa berbeda suatu isyarat dari salah satu contoh yang direkam dan masih dapat dikenali. Semakin tinggi angkanya, semakin berbeda. Jika sistem tampaknya mengharuskan gerakan Anda terlalu mirip dengan contoh rekaman Anda, Anda dapat mencoba meningkatkan jumlah ini. (Anda juga dapat mencoba merekam contoh tambahan.) Jika sistem mengenali gerakan palsu, Anda dapat mencoba menurunkan angka ini, meskipun Anda juga dapat mencoba menghapus contoh pelatihan yang tampak buruk.

Parameter batas waktu mengontrol berapa lama setelah mengenali gerakan, sistem menunggu sebelum mengenali yang baru. Ini diukur dalam milidetik (seperseribu detik). Jika sistem tampaknya kehilangan gerakan yang dilakukan secara berurutan dengan gerakan lain, coba turunkan angka ini. Namun, berhati-hatilah, karena jika Anda membuat angka ini terlalu rendah, sistem dapat mengenali satu gerakan beberapa kali. Jika sistem tampaknya mengenali beberapa gestur saat Anda hanya melakukan satu gestur (mis. jika sistem melihat forehand diikuti oleh backhand saat Anda hanya melakukan forehand), Anda dapat mencoba meningkatkan parameter ini.

Langkah 9. Masukkan pengenalan gerakan ke dalam proyek Arduino Anda.

Saat sistem ESP membuat prediksi, sistem akan mengirimkan pesan ke Arduino Anda dengan nomor isyarat yang dikenalinya (sebagai teks ASCII diikuti oleh baris baru, misalnya "1\n"). Dengan membaca prediksi ini di port serial, Anda dapat membuat Arduino Anda merespons gerakan dengan berbagai cara.

Prediksi juga dikirim melalui TCP ke server yang berjalan pada port localhost 5204 (dalam format yang sama dengan Arduino). Misalnya, ini bisa berupa game yang ditulis dalam Processing atau software lain. Pastikan server TCP berjalan sebelum memulai aplikasi ESP.

Cara Kerjanya

Aplikasi ESP khusus ini menggunakan algoritma yang disebut Dynamic Time Warping (atau DTW). Algoritme ini membelokkan sinyal sensor langsung dengan menghilangkan atau menduplikasi pembacaan individu, menghasilkan berbagai variasi dan memeriksa untuk melihat seberapa miripnya dengan sampel yang direkam. Algoritme mencari sampel pelatihan yang paling dekat dengan data sensor langsung. Jika perbedaan antara keduanya kurang dari ambang batas tertentu, itu menganggapnya cocok dan mengeluarkan prediksi yang sesuai dengan kelas pelatihan yang berisi sampel itu. Anda dapat menyetel jarak yang diperlukan menggunakan parameter "variabilitas" di menu tarik-turun konfigurasi.

Pengenalan gerakan hanya satu domain yang sistem ESP dapat diterapkan. ESP dibangun di atas Gesture Recognition Toolkit (GRT), yang, terlepas dari namanya, sebenarnya berisi berbagai algoritma pembelajaran mesin yang dapat diterapkan ke berbagai aplikasi penginderaan waktu nyata. ESP mengambil kode untuk aplikasi tertentu dan menerjemahkannya ke dalam antarmuka pengguna yang disesuaikan untuk bekerja dengan alur pembelajaran mesin itu. Program khusus aplikasi ini mencakup alur pembelajaran mesin GRT, spesifikasi input sensor, definisi proses kalibrasi, dan spesifikasi untuk parameter yang dapat disetel. Kami telah membuat contoh ESP untuk penginderaan warna, deteksi pose menggunakan akselerometer, dan pengenalan audio sederhana. Lihat ESP GitHub untuk informasi lebih lanjut.

Kode

Kode ADXL335 Arduino
Kode ini dibaca dari ADXL335 yang terhubung ke Arduino:pin sumbu X akselerometer harus terhubung ke pin A5 Arduino, sumbu Y ke A4, dan sumbu Z ke A3. Bacaan dikirim melalui port serial (USB) pada 9600 baud, sebagai data ASCII yang dipisahkan oleh tab dan diakhiri baris baru.
Kode Akselerometer Arduino 101
Membaca data akselerometer dari akselerometer internal pada Arduino 101. Pembacaan dikirim melalui port serial (USB) pada 9600 sebagai data ASCII yang diakhiri baris baru dan dipisahkan tab.

Proses manufaktur

  1. Sistem Kehadiran Menggunakan Arduino dan RFID dengan Python
  2. Kontrol Jarak Jauh Universal menggunakan Arduino, 1Sheeld, dan Android
  3. Voltmeter DIY Menggunakan Arduino dan Smartphone
  4. IOT - Smart Jar Menggunakan ESP8266, Arduino dan Sensor Ultrasonik
  5. Pengukuran Frekuensi dan Siklus Tugas Menggunakan Arduino
  6. Kontrol Arduino Rover menggunakan Firmata dan Pengontrol Xbox One
  7. Sonar menggunakan arduino dan ditampilkan pada pemrosesan IDE
  8. Mengontrol Kecerahan LED Menggunakan Bolt dan Arduino
  9. Lengan Robot Sederhana dan Cerdas Menggunakan Arduino
  10. Cara Membuat Kompas menggunakan Arduino dan Mengolah IDE