İçindekiler:

Roomba Park Arkadaşı: 6 Adım
Roomba Park Arkadaşı: 6 Adım

Video: Roomba Park Arkadaşı: 6 Adım

Video: Roomba Park Arkadaşı: 6 Adım
Video: En mantıklı robot süpürge İrobot Roomba 671 Akıllı Süpürge Kutu Açılımı ve İnceleme (iRobot) 2024, Kasım
Anonim
Roomba Park Arkadaşı
Roomba Park Arkadaşı

Bu proje bir iRobot Create programlanabilir roomba, MATLAB r2018a ve MATLAB mobile kullanır. Bu üç ortamı ve kodlama bilgimizi kullanarak, iRobot Create'i renkleri yorumlamak ve görevleri tamamlamak için yerleşik sensörleri kullanmak üzere programladık. Bu projeler, bu görevleri gerçekleştirmek için Raspberry Pi ve MATLAB iletişimine bağlıdır.

Adım 1: Malzemeler

Malzemeler
Malzemeler
Malzemeler
Malzemeler

1. iRobot Oluşturma Robotu

2. MATLAB r2018a

3. Ahududu Pi

4. Kamera Modülü

5. 3-D baskılı Kamera Sabitleyici Standı

6. MATLAB mobil yüklü akıllı telefon

7. MATLAB'ın kurulu olduğu Dizüstü/Bilgisayar

2. Adım: Bağlantı

Bu adım, Raspberry Pi'yi robota bağlamak, ikinci olarak robotu bilgisayarınıza bağlamak ve akıllı telefonu bilgisayara bağlamakla ilgilidir.

Raspberry Pi robotun üst kısmına monte edildiğinden, bu işlemin en kolay kısmı Raspberry Pi'yi robotunuza bağlamaktır. Robottan gelen bir kablo var, tek yapmanız gereken Raspberry Pi'nin yanına takmak.

Sonraki adım, robotun gerçekleştirmesi için komutları çalıştırabilmeniz için robotu bilgisayarınıza bağlamaktır. Yapmanız gereken ilk şey, bilgisayarınızı roomba'nızın oluşturduğu kablosuz ağa bağlamaktır. Şimdi, MATLAB'den Roomba araç kutusundaki işlevleri kullanabilmeniz için yolu ayarlamak için MATLAB'daki Set Path simgesini kullanmanız önerilir. Robotu her kullanmaya başladığınızda ve bitirdiğinizde, robotu sert bir şekilde sıfırlamanız gereken bir "İki Parmak Selamı" yapmalısınız, bu, serbest bırakmak için ışık sönene kadar dock ve spot düğmelerini on saniye boyunca basılı tutmanız anlamına gelir. Robotun kısa bir ölçek çaldığını duyarsanız, bu donanım sıfırlamada başarılı oldunuz. Daha sonra "r=roomba(x)" gibi bir kod satırı kullanarak roomba'ya bağlanmalısınız, burada 'x' sahip olduğunuz robota atanmış sayıdır.

Son olarak, bu proje için kullanacağınız herhangi bir mobil cihaza MATLAB mobile'ı indirmeniz gerekiyor ve bu uygulama hem Android hem de Apple cihazlarda mevcut. Uygulama yüklendikten sonra, kimlik bilgilerinizi kullanarak giriş yapmanız gerekecektir. Ardından "Diğer" -> etiketli sekmeyi kullanarak bu cihazı bilgisayarınıza bağlamalısınız, ardından "ayarlar" -> seçeneğine tıklayın ve ardından "Bilgisayar ekle" seçeneğine tıklayın, yukarıdaki resimlerde gösterilen ekran gelmelidir. Bir sonraki adım ise sizden istediği bilgileri fişe takıp kontrol etmektir. Başarılı bir şekilde bağlandıktan sonra, robotunuzu kontrol etmek için bilgisayarınızda tanımladığınız fonksiyonları telefonunuzda çağırabileceksiniz.

Adım 3: Sensörleri Kullanmak için Mantıksal Bir MATLAB Kodu Oluşturma

Sensörleri Kullanmak İçin Mantıksal Bir MATLAB Kodu Oluşturma
Sensörleri Kullanmak İçin Mantıksal Bir MATLAB Kodu Oluşturma

Kodun büyük bir kısmı while döngüsü içindeyken oluşturulması en kolay olacaktır, böylece roomba baktığı geçerli değerleri sürekli olarak güncelleyebilir. Bir hata varsa, MATLAB bir hatayı ve kodun neresinde göründüğünü görüntüleyerek sorun gidermeyi nispeten basit hale getirir.

r2018a MATLAB'da tasarlanan bu kod, standart araç kutularını, iRobot Create araç kutusunu ve MATLAB mobil araç kutusunu kullanır. Bu örnekte kullanılan roomba 26 olarak belirlenmiştir ve r=roomba(26)'nın, roomba ile tam olarak iletişim kurmak için yalnızca bir kez çalıştırılması gerekir.

Kod:

fonksiyon parkasist(x)eğer x==1

r=roomba(26) %'si roomba'ya bağlanıyor

doğru iken

r.setDriveVelocity(.05,.05) %, roomba'yı daha yavaş bir sürüş hızına ayarlar

bump=r.getBumpers %, verileri çarpma sensörlerinden alır

cliff=r.getCliffSensors %, verileri uçurum sensörlerinden alır

light=r.getLightBumpers %, ışık çarpma sensörlerinden gelen verileri alır

img=r.getImage;% robotun kamerasını okur

red_mean = ortalama(mean(img(:,:, 1))) % ortalama kırmızı piksel miktarını okur

green_mean = ortalama(mean(img(:,:, 2))) % ortalama yeşil piksel miktarını okur

blue_mean = ortalama(mean(img(:,:, 3))) % ortalama mavi piksel miktarını okur

if bump.front == 1 % ön çarpma sensörlerini okur

r.stop %roomba'yı durdurur

msgbox('Yol Gizlendi!', 'Park Asistanı Mesajı') %yolun gizlendiğini söyleyen bir mesaj görüntüler ara % döngüyü bitirir

elseif green_mean >150

r.stop %roomba'yı durdurur

cont = questdlg('Devam?', 'Yol Tamamlandı') % devam etmek isteyen soru kutusunu görüntüler

eğer devam == 'Evet'

parkassist(1) %kodu yeniden başlatır

Başka

son

break % döngüyü bitirir

elseif red_mean > 140

r.turnAngle(45) %odayı 45 derece döndürür

r.timeStart % bir zaman sayacı başlatır

doğru iken

r.setDriveVelocity(.05,.05) %roomba hızını ayarlar

time=r.timeGet %zamanı bir değişkene atar

bump=r.getBumpers %, verileri çarpma sensörlerinden alır

cliff=r.getCliffSensors %, verileri uçurum sensörlerinden alır

light=r.getLightBumpers %, ışık çarpma sensörlerinden gelen verileri alır

img=r.getImage;% robotun kamerasını okur

red_mean = ortalama(mean(img(:,:, 1))) % ortalama kırmızı piksel miktarını okur

green_mean = ortalama(mean(img(:,:, 2))) % ortalama yeşil piksel miktarını okur

blue_mean = ortalama(mean(img(:,:, 3))) % ortalama mavi piksel miktarını okur

blue_mean > 120 ise

r.moveDistance(-0.01) %roomba'yı ayarlanmış bir mesafeyi geriye doğru hareket ettirir songPlay(r, 'T400, C, D, E, F, G, A, B, C^', 'true') % yükselen bir müzik gamı çalar

msgbox('Su Bulundu!', 'Park Asistanı Mesajı') % su bulunduğunu bildiren bir mesaj görüntüler r.turnAngle(-80) % odayı 80 derece döndürür

break % mevcut döngüyü bitirir

elseif light.rightÖn > 25 || light.leftFront > %25 ışık çarpma sensörlerini okur

r.moveDistance(-0.01) %, roomba'yı ayarlanan bir mesafe geriye doğru hareket ettirir

r.turnAngle(-35) % odayı 35 derece döndürür

break % mevcut döngüyü bitirir

elseif cliff.rightFront < 2500 && cliff.leftFront < 2500 %her iki uçurum sensörünü de okur

r.moveDistance(-0.1) %, roomba'yı ayarlanan bir mesafe geriye doğru hareket ettirir

r.turnAngle(-80) odayı 80 derece döndürür

break % mevcut döngüyü bitirir

başka bir zaman >= 3

r.stop %roomba'yı durdurur

contin=questdlg('İstasyon Boş, Devam Ediyor mu?', 'Park Asistanı Mesajı') % contin == 'Evet' ise roomba'nın devam edip etmeyeceğini soruyor

r.turnAngle(-90) %, odayı 90 derece döndürür

parkassist(1) % işlevi yeniden başlatır

Başka

r.stop % Roomba'yı durdurur

son

Başka

son

son

elseif cliff.rightFront < 2500 && cliff.leftFront < 2500 %her iki uçurum sensörünü de okur

r.moveDistance(-0.1) %roomba'yı ayarlanan bir mesafe geriye doğru hareket ettirir

r.turnAngle(-90) %roomba'yı 90 derece döndürür

elseif cliff.rightFront < %2500 sağ uçurum sensörünü okur

r.turnAngle(-5) %roomba'yı hafifçe uçurum sensörünün ters yönüne döndürür

elseif cliff.leftFront < %2500 sol uçurum sensörünü okur

r.turnAngle(5) %roomba'yı hafifçe uçurum sensörünün ters yönüne döndürür

Başka

son

son

son

Adım 4: Kodu ve Robotu Test Etme

Kodu ve Robotu Test Etme
Kodu ve Robotu Test Etme
Kodu ve Robotu Test Etme
Kodu ve Robotu Test Etme
Kodu ve Robotu Test Etme
Kodu ve Robotu Test Etme

Kod geliştirildikten sonraki adım, kodu ve robotu test etmekti. Robotun dönüş açısı, hareket hızı ve her bir renk için eşikler gibi kodda yapılabilecek birçok farklı ayar olduğundan, robotunuz için bu değerleri bulmanın en iyi yolu test etmektir. onları ve ilerledikçe değiştirin. Sahip olduğumuz her iş günü için, bazıları robotunuzun çalıştığı ortama bağlı olduğundan, bu değerleri sürekli olarak değiştiriyorduk. Bulduğumuz en iyi yol, roomba'yı izlemesini istediğiniz yola yerleştirmek ve kameranın istemediğiniz renkleri algılamaması için yeterince yüksek bir bariyer. Bir sonraki adım, bu görevi tamamlamasını istediğinizde çalışmasına ve istediğiniz renkleri göstermesine izin vermektir. Gittiğinizde, bir sorun görürseniz yapılacak en iyi şey ön tamponu içeri itip durdurmak ve ardından sorun yaşadığınız parametreyi değiştirmektir.

Adım 5: Hatanın Tanınması

Tamamlanan her projede her zaman hata kaynakları vardır. Bizim için, robotun döndüğü açı ile kesin olmadığı basit gerçeğiyle hata yaşadık, bu yüzden 45 derece dönmesini söylerseniz kesin olmayacak. Bizim için başka bir hata kaynağı, bazen robotun arızalanması ve tekrar çalışmadan önce onu donanımdan sıfırlamanızdır. Bizim için son ana hata kaynağı, aynı kodun farklı robotlar üzerinde aynı etkiye sahip olmayacağıydı, bu yüzden sabırlı olmanız ve buna göre ayarlamanız gerekebilir.

6. Adım: Sonuç

Artık roomba'nızla oynamak için tüm araçlara sahipsiniz, bu da, istediğiniz hedeflere ulaşmak için kodu istediğiniz şekilde değiştirebileceğiniz anlamına gelir. Bu, günün en iyi kısmı olmalı, bu yüzden eğlenin ve güvenli bir şekilde sürün!

Önerilen: