İçindekiler:
- Adım 1: Parçalar ve Malzemeler
- 2. Adım: Roomba Veritabanı Dosyası
- 3. Adım: Roomba'ya bağlanma
- Adım 4: Kod
- Adım 5: Sonuç
Video: MATLAB Kontrollü Roomba: 5 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Bu projenin amacı, modifiye edilmiş bir iRobot programlanabilir robotun yanı sıra MATLAB'ı kullanmaktır. Grubumuz, uçurum sensörleri, tampon sensörleri, ışık sensörleri ve kamera dahil olmak üzere iRobot'un birçok işlevini kullanan bir MATLAB komut dosyası oluşturmak için kodlama becerilerimizi birleştirdi. Bu sensör ve kamera okumalarını girdi olarak kullandık ve MATLAB kod fonksiyonlarını ve döngülerini kullanarak istediğimiz belirli çıktıları oluşturmamıza izin verdik. Ayrıca MATLAB mobil cihazı ve jiroskopu iRobot'a bağlanmanın ve onu kontrol etmenin bir yolu olarak kullanıyoruz.
Adım 1: Parçalar ve Malzemeler
MATLAB 2018a
-MaTLAB'ın 2018 versiyonu, çoğunlukla mobil cihaza bağlanan kod ile en iyi şekilde çalıştığı için en çok tercih edilen versiyondur. Ancak, kodlarımızın çoğu MATLAB sürümlerinin çoğunda yorumlanabilir.
iRobot Cihaz Oluştur
-Bu cihaz, tek amacı programlama ve kodlama olan özel yapılmış bir cihazdır. (Gerçek bir boşluk değil)
Raspberry Pi (kameralı)
- Bu, iRobot'un beyni olarak çalışan, pahalı olmayan bir bilgisayar kartıdır. Küçük olabilir, ancak birçok şeyi yapabilir. Kamera ek bir eklentidir. Ayrıca tüm işlevlerini ve komutlarını elde etmek için ahududu pi'yi kullanır. Yukarıda resmedilen kamera, Tennessee Üniversitesi'ndeki Mühendislik Temelleri bölümleri tarafından oluşturulan 3D baskılı bir stand üzerine monte edilmiştir.
2. Adım: Roomba Veritabanı Dosyası
Roomba'nız için uygun fonksiyonları ve komutları kullanabilmeniz için ihtiyaç duyacağınız bir ana dosya bulunmaktadır. Bu dosya, roomba'nızı daha yönetilebilir hale getirmek için kod yazdığınız işlevlerdir.
Dosyayı bu linkten veya aşağıdaki indirilebilir dosyadan indirebilirsiniz.
ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php
3. Adım: Roomba'ya bağlanma
Öncelikle robotunuzun bir mikro USB fişi kullanarak ahududu pi kartınıza bağlı olduğundan emin olmalısınız. Ardından bilgisayarınızı ve robotunuzu aynı WiFi'ye düzgün şekilde bağlamanız gerekir. Bu yapıldıktan sonra robotunuzu çalıştırabilir ve robot veritabanı dosyasında verilen komutu kullanarak ona bağlanabilirsiniz. (Robotunuzu kullanmadan önce ve sonra her zaman donanımdan sıfırlayın). Örneğin robotumuza bağlanmak için "r.roomba(19)" komutunu kullanıyoruz, r değişkenini cihazımıza atadık. Bu, değişkenimizi herhangi bir anda başvurabileceğimiz bir yapı olarak kuran veritabanı dosyasına atıfta bulunur.
Adım 4: Kod
Aşağıdaki kodun tamamını ekledik, ancak burada komut dosyamızdaki önemli unsurları vurgulayan kısa bir genel bakış var. Robotumuzun potansiyelini en üst düzeye çıkarmak için tüm sensörleri ve kamerayı kullandık. Ayrıca robotumuza bir mobil cihaz bağlamamıza ve onu manuel olarak kontrol etmek için groskopu kullanmamıza izin veren kodu da ekledik.
Robotun ileri hızını 0,06 m/s'ye ayarlayan basit "r.setDriveVelocity(.06)" komutuyla başladık. Bu sadece robotu önceden hareket ettirmek içindir
Ardından, ana betiğimiz, aşağıdaki koşullu ifadelerde başvurabileceğimiz ve kullanabileceğimiz yapılar oluşturarak verilen robotun verilerini alan bir while döngüsü ile başlatılır, böylece robota yapı verilerine dayanarak belirli bir komutu çalıştırdığını söylememizi sağlar. robot sensörleri ile okur. Robotun uçurum sensörlerini okuması ve siyah bir yol izlemesi için ayarladık
while true % while döngüsü "false" bir şey oluşana kadar devam eder (bu durumda sonsuza kadar devam eder) data = r.getCliffSensors; data2 = r.getBumpers;% uçurum sensörü değerleri hakkında sürekli olarak veri alır ve bunları bir değişkene atar % img = r.getImage; % Takılı kameradan resim çeker % image(img); % Alınan görüntüyü gösterir % red_mean = ortalama(mean(img(:,:, 1)));% data.rightFront < 2000 r.turnAngle(-2); %, sağ ön uçurum sensörlerinin değeri 2000 r.setDriveVelocity(.05) altına düştüğünde Roomba'yı yaklaşık 0,2 derece CW döndürür; elseif data.leftFront data.leftFront && 2000 > data.rightFront r.moveDistance(.1); %, sağ ön ve sol ön sensörlerden gelen her iki değer de 2000 % r.turnAngle(0)'ın altına düşerse Roomba'ya yaklaşık 0,2 m/s'de ilerlemeye devam etmesini söyler; % yukarıda belirtilen koşullar doğruysa Roomba'ya dönmemesini söyler
elseif data2.right == 1 r.moveDistance(-.12); r.turnAngle(160); r.setDriveVelocity(.05); elseif data2.left == 1 r.moveDistance(-.2); r.turnAngle(5); r.setDriveVelocity(.05); elseif data2.front == 1 r.moveDistance(-.12); r.turnAngle(160); r.setDriveVelocity(.05);
Bu while döngüsünden sonra kamera üzerinden elde edilen verileri tetikleyen başka bir while döngüsüne giriyoruz. Ve bu while döngüsü içinde, belirli bir program (alexnet) kullanarak bir görüntüyü tanıyan bir if ifadesi kullanıyoruz ve görüntüyü tanımladıktan sonra hemen mobil cihazın uzaktan kumandasını tetikliyor
anet = alexnet; % alexnet derin öğrenmeyi bir değişkene atar while true % Infinite while döngüsü img = r.getImage; img = imresize(img, [227, 227]); etiket = sınıflandır(anet, img); if etiketi == "kağıt havlu" || etiket == "buzdolabı" etiket = "su"; bitiş resmi(img); başlık(char(etiket)); çizilmiş;
Cihazı telefonumuzla kontrol etmemizi sağlayan while döngüsü, bu verileri telefonun jiroskopundan alır ve onu, sürekli olarak bilgisayardaki MATLAB'a geri aktaran bir matrise bağlarız. Matrisin verilerini okuyan ve telefonun jiroskopunun belirli değerlerine göre cihazı hareket ettiren bir çıktı veren bir if ifadesi kullanıyoruz. Mobil cihazın Oryantasyon sensörlerini kullandığımızı bilmek önemlidir. Yukarıda bahsedilen üçe bir matris, telefonun yön sensörlerinin azimut, eğim ve yan olan her bir elemanı tarafından kategorize edilir. if ifadeleri, kenar 50 değerini aştığında veya -50'nin altına düştüğünde, robot belirli bir mesafe ileri (pozitif 50) veya geri (negatif 50) hareket ettiğinde belirtilen koşulları yarattı. Aynısı adım değeri için de geçerlidir. Hatve değeri 25 değerini aşarsa -25'in altına düşerse robot 1 derece (pozitif 25) veya negatif 1 derece (negatif 25) açıyla döner
while gerçek duraklama(.1) % Her değer alınmadan önce.5 saniyelik duraklama Kontrolör=iphone. Orientation; % iPhone'un oryantasyon değerleri için matrisi Azimuthal=Controller(1); % Matrisin ilk değerini bir değişkene atar Pitch=Controller(2); % Matrisin ikinci değerini bir değişkene atar (iPhone yana doğru tutulduğunda ileri ve geri eğin) Side=Controller(3); % Matrisin üçüncü değerini bir değişkene atar (iPhone yana tutulduğunda sola ve sağa eğin) % Yan > 130 || Yan 25 r.moveMesafe(-.1) % iPhone geriye doğru yatırılırsa Roomba'yı yaklaşık 0,1 metre geriye doğru hareket ettirir, aksi takdirde Yan 25 r.dönüşAçı(-1) % iPhone ise Roomba'yı yaklaşık 1 derece sola döndürür en az 25 derece sola eğik ise Pitch < -25 r.turnAngle(1) % iPhone en az 25 derece sonunda eğilirse Roomba'yı yaklaşık 1 derece CW döndürür
Bunlar, kendi yararınıza bir bölümü hızlı bir şekilde kopyalayıp yapıştırmanız gerektiğinde eklediğimiz kodumuzun ana parçalarının yalnızca öne çıkan kısımlarıdır. Ancak, gerekirse kodumuzun tamamı aşağıya eklenmiştir
Adım 5: Sonuç
Yazdığımız bu kod, projeye ilişkin genel vizyonumuzun yanı sıra robotumuz için özel olarak tasarlanmıştır. Amacımız, robotun özelliklerinin çoğunu kullanan iyi bir tasarım komut dosyası oluşturmak için tüm MATLAB kodlama becerilerimizi kullanmaktı. Telefon kumandasını kullanmak düşündüğünüz kadar zor değildir ve umarız kodumuz bir iRobot kodlamanın ardındaki konsepti daha iyi anlamanıza yardımcı olabilir.
Önerilen:
Hız Kontrollü ve Mesafe Ölçümlü Bluetooth Kontrollü RC Araba: 8 Adım
Hız Kontrollü ve Mesafe Ölçümlü Bluetooth Kontrollü RC Araba: Çocukken RC arabalara her zaman hayrandım. Günümüzde Arduino yardımıyla ucuz Bluetooth kontrollü RC arabaları kendiniz yapmak için birçok öğretici bulabilirsiniz. Hadi bir adım daha ileri gidelim ve pratik kinematik bilgimizi hesaplamak için kullanalım
MATLAB Kontrollü Mikrodenetleyici (Arduino MKR1000): 4 Adım
MATLAB Kontrollü Mikrodenetleyici (Arduino MKR1000): Projemizin amacı, MATLAB'ı ve Arduino MKR1000'i elimizden gelen en iyi şekilde kullanmaktı. Amacımız, arduino'nun belirli özelliklerinin, belirli bir girdiye dayalı olarak belirli bir çıktıyı gerçekleştirmesine izin veren bir komut dosyası oluşturmaktı. Çok kullandık
Raspberry Pi Model 3 A+ ile Tarayıcı Kontrollü Roomba Robot: 6 Adım (Resimli)
Raspberry Pi Model 3 A+ ile Tarayıcı Kontrollü Roomba Robotu: Genel BakışBu Eğitilebilirlik, ölü bir Roomba'ya nasıl yeni bir beyin (Raspberry Pi), gözler (Web kamerası) ve bir web tarayıcısından her şeyi kontrol etmenin bir yolunun nasıl verileceğine odaklanacaktır. Seri arayüz üzerinden kontrole izin veren birçok Roomba hack var. Bende yok
Roomba MATLAB Projesi: 5 Adım
Roomba MATLAB Projesi: NASA'nın Mars gezgini için şu anki planı, onun bir veri toplayıcı olması ve Mars'ta dolaşması, bilim adamlarının daha önce herhangi bir yaşam formu olup olmadığını görebilmesi için Dünya'ya geri getirmek için toprak örnekleri toplaması. gezegen. Ek olarak
MATLAB ile Roomba: 4 Adım (Resimlerle)
Roomba with MATLAB: Bu proje MATLAB ve iRobot Create2 programlanabilir robotu kullanır. MATLAB bilgimizi teste tabi tutarak, Create2'yi görüntüleri yorumlamak ve sinyalleri algılamak için programlayabiliriz. Robotun işlevselliği temel olarak şunlara bağlıdır