Mündəricat:

Şəxsi Özüyeriyən Avtomobilinizi Yaratın - (Bu Təlimat İşdədir): 7 Addım
Şəxsi Özüyeriyən Avtomobilinizi Yaratın - (Bu Təlimat İşdədir): 7 Addım

Video: Şəxsi Özüyeriyən Avtomobilinizi Yaratın - (Bu Təlimat İşdədir): 7 Addım

Video: Şəxsi Özüyeriyən Avtomobilinizi Yaratın - (Bu Təlimat İşdədir): 7 Addım
Video: Şəxsi avtomobillərin kirayəsi 2024, Iyul
Anonim
Image
Image

Salam, Uzaqdan USB Gamepad ilə Sürücü Robotda Digər Təlimatlandırıcıya baxsanız, bu layihə oxşardır, lakin daha kiçik miqyasda. Youtube-da Robototexnika, Evdə Yetişdirilən Səs Tanıma və ya Özünü Sürən Avtomobil çalğı siyahılarını izləyə və ya bir az kömək və ya ilham ala bilərsiniz.

Böyük robotla başladım (Wallace 4), ancaq yerli bir Meetup qrupu qurduğum üçün daha kiçik miqyaslı bir şeyə ehtiyacım var idi və qrup kompüter görmə ilə çox maraqlanırdı.

Bu Udemy kursuna rast gəldim: Mənə bu layihənin ideyasını verən Özüyeriyən Maşınınızı Yarat.

Udemy kursu ilə maraqlanırsınızsa, orada yoxlamağa davam edə bilərsiniz; zaman zaman böyük endirimlə satışa çıxarılır. Qeyd: 1 -ci hissə və 2 -ci hissə var - iki kursu paket olaraq (endirimli) necə əldə etməyiniz barədə bir az araşdırma aparmalısınız.

Bu təlimatın məqsədi ikiqatdır. Birincisi, kursun müəyyən hissələrinə (hissələr və avadanlıqlar kimi) bəzi göstəricilər və alternativlər vermək. İkincisi, kursu genişləndirmək.

Udemy kursunun əsas məqsədi:

Kiçik təkərli bir robot maşını iki zolaqlı bir yolda özünü idarə etməyi bacarmaqdır.

Zolaqlı zolaqları və yolun sonuna çatanda tanımalıdır.

Bir dayanma işarəsini tanımalı (və dayandırmalıdır).

Həm də QIRMIZI və YAŞIL bir yol siqnalı.

Bir maneəni (başqa bir avtomobili) tanımalı və manevr etməlidir.

Bu Təlimat dərsə nə əlavə edir:

Kiçik avtomobili uzaqdan idarə olunan USB Gamepad ilə idarə edin, digər təlimatlarda olduğu kimi.

Kursun təqdim etdiyi şeylərə alternativlər verin.

Kursu almaq məcburiyyətində də olmayacaqsınız:

Başlamaq üçün bu təlimat sizə lazım olan hər şey ola bilər.

Təchizat

Əsas (təklif olunan) hissələr:

Robot şassi

Dörd mühərrik

Arduino

Moruq Pi (3, 3B+, 4)

Kamera (USB veb kamerası və ya Picamera modulu)

Batareya gücü

Açma/söndürmə açarları

tullanan tellər

duruşlar (plastik və bəlkə də metal)

Zəhmət olmasa hissələri satın almadan əvvəl bütün Təlimatlandırmanı və həmçinin videoları nəzərdən keçirin.

Bu layihəni etdikdən sonra dəqiq hissələrin o qədər də kritik olmadığını başa düşürəm.

Addım 1: Parçalar haqqında ətraflı məlumat…

Image
Image
Parçalar haqqında ətraflı məlumat…
Parçalar haqqında ətraflı məlumat…
Parçalar haqqında ətraflı məlumat…
Parçalar haqqında ətraflı məlumat…

Əlaqədar videoda hissələr və tapdığım bəzi məsələlər haqqında ətraflı məlumat verilir.

  • Fərqli şassi / mühərriklər üçün ətrafa baxın
  • Mühərriklərdə artıq lehimlənmiş tellər olmalıdır
  • Bir qazma və qazma ucu və ya daha çox delikli bir şassi istəyə bilərsiniz
  • Kilonun bir problem olduğunu unutmayın. Hər şey mümkün qədər yüngül olmalıdır.
  • L298 H-Bridge motor sürücüsü əla işləyir. QEYD: vintli terminal blokları ilə birini əldə edin (şəkilə baxın)
  • Yəqin ki, həm plastik, həm də metal dayaqlar istəyəcəksiniz, M3 ölçüsü yəqin ki, ən yaxşı seçimdir.

Plastik dayaqlar lövhələri şassiyə quraşdırmaq üçün yaxşıdır (motor sürücüsü, Arduino, Moruq, güc pcb, açma/söndürmə açarı və s.).

Metal kəsişmələr şassi (güc) yığmaq üçün və xüsusən də inkişaf edərkən (proqramlaşdırma, sınaq) yaxşıdır. İnkişaf üçün metal dayaqlar dayaqlar kimi xidmət edə bilər. Necə ki, əsl maşın üzərində işləyirsənsə, təkərləri havada olsun və sərbəst hərəkət edə bilsin deyə avtomobili qaldırmaq istəyirsən. Bu çox vacibdir! Səhvlər edəcəksiniz və maşının sadəcə havaya qalxmasını və qəzaya uğramasını istəmirsiniz.

Qazma + qazma bitləri

Mümkünsə, bir matkapın istifadəsini və iki tərəfli yapışan bant yerinə dayanıqlıqların istifadəsini xüsusi olaraq vurğulamaq istəyirəm. Çox güman ki, bu layihə zamanı bir neçə dəfə lövhələrinizi və s.

Bir qazma istifadə edərək, yenidən yerləşdirilməsini çox asanlaşdırır (xüsusən şassi plastikdirsə) və daha peşəkar görünür.

Addım 2: İnkişaf zamanı Maşını Gücləndirin

İnkişaf zamanı Maşını Gücləndirmək
İnkişaf zamanı Maşını Gücləndirmək
İnkişaf zamanı Maşını Gücləndirmək
İnkişaf zamanı Maşını Gücləndirmək

Məncə, bu layihəyə başlamağın ən sürətli və asan yolu:

  • proqram Arduino eskizinin inkişafı üçün Arduino'yu USB vasitəsilə kompüterinizə bağlayın
  • Raspberry Pi proqramı üçün ən azı 3 Amper təmin edə bilən 5V USB gücünə sahib olmalısınız. Və açma/söndürmə açarı olmalıdır. Kompüterinizə yaxşı və güclü bir USB hub bağlamadığınız təqdirdə, çox güman ki, Moruqu birbaşa kompüterinizdən işlədə bilməyəcəksiniz.
  • Mühərrikləri/təkərləri sınamağa hazır olduğunuzda, ən asanı (şəkilə bax) yaxşı bir enerji təchizatıdır. Ancaq bunlar ucuz deyil.

Bu bölmə ilə əlaqədar fikrim, inkişaf zamanı batareya enerjisindən istifadə etmək istəmədiyinizi söyləməkdir, çünki bu, irəliləyişinizi xeyli ləngidir.

Ayrıca, yuxarıdakı təkliflərə bənzər bir şey edərək, maşını tam olaraq necə gücləndirəcəyiniz barədə (hələ) narahat olmağınız lazım deyil. Layihənin sonrakı qərarını təxirə sala bilərsiniz.

Addım 3: Həqiqi İstifadə zamanı Maşını Gücləndirin

Həqiqi İstifadə zamanı Maşının Gücləndirilməsi
Həqiqi İstifadə zamanı Maşının Gücləndirilməsi
Həqiqi İstifadə zamanı Maşının Gücləndirilməsi
Həqiqi İstifadə zamanı Maşının Gücləndirilməsi

Məntiqə uyğun olaraq 5V gücündəki kursu (və ya etdiyimi) izləmək qərarına gəlsəniz, unutmayın ki, bütün 5V USB güc bankları bu layihə üçün yaxşı deyil.

Burada əsas məqam 5V -ə ehtiyacınızdır, amma ən azı 3 Amperə ehtiyacınız var! Bu şəkildə düşünün - bir dizüstü kompüterə güc verən bir bank istəyərsiniz (bəlkə də).

ABŞ -da yaşayırsınızsa, düşünürəm ki, bunun ən yaxşı yollarından biri Best Buy -dan satın almaqdır. Niyə? 14 günlük geri qaytarma siyasəti səbəbindən.

İşə yarayacaq birini tapmadan əvvəl üç fərqli güc bankını sınamalı oldum. Digərləri, Raspberry Pi-nin aşağı gərginlikdən şikayət etməsinə səbəb olur.

Ən bahalı powerbank ilə başladım və işləyən birini tapana qədər növbəti modeli sınamağa davam etdim (daha baha başa gəlir).

Arduino'yu necə gücləndirmək olar

Udemy kursunda müəllif Arduino -nu birbaşa güc bankından (özünün hazırladığı xüsusi bir pcb vasitəsi ilə) təchiz etməyi seçdi və Arduinonun GPIO konnektorundakı güc pinlərindən istifadə etdi.

Ancaq Arduino -nu USB kabeli ilə birbaşa Raspberry Pi -dən gücləndirməyi seçdim.

Hansının daha yaxşı olduğuna qərar verməli olacaqsınız.

Motor/motor sürücüsünü necə gücləndirmək olar

Udemy kursunda müəllif, motorları/sürücünü birbaşa 5V güc bankından işə salmağı seçdi. Bu yanaşmanı istifadə etsəniz iki mülahizə var.

  1. Mühərriklər ilk dəfə dönməyə başlayanda ən cərəyanı çəkirlər. Bu, güc gərginliyinin 5V -dən aşağı düşməsinə və Moruğun sıfırlanmasına səbəb ola bilər.
  2. Mühərrikləri işə salmaq üçün yalnız 5V istifadə etmək, mühərriklərə bacardığınız qədər güc vermədiyinizi və avtomobilin daha yavaş hərəkət edəcəyini göstərir (daha ləng). Mühərrikləri (bu enerji təchizatı ilə) sınaqdan keçirdim (fotoya baxın) ən azı 9V. 9V -da yaxşı işləyirlər.

9V (və ya daha çox) ilə bağlı müşahidələr

Bu Təlimat üçün bütün fotoşəkillərə və videolara baxsanız, öz 9V güc mənbəyimi yaratmaq üçün xüsusi bir PCB yığdığımı fərq etdiniz. Yol boyu bir neçə şey öyrəndim.

Hal -hazırda, mühərrikləri gücləndirmək üçün paralel olaraq bir neçə (3) 9V batareya hüceyrəsindən istifadə edirəm. Həm qələvi, həm də NiMH təkrar doldurulan batareyalardan istifadə etmişəm.

Öyrənmə Təcrübəsi #1: NiMH 9V batareyalarının düzgün doldurulması uzun müddət (çox saat) çəkir.

Mümkün həll: Çox batareyalı NiMH şarj cihazına investisiya qoyun. "Ağıllı" bir şarj cihazı olmalıdır.

Dezavantajı: ucuz deyil.

2: 9V öyrənmə təcrübəsi əslində bir neçə kiçik daxili hüceyrədən ibarətdir. Bu hüceyrələrdən biri ölsə, bütün batareya yararsızdır. Bu problemi yaşamadım, amma oxudum.

3 saylı öyrənmə təcrübəsi: 9V batareyaların hamısı eyni gərginliyə malik deyil. Bu vacibdir. Çünki gərginlik nə qədər yüksəkdirsə, bir o qədər çox sürət mümkündür. Bəzi batareya hüceyrələri (və şarj cihazları) yalnız 8.4V -dir. Bəziləri hətta daha az. Bəziləri 9.6V -dir.

Öyrənmə Təcrübəsi #4: 9V batareyalar, xüsusən də NiMH olanlar, yüngül çəkiyə malikdir. Yaxşı bir şey. Ancaq əksəriyyəti yalnız mA çıxış cərəyanı verir. Buna görə də onları paralel yerləşdirməli oldum. Qısa müddət ərzində belə, demək olar ki, 2 Amper cari cərəyana ehtiyacınız var.

Öyrənmə Təcrübəsi #5: Radio idarə olunan avtomobillər kimi işlərdə istifadə olunan 9.6V batareya dəsti mövcuddur. Hələ birini istifadə etməmişəm, amma inanıram ki, mənim kimi paralel 9V batareyalar etməkdən daha çox cərəyan verirlər. Ayrıca, tək bir cihazı şarj edə bilərsiniz. Paketlər müxtəlif ölçülərdə olur. Və bir ağırlıq məsələsi var. Və sonra, bütün avtomobili və ya yalnız motorları gücləndirmək üçün paketi istifadə edirsiniz? Bütün avtomobil üçün Raspberry Pi üçün 5V aşağı salınan tənzimləyiciyə ehtiyacınız olacaq.

L298 H-Bridge bu məqsədlə 5V çıxarmaq qabiliyyətinə malikdir, lakin Raspberry Pi üçün nə qədər cərəyan çıxara biləcəyi və L298 lövhəsində çox gərginlik olacağı narahatlıq doğurur.

İki ayrı enerji mənbəyinə sahib olmaq qərarına gəlsəniz, ağırlıq probleminiz ola bilər (çox ağır).

Addım 4: Gamepad Sürücülük üçün Proqramlaşdırma

Düşünürəm ki, artıq bu hissənin bir çoxunu Uzaqdan idarə olunan USB Gamepad Instructable vasitəsi ilə idarə olunan Robotda araşdırdım, buna görə də burada təkrarlamayacağam.

Digər Təlimatdakı proqramlaşdırma/proqram bölmələri yalnız bir təklifdir. Düşünürəm ki, insan sınaq və səhv yolu ilə daha çox şey öyrənir.

Addım 5: Kamera əlavə edin

Kamera əlavə etmək
Kamera əlavə etmək
Kamera əlavə etmək
Kamera əlavə etmək
Kamera əlavə etmək
Kamera əlavə etmək

Udemy kursunda, müəllifin kameranı qaldırmaq üçün bir yol qurmaq üçün yuvarlaq taxta dübel və yapışqan silah istifadə etdiyinə inanıram.

Kameranı iki zolaqlı yola baxacaq şəkildə qaldırmaq istəyəcəksiniz, beləliklə zolaqları daha asan tanıya bilər.

ABŞ -da yaşadığım yerdə taxta dübeller çox ucuzdu. Onları Lowe's və ya Home Depot -dan satın ala bilərsiniz. Dairəvi dübeller yerinə kvadrat dübelləri seçdim.

Mən də kamera qülləsi üçün daha möhkəm bir baza yaratmağı seçdim və bütün qülləni avtomobildən çıxarıla bilən hala gətirdim ki, onunla oynayım və maşının ən yaxşı mövqeyini sınayım.

Ayrıca, bir USB veb kamerası ilə başlayacağımı düşünərək, bəlkə də sonradan Picamera modulundan istifadə etməyə keçəcəyimi düşünərək qülləni düzəltdim.

Balıq gözü tipli bir kameraya investisiya etmək istəyə bilərsiniz.

Çox ucuz bir isti yapışqan silahı aldım, amma qüllənin əsasını daha yaxşı gücləndirmək istədim, buna görə əvvəlcədən bir neçə vida deliyi açdım və hər şeyi daha yaxşı tutmaq üçün vintlər əlavə etdim.

Sonra bazanı maşının şassisinə bağladım.

Daha sonra, hər şeyi dəyişdirmək istəsəm, əsasını şassidən çıxarıram, şassinin yeni yerində yeni deliklər açıram və qülləni şassiyə yenidən bağlayıram.

Hər şeyi sınamaq üçün böyük robotdan (Wallace Robot 4) "təqib et" Python və Node.js kodlarını gətirdim. Zəhmət olmasa "məni izləyin" haqqında daha ətraflı məlumat verən youtubların siyahısı üçün bu hissədəki şəkillərə baxın.

Qeyd etdiyim kimi, əvvəlcə bir USB veb kamera quraşdırmaq daha asan oldu. Daha sonra Picamera modulunu bağlaya bilərəm.

Addım 6: Üz Tanıma - Mövqeyi təyin edin

Image
Image

Bu hissə Udemy kursunun diqqət mərkəzində deyil, amma əyləncəli bir məşq idi.

"Python opencv üz tanıma" üçün bir neçə veb axtarış etsəniz, bunun necə ediləcəyinə dair bir çox yaxşı nümunə tapacaqsınız və hamısı eyni addımları təqib edir.

  1. "haar" üz faylını yükləyin
  2. kameranı işə salın
  3. bir çərçivə tutduğunuz bir döngəyə başlayın
  4. rəngli görüntünü boz rəngə çevirin
  5. üz (lər) i tapması üçün onu opencv -ə verin
  6. bir daxili döngə başlayın (hər üz üçün) (mənim vəziyyətimdə, 1 -dən çox üz varsa abort etmək üçün kod əlavə edirəm)

Bu məqsədlə burada, bir üz aşkar etdikdən sonra, üzü təsvir edən xəyali kvadratın X, Y, W və H -ni tanıyırıq.

Robotun irəli və ya geriyə hərəkət etməsini istəyirsinizsə, W -ni nəzərə almalısınız, əgər W çox böyükdürsə (çox yaxın), robotu geri çəkin. W çox kiçikdirsə (çox uzaqda), robotun irəli getməsini təmin edin.

Sol/sağ hərəkət bir az daha mürəkkəbdir, amma dəli deyil. Sol və sağ üz mövqeyini necə təyin edəcəyinizi izah edən bu hissənin görüntüsünə baxın.

QEYD:

Veb OpenCV nümunələrindən hər hansı birini işə salırsınızsa, hamısı opencv -in "gördüyünün" əsl görünüşünü göstərir, üzü bir meydanda qeyd olunur. Əgər müşahidə etsəniz, hərəkət etməsəniz də o kvadrat sabit (sabit) deyil.

Dəyişən dəyərlər robotun daim irəli, ya geri, sola və ya sağa hərəkət etməsinə səbəb olardı.

Beləliklə, həm irəli/geri, həm də sola/sağa bir növ deltanız olmalıdır.

Sola və sağa baxaq:

Sol və sağ hesabladıqdan sonra fərqi (delta) əldə edin:

delta = abs (sol - sağ)

Hansı birinin daha çox olacağını bilmədiyiniz üçün mütləq götürməlisiniz.

Sonra delta minimumdan çox olduqda hərəkət etməyə cəhd etmək üçün bir şərtli kod əlavə edirsiniz.

İrəli və geri üçün eyni şeyi edərdiniz.

Addım 7: Üz mövqeyi - Hərəkətli robot

Robotun sola və ya sağa, irəli və ya geriyə hərəkət etməsi üçün ehtiyacınız olduğunu bildikdə bunu necə edirsiniz?

Bu Təlimat işlənən bir iş olduğundan, hazırda bu layihə üçün istifadə etmək üçün böyük robotumdan kodu kopyaladım. Zəhmət olmasa, bunların hamısının təfərrüatlı olduğu youtube -dəki Robotics pleylistimə baxın.

Qısacası, kodu qat -qat alıram.

Python üz tanıma skripti Node.js serverinə http sorğuları edir

Node.js serveri, hərəkət istiqamətləri üçün http istəklərini dinləyir, bunları xüsusi serial protokoluna çevirir

Node.js serveri ilə Arduino arasında xüsusi serial protokolu

Robotu hərəkət etdirmək üçün əmrləri yerinə yetirən Arduino eskizi

Udemy kursu bunu yuxarıdakı kimi etmir. Yaxşı bir irəliləyiş əldə etmək və həqiqi görüntü tanıma üzərində dayanmaq istədiyim üçün indiyə qədər əvvəlki kodumu yenidən istifadə etdim.

Tövsiyə: