İçindekiler:

HackerBox 0024: Vizyon Görevi: 11 Adım
HackerBox 0024: Vizyon Görevi: 11 Adım

Video: HackerBox 0024: Vizyon Görevi: 11 Adım

Video: HackerBox 0024: Vizyon Görevi: 11 Adım
Video: HackerBox #0024: Vision Quest 2024, Temmuz
Anonim
HackerBox 0024: Vizyon Görevi
HackerBox 0024: Vizyon Görevi

Vision Quest - Bu ay, HackerBox Hacker'ları Computer Vision ve Servo Motion Tracking ile deneyler yapıyor. Bu Eğitilebilir Tablo, sarf malzemeleri tükenirken buradan alabileceğiniz HackerBox #0024 ile çalışmak için bilgiler içerir. Ayrıca, her ay posta kutunuza böyle bir HackerBox almak istiyorsanız, lütfen HackerBoxes.com'a abone olun ve devrime katılın!

HackerBox 0024 için Konular ve Öğrenme Hedefleri:

  • Bilgisayarla Görme ile Deneme
  • OpenCV (Bilgisayar Görüşü) Kurulumu
  • Arduino Nano'yu Arduino IDE'den Programlama
  • Arduino Nano ile Servo Motorları Kontrol Etme
  • Mekanik Pan ve Eğim Grubunun Montajı
  • Bir Mikrodenetleyici ile Pan ve Tilt Hareketini Kontrol Etme
  • OpenCV Kullanarak Yüz İzleme Gerçekleştirme

HackerBoxes, DIY elektroniği ve bilgisayar teknolojisi için aylık abonelik kutusu hizmetidir. Biz hobiciler, yapımcılar ve deneycileriz. Biz hayallerin hayalperestleriyiz. GEZEGENİ HACK!

Adım 1: HackerBox 0024: Kutu İçeriği

HackerBox 0024: Kutu İçeriği
HackerBox 0024: Kutu İçeriği
  • HackerBoxes #0024 Koleksiyon Referans Kartı
  • Üç Braketli Pan ve Tilt Tertibatı
  • Aksesuarlı İki MG996R Servo
  • İki Alüminyum Dairesel Servo Kuplör
  • Arduino Nano V3 - 5V, 16MHz, MicroUSB
  • USB Kablolu Dijital Kamera Montajı
  • Evrensel Klipsli Montajlı Üç Lens
  • Tıbbi Muayene Kalem Işığı
  • Dupont Erkek/Kadın Süveter
  • Mikro USB Kablosu
  • Özel OpenCV Çıkartması
  • Özel Dia de Muertos Çıkartması

Yardımcı olacak diğer bazı şeyler:

  • Kamera tabanı için küçük ahşap tahta hurda
  • Havya, lehim ve temel havya aletleri
  • Yazılım araçlarını çalıştırmak için bilgisayar

En önemlisi, bir macera duygusuna, DIY ruhuna ve hacker merakına ihtiyacınız olacak. Hardcore DIY elektroniği önemsiz bir uğraş değildir ve sizin için sulamıyoruz. Amaç ilerlemedir, mükemmellik değil. Devam ettiğinizde ve maceranın tadını çıkardığınızda, yeni teknoloji öğrenmekten ve umarım bazı projelerin çalışmasını sağlamaktan büyük bir memnuniyet elde edilebilir. Her adımı yavaş, ayrıntılara dikkat ederek ve yardım istemekten asla çekinmemenizi öneririz.

SIKÇA SORULAN SORULAR: Tüm HackerBox üyelerinden gerçekten büyük bir iyilik istiyoruz. Destek ile iletişime geçmeden önce lütfen HackerBoxes web sitesindeki SSS'yi gözden geçirmek için birkaç dakikanızı ayırın. Açıkça tüm üyelere gerektiği kadar yardım etmek istesek de, destek e-postalarımızın çoğu, SSS'de çok açık bir şekilde ele alınan basit sorular içerir. Anlayışın için teşekkürler!

2. Adım: Bilgisayarla Görme

Bilgisayar görüşü
Bilgisayar görüşü

Bilgisayarla görme, bilgisayarların dijital görüntülerden veya videolardan üst düzey anlayışı nasıl elde ettiğiyle ilgilenen disiplinler arası bir alandır. Mühendislik açısından bakıldığında, bilgisayarla görme, insan görsel sisteminin yapabileceği görevleri otomatikleştirmeye çalışır. Bilimsel bir disiplin olarak bilgisayar vizyonu, görüntülerden bilgi çıkaran yapay sistemlerin arkasındaki teori ile ilgilidir. Görüntü verileri, video dizileri, birden fazla kameradan alınan görüntüler veya tıbbi bir tarayıcıdan alınan çok boyutlu veriler gibi birçok biçimde olabilir. Teknolojik bir disiplin olarak, bilgisayarlı görme, bilgisayarlı görme sistemlerinin inşası için teorilerini ve modellerini uygulamaya çalışır. Bilgisayar görüşünün alt alanları, sahne yeniden oluşturma, olay algılama, video izleme, nesne tanıma, 3B poz tahmini, öğrenme, indeksleme, hareket tahmini ve görüntü restorasyonunu içerir.

Bilgisayarla görmenin bilgisayar grafiklerinin tersi olarak kabul edilebileceğini belirtmek ilginçtir.

3. Adım: İşleme ve OpenCV

İşleme ve OpenCV
İşleme ve OpenCV

Processing, esnek bir yazılım eskiz defteri ve görsel sanatlar bağlamında nasıl kod yazılacağını öğrenmek için bir dildir. İşleme, görsel sanatlar içinde yazılım okuryazarlığını ve teknoloji içinde görsel okuryazarlığı desteklemiştir. Öğrenmek ve prototip oluşturmak için İşleme'yi kullanan on binlerce öğrenci, sanatçı, tasarımcı, araştırmacı ve hobi sahibi var.

OpenCV (Open Source Computer Vision Library), açık kaynaklı bir bilgisayarlı görü ve makine öğrenimi yazılım kitaplığıdır. OpenCV, bilgisayarla görü uygulamaları için ortak bir altyapı sağlamak ve ticari ürünlerde makine algısının kullanımını hızlandırmak amacıyla oluşturulmuştur. OpenCV kütüphanesi, hem klasik hem de son teknoloji bilgisayarlı görme ve makine öğrenimi algoritmalarından oluşan kapsamlı bir set içeren 2500'den fazla optimize edilmiş algoritmaya sahiptir. Bu algoritmalar yüzleri algılamak ve tanımak, nesneleri tanımlamak, videolardaki insan eylemlerini sınıflandırmak, kamera hareketlerini izlemek, hareketli nesneleri izlemek vb. için kullanılabilir.

OpenCV'yi İşleme içinde Dosya > Örnekler menüsünden “Örnek Ekle”yi seçerek ve ardından Kitaplıklar sekmesi altında hem Video hem de OpenCV kitaplıklarını yükleyerek kurun. Temel yüz izleme için LiveCamTest örneğini açın. Diğer OpenCV for Processing örneklerine buradan göz atın.

Daha fazla kaynak:

Bilgisayarla Görmeye Başlarken, bilgisayarla görme ile yaratıcı deneyler için kolay bir giriş noktası sağlayan bir kitap projesidir. Bilgisayarla görü projeleri oluşturmak için gerekli kod ve kavramları tanıtır.

Python ile Bilgisayarla Görmeyi Programlama, bilgisayarla görme için açık kaynaklı bir Python modülü olan PCV üzerine bir O'Reilly kitabıdır.

OpenCV'yi Öğrenmek

Bilgisayarla Görme: Algoritmalar ve Uygulamalar

OpenCV'de Ustalaşmak

Stanford Kursu CS231n Görsel Tanıma için Evrişimli Sinir Ağları (16 Video)

Chris Urmson TED Talk Sürücüsüz bir araba yolu nasıl görür?

Adım 4: Arduino Nano Mikrodenetleyici Platformu

Arduino Nano Mikrodenetleyici Platformu
Arduino Nano Mikrodenetleyici Platformu

Pan ve tilt kamera montajımızdaki servoları kontrol etmek için herhangi bir ortak mikro denetleyici platformunu kullanabiliriz. Arduino Nano, entegre USB'ye sahip, yüzeye monte, devre tahtası dostu, minyatür bir Arduino kartıdır. İnanılmaz derecede tam özellikli ve hacklenmesi kolaydır.

Özellikleri:

  • Mikrodenetleyici: Atmel ATmega328P
  • Voltaj: 5V
  • Dijital I/O Pinleri: 14 (6 PWM)
  • Analog Giriş Pinleri: 8
  • I/O Pin Başına DC Akımı: 40 mA
  • Flash Bellek: 32 KB (önyükleyici için 2KB)
  • SRAM: 2KB
  • EEPROM: 1 KB
  • Saat Hızı: 16 MHz
  • Boyutlar: 17mm x 43mm

Arduino Nano'nun bu özel çeşidi, siyah Robotdyn tasarımıdır. Arayüz, birçok cep telefonu ve tablette kullanılan aynı MicroUSB kablolarıyla uyumlu yerleşik bir MicroUSB bağlantı noktası ile sağlanır.

Arduino Nanos, yerleşik bir USB/Seri köprü çipine sahiptir. Bu özel modelde köprü çipi CH340G'dir. Çeşitli Arduino kartlarında kullanılan çeşitli USB/Seri köprü yongaları olduğunu unutmayın. Bu yongalar, bilgisayarınızın USB bağlantı noktasının Arduino'nun işlemci yongasındaki seri arabirim ile iletişim kurmasını sağlar.

Bir bilgisayarın işletim sistemi, USB/Seri çip ile iletişim kurmak için bir Aygıt Sürücüsü gerektirir. Sürücü, IDE'nin Arduino kartı ile iletişim kurmasını sağlar. Gereken belirli aygıt sürücüsü, hem işletim sistemi sürümüne hem de USB/Seri çipin türüne bağlıdır. CH340 USB/Seri yongaları için birçok işletim sistemi (UNIX, Mac OS X veya Windows) için sürücüler mevcuttur. CH340'ın üreticisi bu sürücüleri burada sağlıyor.

Arduino Nano'yu bilgisayarınızın USB portuna ilk taktığınızda yeşil güç ışığı yanmalı ve kısa bir süre sonra mavi LED yavaşça yanıp sönmeye başlamalıdır. Bunun nedeni, Nano'nun yepyeni Arduino Nano üzerinde çalışan BLINK programı ile önceden yüklenmiş olmasıdır.

Adım 5: Arduino Entegre Geliştirme Ortamı (IDE)

Arduino Entegre Geliştirme Ortamı (IDE)
Arduino Entegre Geliştirme Ortamı (IDE)

Henüz Arduino IDE kurmadıysanız, Arduino.cc'den indirebilirsiniz.

Arduino ekosisteminde çalışmak için ek tanıtım bilgileri istiyorsanız, HackerBoxes Başlangıç Atölyesi talimatlarına göz atmanızı öneririz.

Nano'yu MicroUSB kablosuna ve kablonun diğer ucunu bilgisayardaki bir USB bağlantı noktasına takın, Arduino IDE yazılımını başlatın, araçlar> bağlantı noktası altında IDE'de uygun USB bağlantı noktasını seçin (muhtemelen içinde "wchusb" olan bir ad)). Ayrıca araçlar>pano altında IDE'de "Arduino Nano" seçeneğini seçin.

Son olarak, bir parça örnek kod yükleyin:

Dosya->Örnekler->Temel Bilgiler->Yanıp Sönme

Bu aslında Nano'ya önceden yüklenmiş olan ve mavi LED'i yavaşça yanıp sönmek için şu anda çalışıyor olması gereken koddur. Buna göre bu örnek kodu yüklersek hiçbir şey değişmez. Bunun yerine, kodu biraz değiştirelim.

Yakından bakıldığında, programın LED'i açtığını, 1000 milisaniye (bir saniye) beklediğini, LED'i kapattığını, bir saniye daha beklediğini ve ardından hepsini tekrar yaptığını görebilirsiniz - sonsuza kadar.

"delay(1000)" ifadesinin her ikisini de "delay(100)" olarak değiştirerek kodu değiştirin. Bu değişiklik LED'in on kat daha hızlı yanıp sönmesine neden olur, değil mi?

Değiştirilen kodun hemen üstündeki YÜKLE düğmesine (ok simgesi) tıklayarak değiştirilen kodu Nano'ya yükleyelim. Durum bilgisi için aşağıdaki kodu izleyin: "derleme" ve ardından "yükleme". Sonunda, IDE "Yükleme Tamamlandı" ifadesini göstermeli ve LED'iniz daha hızlı yanıp sönmelidir.

Eğer öyleyse, tebrikler! İlk gömülü kod parçanızı az önce hacklediniz.

Hızlı yanıp sönen sürümünüz yüklenip çalıştığında, LED'in iki kez hızlı yanıp sönmesini sağlamak için kodu tekrar değiştirip tekrarlamadan önce birkaç saniye bekleyip değiştiremeyeceğinize neden bakmıyorsunuz? Bir şans ver! Başka desenlere ne dersiniz? İstenen bir sonucu görselleştirmeyi, kodlamayı ve planlandığı gibi çalıştığını gözlemlemeyi başardığınızda, yetkin bir donanım korsanı olma yolunda büyük bir adım atmış olursunuz.

Adım 6: Servo Motorlar

Servo motorlar
Servo motorlar

Servo motorlar genellikle, darbelerin genişliğinin servonun konumunu gösterdiği bir dizi tekrarlayan elektrik darbesi tarafından kontrol edilir. Darbe genişliği modülasyonlu (PWM) kontrol sinyali genellikle Arduino gibi ortak bir mikro denetleyici tarafından üretilir.

MG996R gibi küçük hobi servoları, standart üç kablolu bağlantı ile bağlanır: DC güç kaynağı için iki kablo ve kontrol darbelerini taşımak için bir kablo. MG996R servolar 4,8-7,2 VDC çalışma voltajı aralığına sahiptir.

Adım 7: Pan ve Tilt Mekanizmasının Montajı

Pan ve Tilt Mekanizmasının Montajı
Pan ve Tilt Mekanizmasının Montajı
  1. Her iki MG996R servoyu da çantalarından çıkarın ve birlikte verilen aksesuarları şimdilik bir kenara bırakın.
  2. Her servoya alüminyum, dairesel bir servo bağlayıcı takın. Kuplörlerin servolardan ayrı torbalarda geldiğine dikkat edin. Bağlayıcı çok sıkı bir uyum. Kuplörü servo çıkışının ucuna bastırarak başlayın ve ardından orta deliğe bir vida geçirin. Kuplörü servo çıkışına çekmek için ipliği sıkın.
  3. Pan-tilt tertibatı için üç braket bulunduğunu unutmayın - iki kutu braketi ve bir U braketi.
  4. Servolardan biri için kutu braketlerinden birini alüminyum daireye monte edin. Bu servoya pan servo diyeceğiz. Kutu braketinin diğer iki duvarı pan servodan uzağa bakacak şekilde kutu braketini orta duvarı alüminyum daireye doğru yönlendirin. Kutu braketinin orta duvarındaki orta delikleri kullanın. Bu düzenleme, pan servonun, çalıştırıldıktan sonra ekli kutu braketini döndürmesine izin vermelidir.
  5. Diğer servoyu (eğim servosu) pan servonun alüminyum çemberine bağlı kutu braketine yerleştirin. Yatırma servosunu her iki tarafa birer tane olmak üzere sabitlemek için en az iki somun ve cıvata kullanın.
  6. U braketini tutarak, pirinç "yatakını" U'nun içinden büyük pivot montaj deliklerinden birine sokun.
  7. Yataklı U braketini, diğer büyük pivot montaj deliği (yataksız) yatırma servosu üzerindeki alüminyum daire ile hizalanacak şekilde kutu braketinin içindeki yatırma servosunun üzerine yerleştirin.
  8. U braketini U braketinin bir tarafındaki alüminyum daireye sabitlemek için vidaları kullanın.
  9. U braketinin diğer tarafında, yatağın içinden ve kutu braketindeki küçük deliğe tek bir vidayı sıkın. Bu, daha sonra tilt servosu çalıştırıldığında U braketinin kutu braketi etrafında dönmesine izin vermelidir.

Adım 8: Pan ve Tilt Tertibatını Monte Etme

Pan ve Tilt Tertibatını Monte Etme
Pan ve Tilt Tertibatını Monte Etme
Pan ve Tilt Tertibatını Monte Etme
Pan ve Tilt Tertibatını Monte Etme

Kalan kutu braketi, resimde gösterildiği gibi bir kamera tabanı görevi görmesi için küçük bir ahşap tahta parçasına vidalanabilir. Son olarak, pan servo, servoyu brakete tutturmak için her iki tarafta bir tane olmak üzere en az iki somun ve cıvata kullanılarak kalan kutu braketine monte edilir.

Adım 9: Pan ve Tilt Tertibatını Kablolayın ve Test Edin

Pan ve Tilt Tertibatını Kablolayın ve Test Edin
Pan ve Tilt Tertibatını Kablolayın ve Test Edin

Servoları şemaya göre kablolamak için, en hızlısı servolardan orijinal dişi konektörleri kesmek ve ardından Nano pinlere bağlı sinyal ve toprak hatlarını almak için bazı dişi DuPont jumper uçları kullanmaktır.

Nano, servoları USB'den çalıştırmak için 5V kaynağında yeterli akıma sahip değildir, bu nedenle ek bir besleme önerilir. Bu, 4.8-7.2 Volt aralığında herhangi bir şey olabilir. Örneğin, dört adet AA pil (seri olarak) iyi çalışacaktır. Bir tezgah kaynağı veya duvar siğili de iyi bir seçimdir.

Buraya PanTiltTest.ino olarak eklenen basit örnek Arduino kodu, Arduino IDE'deki seri monitörden iki servonun kontrolünü test etmek için kullanılabilir. Örnek kodda ayarlanan 9600bps ile eşleşecek şekilde monitör baud hızını ayarlayın. 0 ile 180 derece arasında açı değerleri girmek servoları buna göre konumlandıracaktır.

Son olarak, izleme uygulamalarında kullanılmak üzere USB Kamera Modülü (veya başka bir sensör) Pan-Tilt Tertibatının U Braketine monte edilebilir.

Adım 10: OpenCV ile Yüz İzleme

Image
Image
Gezegeni Hackle
Gezegeni Hackle

Blok şemada gösterildiği gibi alt sistemlerin birleştirilmesiyle bir yapay görme yüz izleme sistemi uygulanabilir. Arduino için SerialServoControl çizimi, bir insan yüzünü izlemek için OpenCV, Processing, Arduino, USB Kamera ve Pan/Tilt Assembly kullanan ilgili bir gösteri ile birlikte aşağıdaki Sparkfun eğitiminde bulunabilir. Demo, kullanıcı odada hareket ederken bile yüzün video karesinde ortalanmasını sağlamak için kamerayı yeniden konumlandırmak için iki servo kullanır. Örneğin, C#'daki kod, CamBot videosu için GitHub deposuna bakın.

Adım 11: Gezegeni Hackleyin

Bu Eğitilebilir Kitaptan memnun kaldıysanız ve bunun gibi bir kutu elektronik ve bilgisayar teknolojisi projesinin her ay posta kutunuza teslim edilmesini istiyorsanız, lütfen BURAYA ABONE OLUN.

Aşağıdaki yorumlarda veya HackerBoxes Facebook Sayfasında başarınızı paylaşın ve paylaşın. Herhangi bir sorunuz varsa veya herhangi bir konuda yardıma ihtiyacınız olursa kesinlikle bize bildirin. HackerBoxes'ın bir parçası olduğunuz için teşekkür ederiz. Lütfen önerilerinizi ve geri bildirimlerinizi gelmeye devam edin. HackerBox'lar SİZİN kutularınızdır. Hadi harika bir şey yapalım!

Önerilen: