Mündəricat:

Astronavt köməkçisi Roomba: 4 addım
Astronavt köməkçisi Roomba: 4 addım

Video: Astronavt köməkçisi Roomba: 4 addım

Video: Astronavt köməkçisi Roomba: 4 addım
Video: На Марсе обнаружили озеро с пресной водой 2024, Iyul
Anonim
Astronavt köməkçisi Roomba
Astronavt köməkçisi Roomba

Bu layihə, iRobot Create Version 2 gəmisində olan Raspberry Pi 3 -dən istifadə etməklə hazırlanmışdır. MATLAB, robotu sensorlar və kameradan istifadə edərək xüsusi təlimatlara əməl etməsi üçün proqramlaşdırmaq üçün istifadə olunur. Sensorlar və kameralar, bir astronavtı izləyəcək və bir şey səhv olarsa, ev bazası ilə əlaqə qurma qabiliyyətini təmin edəcək xüsusi vəzifələri yerinə yetirmək üçün istifadə olunur.

Addım 1: Lazım olan hissələr

Lazım olan hissələr
Lazım olan hissələr
Lazım olan hissələr
Lazım olan hissələr
Lazım olan hissələr
Lazım olan hissələr
Lazım olan hissələr
Lazım olan hissələr

1. iRobot 2 -ci versiya yaradın

İRobot Create, bu layihənin ən vacib hissəsidir, çünki proqramlaşdırıla bilər və astronavtları izləyən və gələcəkdə onlara kömək edən faktiki bir rover üçün əla bir təqdimat ola bilər

2. Raspberry Pi 3

Raspberry Pi bu layihə üçün istifadə edilə bilən proqramlaşdırıcı idi. Kod Pi üçün hazırlanmışdır və əlavə olunan Pi versiyası 3 (model B) dir. Arduino kimi digər proqramlaşdırıla bilən lövhələr istifadə edilə bilər, lakin arduino və digər lövhələrin əksəriyyəti başqa bir addımda təsvir olunandan fərqli kodlaşdırma tələb edir

3. Raspberry Pi Kamera Modulu

Bu layihə üçün Raspberry Pi ilə lazım olan yeganə kənar əlaqə Kamera Moduludur. Kamera modulu bu layihənin ayrılmaz hissəsidir, çünki Roomba yalnız kamerada gördüklərinə əsaslanaraq vəzifələri yerinə yetirəcəkdir

4. MATLAB 2018a

Bu quraşdırmada iştirak edən kodlaşdırma üçün MATLAB -ın ikinci ən son versiyası 2018a istifadə edilmişdir. Roomba proqramlaşdırması bir müddət mövcud olduğundan MATLAB -ın bir çox digər versiyasının bununla işləyəcəyi ehtimal olunur

Addım 2: Fayllar və Kamera Konfiqurasiyası

Fayl və Kamera Konfiqurasiyası
Fayl və Kamera Konfiqurasiyası

1. Raspberry Pi və Camera -nın Roomba ilə əlaqələri

  • Pi iRobot -a birbaşa mikro USB ilə qoşula bilər. İstifadəyə hazır olması lazım olan budur. Bununla birlikdə, indiyə qədər təqdimat boyunca şəkillərdə göstərildiyi kimi otaq otağına etibarlı şəkildə yerləşdirilməsi tövsiyə olunur.
  • Kameranın Raspberry Pi ilə birbaşa əlaqəsi var və kameranı birbaşa yuxarı qaldırmaq üçün bir şeyin alınması və ya edilməsi məsləhət görülür. Roombanın gördüklərini göstərmək üçün yerində tutmaq mümkün deyilsə, kameranın əsl mənası yoxdur.

2. Fayllar

  • Hər şeyi qurduqdan və bağladıqdan sonra, "Spot" və "Dock" düymələrini 10 saniyə birlikdə tutaraq robotun sıfırlandığından və işə hazır olduğundan əmin olun.
  • MATLAB -a ilk ehtiyac olduğu yer budur. Roomba faylları əvvəlcə quraşdırılmalıdır və bu fayllar üçün lazım olan hər şey bu linkdə göstərilən koddur:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Addım 3: İlkin Roomba Testi

Roombanın işlədiyinə əmin olmaq üçün bir çox ilkin yoxlamalar aparılmalıdır.

1. Roomba ilə eyni WiFi şəbəkəsinə qoşulduğunuzdan əmin olun. Bu olmadan, heç vaxt MATLAB vasitəsilə əlaqə qurmayacaqsınız.

2. Seçdiyiniz roomba -ya xüsusi olaraq qoşula bilmək üçün otaq nömrənizin hansı nömrəyə verildiyini öyrənin. Məsələn, otaq otağınızın nömrəsi 30 olarsa, ona MATLAB -dakı komanda pəncərəsinə roomba (30) yazaraq qoşulacaqsınız.

3. Roomba MATLAB -dakı strukturlar vasitəsilə idarə oluna bilər. Məsələn, Roomba (30) kodunuzu 'r' dəyişəninə təyin etsəniz, robot r.moveDistance (0.2, 0.1) əmri ilə irəliləyə bilər.

4. Roomba'ya çatdırıla bilən bir çox fərqli əmr var və bunları komanda pəncərəsinə 'doc roomba' yazaraq görmək olar.

5. İşıq, qabar və uçurum oxunuşları üçün sensorlar hamısı 'doc roomba' da görünən əmrlərdən istifadə etməklə oxuna bilər, ancaq 'r.testSensors' istifadə edərək sensor məlumatlarını görmək üçün daimi, səliqəli bir menyuya sahib olmağın bir yolu. '.

6. Bütün bunları sınadıqdan sonra, robotun şəkil toplama proqramından istifadə edərək çəkilmiş şəkilləri oxumaq və görmək mümkündür. Bunun üçün əsas kod img = r.getImage və imshow (img);.

7. Şəklin RGB dəyərləri red_mean = orta (orta (img (:,,, 1))) kodları ilə tapıla bilər;

green_mean = orta (orta (img (:,,:, 2)))); və blue_mean = orta (orta (img (:,,: 3))));.

Addım 4: Nümunə MATLAB Kodu

Nümunə MATLAB Kodu
Nümunə MATLAB Kodu

Bu nöqtədə, sensorlar və şəkil çəkmə proqramından istifadə edərək Mars Rover-in İnsanlara Yardımçı Prototipində öz spininizi yaratmaq üçün hazırsınız. Bizim nümunəmiz, ağ rəngi izləyərək ona doğru hərəkət edərək astronavtı təqib etməkdir. Sensorlar yüksək dəyərlər oxuyursa, robot bip səsi çıxaracaq ki, astronavt ilişib qalsa robotu sıfırlayar və ya gedib uçurumda qalsa onu götürər və sıfırlayar. Ancaq bu səhvləri yalnız ağ gördüyü müddətdə oxuyur. Ağ rəngi görə bilmədən robot səhv rejiminə keçəcək. Gördüklərindən asılı olaraq ev bazasına iki fərqli e -poçt göndərmək üçün proqramlaşdırılmışdır. Astronavtın dərisinin rəngini görürsə, bu açıq -aydın yaxşı deyil, buna görə də kosmonavtın kostyumunun pozulması ilə dərisi varsa ev bazasını xəbərdar edəcək. Digər mesaj, astronavt sadəcə gözdən itərsə hazırlanır. Kameralarda ağ və ya dəri rəngi görünmürsə, robot fırlanaraq başqa, lakin fərqli bir e -poçt göndərəcək. Roombanın astronavtı görə bilmədiyi şəkillər e -poçtdakı mesajla birlikdə göndəriləcək. Layihəmizin kodu aşağıda göstərilmişdir:

i = 1 üçün:.1: 3 img = r.getImage; image (img) red_mean = orta (orta (img (:,,,, 1)))); green_mean = orta (orta (img (:,,:, 2)))); blue_mean = orta (orta (img (:,,: 3))); əgər red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.left> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || cliff.leftFront <10 || cliff.rightFront <10 || cliff.right700 || light.leftFront> 700 || light.leftCenter> 700 || light.rightCenter> 700 || yüngül.sağFront> 700 || işıq.sağ> 700 r.beep () r.beep () r.beep () r.beep () r.beep () r.başqa üçün i = 1: 2 r. Hareket (0.2, 0.1) r. setDriveVelocity (.3,.2) r.stre end end end green_mean <35 && blue_mean <35 %dəri rəngi göstərilirsə (astronavtın dərisinin rənginə görə tənzimlənməlidir) r.beep (); r.bip (); r.bip (); poçt = '[email protected]'; %uyğun kostyum göstərən e -poçt göndərir psswd = 'yes'; host = 'smtp.gmail.com'; liman = '465'; emailto = '[email protected]'; m_subject = 'mövzu'; m_text = 'test'; setpref ('İnternet', 'E_mail', poçt); setpref ('İnternet', 'SMTP_Server', ana); setpref ('İnternet', 'SMTP_Username', poçt); setpref ('İnternet', 'SMTP_Password', psswd); rekvizit = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', poçt); props.setProperty ('mail.smtp.host', host); props.setProperty ('mail.smtp.port', liman); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'doğru'); props.setProperty ('mail.smtp.auth', 'doğru'); props.setProperty ('mail.smtp.socketFactory.port', liman); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'yalan'); sendmail (emailto, 'Yardım!', 'Astronavtların forması qapalıdır!', img); red_mean 135 sona çatsa || green_mean 135 || blue_mean 135 üçün j = 1: 2 %ağ rəng robot r.turnAngle (360) mail = '[email protected]' tərəfindən tapıla bilməzsə; psswd = 'bəli'; host = 'smtp.gmail.com'; liman = '465'; emailto = '[email protected]'; m_subject = 'mövzu'; m_text = 'test'; setpref ('İnternet', 'E_mail', poçt); setpref ('İnternet', 'SMTP_Server', ana); setpref ('İnternet', 'SMTP_Username', poçt); setpref ('İnternet', 'SMTP_Password', psswd); rekvizit = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', poçt); props.setProperty ('mail.smtp.host', host); props.setProperty ('mail.smtp.port', liman); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'doğru'); props.setProperty ('mail.smtp.auth', 'doğru'); props.setProperty ('mail.smtp.socketFactory.port', liman); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'yalan'); sendmail (emailto, 'Yardım!', 'Astronavt tapıla bilməz!', img); r.stop sonu son uca

Aydındır ki, bura qarışıqdır, ancaq kopyalandıqdan sonra silinməlidir. Bunun üçün şifrələr və e -poçtlar bu layihəni edənlər tərəfindən açıq şəkildə təmin edilməlidir.

Ancaq nümunəmiz, hər kəsə uyğun olması üçün bu robotu qarışdırmağın bir çox yollarından biridir. Ediləcək çox fərqli işlər var ki, bunları özünüzə uyğunlaşdıra bilərsiniz.

Tövsiyə: