İçindekiler:

Kendi Kendi Kendini Süren Arabanızı Yapın - (Bu Talimat Çalışma Halindedir): 7 Adım
Kendi Kendi Kendini Süren Arabanızı Yapın - (Bu Talimat Çalışma Halindedir): 7 Adım

Video: Kendi Kendi Kendini Süren Arabanızı Yapın - (Bu Talimat Çalışma Halindedir): 7 Adım

Video: Kendi Kendi Kendini Süren Arabanızı Yapın - (Bu Talimat Çalışma Halindedir): 7 Adım
Video: 5 Dakikada Otomatik Vites Araba Nasıl Kullanılır? | 5 Dakikada Otomatik Araba Kullanmayı Öğrenelim 2024, Haziran
Anonim
Image
Image

Merhaba, Uzak USB Gamepad ile Drive Robot'taki diğer Instructable'a bir göz atarsanız, bu proje benzer, ancak daha küçük bir ölçekte. Ayrıca Youtube'daki Robotik, Evde Yetiştirilen Ses Tanıma veya Kendi Kendine Sürüş Araba çalma listelerini takip edebilir veya onlardan biraz yardım veya ilham alabilirsiniz.

Büyük robotla (Wallace 4) başladım, ancak yerel bir Meetup grubuna başladığımdan beri daha küçük ölçekte bir şeye ihtiyacım vardı ve grup bilgisayarla görme ile çok ilgileniyordu.

Bu yüzden, bana bu proje için fikir veren Udemy kursuyla karşılaştım: Kendi Kendi Kendini Süren Arabanı İnşa Et.

Udemy kursuyla ilgileniyorsanız, orayı tekrar kontrol etmeye devam edebilirsiniz; zaman zaman büyük bir indirimle satışa çıkıyor. Not: Bölüm 1 ve Bölüm 2 vardır - iki kursu paket (indirimli) olarak nasıl alacağınız konusunda biraz araştırma yapmanız gerekir.

Bu talimatın amacı iki yönlüdür. İlk olarak, kursun belirli bölümlerine (parçalar ve donanım gibi) bazı ipuçları ve alternatifler vermek. Ve ikincisi, kursu genişletmek için.

Udemy kursunun temel amacı:

küçültülmüş iki şeritli bir yolda kendi kendine gitmek için küçük tekerlekli bir robot araba elde edebilmektir.

Şerit şeritlerini ve yolun sonuna geldiğinde tanıması gerekir.

Bir dur işaretini (ve dur) tanıması gerekir.

Ayrıca KIRMIZI ve YEŞİL bir trafik sinyali.

Ayrıca bir engeli (başka bir araba) tanımalı ve etrafında manevra yapmalıdır.

Bu Eğitilebilir Yazının kursa kattıkları:

Küçük arabayı, bu diğer Eğitilebilir Kitapta olduğu gibi, uzak bir USB Gamepad ile sürün.

Kursun sunduklarına bazı alternatifler verin.

Kursu satın almanız bile gerekmeyebilir:

Bu Eğitilebilir Tablo, başlamak için ihtiyacınız olan tek şey olabilir.

Gereçler

Temel (önerilen) parçalar:

Bir robot şasi

dört motor

Arduino

Ahududu Pi (3, 3B+, 4)

Kamera (USB Web Kamerası veya Picamera modülü)

Pil gücü

Açma/Kapama anahtarları

atlama telleri

stand-off'lar (plastik ve belki metal de)

Parça satın almaya çalışmadan önce lütfen tüm Talimatları ve ayrıca videoları inceleyin.

Bu projeyi yaptıktan sonra, kesin parçaların o kadar kritik olmadığını anladım.

Adım 1: Parçalar Hakkında Daha Fazla Detay…

Image
Image
Parçalar Hakkında Daha Fazla Detay…
Parçalar Hakkında Daha Fazla Detay…
Parçalar Hakkında Daha Fazla Detay…
Parçalar Hakkında Daha Fazla Detay…

İlgili video, parçalar ve bulduğum bazı sorunlar hakkında bazı ayrıntılara giriyor.

  • Farklı şasi / motorlar için etrafa bakın
  • Motorların zaten kendilerine lehimlenmiş telleri olmalıdır.
  • Bir matkap ve matkap ucuna VEYA daha fazla delikli bir şasiye sahip olmak isteyebilirsiniz.
  • Kilonun bir sorun olduğunu unutmayın. Her şey mümkün olduğunca hafif olmalıdır.
  • L298 H-Bridge motor sürücüsü harika çalışıyor. NOT: vidalı klemenslerle bir tane alın (fotoğrafa bakın)
  • Muhtemelen hem plastik hem de metal zıtlıklar isteyeceksiniz, M3 boyutu muhtemelen en iyi seçimdir.

Plastik ayırıcılar, panoları kasaya monte etmek için iyidir (motor sürücüsü, Arduino, Raspberry, güç pcb, açma/kapama anahtarı vb.).

Metal ayırıcılar, kasayı (güç) monte etmek için ve ayrıca özellikle geliştirme yaparken (programlama, test etme) iyidir. Geliştirme için, metal zıtlıklar ayaklık görevi görebilir. Tıpkı gerçek bir araba üzerinde çalışıyormuşsunuz gibi, arabayı tekerlekler havada olacak ve serbestçe hareket edebilecek şekilde yükseltmek istiyorsunuz. Bu çok önemli! Hata yapacaksın ve arabanın öylece havalanıp çarpmasını istemiyorsun.

Matkap + matkap uçları

Mümkünse matkap kullanımını ve çift taraflı yapışkan bant yerine zıtlıklar kullanmayı gerçekten vurgulamak istiyorum. Bu proje sırasında büyük olasılıkla panolarınızı vb. birkaç kez çıkarıp yeniden konumlandıracaksınız ve bandı kullanmak çok dağınık hale geliyor.

Matkap kullanmak, yeniden konumlandırmayı çok kolaylaştırır (özellikle kasa plastik ise) ve daha profesyonel görünür.

Adım 2: Geliştirme Sırasında Araca Güç Verme

Geliştirme Sırasında Araca Güç Verme
Geliştirme Sırasında Araca Güç Verme
Geliştirme Sırasında Araca Güç Verme
Geliştirme Sırasında Araca Güç Verme

Bence bu projeye başlamanın en hızlı ve en kolay yolu:

  • yazılım Arduino eskiz geliştirme için, Arduino'yu bilgisayarınıza USB üzerinden bağlamanız yeterlidir.
  • Raspberry Pi yazılımı için en az 3 Amper sağlayabilecek bir 5V USB gücünüz olmalıdır. Ve açma/kapama düğmesi olmalıdır. Bilgisayarınıza bağlı iyi, güçlü bir USB hub'ınız yoksa, muhtemelen Raspberry'ye doğrudan bilgisayarınızdan güç sağlayamazsınız.
  • Motorları/tekerlekleri test etmeye hazır olduğunuzda, en kolayı (fotoğrafa bakın) iyi bir güç kaynağı. Ancak bunlar ucuz değil.

Bu bölümdeki amacım, geliştirme sırasında pil gücünü kullanmak istemediğinizi söylemektir, çünkü bu, ilerlemenizi büyük ölçüde yavaşlatacaktır.

Ayrıca, yukarıdaki önerilere benzer bir şey yaparak, araca tam olarak nasıl güç vereceğiniz konusunda (henüz) endişelenmenize gerek yok. Bu kararı projede daha sonra erteleyebilirsiniz.

3. Adım: Gerçek Kullanım Sırasında Araca Güç Verme

Gerçek Kullanım Sırasında Araca Güç Verme
Gerçek Kullanım Sırasında Araca Güç Verme
Gerçek Kullanım Sırasında Araca Güç Verme
Gerçek Kullanım Sırasında Araca Güç Verme

Mantığa 5V güç için kursu (veya yaptığım şeyi) izlemeye karar verirseniz, tüm 5V USB güç bankalarının bu proje için iyi olmadığını unutmayın.

Buradaki ana nokta, 5V'a ihtiyacınız var ama en az 3 Ampere ihtiyacınız var! Bunu şu şekilde düşünün - bir dizüstü bilgisayara güç sağlayacak bir güç bankası istiyorsunuz (belki de).

ABD'de yaşıyorsanız, bunu yapmanın en iyi yollarından birinin Best Buy'dan satın almak olduğunu düşünüyorum. Niye ya? İadeler için 14 günlük para iade politikaları nedeniyle.

İşe yarayacak bir tane bulmadan önce aslında üç farklı powerbank denemek zorunda kaldım. Diğerleri Raspberry Pi'nin düşük voltajdan şikayet etmesine neden oluyor.

En ucuz powerbank ile başladım ve işe yarayan bir tane bulana kadar bir sonraki modeli denemeye devam ettim (bu daha pahalı).

Arduino'ya nasıl güç verilir

Udemy kursunda yazar, Arduino'ya doğrudan güç bankasından (kendi yaptığı özel bir pcb aracılığıyla) güç vermeyi seçti ve Arduino'nun GPIO konektöründeki güç pinlerini kullandı.

Ancak, Arduino'ya doğrudan Raspberry Pi'den USB kablosuyla güç vermeyi seçtim.

Hangisinin daha iyi olduğuna karar vermen gerekecek.

Motorlara/motor sürücüsüne nasıl güç verilir

Udemy kursunda yazar, motorlara/sürücüye doğrudan 5V güç bankasından güç vermeyi seçti. Bu yaklaşımı kullanırsanız iki husus vardır.

  1. Motorlar ilk dönmeye başladıklarında en fazla akımı çekerler. Bu, güç voltajının 5V'nin altına düşmesine(dalmasına) ve Raspberry'nin sıfırlanmasına neden olabilir(olacaktır).
  2. Motorlara güç sağlamak için yalnızca 5V kullanmak, motorlara mümkün olduğu kadar fazla güç sağlamadığınız ve arabanın daha yavaş hareket edeceği (daha yavaş) anlamına gelir. Motorları (bu güç kaynağıyla) (fotoğrafa bakın) en az 9V'a test ettim. 9V'da iyi çalışıyorlar.

9V (veya daha fazla) ile ilgili gözlemler

Bu Eğitilebilir Tablonun tüm fotoğraflarına ve videolarına bir göz attıysanız, kendi 9V güç kaynağımı oluşturmak için özel bir PCB monte ettiğimi fark etmişsinizdir. Yol boyunca birkaç şey öğrendim.

Şu anda motorlara güç sağlamak için birkaç (3) 9V pil hücresini paralel olarak kullanıyorum. Hem alkalin hem de NiMH şarj edilebilir piller kullandım.

Öğrenme Deneyimi #1: NiMH 9V pillerin doğru şekilde şarj edilmesi uzun zaman alır (birkaç saat).

Olası Çözüm: Çok pilli bir NiMH şarj cihazına yatırım yapın. "Akıllı" bir şarj cihazı olmalıdır.

Dezavantajı: Ucuz değiller.

Öğrenme Deneyimi #2: 9V piller aslında birkaç küçük iç hücreden oluşur. Bu hücrelerden biri ölürse, pilin tamamı işe yaramaz. Bu sorunu YAŞAMADIM ama okudum.

Öğrenme Deneyimi #3: Tüm 9V piller aynı voltajda değildir. Bu önemli. Çünkü voltaj ne kadar yüksek olursa, o kadar fazla hız mümkündür. Bazı pil hücreleri (ve şarj cihazları) yalnızca 8,4V'dir. Bazıları daha da az. Bazıları 9.6V.

Öğrenme Deneyimi #4: 9V piller, özellikle NiMH piller hafiftir. İyi bir şey. Bununla birlikte, çoğu yalnızca mA çıkış akımı sağlar. Bu yüzden onları paralel yerleştirmek zorunda kaldım. Kısa süreler için bile yaklaşık 2 Amperlik bir toplam akım kapasitesine ihtiyacınız vardır.

Öğrenme Deneyimi #5: Radyo kontrollü arabalar gibi şeyler için kullanılan 9.6V pil paketleri var. Henüz kullanmadım ama benim yaptığım gibi paralel 9V pillerden daha fazla akım sağladıklarına inanıyorum. Ayrıca, tek üniteyi şarj edebilirsiniz. Paketler farklı boyutlarda gelir. Bir de ağırlık meselesi var. Ve sonra, tüm arabaya güç sağlamak için paketi mi yoksa sadece motorları mı kullanıyorsunuz? Tüm araba için, Raspberry Pi için 5V'luk bir düşürme regülatörüne ihtiyacınız olacak.

L298 H-Bridge, bu amaç için 5V çıkış verme yeteneğine sahip, ancak Raspberry Pi için ne kadar akım üretebileceği ve L298 kartında çok fazla zorlama olup olmayacağı konusunda endişeliyim.

İki ayrı güç kaynağına sahip olmaya karar verirseniz, kilo sorununuz olabilir (çok ağır).

Adım 4: Gamepad Sürüşü için Yazılım Programlama

Sanırım bu bölümün çoğunu Robot Driven Via Remote USB Gamepad Eğitilebilir bölümünde zaten ele aldığımı düşünüyorum, bu yüzden burada tekrar etmeyeceğim.

Bu diğer Eğitilebilir Tablodaki programlama/yazılım bölümleri sadece bir öneridir. Bence insan deneme yanılma yoluyla daha çok şey öğreniyor.

Adım 5: Kamera Ekleme

Kamera Ekleme
Kamera Ekleme
Kamera Ekleme
Kamera Ekleme
Kamera Ekleme
Kamera Ekleme

Udemy kursunda, yazarın kamerayı yükseltmek için bir yol oluşturmak için yuvarlak ahşap dübeller ve bir tutkal tabancası kullandığına inanıyorum.

Şeritleri daha kolay tanıyabilmesi için kamerayı iki şeritli yola bakacak şekilde yükseltmek isteyeceksiniz.

ABD'de yaşadığım yerde, ahşap dübeller çok ucuzdu. Bunları Lowe's veya Home Depot'tan satın alabilirsiniz. Yuvarlak dübeller yerine kare dübeller seçtim.

Ayrıca kamera kulesi için daha sağlam bir taban yapmayı seçtim ve kulenin tamamını arabadan çıkarılabilir hale getirdim, böylece arabada onun için en iyi konumun ne olduğuyla oynayabilir ve deneyler yapabilirim.

Ayrıca kuleyi bir USB web kamerası ile başlayacağımı, ancak muhtemelen daha sonra Picamera modülünü kullanmaya devam edeceğimi düşünerek yaptım.

Balık gözü tipi bir kameraya yatırım yapmak isteyebilirsiniz.

Çok ucuz bir sıcak tutkal tabancası aldım, ancak kulenin tabanını daha iyi güçlendirmek istedim, bu yüzden önceden bazı vida delikleri açtım ve her şeyi daha iyi bir arada tutmak için vidalar ekledim.

Sonra tabanı arabanın şasisine vidaladım.

Daha sonra, işleri hareket ettirmek istersem, tabanı kasadan söküp kasanın yeni yerine yeni delikler açarım ve kuleyi kasaya yeniden cıvatalarım.

Her şeyi test etmenin bir yolu olarak büyük robottan (Wallace Robot 4) "beni takip et" Python ve Node.js kodunu getirdim. "Beni takip et" hakkında çok daha fazla ayrıntı veren youtube'ların listesi için lütfen bu bölümdeki fotoğraflara bakın.

Bahsettiğim gibi, önce bir USB web kamerasını takmak daha kolaydı. Daha sonra Picamera modülünü monte edebilirim.

Adım 6: Yüz Tanıma - Konumu Belirleyin

Image
Image

Bu kısım Udemy kursunun odak noktası değil ama eğlenceli bir alıştırmaydı.

"python opencv yüz tanıma" için biraz web araması yaparsanız, bunun nasıl yapılacağına dair birçok iyi örnek bulacaksınız ve hepsi hemen hemen aynı adımları takip ediyor.

  1. "haar" yüz dosyasını yükleyin
  2. kamerayı başlat
  3. bir çerçeve yakaladığınız bir döngü başlatın
  4. renkli görüntüyü gri tonlamaya dönüştür
  5. yüzleri bulması için opencv'ye besleyin
  6. bir iç döngü başlat (bulunan her yüz için) (benim durumumda, 1'den fazla yüz varsa iptal etmek için kod ekliyorum)

Burada bu amaçla, bir yüz tespit ettiğimizde, yüzü çevreleyen hayali karenin X, Y, W ve H'sini biliyoruz.

Robotun ileri veya geri hareket etmesini istiyorsanız, sadece W'yi göz önünde bulundurmalısınız. W çok büyükse (çok yakın), robotun geri hareket etmesini sağlayın. W çok küçükse (çok uzak), robotun ilerlemesini sağlayın.

Sol/sağ hareketi biraz daha karmaşık ama çılgın değil. Sol ve sağ yüz konumunun nasıl belirleneceğinin ayrıntılarını veren bu bölümdeki resme bir göz atın.

NOT:

Web OpenCV örneklerinden herhangi birini çalıştırırsanız, hepsi opencv'nin "gördüğünün" gerçek görünümünü gösterir, yüzün bir karede anahatları çizilir. Eğer gözlemleyecekseniz, hareket etmeseniz bile o kare sabit(sabit) değildir.

Değişen bu değerler robotun sürekli hareket halinde, ileri veya geri, sola veya sağa gitmesine neden olacaktır.

Bu nedenle, hem ileri/geri hem de sol/sağ için bir çeşit deltaya ihtiyacınız olacak.

Sağa karşı sola alalım:

Sola ve sağa hesapladıktan sonra farkı alın (delta):

delta = abs(sol - sağ)

Mutlak olanı almalısın çünkü hangisinin daha büyük sayı olacağını bilmiyorsun.

Ardından, yalnızca delta minimumdan büyükse hareket etmeye çalışmak için bazı koşullu kodlar eklersiniz.

Aynı şeyi ileri ve geri için de yapardınız.

Adım 7: Yüz Pozisyonu - Hareket Eden Robot

Robotun sola veya sağa, ileri veya geri hareket etmesine ihtiyacınız olduğunu öğrendikten sonra, bunu nasıl yaparsınız?

Bu Eğitilebilirlik devam eden bir çalışma olduğundan, şu anda bu proje için kullanmak üzere kodu büyük robotumdan kopyaladım. Lütfen tüm bunların ayrıntılarını verdiği youtube'daki Robotik çalma listeme göz atın.

Kısacası, kodu katmanlar halinde aldım.

Python yüz tanıma betiği, Node.js sunucusuna http istekleri yapar

Node.js sunucusu, hareket yönleri için http isteklerini dinler, bunları özel seri protokole dönüştürür

Node.js sunucusu ve Arduino arasında özel seri protokol

Robotu hareket ettirmek için gerçek komutları yapan Arduino çizimi

Udemy kursu bunu yukarıdaki gibi yapmaz. Ancak iyi bir ilerleme kaydetmek ve gerçek görüntü tanımaya odaklanmak istediğim için, şimdilik önceki kodumu yeniden kullandım.

Önerilen: