İçindekiler:

Astronot Yardım Odasıba: 4 Adım
Astronot Yardım Odasıba: 4 Adım

Video: Astronot Yardım Odasıba: 4 Adım

Video: Astronot Yardım Odasıba: 4 Adım
Video: Ay’a Çıkan İlk İnsanın Yıllardır Sakladığı Sır Ortaya Çıktı! 2024, Temmuz
Anonim
Astronot-Yardım Odasıba
Astronot-Yardım Odasıba

Bu proje, iRobot Create Version 2 üzerindeki Raspberry Pi 3 kullanılarak yapılmıştır. MATLAB, robotu sensörlerini ve kamerasını kullanarak belirli talimatları takip edecek şekilde programlamak için kullanılır. Sensörler ve kameralar, bir astronotu takip edecek ve ona bir şeyler ters giderse ana üssü ile iletişim kurma yeteneği sağlayacak belirli görevleri yerine getirmek için kullanılır.

Adım 1: Gerekli Parçalar

Gerekli Parçalar
Gerekli Parçalar
Gerekli Parçalar
Gerekli Parçalar
Gerekli Parçalar
Gerekli Parçalar
Gerekli Parçalar
Gerekli Parçalar

1. iRobot Oluşturma Sürüm 2

iRobot Create, programlanabilir olduğundan ve astronotları takip eden ve onlara gelecekte yardımcı olan gerçek bir gezici için harika bir temsil olabileceğinden bu projenin en önemli parçasıdır

2. Ahududu Pi 3

Raspberry Pi, bu proje için kullanılan programlanabilirdi. Kod Pi için tasarlanmıştır ve ekli Pi'nin sürümü 3'tür (model B). Arduino gibi diğer programlanabilir kartlar kullanılabilir, ancak arduino ve diğer kartların çoğu, başka bir adımda açıklanandan farklı kodlama gerektirecektir

3. Raspberry Pi Kamera Modülü

Bu proje için Raspberry Pi'ye gerekli olan tek harici bağlantı Kamera Modülüdür. Roomba yalnızca kamerada gördüklerine göre görevleri gerçekleştireceğinden, kamera modülü bu projenin ayrılmaz bir parçasıdır

4. MATLAB 2018a

Bu kurulumda yer alan kodlama için MATLAB'ın en son ikinci versiyonu olan 2018a kullanıldı. Roomba programlaması bir süredir var olduğundan, MATLAB'ın diğer birçok versiyonunun bununla çalışması muhtemeldir

2. Adım: Dosyalar ve Kamera Yapılandırması

Dosyalar ve Kamera Yapılandırması
Dosyalar ve Kamera Yapılandırması

1. Odaya Raspberry Pi ve Kamera bağlantıları

  • Pi, iRobot'a doğrudan bir mikro USB ile bağlanabilir. Kullanıma hazır olması gereken tek şey bu. Ancak, şimdiye kadar sunum boyunca resimlerde gösterildiği gibi odabaya güvenli bir şekilde yerleştirilmesi tavsiye edilir.
  • Kameranın Raspberry Pi ile doğrudan bağlantısı vardır ve kamerayı doğrudan yukarıda tutmak için bir şeyler satın alınması veya yapılması şiddetle tavsiye edilir. Roomba'nın gördüğünü göstermek için yerinde tutulamıyorsa, kameranın gerçek bir anlamı yoktur.

2. Dosyalar

  • Her şeyi kurup bağladıktan sonra, "Spot" ve "Dock" düğmelerini 10 saniye boyunca bir arada tutarak robotun sıfırlandığından ve çalışmaya hazır olduğundan emin olun.
  • MATLAB'a ilk ihtiyaç duyulan yer burasıdır. Önce roomba dosyalarının yüklenmesi gerekir ve bu dosyaların çalışması için gereken tek şey bu bağlantıda verilen koddur:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

3. Adım: İlk Roomba Testi

Roomba'nın çalıştığından emin olmak için yapılması gereken birçok başlangıç kontrolü vardır.

1. Roomba ile aynı WiFi ağına bağlı olduğunuzdan emin olun. Bu olmadan, MATLAB aracılığıyla asla bağlantı kuramazsınız.

2. Roomba'nızın hangi numaraya atandığını öğrenin, böylece seçtiğiniz roomba'ya özel olarak bağlanabilirsiniz. Örneğin, roomba'nızın numarası 30 ise MATLAB'de komut penceresine roomba(30) yazarak ona bağlanırsınız.

3. Roomba, MATLAB'deki yapılar aracılığıyla kontrol edilebilir. Örneğin, roomba(30) için kodunuzu 'r' değişkenine ayarlarsanız, robot r.moveDistance(0.2, 0.1) komutuyla ileri hareket ettirilebilir.

4. Roomba'ya iletilebilecek birçok farklı komut vardır ve bunlar komut penceresine 'doc roomba' yazılarak görülebilir.

5. Işık, çarpma ve uçurum okumaları için sensörlerin tümü 'doc roomba'da görülen komutlar kullanılarak okunabilir, ancak sensör verilerini görmek için sabit, düzenli bir menüye sahip olmanın bir yolu 'r.testSensors kullanılarak görülebilir. '.

6. Tüm bunları test ettikten sonra, çekilen resimleri okumak ve görmek için robotun görüntü toplama yazılımı kullanılabilir. Bunun temel kodu img = r.getImage ve imshow(img);.

7. Resmin RGB değerleri red_mean = ortalama(mean(img(:,:, 1)));

green_mean = ortalama(ortalama(img(:,:, 2))); ve blue_mean=mean(mean(img(:,:, 3)));.

Adım 4: Örnek MATLAB Kodu

Örnek MATLAB Kodu
Örnek MATLAB Kodu

Bu noktada, artık bir İnsan Destekli Prototip Mars Gezgini üzerinde kendi dönüşünüzü yaratmak için sensörleri ve görüntü alma yazılımını kullanmaya hazırsınız. Örneğimiz, beyaz rengi takip ederek ve ona doğru hareket ederek astronotları takip etmektir. Robot, sensörleri yüksek değerler okuyorsa bip sesi çıkarır, böylece astronot, robotu sıkışmışsa sıfırlayabilir veya bir uçurumda sıkışmışsa gidip alıp alır ve sıfırlar. Ancak bu hataları sadece beyaz gördüğü sürece okur. Beyaz rengi göremeden robot hata moduna girer. Gördüğü şeye bağlı olarak ana üsse iki farklı türde e-posta göndermek üzere programlanmıştır. Astronotun ten rengini görürse, bu açıkça iyi değildir, bu nedenle astronotun bir takım elbise arızası ile görünen derisi varsa ana üssü uyaracaktır. Diğer mesaj, astronot basitçe gözden kaybolursa hazırlanır. Kameralar için beyaz veya ten rengi görünmüyorsa, robot kendi etrafında dönecek ve başka, ancak farklı bir e-posta gönderecektir. Roomba'nın astronotu göremediği görüntüler, e-postalardaki mesajla birlikte gönderilecektir. Projemizin kodu aşağıda gösterilmiştir:

i=1:.1:3 için img=r.getImage; image(img) red_mean = ortalama(mean(img(:,:, 1))); green_mean = ortalama(ortalama(img(:,:, 2))); blue_mean = ortalama(ortalama(img(:,:, 3))); red_mean > 110 && red_mean 110 && blue_mean 110 && green_mean0 || yumru.sol>0 || bump.front>0 r.bip() r.bip() r.bip() r.stop elseif uçurum.left<10 || cliff.leftÖn<10 || cliff.rightÖn<10 || cliff.right700 || light.leftÖn>700 || light.leftCenter>700 || light.rightCenter>700 || light.rightÖn>700 || light.right>700 r.bip() r.bip() r.bip() r.bip() r.bip() r.stop için i=1:2 r.moveDistance(0.2, 0.1) r. setDriveVelocity(.3,.2) r.stop end end eğer green_mean <35 && blue_mean<35 %ten rengi gösteriliyor(astronotun ten rengine göre ayarlanması gerekiyor) r.beep(); r.bip(); r.bip(); mail = '[email protected]'; % takımın kapalı olduğunu gösteren bir e-posta gönderir psswd = 'evet'; ana bilgisayar = 'smtp.gmail.com'; bağlantı noktası = '465'; emailto = '[email protected]'; m_subject = 'konu'; m_text = 'deneme'; setpref('İnternet', 'E_posta', posta); setpref('İnternet', 'SMTP_Sunucusu', ana bilgisayar); setpref('İnternet', 'SMTP_Kullanıcı Adı', posta); setpref('İnternet', 'SMTP_Parolası', psswd); sahne = java.lang. System.getProperties; props.setProperty('mail.smtp.user', mail); props.setProperty('mail.smtp.host', host); props.setProperty('mail.smtp.port', port); props.setProperty('mail.smtp.starttls.enable', 'true'); props.setProperty('mail.smtp.debug', 'true'); props.setProperty('mail.smtp.auth', 'true'); props.setProperty('mail.smtp.socketFactory.port', port); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.fallback', 'yanlış'); sendmail(emailto, 'Yardım!', 'Astronotların üniforması kaldırıldı!', img); red_mean ise biter 135 || green_mean 135 || j = 1:2 için blue_mean 135 beyaz robot tarafından bulunamazsa r.turnAngle(360) mail = '[email protected]'; psswd = 'evet'; ana bilgisayar = 'smtp.gmail.com'; bağlantı noktası = '465'; emailto = '[email protected]'; m_subject = 'konu'; m_text = 'deneme'; setpref('İnternet', 'E_posta', posta); setpref('İnternet', 'SMTP_Sunucusu', ana bilgisayar); setpref('İnternet', 'SMTP_Kullanıcı Adı', posta); setpref('İnternet', 'SMTP_Şifre', psswd); sahne = java.lang. System.getProperties; props.setProperty('mail.smtp.user', mail); props.setProperty('mail.smtp.host', host); props.setProperty('mail.smtp.port', port); props.setProperty('mail.smtp.starttls.enable', 'true'); props.setProperty('mail.smtp.debug', 'true'); props.setProperty('mail.smtp.auth', 'true'); props.setProperty('mail.smtp.socketFactory.port', port); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.fallback', 'yanlış'); sendmail(emailto, 'Yardım!', 'Astronot bulunamadı!', img); r.durdur son uç

Açıkçası burası dağınık, ama kopyalandıktan sonra parlaması gerekiyor. Bunun için şifreler ve e-postalar açıkça bu projeyi yapanlar tarafından sağlanacaktır.

Bununla birlikte, örneğimiz, bu robotu herkese uygun hale getirmenin birçok yolundan sadece biridir. Yapılması gereken, kendinize uygun birçok farklı şey var.

Önerilen: