Mündəricat:
- Addım 1: Dəstəkləyici Dövrə əlavə edin (MCP3008)
- Addım 2: IR Sensorlarını quraşdırın
- Addım 3: Test zamanı
- Addım 4: Virtual Sensor - AmpSensor
- Addım 5: Naviqasiya
- Addım 6: Son Düşüncələr, Növbəti Mərhələ …
Video: Wallace Muxtar Robotu - 4 -cü hissə - IR Məsafəsi və "Amp" Sensorları əlavə edin: 6 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:47
Salam, bu gün Wallacein qabiliyyətlərinin təkmilləşdirilməsinin növbəti mərhələsinə başlayırıq. Xüsusilə, infraqırmızı məsafə sensorlarından istifadə edərək maneələri aşkar etmək və qarşısını almaq qabiliyyətini artırmağa çalışırıq, eyni zamanda Roboclaw motor nəzarətçisinin cərəyanı izləmək və onu virtual (proqram) "sensora" çevirmək qabiliyyətindən istifadə edirik. Nəhayət, SLAM (eyni vaxtda yerləşmə və xəritələşdirmə) olmadan necə hərəkət etməyi nəzərdən keçirəcəyik.
Naviqasiya ilə əvvəlcə yalnız iki əsas məqsəd olacaq:
- maneələrdən qaçın
- bir yerə yapışdığını və heç bir irəliləyiş etmədiyini tanıyın. ("irəliləyiş" hər hansı bir mənalı məsafəni irəliyə apardığını bildirir)
- Mümkün olan 3 -cü məqsəd, özünü divara bərabər şəkildə hizalamaqdır.
Bu layihə bir robot dəsti ilə başladı və klaviatura və ssh bağlantısı istifadə edərək əsas hərəkətləri əldə etdi.
İkinci mərhələ, bir çox sensoru əlavə etməyə hazırlaşmaq üçün kifayət qədər dəstəkləyici sxem əlavə etmək idi.
Əvvəlki Təlimat kitabına bir neçə HCSR04 akustik sensoru əlavə etdik və robot indi mənzilin ətrafında hərəkət edərkən maneələrdən qaça bilər.
Mətbəxdə və koridorda yaxşı, möhkəm düz səthlərlə yaxşı işləsə də, yemək otağına yaxınlaşanda tamamilə kor olur. Masa və stulun ayaqlarını "görə bilməz".
Tipik motor cərəyanlarını izləmək bir təkmilləşdirmə ola bilər və dəyərlər sıçrayış edərsə, robot bir şey vurmuş olmalıdır. Yaxşı bir "plan B" və ya hətta C. Ancaq bu, yemək sahəsinin ətrafında gəzməyə kömək etmir.
(Yeniləmə: əslində, indiki halda, müvəqqəti olaraq arxadan sensorlar və sensorlar çıxardığım üçün geri dönərkən cari monitorinq A planıdır).
Bu bölmənin videosu maneələrdən qaçınma sensörlərinin son mərhələsini təşkil edir.
Videoda gördüyünüz altı ön HCSR04 akustik sensoru və iki Sharp IR sensoru. IR sensorlar videoda çox da rol oynamadı. Robotun masa və kürsü ayaqları ilə üzbəüz olan yemək otağında özünü tapması onların güclərindəndir.
Sensorlara əlavə olaraq, cərəyan monitoru, xüsusən də geri dönərkən, bir şeylə toqquşması halında işə düşdü.
Nəhayət, son 100 gediş tarixindən və bir suala cavab vermək üçün bəzi əsas analizlərdən istifadə edir:
"Bu yaxınlarda həqiqi irəliləyiş olubmu (yoxsa bəzi təkrarlanan rəqslərdə ilişib qalıb)?"
Beləliklə, videoda irəli-tərsin təkrarlandığını gördükdə, sonra çevrilir, bu, irəli-tərs nümunəni tanıdığını, beləliklə başqa bir şeyi sınadığını göstərir.
Proqramın bu versiyasının yeganə proqramlaşdırılmış məqsədi davamlı irəliləməyə çalışmaq və maneələrdən qaçmağa çalışmaq idi.
Addım 1: Dəstəkləyici Dövrə əlavə edin (MCP3008)
IR sensorlarını əlavə etməzdən əvvəl, onlarla Raspberry Pi arasındakı interfeys sxeminə ehtiyacımız olacaq.
MCP3008 analoq-rəqəmsal çeviricisini əlavə edəcəyik. Bu çipi Raspberry Pi -yə necə bağlamaq barədə bir çox onlayn qaynaq var, buna görə burada çox danışmayacağam.
Əslində seçimimiz var. İQ sensorlarının versiyası 3V -də işləyirsə, MCP3008 də işləyə bilər və sonra birbaşa Moruqla əlaqə qura bilərik.
[3V IR sensoru] - [MCP3008] - [Raspberrry Pi]
Ancaq mənim vəziyyətimdə, əsasən 5V işləyirəm, buna görə də ikitərəfli bir səviyyə dəyişdiricisi deməkdir.
[5V İQ sensoru]-[MCP3008]-[5V-dan 3V-yə iki yönlü avtobus]-[Raspberry Pi]
Qeyd: İQ sensorundan yalnız bir siqnal çıxışı var. Bu birbaşa MCP3008 -in giriş analoq siqnal xətlərindən birinə gedir. MCP3008-dən, Raspberry Pi-yə (iki istiqamətli avtobus vasitəsilə) bağlamağımız lazım olan 4 məlumat xətti var.
Hal -hazırda robotumuz yalnız iki IR sensoru ilə işləyəcək, amma daha çoxunu əlavə edə bilərik. MCP3008 səkkiz analoq giriş kanalıdır.
Addım 2: IR Sensorlarını quraşdırın
Sharp, bir neçə fərqli IR sensoru istehsal edir və fərqli diapazonlara və əhatə dairəsinə malikdir. GP2Y0A60SZLF modelini sifariş verdim. Seçdiyiniz model sensorun yerləşməsinə və istiqamətinə təsir edəcək. Təəssüf ki, mənim üçün hansı sensorların alınacağını dəqiq araşdırmamışam. Bu daha çox "təklif etdiklərindən etibarlı bir mənbədən uyğun bir zamanda və qiymətə ala biləcəyim" bir qərar idi.
(Yeniləmə: Ancaq bu əhəmiyyətli ola bilməz, çünki bu sensor daxili işıqlandırma ilə qarışıq görünür. Hələ də bu problemi araşdırıram)
Bu sensorları robotun üzərinə yerləşdirməyin ən azı üç yolu var.
- Onları bir -birindən bir qədər uzağa baxaraq sabit bir vəziyyətdə, ön tərəfə qoyun.
- Onları bir -birindən bir qədər uzağa baxaraq ön tərəfə bir servoya qoyun.
- Onları sabit bir vəziyyətdə, ön tərəfə qoyun, ancaq sola və sağa ən uzaq künclərə, bir -birinə doğru açılı şəkildə yerləşdirin.
1 nömrəli seçimi 3 nömrəli seçimlə müqayisə edərkən düşünürəm ki, #3 toqquşma sahəsini daha çox əhatə edəcək. Şəkillərə nəzər salsanız, #3 seçimi yalnız sensor sahələrinin üst -üstə düşməsi üçün deyil, həm də robotun kənarını və kənarını əhatə edə bilər.
1 nömrəli seçimlə, sensorlar bir -birindən nə qədər ayrıdırsa, mərkəzdə bir o qədər çox kor nöqtə olur.
#2 edə bilərik (bir ehtimal olaraq servo ilə bəzi şəkillər əlavə etdim) və bir süpürmə aparmalarını istədik və açıq şəkildə bu ən çox sahəni əhatə edə bilər. Ancaq ən azı iki səbəbdən bir servonun istifadəsini mümkün qədər gecikdirmək istəyirəm:
- Raspberry Pi üzərindəki PWM rabitə kanallarından birini istifadə edəcəyik. (Bunu artırmaq mümkündür, amma yenə də …)
- Servo ilə cari çəkiliş əhəmiyyətli ola bilər
- Bu, hardware və proqram təminatına daha çox şey əlavə edir
Uçuş vaxtı (ToF) və ya bəlkə də kamera kimi daha vacib sensorlar əlavə edərkən servo seçimini daha sonra tərk etmək istərdim.
2 nömrəli seçimlə digər iki seçimdə mövcud olmayan başqa bir mümkün üstünlük var. Bu IR sensorlar, işıqlandırmadan asılı olaraq qarışa bilər. Ola bilsin ki, robot yaxınlıqda olan bir obyektin oxunuşunu alır, əslində yaxınlıqda heç bir obyekt yoxdur. 3 saylı seçimlə, sahələri üst -üstə düşə bildiyindən hər iki sensor eyni obyekti qeyd edə bilər (fərqli açılardan).
Beləliklə, 3 nömrəli yerləşdirmə seçimi ilə gedirik.
Addım 3: Test zamanı
Raspberry Pi, MCP3008 ADC və Sharp IR sensorlar arasında bütün əlaqələri qurduqdan sonra sınamağın vaxtı gəldi. Sistemin yeni sensorlar ilə işlədiyini yoxlamaq üçün sadə bir test.
Əvvəlki Təlimatlarda olduğu kimi, wiringPi C kitabxanasından da mümkün qədər istifadə edirəm. İşləri asanlaşdırır. WiringPi veb saytını nəzərdən keçirərkən çox aydın olmayan bir şey, MCP3004/3008 üçün birbaşa dəstəyin olmasıdır.
Onsuz da SPI uzantısından istifadə edə bilərsiniz. Amma ehtiyac yoxdur. Gordonun wiringPi üçün git deposuna yaxından baxsanız, onlardan biri MCP3004/3008 üçün olan dəstəklənən çiplərin siyahısına rast gələcəksiniz.
Kodu bu səhifədə düzgün göstərə bilmədiyim üçün onu fayl olaraq əlavə etmək qərarına gəldim.
Addım 4: Virtual Sensor - AmpSensor
Robotun xarici dünya haqqında nə qədər çox fərqli yollarla məlumat əldə etməsi, bir o qədər yaxşıdır.
Robotun hazırda səkkiz HCSR04 akustik sonar sensoru var (onlar bu Təlimatçının diqqət mərkəzində deyil) və indi iki Sharp IR məsafə sensoru var. Daha əvvəl də qeyd edildiyi kimi, başqa bir şeydən istifadə edə bilərik: Roboclawın motor cərəyanlarını hiss etmə xüsusiyyəti.
Motor nəzarətçisinə edilən bu sorğunu C ++ sinfinə bağlaya və AmpSensor adlandıra bilərik.
Proqrama bəzi "ağıllı" lar əlavə edərək, düz hərəkət zamanı (irəli, geri) və fırlanma hərəkətlərini (solda, sağda) tipik cərəyanı izləyə və tənzimləyə bilərik. Bu amplifikatör aralığını bildikdən sonra kritik bir dəyər seçə bilərik, belə ki, AmpSensor motor nəzarətçisindən bu dəyəri aşan bir cərəyan oxuyarsa, ehtimal ki, mühərriklərin dayandığını bilirik və bu ümumiyyətlə robotun vurulduğunu göstərir bir şeyə.
Proqram təminatına bir az rahatlıq əlavə etsək (əməliyyat zamanı əmr satırı arqları və / və ya klaviatura girişi), robotun hərəkət etməsinə və cisimlərə çarpmasına icazə verərək təcrübə edərkən "kritik amper" həddini artıra / azalda bilərik. həm düz, həm də dönərkən.
Proqramın naviqasiya hissəsi hərəkət istiqamətini bildiyindən, bəlkə də, hərəkəti dayandırmaq və başqa bir şeyi sınamadan əvvəl qısa müddət ərzində hərəkəti tərsinə çevirmək üçün bütün məlumatlardan istifadə edə bilərik.
Addım 5: Naviqasiya
Robot hazırda real dünya rəyləri ilə məhdudlaşır. Maneələrin qarşısını almaq üçün bir neçə yaxın məsafə sensoru var və məsafə sensorlar bir maneəni əldən verərsə, cərəyanı çəkmək üçün geri çəkilmə texnikasına malikdir.
Enkoderləri olan mühərrikləri yoxdur və IMU (atalet-ölçü vahidi) yoxdur, buna görə də onun həqiqətən hərəkət etdiyini və ya döndüyünü və nə qədər olduğunu bilmək daha çətindir.
Hal -hazırda robotdakı sensorlar ilə bir növ məsafə göstəricisi əldə edilə bilsə də, onların baxış sahəsi genişdir və gözlənilməzlik var. Akustik sonar arxaya düzgün əks olunmaya bilər; infraqırmızı digər işıqlandırma və ya çoxlu əks etdirən səthlərlə qarışdırıla bilər. Robotun hərəkət etdiyini, nə qədər və hansı istiqamətdə hərəkət etdiyini bilmək üçün məsafədəki dəyişikliyi əslində izləməyə çalışmağın çətinlik çəkdiyinə əmin deyiləm.
Mən qəsdən Arduino kimi mikro nəzarətçi istifadə etməməyi seçdim, çünki a) psuedo-C ++ mühitini bəyənmirəm, b) və çox inkişafın oxuma-yazma yaddaşını (?) Yıpratacağını və inkişaf etdirmək üçün ana kompüterə ehtiyac olardı (?). Və ya bəlkə də Raspberry Pi kimi oluram.
Raspbian-ı işlədən Pi, real vaxt rejimində işləyən bir əməliyyat sistemi deyil, buna görə də bu sensorların qeyri-sabitliyi ilə OS-nin hər dəfə tam oxumaması arasında bu sensorların məqsədinin maneələrin qarşısını almaq üçün daha uyğun olduğunu hiss etdim. faktiki məsafə ölçülməsi.
Bu məqsədlə daha yaxşı ToF (uçuş vaxtı) sensorlarını (daha sonra) bu məqsədlə (SLAM) istifadə edə bilsək, bu yanaşma mürəkkəb görünürdü və bir o qədər də fayda gətirmirdi.
İstifadə edə biləcəyimiz bir yanaşma, son X saniyə ərzində hansı əmrlərin verildiyini və ya əmrləri izləməkdir.
Nümunə olaraq deyin ki, robot çapraz olaraq bir küncə baxır. Bir sensorlar dəsti, bir divara çox yaxın olduğunu söyləyir, buna görə dönər, amma sonra digər sensorlar dəsti digər divara çox yaxın olduğunu söyləyir. Yalnız yan-yana bir nümunəni təkrarlamaqla başa çatır.
Yuxarıdakı nümunə çox sadə bir haldır. Bəzi ağıllıların əlavə edilməsi, təkrarlanan modeli yeni bir səviyyəyə qaldıra bilər, ancaq robot küncdə qaldı.
Məsələn, yerində irəli -geri dönmək əvəzinə, bir tərəfə dönər, bir anlıq tərs hərəkət edər (daha sonra kritik məsafə göstəricilərini silər) və digər istiqamətdə dönsə belə, yenə də müəyyən bir açı ilə küncə dönür., eyni şeyin daha mürəkkəb bir nümunəsini təkrarlamaq.
Bu o deməkdir ki, həqiqətən əmrlər tarixindən istifadə edə bilərik və bu məlumatlardan necə istifadə və istifadə edəcəyimizə baxa bilərik.
Hərəkət tarixindən istifadə etmək üçün iki əsas (rudimentar) yol düşünə bilərəm.
- son X sayı hərəkətləri üçün Y patttern ilə uyğun gəlir. Sadə bir nümunə ola bilər (və bu da baş vermişdi) "İLƏ, TƏRSİYYƏT, İLƏ, TERİ, …..". Beləliklə, TRUE (model tapıldı) və ya FALSE (tapılmadı) qaytaran bu uyğunluq funksiyası var. TRUE olarsa, proqramın naviqasiya hissəsində digər hərəkət ardıcıllığını sınayın.
- son X sayı üçün ümumi və ya xalis irəli hərəkət var. Həqiqi irəliləyişin nə olduğunu necə müəyyən etmək olar? Yaxşı.. bir asan müqayisə, son X hərəkətləri üçün "İLƏ" "REVERSE" dən daha çox baş verir. Ancaq bunun tək olması lazım deyil. Bu necə: "SAĞ, SAĞ, SOL, SAĞ". Bu vəziyyətdə, robot bir küncdən çıxmaq üçün sağa dönmək məcburiyyətindədir və ya divara bir açı ilə yaxınlaşdığı üçün əsl irəliləyiş hesab edilə bilər. Digər tərəfdən, "SOL, SAĞ, SOL, SAĞ …" real irəliləyiş hesab oluna bilməz. Beləliklə, əgər "SAĞ" "SOL" dan çox və ya "SOL" "SAĞ" dan daha çox baş verərsə, bu, real irəliləyiş ola bilər.
Bu Təlimatlandırmanın əvvəlində, 3 -cü hədəfin kvadratın düzəldilməsi və ya divara hizalanması ola biləcəyini qeyd etdim. Ancaq bunun üçün "hansısa bir obyektə yaxın olduğumuzdan" daha çox ehtiyacımız var. Məsələn, məsafəyə dair kifayət qədər yaxşı və sabit cavablar vermək üçün iki irəli baxan akustik sensor əldə edə bilsək (bu məqalənin mövzusu deyil). bir açıda və bu dəyərlərin bir -birinə yaxınlaşdığını (divara dik şəkildə baxan) görmək üçün bir az manevr etməyə cəhd edə bilər.
Addım 6: Son Düşüncələr, Növbəti Mərhələ …
Ümid edirəm bu Təlimat bəzi fikirlər verdi.
Daha çox sensorlar əlavə etmək bəzi üstünlüklər və çətinliklər təqdim edir.
Yuxarıda göstərilən vəziyyətdə, bütün akustik sensorlar birlikdə yaxşı işlədilər və proqram təminatı ilə olduqca düz idi.
IR sensorlar qarışığa daxil edildikdən sonra bir az daha çətin oldu. Səbəb, bəzi baxış sahələrinin akustik sensorlar ilə üst -üstə düşməsidir. İQ sensorlar dəyişən mühit işığı şəraitində bir qədər həssas və gözlənilməz görünürdü, halbuki akustik sensorlar işıqlandırmadan təsirlənmir.
Və buna görə də çətinlik, akustik sensor bizə heç bir maneənin olmadığını, nəinki İQ sensoru olduğunu söyləsə nə etməli olduğumuzda idi.
Hələlik sınaq və səhvdən sonra işlər bu prioritetdə başa çatdı:
- amp hissedici
- IR algılayıcı
- akustik algılama
Və etdiklərim yalnız İQ sensorlarının həssaslığını azaltmaq idi, buna görə də yalnız çox yaxın cisimləri (yaxınlaşan kürsü ayaqları kimi) aşkar edərdilər.
İndiyə qədər Raspberry Pi ilə Roboclaw motor nəzarətçisi arasında nəzarət itkisi (serial ünsiyyət itkisi) ilə qarşılaşsam da, çoxlu işləmə və ya kəsilməyə əsaslanan bir proqram təminatına ehtiyac yox idi.
E-Stop dövrəsinin (əvvəlki Təlimatlara baxın) normal olaraq istifadə ediləcəyi yer budur. İnkişaf əsnasında Roboclaw'ı sıfırlamaq məcburiyyətində qalmaq istəmədiyimə görə (robot) bu qədər sürətlə getmir və onu izləmək və bağlamaq üçün hazıram. E-Stopu bağladı.
Nəhayət, çox yivli işlərə ehtiyac olacaq.
Növbəti addımlar…
Bu günə qədər etdiyiniz üçün təşəkkür edirəm.
Bəzi VL53L1X IR lazer ToF (uçuş vaxtı) sensorları əldə etdim, buna görə də çox güman ki, servo ilə birlikdə növbəti Təlimat mövzusu budur.
Tövsiyə:
Cədvəl yaratmaq və əlavə etmək və Microsoft Office Word 2007 -də bu cədvələ əlavə sütunlar və/və ya satırlar əlavə etmək: 11 addım
Microsoft Office Word 2007 -də Cədvəl Yaratmaq və Daxil etmək və Cədvələ Əlavə Sütunlar və/və ya Satırlar Əlavə etmək: İşlədiyiniz və özünüz üçün düşündüyünüz bir çox məlumatınız olubmu? &Quot; hamısını necə edə bilərəm? bu məlumatlardan daha yaxşı görünür və başa düşülməsi daha asan olur? " Əgər belədirsə, cavabınız Microsoft Office Word 2007 -dəki bir cədvəl ola bilər
Hərəkəti aşkar edin və hədəfi məhv edin! Muxtar DIY Layihəsi: 5 addım
Hərəkəti aşkar edin və hədəfi məhv edin! Bu təsviri ingilis (Amerika Birləşmiş Ştatları) dilinə geri tərcümə edin Tərcümə edin Autonom DIY Project: Detect Motion and Destroy the Destroy! This videoda sizə Raspberry Pi 3 ilə DIY hərəkət izləmə layihəsinin necə qurulacağını göstərirəm. Layihə avtonomdur, buna görə də hərəkət algıladığı zaman silahı hərəkət etdirir və atəşə tutur. Bu layihə üçün lazer modulundan istifadə etdim, amma siz
Hissə 1. ThinkBioT Muxtar Bio-akustik Sensor Hardware Build: 13 Addım
Hissə 1. ThinkBioT Muxtar Bio-akustik Sensor Hardware Build: ThinkBioT, məlumat toplama, qabaqcadan işləmə, məlumat ötürülməsi və vizualizasiya vəzifələrini yerinə yetirməklə, daha çox araşdırmanı dəstəkləmək üçün texnoloji onurğa olaraq hazırlanmış bir proqram və hardware çərçivəsi təmin etməyi hədəfləyir. tədqiqatçı
Wallace - DIY Avtomatik Robot - 5 -ci hissə - IMU əlavə edin: 9 addım
Wallace - DIY Avtonom Robotu - 5 -ci hissə - IMU əlavə edin: Wallace ilə birlikdə davam edirik. Wallace adı " Wall-E " və əvvəlki bir layihədən (səs tanıma) və " danışmaq " faydalı, bir az İngilis səsləndi. Və vale və ya uşağa bənzəyir. Və t
Radio Aux Jack -i Təmir edin / Dash -in arxasına Media əlavə edin: 6 addım (şəkillərlə)
Radio Aux Jack -ı Təmir et / Dash -in arxasına Media əlavə edin: 2013 -cü il Silverado aux prizimin boş olduğunu gördüm. Tez -tez istifadə etdiyimdən və aux kabelini krikodan asdığımdan bəri sürpriz olmadı. Bunu düzəltmək üçün sadəcə bir neçə paneli lentdən çıxarmalı, söküb apa almalı idim