Mündəricat:
- Addım 1: Şassi qurun
- Addım 2: Elektronika və Kablolama
- Addım 3: Proqram Altyapısı
- Addım 4: İstifadəçi Arayüzü
- Addım 5: Robot Platformasının Proqramlaşdırılması
- Addım 6: Sensorun Kalibrlənməsi
- Addım 7: Alternativ Dizaynlar
- Addım 8: Şəkil İşlənməsi
- Addım 9: Növbəti addımlar…
Video: Rpibot - Robototexnika öyrənmək haqqında: 9 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:43
Alman avtomobil şirkətində quraşdırılmış proqram mühəndisiyəm. Bu layihəni quraşdırılmış sistemlər üçün bir öyrənmə platforması olaraq başladım. Layihə erkən ləğv edildi, amma o qədər zövq aldım ki, boş vaxtlarımda davam etdim. Nəticə budur…
Aşağıdakı tələblərim vardı:
- Sadə aparat (diqqət proqramdır)
- Ucuz avadanlıq (təxminən 100 €)
- Genişləndirilə bilər (bəzi variantlar artıq təsvirin bir hissəsidir)
- Bütün komponentlər üçün tək 5V mənbədən enerji təchizatı (powerbank)
Öyrənməkdən başqa heç bir məqsəd yox idi. Platforma öyrənmə, müşahidə, robot yarışları,…
Yeni başlayanlar üçün bir dərs deyil. Bu mövzuda bəzi əsas biliklərə ehtiyacınız var:
- Proqramlaşdırma (Python)
- Əsas elektronika (modulları düzgün gərginliklə birləşdirmək üçün)
- Əsas nəzarət nəzəriyyəsi (PID)
Nəhayət, mənim kimi problemlərlə üzləşəcəksiniz. Bir az maraq və dözümlülüklə layihəni keçəcək və problemləri həll edəcəksiniz. Kodum mümkün qədər sadədir və kritik kod xətləri göstərişlər vermək üçün şərh olunur.
Tam mənbə kodu və sənədlər burada mövcuddur:
Təchizat:
Mexanika
- 1x Kontrplak lövhəsi (A4 ölçüsü, 4 mm qalınlığı)
- 3x M4 x 80 Vida və somun
- Enkoder üçün ikinci çıxış mili olan 2x dişli mühərriklər. Təkərlər.
- 1x Pulsuz təkər
1x Pan və tilt kamera montajı (isteğe bağlı)
Elektronika
- Başlıq və kamera ilə 1x Raspberry Pi Zero
- 1x PCA 9685 servo idarəetmə
- 2x Optik kodlayıcı təkər və dövrə
- 1x Qadın tullanan tellər
- 1x USB güc bankı
- 1x DRV8833 ikili motor sürücüsü
- Kamera yelləmək və əymək üçün 2x Micro servo SG90 (isteğe bağlı)
- 1x MPU9250 IMU (isteğe bağlı)
- 1x HC-SR04 ultrasəs məsafə sensoru (isteğe bağlı)
- 1x delikli taxta və lehim teli, başlıqlar,…
Addım 1: Şassi qurun
Yaxşı mexanik dizayner deyiləm. Həm də layihənin məqsədi şassidə çox vaxt sərf etmək deyil. Hər halda, aşağıdakı tələbləri təyin etdim:
- Ucuz materiallar
- Sürətli montaj və sökülmə
- Genişləndirilə bilər (məsələn, əlavə sensorlar üçün yer)
- Elektronika üçün enerjiyə qənaət etmək üçün yüngül materiallar
Kontrplakdan asan və ucuz şassi hazırlana bilər. Çərçivə maşını və əl matkabı ilə işləmək asandır. Sensorlar və mühərriklər üçün tutacaqlar yaratmaq üçün kiçik taxta hissələri yapışdıra bilərsiniz.
Qüsurlu komponentlərin dəyişdirilməsi və ya elektrik ayıklama haqqında düşünün. Əsas hissələr dəyişdirilə bilən vintlər ilə sabitlənməlidir. İsti bir yapışqan silahı sadə ola bilər, amma yəqin ki, şassi qurmağın ən yaxşı yolu deyil … Parçaları asanlıqla sökmək üçün asan bir konsepsiya düşünmək üçün çox vaxt lazım idi. 3D çap yaxşı bir alternativdir, lakin olduqca bahalı və ya vaxt aparan ola bilər.
Pulsuz təkər nəhayət çox yüngüldür və montajı asandır. Alternativlərin hamısı ağır və ya sürtünmə ilə dolu idi (sonuncusunu tapmadan əvvəl onlardan bir neçəsini sınadım). Əsas təkərləri quraşdırdıqdan sonra quyruq boş təkərini düzəltmək üçün yalnız taxta boşluq kəsməliydim.
Təkər xüsusiyyətləri (proqram hesablamaları üçün)
Dairə: 21, 5 sm Pulslar: 20 puls/rev. Çözünürlük: 1 075 sm (nəhayət 1 nəbz təxminən 1 sm -dir, bu proqram hesablamaları üçün asandır)
Addım 2: Elektronika və Kablolama
Layihə diaqramda göstərildiyi kimi fərqli modullardan istifadə edir.
Raspberry Pi Zero əsas nəzarətçidir. Sensorları oxuyur və motorları PWM siqnalı ilə idarə edir. Uzaq bir kompüterə wifi ilə qoşulur.
DRV8833 ikili motorlu H körpüsüdür. Motorlara kifayət qədər cərəyan verir (Raspberry Pi bunu edə bilməz, çünki çıxışlar yalnız bir qədər mA verə bilər).
Optik kodlayıcı, işıq hər dəfə enkoder təkərlərindən keçəndə kvadrat şəkilli bir siqnal verir. Siqnal hər dəfə dəyişəndə məlumat almaq üçün Raspberry Pi -nin HW fasilələrindən istifadə edəcəyik.
Pca9695, servo idarəetmə lövhəsidir. I2C seriyalı avtobusla əlaqə qurur. Bu lövhə, kamın əyilməsi və əyilməsi üçün servoları idarə edən PWM siqnallarını və təchizat gərginliyini təmin edir.
MPU9265, 3 oxlu sürətləndirmə, 3 oxlu bucaq fırlanma sürəti və 3 oxlu maqnit axını sensoru. Əsasən pusula başlığı almaq üçün istifadə edəcəyik.
Fərqli modulların hamısı atlama teli ilə bir -birinə bağlıdır. Çörək taxtası dispetçer vəzifəsini yerinə yetirir və təchizat gərginliyini (5V və 3.3V) və zəmini təmin edir. Bağlantıların hamısı əlaqə cədvəlində təsvir edilmişdir (əlavəyə baxın). 5V -ni 3.3V -ə qoşmaq, ehtimal ki, çipinizi məhv edəcək. Ehtiyatlı olun və təchiz etməzdən əvvəl bütün kabellərinizi iki dəfə yoxlayın (burada xüsusi olaraq kodlayıcı nəzərə alınmalıdır). Bütün lövhələri bağlamadan əvvəl, dispetçer lövhəsindəki əsas təchizat gərginliklərini multimetrlə ölçməlisiniz. Modullar neylon vintlər ilə şassiyə sabitləndi. Həm də burada onları düzəltməyimdən məmnun idim, amma arızalar halında da çıxarıla bilər.
Yalnız lehimləmə nəhayət mühərriklər, çörək taxtası və başlıqlar idi. Düzünü desəm, tullanan telləri sevirəm, amma əlaqənin kəsilməsinə səbəb ola bilər. Bəzi hallarda, bəzi proqram monitorinqləri əlaqələri təhlil etməkdə sizə dəstək ola bilər.
Addım 3: Proqram Altyapısı
Mexanikaya çatdıqdan sonra, rahat inkişaf şərtlərinə sahib olmaq üçün bəzi proqram infrastrukturu quracağıq.
Git
Bu pulsuz və açıq mənbə versiyasına nəzarət sistemidir. Linux kimi böyük layihələri idarə etmək üçün istifadə olunur, ancaq kiçik layihələr üçün də asanlıqla istifadə edilə bilər (bax Github və Bitbucket).
Layihə dəyişiklikləri yerli olaraq izlənilə bilər və eyni zamanda proqramı cəmiyyətlə paylaşmaq üçün uzaq bir serverə göndərilə bilər.
Əsas istifadə olunan əmrlər bunlardır:
git clone https://github.com/makerobotics/RPIbot.git [Mənbə kodunu və git konfiqurasiyasını əldə edin]
git pull mənbə ustası [uzaq depodan ən son məlumatı əldə edin]
git statusu [yerli deponun vəziyyətini əldə edin. Dəyişdirilən fayllar varmı?] Git log [öhdəliklərin siyahısını alın] git add. [bütün dəyişdirilmiş faylları növbəti öhdəlik üçün nəzərə alınacaq mərhələyə əlavə edin] git əmr -m "öhdəlik üçün şərh et" [dəyişiklikləri yerli depoya köçürmək] git push mənbə ustası [bütün öhdəlikləri uzaq depoya köçürmək]
Giriş
Python, bəzi quraşdırılmış giriş funksiyalarını təmin edir. Proqram quruluşu, daha da inkişaf etdirməyə başlamazdan əvvəl artıq bütün qeyd sistemini təyin etməlidir.
Qeydiyyatçı, terminalda və ya bir qeyd sənədində müəyyən bir formatla daxil olmaq üçün konfiqurasiya edilə bilər. Nümunəmizdə, logger web server sinfi tərəfindən konfiqurasiya edilmişdir, lakin biz bunu özümüz də edə bilərik. Burada yalnız qeyd səviyyəsini DEBUG olaraq təyin edirik:
logger = logging.getLogger (_ adı_)
logger.setLevel (logging. DEBUG)
Ölçmə və qurma
Vaxt keçdikcə siqnalları təhlil etmək üçün ən yaxşısı onları bir cədvəldə qurmaqdır. Raspberry Pi -nin yalnız bir konsol terminalı olduğu üçün məlumatları nöqtəli vergüllə ayrılmış csv faylında izləyəcəyik və uzaq PC -dən düzəldəcəyik.
Nöqtəli vergüllə ayrılmış iz faylı əsas python kodumuz tərəfindən yaradılır və bu kimi başlıqlara malik olmalıdır:
zaman damgası; yawCorr; encoderR; I_L; odoDistance; ax; encoderL; I_R; yaw; eSpeedR; eSpeedL; pwmL; speedL; CycleTimeControl; wz; pwmR; speedR; Iyaw; hdg; m_y; m_x; eYaw; cycleTime
1603466959.65;0;0;25;0.0;-0.02685546875;0;25;0;25;25;52;0.0;23;0.221252441406;16;0.0;0;252.069366413;-5.19555664062;-16.0563964844;0;6; 1603466959.71;0;0;50;0.0;0.29150390625;0;50;0;25;25;55;0.0;57;-8.53729248047;53;0.0;0;253.562118111;-5.04602050781;-17.1031494141;0;6; 1603466959.76;0;-1;75;0.0;-0.188232421875;1;75;2;25;25;57;0;52;-24.1851806641;55;0;0;251.433794171;-5.64416503906;-16.8040771484;2;7;
Birinci sütunda vaxt damgası var. Aşağıdakı sütunlar pulsuzdur. Planlaşdırma skripti, çəkiləcək sütunların siyahısı ilə çağırılır:
uzaq@pc: ~/python rpibot_plotter -f trace.csv -p speedL, speedR, pwmL, pwmR
Süjet skripti alət qovluğunda mövcuddur:
Hiyləgər Pythonda mathplotlib istifadə edir. Kompüterinizə kopyalamalısınız.
Daha çox rahatlıq üçün, python skripti, Raspberry Pi iz faylını uzaq bir PC -yə kopyalamaq və siqnal seçimi ilə plotterə zəng etmək üçün istifadə olunan bash script (plot.sh) ilə çağırılır. fayl kopyalanmalıdırsa. Bu hər dəfə əl ilə kopyalamaq əvəzinə mənim üçün daha əlverişli idi. "sshpass" faylını Raspberry Pi -dən uzaq PC -yə scp vasitəsilə kopyalamaq üçün istifadə olunur. Şifrə istəmədən bir faylı kopyalaya bilir (parametr olaraq ötürülür).
Nəhayət, şəkildə göstərildiyi kimi süjetli bir pəncərə açılır.
Uzaqdan ünsiyyət
Raspberry Pi üçün inkişaf interfeysi SSH -dir. Dosyalar birbaşa hədəfdə düzəldilə bilər və ya scp ilə kopyalana bilər.
Robotu idarə etmək üçün Pi üzərində Websockets vasitəsilə nəzarət təmin edən bir veb server çalışır. Bu interfeys növbəti addımda təsvir edilmişdir.
Raspberry Pi qurun
Mənbə kodunun "doc" qovluğunda (setup_rpi.txt) Raspberry Pi quruluşunu izah edən bir fayl var. Açıqlamalar çox deyil, faydalı əmrlər və bağlantılar çoxdur.
Addım 4: İstifadəçi Arayüzü
İstifadəçi interfeysini yerləşdirmək üçün yüngül Tornado veb serverindən istifadə edirik. Robot idarəetmə proqramını işə salanda çağırdığımız Python moduludur.
Proqram memarlığı
İstifadəçi interfeysi aşağıdakı fayllar əsasında qurulmuşdur: gui.html [Veb səhifə nəzarət və tərzinin təsviri] gui.js [Nəzarətləri idarə etmək və robotumuza internet bağlantısı açmaq üçün JavaScript kodunu ehtiva edir] gui.css [Şəkillər html nəzarət edir. Nəzarətçilərin mövqeləri burada müəyyən edilir]
Veb yuvası ünsiyyəti
İstifadəçi interfeysi ən keyfiyyətli deyil, amma işi görür. Burada Websockets kimi mənim üçün yeni olan texnologiyalara diqqət yetirdim.
Veb sayt, Websockets vasitəsi ilə robot veb serveri ilə əlaqə qurur. Bu, əlaqə başladıqca açıq qalacaq ikitərəfli bir əlaqə kanalıdır. Robotun əmrlərini Websocket vasitəsi ilə Raspberry Pi -yə göndəririk və məlumatı (sürət, mövqe, kamera axını) yenidən ekran üçün alırıq.
İnterfeys düzeni
İstifadəçi interfeysində əmrlər üçün əl ilə giriş var. Bu, robotun əmrlərini göndərmək üçün başlanğıcda istifadə edilmişdi. Yoxlama qutusu kamera axınını açır və söndürür. İki sürüşmə kameranın sürüşməsini və əyilməsini idarə edir. İstifadəçi interfeysinin sağ üst hissəsi robotların hərəkətini idarə edir. Sürəti və hədəf məsafəni idarə edə bilərsiniz. Əsas telemetriya məlumatları robot rəsmində göstərilir.
Addım 5: Robot Platformasının Proqramlaşdırılması
Bu hissə layihənin əsas məqsədi idi. DC mühərrikləri ilə yeni şassi təqdim edərkən bir çox proqramı yenidən hazırladım və fərqli səbəblərə görə Python'u proqramlaşdırma dili olaraq istifadə etdim:
- Raspberry Pi əsas dilidir
- Bir çox daxili xüsusiyyətləri və uzantıları olan yüksək səviyyəli bir dildir
- Obyekt yönümlüdür, lakin ardıcıl proqramlaşdırma üçün də istifadə edilə bilər
- Kompilyasiya və ya alət zəncirinə ehtiyac yoxdur. Kodu redaktə edin və işə salın.
Əsas proqram memarlığı
Proqram bir neçə obyektə bölünmüş obyekt yönümlüdür. Fikrim, kodu 3 funksional bloka bölmək idi:
Sense Düşünmək
Sense.py
Əsas sensorların alınması və işlənməsi. Məlumatlar aşağıdakı mərhələdə istifadə etmək üçün lüğətdə saxlanılır.
Control.py
Bir aktuasiya alt sinfi, bəzi abstraksiyadan sonra mühərrikləri və servoları idarə edir. Əsas Control obyekti yüksək səviyyəli əmrləri və motor üçün idarəetmə alqoritmlərini (PID) idarə edir.
rpibot.py
Bu əsas obyekt Tornado veb serverini idarə etmək və ayrı mövzularda məna və nəzarət siniflərini yaratmaqdır.
Hər bir modul tək başına və ya bütün layihənin bir hissəsi olaraq işlədilə bilər. Sensorların düzgün bağlandığını yoxlamaq və doğru məlumatı çatdırmaq üçün yalnız sensor məlumatlarını hiss edə və çap edə bilərsiniz.
PID nəzarəti
İlk vəzifə nəyə nəzarət etmək istədiyimizi öyrənməkdir. Çox mürəkkəb və çox kömək etməyən mövqeyi idarə etməyə çalışaraq başladım.
Nəhayət, hər bir təkər sürətini və robotun istiqamətini idarə etmək istəyirik. Bunu etmək üçün iki nəzarət məntiqini kaskad etməliyik.
Mürəkkəbliyi addım -addım artırmaq üçün robot idarə olunmalıdır:
açıq döngə (sabit güclə)
pwm = K
sonra yaxın döngə alqoritmini əlavə edin
pwm = Kp.speedError+Ki. İnteqrasiya (speedError)
və nəhayət son bir addım olaraq istiqamət nəzarətini əlavə edin.
Sürəti idarə etmək üçün "PI" və yalnız yaw üçün "P" nəzarətindən istifadə etdim. Təcrübə edərək parametrləri əl ilə təyin etdim. Yəqin ki, burada daha yaxşı parametrlərdən istifadə oluna bilər. Hədəfim düz bir xətt idi və demək olar ki, əldə etdim. İstifadəçi interfeysi ilə bəzi dəyişənləri yazmaq üçün proqramda bir interfeys yaratdım. Kp parametrini 1.0 olaraq təyin etmək üçün istifadəçi interfeysində aşağıdakı əmr lazımdır:
SET; Kp; 1.0
P parametrini hər hansı bir aşmamaq üçün kifayət qədər aşağı təyin edə bilərdim. Qalan səhv I parametri ilə düzəldilir (inteqrasiya edilmiş səhv)
Hər iki idarəetməni necə kaskadlaşdıracağımı öyrənmək mənim üçün çətin idi. Həll sadədir, amma əvvəllər bir çox başqa yol sınamışam … Nəhayət, təkərlərin sürət hədəfini bu və ya digər istiqamətə çevirmək üçün dəyişdim. Sürət tənzimləyicisinin bu pozuntunu aradan qaldırmağa çalışdığı üçün sürət idarəetmə çıxışını birbaşa dəyişdirmək səhv idi.
İstifadə olunan idarəetmə diaqramı əlavə olunur. Robot idarəetməsinin yalnız sol tərəfini göstərir.
Addım 6: Sensorun Kalibrlənməsi
Nəzərə alınmalı olan ilk şey, bütün İİB -in düzgün işləməsidir. 3 hissə sifariş etdim və tam işləyən bir sensora sahib olana qədər geri göndərdim. Hər bir əvvəlki sensorda sensorun bəzi hissələri düzgün işləmirdi və ya ümumiyyətlə işləmirdi. Robota quraşdırmadan əvvəl əsasları yoxlamaq üçün bəzi nümunə skriptlərdən istifadə etdim.
IMU sensor siqnalları istifadə etməzdən əvvəl kalibrlənməlidir. Bəzi sensor siqnalları montaj bucağından və mövqeyindən asılıdır.
Sürətlənmə və fırlanma sürətinin kalibrlənməsi
Ən asan kalibrləmə uzunlamasına sürətləndirmədir (A_x). Duranda 0 m/s² ətrafında olmalıdır. Sensoru düzgün döndərsəniz, çəkisini ölçə bilərsiniz (təxminən 9, 8 m/s²). A_x -i kalibrləmək üçün onu düzgün şəkildə bağlamalı və sonra 0 m/s² dayanıqlılıq əldə etmək üçün ofseti təyin etməlisiniz. İndi A_x kalibrləndi, dayanma vəziyyətində oxşar şəkildə fırlanma sürətlərinin əvəzini əldə edə bilərsiniz.
Pusula üçün maqnitometrin kalibrlənməsi
Maqnit sahəsi sensorları üçün daha mürəkkəb bir kalibrləmə lazımdır. Maqnit sahəsini üfüqi səviyyədə əldə etmək üçün m_x və m_y istifadə edəcəyik. M_x və m_y -yə sahib olmaq bizə pusula başlığını hesablamaq imkanı verəcək.
Sadə məqsədimiz üçün yalnız sərt dəmir sapmasını kalibr edəcəyik. Bu, maqnit sahəsinin pozulmalarından asılı olaraq sensor son mövqedə olduğu üçün edilməlidir.
Robotu z oxunun ətrafında döndərərkən m_x və m_y qeyd edirik. XY qrafikində m_x vs m_y qururuq. Şəkildə göstərildiyi kimi bir nəticə elips şəklindədir. Elipsin mənşəyi mərkəzləşdirilməlidir. Burada hər iki istiqamətdə ofsetləri əldə etmək üçün m_x və m_y maksimum və minimum dəyərlərini nəzərdən keçiririk. Nəhayət, kalibrləmə yoxlayırıq və elipsin indi mərkəzdə olduğunu görürük.
Yumşaq dəmir kalibrləmə, şəkli bir elipsdən bir dairəyə dəyişməyimiz deməkdir. Bu, hər bir senor dəyərinə bir faktor əlavə etməklə edilə bilər.
Yenidən kalibrləmə və ya heç olmasa sensorların hələ də kalibrlənib -yoxlanmadığını yoxlamaq üçün bir test proqramı kodlaşdırıla bilər.
Pusula başlığı
Maqnitometr məlumatları indi kompas başlığını hesablamaq üçün istifadə olunacaq. Bunun üçün m_x və m_y siqnallarını bir açıya çevirməliyik. Python, bu hədəfi olan math.atan2 funksiyasını birbaşa təmin edir. Tam hesablama mpu9250_i2c.py faylında ("calcHeading (mx, my, mz)") müəyyən edilmişdir.
Addım 7: Alternativ Dizaynlar
Dizayn tamamilə açıq olduğu üçün layihə çox vaxt aldı. Hər bir komponent üçün bir prototip tətbiq etdim və sistemin məhdudiyyətlərini yaşadım.
Ən mürəkkəb mövzu təkər kodlayıcısı idi. Hal -hazırda istifadə olunan optik kodlayıcı tapmadan əvvəl 3 fərqli variantı sınadım. Düşünürəm ki, belə bir layihədə ləğv edilmiş həllər də çox maraqlıdır. Ən çox öyrəndiyim hissələrə aiddir.
Pca 9695 -ə qoşulan davamlı fırlanma servo
Bir DC mühərriki üçün əlavə bir H körpüsünün qarşısını almaq üçün əvvəlcə davamlı fırlanma servoları ilə başladım. Bunlar artıq mövcud olan pca 9695 servo sürücüsü tərəfindən idarə edilmişdir. Bütün hərəkət mexanikası və müxbir elektronika daha sadə idi. Bu dizaynın iki çatışmazlığı var idi:
- Servoların zəif idarəetmə diapazonu.
- Eksik kodlayıcı saxlama yeri
Servo 50% pwm ilə hərəkət etməyə başlayır və təxminən 55% tam sürətə malikdir. Bu çox zəif bir nəzarət aralığıdır.
Bir kodlayıcı tutmadan, işə hazır bir kodlayıcı tapmaq çox çətin idi. Şassiyə quraşdırılmış 3 fərqli əks etdirmə kodlayıcısını sınadım. Təkərin kənarında qara və ağ hissələri olan özüyeriyən kodlayıcı çarxı yapışdırdım. Doğru siqnal almaq üçün çoxlu siqnal işlənməsinə ehtiyac duyan QTR-1RC sensorlarından istifadə etdim. Raspberry Pi bu cür real vaxt emalını həyata keçirə bilmədi. Buna görə robota real vaxt nəzarətçisi olaraq NodeMCU D1 mini əlavə etmək qərarına gəldim. İşlənmiş sensor məlumatlarını çatdırmaq üçün UART seriyası ilə moruq Pi ilə əlaqələndirildi. NodeMCU eyni zamanda HC-SR04 sensorunu da idarə edirdi. Mexanika çətin və çox möhkəm deyildi, seriya xətti I2C xəttindən və mühərriklərdən səs-küy alırdı, buna görə də nəhayət şassinin ikinci versiyasını sadə dişli DC mühərrikləri ilə qurdum. bir H körpüsü. Bu mühərriklərdə optik kodlayıcı yerləşdirmək üçün ikincil çıxış mili var.
Addım 8: Şəkil İşlənməsi
Avtonom sürücülük qabiliyyətini yaxşılaşdırmaq üçün bəzi görüntü emal edə bilərik.
Opencv kitabxanası bunun üçün bir istinaddır. Python tərəfindən maneələrin aşkarlanmasını sürətlə həyata keçirmək üçün istifadə edilə bilər.
Bir şəkil çəkirik və bəzi görüntü işləmə vəzifələrini tətbiq edirik:
İlk sınaqlar Canny və Sobel dəyişiklikləri ilə edildi. Canny yaxşı namizəd ola bilər, amma kifayət qədər məntiqli deyil. Sobel çox həssasdır (çox obyekt aşkarlanıb).
Nəhayət bütün üfüqi və şaquli qradiyentləri qarışdırmaq üçün öz filtrimi hazırladım (mebelləri aşkar edin):
- Rəng görüntüsünü boz səviyyəli bir görüntüyə çevirin
- Kiçik səs -küyü aradan qaldırmaq üçün görüntünü bulanıqlaşdırın
- Görüntünü qara və ağ görüntüyə eşik edin
- İndi divar və mebel kimi obyektləri aşkar etmək üçün üfüqi və şaquli qradiyentləri aşkar edirik
- Yalnız qalan böyük konturları süzürük (şəkildəki rəngli konturlara baxın)
İndi bu yeni məlumatları maneələri aşkar etmək üçün istifadə edə bilərik …
Addım 9: Növbəti addımlar…
İndi sensorlar, aktuatorlar və kamera olan sadə bir robot platformasına sahibik. Məqsədim, müstəqil olaraq hərəkət etmək və başqa heç bir sensor əlavə etmədən stansiyaya qayıtmaqdır. Bunun üçün aşağıdakı addımlara ehtiyacım olacaq:
- Yaw və maqnit başlıq siqnallarının sensor birləşməsi
- Kamera görüntü emalı (bunun üçün yalnız aşağı CPU mövcuddur)
- Toqquşma aşkarlanması (ultrasəs məsafəsi və kamera)
- Xəritə qurma və ya istiqamətləndirmə
İndi gedin öz problemlərinizi və ya hədəflərinizi yaradın …
Tövsiyə:
İngilis olmayan Klaviatura Layoutlarını öyrənmək üçün Pythondan istifadə: 8 addım
İngilis olmayan Klaviatura Layihələrini öyrənmək üçün Pythondan istifadə: Salam, mən Julienəm! Mən kompüter elmləri tələbəsiyəm və bu gün sizə Python-dan İngilis olmayan bir dilin klaviatura planını öyrətmək üçün necə istifadə edəcəyinizi göstərəcəyəm. İndiki vaxtda çoxlu dil öyrənmə baş verir və insanların öyrənə biləcəyi bir şey var
Python istifadə edərək Raspberry Pi və MXC6226XU ilə Oriyentasiyanı öyrənmək: 6 addım
Python istifadə edərək Raspberry Pi və MXC6226XU ilə Oriyentasiyanı öyrənmək: Səslər sadəcə bir avtomobilin işləməsinin bir hissəsidir. Çox tənzimlənmiş bir avtomobil motorunun uğultusu möhtəşəm bir səsdir. Təkərlər yolda mırıldanır, külək aynaların, plastik parçaların və tablosundakı parçaların ətrafında fırlandıqda qışqırır
SCARA Robotu: Foward və Ters Kinematikanı öyrənmək !!! (Plot Twist, ERİŞDƏN istifadə edərək ARDUINO -da Real Zaman Arayüzü Olmağı öyrənin !!!!): 5 Addım (Şəkillərlə)
SCARA Robotu: Foward və Ters Kinematikanı öyrənmək !!! (Plot Twist, ARDUINO -da İŞLƏMƏDƏN HAQQİNDƏ Real Zaman Arayüzü Olmağı Öyrənin !!!!): SCARA robotu sənaye dünyasında çox məşhur bir maşındır. Adı həm Seçici Uyğun Quraşdırma Robot Kolu, həm də Seçici Uyğun Mafsallı Robot Kolu deməkdir. Əsasən üç dərəcə azadlıq robotudur, ilk iki displ
Lehimləməyi necə öyrənmək olar (Lehim İpuçları): 4 addım
Lehimləməyi necə öyrənmək olar (Lehimlə bağlı tövsiyələr): Hey uşaqlar! Ümid edirəm ki, mənim əvvəlki təlimatlı "Arduino MIDI Controller DIY" dən zövq aldınız. və yenisinə hazırsınız, həmişəki kimi sizə elektronikadan necə gözəl şeylər hazırlayacağınızı göstərmək üçün bir təlimat verirəm və danışıram
Dövrə NANO öyrən: Bir PCB. Öyrənmək asan. Sonsuz imkanlar: 12 addım (şəkillərlə)
Circuit NANO öyrən: Bir PCB. Öyrənmək asan. Sonsuz İmkanlar: Elektronika və robototexnika dünyasına başlamaq əvvəlcə olduqca çətin ola bilər. Başlanğıcda öyrəniləcək çox şey var (sxem dizaynı, lehimləmə, proqramlaşdırma, düzgün elektron komponentləri seçmək və s.)