Isi kandungan:

HackerBox 0024: Pencarian Visi: 11 Langkah
HackerBox 0024: Pencarian Visi: 11 Langkah

Video: HackerBox 0024: Pencarian Visi: 11 Langkah

Video: HackerBox 0024: Pencarian Visi: 11 Langkah
Video: HackerBox #0024: Vision Quest 2024, Julai
Anonim
HackerBox 0024: Visi Pencarian
HackerBox 0024: Visi Pencarian

Vision Quest - Bulan ini, HackerBox Hackers bereksperimen dengan Computer Vision dan Servo Motion Tracking. Instructable ini mengandungi maklumat untuk bekerja dengan HackerBox # 0024, yang boleh anda dapatkan di sini selagi persediaan masih ada. Juga, jika anda ingin menerima HackerBox seperti ini di kotak surat anda setiap bulan, sila langgan di HackerBoxes.com dan sertai revolusi!

Topik dan Objektif Pembelajaran untuk HackerBox 0024:

  • Mengeksperimen dengan Penglihatan Komputer
  • Menyiapkan OpenCV (Penglihatan Komputer)
  • Memprogram Arduino Nano dari Arduino IDE
  • Mengendalikan Servo Motors dengan Arduino Nano
  • Memasang Pemasangan Pan dan Tilt Mekanikal
  • Mengawal Gerak Pan dan Tilt dengan Pengawal Mikro
  • Melakukan Penjejakan Muka menggunakan OpenCV

HackerBoxes adalah perkhidmatan kotak langganan bulanan untuk elektronik dan teknologi komputer DIY. Kami adalah penggemar, pembuat, dan eksperimen. Kita adalah pemimpi impian. HACK PLANET!

Langkah 1: HackerBox 0024: Kandungan Kotak

HackerBox 0024: Kandungan Kotak
HackerBox 0024: Kandungan Kotak
  • HackerBoxes # 0024 Kad Rujukan Terkumpul
  • Pemasangan Pan dan Tilt Tiga Braket
  • Dua Servo MG996R dengan Aksesori
  • Dua Pelekat Servo Pekeliling Aluminium
  • Arduino Nano V3 - 5V, 16MHz, MikroUSB
  • Pemasangan Kamera Digital dengan Kabel USB
  • Tiga Kanta dengan Pemasangan Klip Universal
  • Lampu Pen Pemeriksaan Perubatan
  • Pelompat Lelaki / Perempuan Dupont
  • Kabel MicroUSB
  • Decal OpenCV Eksklusif
  • Decal Dia de Muertos Eksklusif

Beberapa perkara lain yang akan membantu:

  • Skrap papan kayu kecil untuk asas kamera
  • Alat pemateri besi solder, solder, dan asas
  • Komputer untuk menjalankan alat perisian

Yang paling penting, anda memerlukan rasa pengembaraan, semangat DIY, dan rasa ingin tahu penggodam. Elektronik DIY tegar bukanlah satu perkara yang remeh, dan kami tidak akan mengurangkannya untuk anda. Tujuannya adalah kemajuan, bukan kesempurnaan. Apabila anda bertahan dan menikmati pengembaraan, kepuasan yang banyak dapat diperoleh daripada belajar teknologi baru dan semoga berjaya menjalankan beberapa projek. Kami mencadangkan untuk mengambil setiap langkah dengan perlahan, mengingat butirannya, dan jangan sesekali ragu-ragu untuk meminta pertolongan.

PERTANYAAN YANG BANYAK DITANYA: Kami ingin meminta semua ahli HackerBox yang sangat baik. Luangkan masa beberapa minit untuk menyemak FAQ di laman web HackerBoxes sebelum menghubungi sokongan. Walaupun kami jelas ingin menolong semua ahli seberapa banyak yang diperlukan, kebanyakan e-mel sokongan kami melibatkan soalan mudah yang dijelaskan dengan jelas dalam Soalan Lazim. Terima kasih kerana memahami!

Langkah 2: Penglihatan Komputer

Visi komputer
Visi komputer

Visi komputer adalah bidang interdisipliner yang menangani bagaimana komputer memperoleh pemahaman tahap tinggi dari gambar atau video digital. Dari perspektif kejuruteraan, penglihatan komputer bertujuan untuk mengotomatisasi tugas yang dapat dilakukan oleh sistem visual manusia. Sebagai disiplin saintifik, visi komputer mementingkan teori di sebalik sistem buatan yang mengekstrak maklumat dari gambar. Data gambar boleh mengambil banyak bentuk, seperti urutan video, pandangan dari banyak kamera, atau data multi-dimensi dari pengimbas perubatan. Sebagai disiplin teknologi, visi komputer berusaha menerapkan teori dan modelnya untuk pembinaan sistem penglihatan komputer. Sub-domain penglihatan komputer merangkumi rekonstruksi pemandangan, pengesanan peristiwa, penjejakan video, pengenalan objek, estimasi pose 3D, pembelajaran, pengindeksan, estimasi gerakan, dan pemulihan gambar.

Sangat menarik untuk diperhatikan bahawa penglihatan komputer boleh dianggap sebagai kebalikan grafik komputer.

Langkah 3: Memproses dan OpenCV

Pemprosesan dan OpenCV
Pemprosesan dan OpenCV

Pemprosesan adalah buku lakaran perisian yang fleksibel dan bahasa untuk belajar bagaimana membuat kod dalam konteks seni visual. Pemprosesan telah mempromosikan literasi perisian dalam seni visual dan literasi visual dalam teknologi. Terdapat puluhan ribu pelajar, seniman, perancang, penyelidik, dan penggemar yang menggunakan Pemprosesan untuk pembelajaran dan prototaip.

OpenCV (Open Source Computer Vision Library) adalah perpustakaan perisian visi komputer dan pembelajaran mesin sumber terbuka. OpenCV dibangun untuk menyediakan infrastruktur umum untuk aplikasi penglihatan komputer dan untuk mempercepat penggunaan persepsi mesin dalam produk komersial. Perpustakaan OpenCV mempunyai lebih dari 2500 algoritma yang dioptimumkan, yang merangkumi sekumpulan komprehensif algoritma visi komputer dan pembelajaran komputer klasik dan terkini. Algoritma ini dapat digunakan untuk mengesan dan mengenali wajah, mengenal pasti objek, mengklasifikasikan tindakan manusia dalam video, mengesan pergerakan kamera, mengesan objek bergerak, dan sebagainya.

Pasang OpenCV dalam Pemprosesan dari menu Fail> Contoh dengan memilih "Tambah Contoh" dan kemudian di bawah tab Perpustakaan memasang kedua perpustakaan Video dan OpenCV. Buka contoh LiveCamTest untuk penjejakan wajah asas. Lihat beberapa contoh OpenCV lain untuk Pemprosesan di sini.

Lebih Banyak Sumber:

Bermula dengan Computer Vision adalah projek buku yang menyediakan jalan masuk yang mudah untuk eksperimen kreatif dengan visi komputer. Ia memperkenalkan kod dan konsep yang diperlukan untuk membina projek penglihatan komputer.

Memprogram Visi Komputer dengan Python adalah buku O'Reilly di PCV, modul Python sumber terbuka untuk penglihatan komputer.

Pembelajaran OpenCV

Visi Komputer: Algoritma dan Aplikasi

Menguasai OpenCV

Kursus Stanford CS231n Rangkaian Neural Konvolusional untuk Pengiktirafan Visual (16 Video)

Chris Urmson TED Talk Bagaimana kereta tanpa pemandu melihat jalan raya

Langkah 4: Platform Arkino Nano Mikrokontroler

Platform Arkino Nano Mikrokontroler
Platform Arkino Nano Mikrokontroler

Kita boleh menggunakan platform pengawal mikro biasa untuk mengawal servo di dudukan kamera pan dan miring. Arduino Nano adalah papan Arduino miniatur permukaan-mount, mesra roti, dengan USB bersepadu. Ia mempunyai ciri-ciri yang luar biasa dan mudah digodam.

Ciri-ciri:

  • Pengawal mikro: Atmel ATmega328P
  • Voltan: 5V
  • Pin I / O Digital: 14 (6 PWM)
  • Pin Input Analog: 8
  • Arus DC setiap Pin I / O: 40 mA
  • Memori Kilat: 32 KB (2KB untuk pemuat but)
  • SRAM: 2 KB
  • EEPROM: 1 KB
  • Kelajuan Jam: 16 MHz
  • Dimensi: 17mm x 43mm

Varian khas Arduino Nano ini adalah reka bentuk Robotdyn hitam. Antaramuka menggunakan port MicroUSB on-board yang serasi dengan kabel MicroUSB yang sama yang digunakan dengan banyak telefon bimbit dan tablet.

Arduino Nanos mempunyai cip jambatan USB / Serial terbina dalam. Pada varian khusus ini, chip jambatan adalah CH340G. Perhatikan bahawa terdapat pelbagai jenis cip jambatan USB / Serial lain yang digunakan pada pelbagai jenis papan Arduino. Cip ini membolehkan port USB komputer anda berkomunikasi dengan antara muka bersiri pada cip pemproses Arduino.

Sistem operasi komputer memerlukan Pemacu Peranti untuk berkomunikasi dengan cip USB / Serial. Pemandu membenarkan IDE untuk berkomunikasi dengan papan Arduino. Pemacu peranti khusus yang diperlukan bergantung pada versi OS dan juga jenis cip USB / Serial. Untuk cip USB / Serial CH340, terdapat pemacu yang tersedia untuk banyak sistem operasi (UNIX, Mac OS X, atau Windows). Pembuat CH340 membekalkan pemandu tersebut di sini.

Semasa pertama kali memasang Arduino Nano ke port USB komputer anda, lampu hijau akan menyala dan tidak lama selepas LED biru akan mula berkelip perlahan. Ini berlaku kerana Nano sudah dimuatkan dengan program BLINK, yang dijalankan pada Arduino Nano yang baru.

Langkah 5: Persekitaran Pembangunan Bersepadu Arduino (IDE)

Persekitaran Pembangunan Bersepadu Arduino (IDE)
Persekitaran Pembangunan Bersepadu Arduino (IDE)

Sekiranya anda belum memasang Arduino IDE, anda boleh memuat turunnya dari Arduino.cc

Sekiranya anda menginginkan maklumat pengenalan tambahan untuk bekerja di ekosistem Arduino, kami mencadangkan untuk melihat petunjuk untuk Bengkel Pemula HackerBoxes.

Pasang Nano ke kabel MicroUSB dan hujung kabel yang lain ke port USB di komputer, lancarkan perisian Arduino IDE, pilih port USB yang sesuai di IDE di bawah alat> port (mungkin nama dengan "wchusb" di dalamnya). Pilih juga "Arduino Nano" di IDE di bawah alat> papan.

Akhirnya, muatkan sekeping kod contoh:

Fail-> Contoh-> Asas-> Berkedip

Ini sebenarnya adalah kod yang telah dimuat sebelumnya ke Nano dan harus dijalankan sekarang untuk perlahan-lahan mengedipkan LED biru. Oleh itu, jika kita memuatkan kod contoh ini, tidak ada yang akan berubah. Sebaliknya, mari kita ubah sedikit kodnya.

Melihat dengan teliti, anda dapat melihat bahawa program menyalakan LED, menunggu 1000 milisaat (satu saat), mematikan LED, menunggu sesaat lagi, dan kemudian melakukannya sekali lagi - selama-lamanya.

Ubah kod dengan menukar kedua-dua pernyataan "delay (1000)" menjadi "delay (100)". Pengubahsuaian ini akan menyebabkan LED berkelip sepuluh kali lebih pantas, bukan?

Mari muatkan kod yang diubah suai ke Nano dengan mengklik butang UPLOAD (ikon anak panah) tepat di atas kod yang anda ubah. Tonton di bawah kod untuk maklumat status: "menyusun" dan kemudian "memuat naik". Akhirnya, IDE akan menunjukkan "Muat Naik Selesai" dan LED anda akan berkelip lebih cepat.

Sekiranya ada, tahniah! Anda baru sahaja menggodam kod terbenam pertama anda.

Setelah versi sekejap anda dimuat dan berjalan, mengapa tidak melihat apakah anda boleh menukar kod lagi sehingga LED berkelip cepat dua kali dan kemudian tunggu beberapa saat sebelum mengulangi? Mencubanya! Bagaimana dengan beberapa corak lain? Setelah anda berjaya memvisualisasikan hasil yang diinginkan, mengkodkannya, dan memerhatikannya agar berfungsi seperti yang dirancang, anda telah mengambil langkah besar untuk menjadi penggodam perkakasan yang kompeten.

Langkah 6: Motor Servo

Servo Motors
Servo Motors

Motor servo umumnya dikendalikan oleh rangkaian denyut elektrik berulang di mana lebar denyut menunjukkan kedudukan servo. Isyarat kawalan lebar denyut nadi (PWM) sering dihasilkan oleh pengawal mikro biasa seperti Arduino.

Servo hobi kecil, seperti MG996R, disambungkan melalui sambungan tiga wayar standard: dua wayar untuk bekalan kuasa DC dan satu wayar untuk membawa denyut kawalan. Servo MG996R mempunyai suhu voltan operasi 4.8-7.2 VDC.

Langkah 7: Pemasangan Mekanisme Pan and Tilt

Menyusun Mekanisme Pan and Tilt
Menyusun Mekanisme Pan and Tilt
  1. Tarik kedua servo MG996R dari beg mereka dan ketepikan aksesori yang disertakan buat masa ini.
  2. Pasang aluminium, servo coupler pada setiap servo. Perhatikan bahawa penyambung terdapat dalam beg yang terpisah dari servo. Pengganding sangat sesuai. Mulakan dengan menekan pengganding ke hujung output servo dan kemudian pasangkan skru ke lubang tengah. Kencangkan benang untuk menarik pengganding ke output servo.
  3. Perhatikan bahawa terdapat tiga pendakap untuk pemasangan pan-tilt - dua pendakap kotak dan satu pendakap U.
  4. Pasang salah satu pendakap kotak ke lingkaran aluminium untuk salah satu servos. Kami akan memanggil servo ini sebagai servo pan. Luruskan braket kotak dengan dinding tengahnya pada bulatan aluminium sehingga dua dinding pendakap kotak menghadap ke servo kuali. Gunakan lubang tengah di dinding tengah pendakap kotak. Susunan ini seharusnya membolehkan servo pan memutar braket kotak yang terpasang di sekitarnya setelah digerakkan.
  5. Letakkan servo yang lain (tilt servo) ke dalam bracket kotak yang dipasang pada bulatan aluminium servo pan. Gunakan sekurang-kurangnya dua mur dan baut untuk melekatkan servo kecondongan - satu di setiap sisi.
  6. Pegang braket U, masukkan "bantalan" kuningan dari bahagian dalam U melalui salah satu lubang pemasangan pivot besar.
  7. Letakkan braket U dengan bantalan ke servo tilt yang ada di dalam braket kotak sehingga lubang pemasangan pivot besar yang lain (yang tanpa galas) sejajar dengan bulatan aluminium pada servo tilt.
  8. Gunakan skru untuk melekatkan pendakap U ke lingkaran aluminium di satu sisi pendakap U.
  9. Di sisi lain braket U, kencangkan satu skru melalui galas dan masuk ke lubang kecil di dalam pendakap kotak di dalamnya. Ini membolehkan pendakap U berputar di sekitar pendakap kotak kemudian apabila servo kecondongan digerakkan.

Langkah 8: Pemasangan Pemasangan Pan and Tilt

Pemasangan Pemasangan Pan and Tilt
Pemasangan Pemasangan Pan and Tilt
Pemasangan Pemasangan Pan and Tilt
Pemasangan Pemasangan Pan and Tilt

Braket kotak yang tersisa dapat ditarik ke sekerap papan kayu kecil untuk dijadikan pangkalan kamera seperti yang ditunjukkan dalam gambar. Akhirnya, servo panci dipasang di dalam braket kotak yang tersisa menggunakan sekurang-kurangnya dua mur dan baut untuk melekatkan servo ke pendakap - satu di setiap sisi.

Langkah 9: Kawat dan Uji Pemasangan Pan and Tilt

Kawat dan Uji Pemasangan Pan and Tilt
Kawat dan Uji Pemasangan Pan and Tilt

Untuk menyambungkan servo mengikut skema, paling cepat hanya memotong penyambung wanita asli dari servo dan kemudian menggunakan beberapa hujung pelompat DuPont wanita untuk mendapatkan garis isyarat dan garis tanah yang terpasang pada pin Nano.

Nano tidak mempunyai arus yang mencukupi pada bekalan 5V untuk menghidupkan servo dari USB, jadi disyorkan bekalan tambahan. Ini boleh menjadi apa-apa dalam julat 4,8-7,2 Volt. Contohnya, empat bateri AA (dalam siri) akan berfungsi dengan baik. Bekalan bangku atau ketuat dinding juga merupakan pilihan yang baik.

Contoh ringkas kod Arduino yang dilampirkan di sini sebagai PanTiltTest.ino boleh digunakan untuk menguji kawalan kedua-dua servo dari monitor bersiri pada Arduino IDE. Tetapkan kadar baud monitor agar sepadan dengan 9600bps yang ditetapkan dalam kod contoh. Memasukkan nilai sudut antara 0 dan 180 darjah akan meletakkan servo dengan sewajarnya.

Akhirnya, Modul Kamera USB (atau sensor lain) dapat dipasang ke U-Bracket dari Pan-Tilt Assembly untuk digunakan dalam aplikasi pelacakan.

Langkah 10: Penjejakan Muka Dengan OpenCV

Image
Image
Hack Planet
Hack Planet

Sistem pengesanan muka penglihatan mesin dapat dilaksanakan dengan menggabungkan subsistem seperti yang ditunjukkan dalam rajah blok. Sketsa SerialServoControl untuk Arduino boleh didapati dalam tutorial Sparkfun berikut bersama dengan demonstrasi yang berkaitan dengan OpenCV, Processing, Arduino, USB Camera, dan Pan / Tilt Assembly untuk mengesan wajah manusia. Demo ini menggunakan dua servo untuk memposisikan semula kamera agar wajah tetap terpusat di bingkai video walaupun pengguna bergerak di sekitar bilik. Contohnya kod dalam C #, lihat repositori GitHub untuk video CamBot.

Langkah 11: Hack Planet

Sekiranya anda menikmati Instrucable ini dan ingin mempunyai kotak projek elektronik dan teknologi komputer seperti ini dihantar terus ke peti surat anda setiap bulan, sila sertai kami dengan BERLANGGANAN DI SINI.

Jangkau dan kongsi kejayaan anda dalam komen di bawah atau di Laman Facebook HackerBoxes. Pasti beritahu kami jika anda mempunyai sebarang pertanyaan atau memerlukan bantuan mengenai apa sahaja. Terima kasih kerana menjadi sebahagian daripada HackerBoxes. Harap teruskan cadangan dan maklum balas anda. HackerBoxes adalah kotak ANDA. Mari buat sesuatu yang hebat!

Disyorkan: