İçindekiler:
- Adım 1: Malzemeler
- 2. Adım: Bağlantı
- Adım 3: Sensörleri Kullanmak için Mantıksal Bir MATLAB Kodu Oluşturma
- Adım 4: Kodu ve Robotu Test Etme
- Adım 5: Hatanın Tanınması
- 6. Adım: Sonuç
Video: Roomba Park Arkadaşı: 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
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
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
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
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:
Aile / İş Arkadaşı Durum Göstergesi: 6 Adım (Resimlerle)
Aile / İş Arkadaşı Durum Göstergesi: İlk Eğitilebilirliğim, birçok proje yıllar içinde bana yardımcı oldu, umarım bu başka birine yardımcı olur. Kısa hikaye… Aramaları bölmek ya da başka bir şey düşündüğümüzde uzak durmak yerine birbirimize durumumuzu göstermenin bir yoluna ihtiyacımız vardı
Arduino Park Asistanı - Arabanızı Her Seferinde Doğru Yere Park Edin: 5 Adım (Resimlerle)
Arduino Park Asistanı - Arabanızı Her Zaman Doğru Yere Park Edin: Bu projede size bir Arudino kullanarak kendi park asistanınızı nasıl kuracağınızı göstereceğim. Bu park asistanı, aracınıza olan mesafeyi ölçer ve bir LCD ekran okuması ve bir LED kullanarak aracınızı doğru yere park etmeniz için size rehberlik eder
Çalışma Arkadaşı: 10 Adım
Çalışma Arkadaşı: Bu talimat, nasıl çalışma arkadaşı olunacağını açıklar Bu çalışma arkadaşının işlevi, 14 ile 18 yaş arasındaki gençlerin nasıl plan yapacaklarını ve ders çalışacaklarını öğrenmelerine yardımcı olmaktır. Amaç robotun öğrencilerle birlikte öğrenebilmesidir. Kapak boyalıdır
Tembel 301 Dart Arkadaşı!: 5 Adım
Tembel 301 Dart Arkadaşı!: Üniversitedeki oda arkadaşlarım ve ben kısa süre önce yıpranmış bir dart tahtası devraldık… Her oyuncunun 301 puandan başladığı, birkaç turda sıfır puana indiği 301 gibi oyunları keşfetmeye başladık. . Bu eğlenceliydi, ancak üzerine yazmak
Barmenin Arkadaşı: Bir @ Ev Yaratıcı Anahtarı: 6 Adım
Bartender's Buddy: bir @ Ev Yaratıcı Anahtarı: Evde misafir ağırlarken hiç kendi kendinize düşündünüz mü…"Vay canına - Keşke konuğuma içeceğinin en uygun parti bardağı içme seviyesine ulaştığını göstermek için benzersiz bir yolum olsaydı. .." ?Artık bu dileğinizi gerçekleştirebilirsiniz