İçindekiler:
Video: MATLAB ile Roomba: 4 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:21
Bu proje, MATLAB ve bir 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 esas olarak MATLAB mobil uygulamasına ve bir Raspberry Pi kamera modülüne bağlıdır.
Adım 1: Parçalar ve Malzemeler
1. iRobot Oluşturma, Sürüm 2
- Bu, Roomba'ya benzeyen programlanabilir bir robottur. iRobot'un bu ürününün bir vakum olmadığını unutmayın. Kullanıcı tarafından özel programlama için tasarlanmıştır.
2. MATLAB 2017a
- Çoğu eski sürüm, aşağıda kullandığımız kodla uyumlu olacaktır. MATLAB, sahip olduğunuz sürümle uyumlu olmayan bir komut belirleyecek ve en uygun komutu önerecektir.
3. Raspberry Pi 3 Model B, Sürüm 1.2
- Hangi Raspberry Pi'nin iRobot'unuzla uyumlu olduğunu kontrol edin. Daha fazla yardım için bu bağlantıya bakın: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Bu talimat, önceden programlanmış bir Raspberry Pi ile çalıştığınızı varsayar. Aşağıdaki adımların çalışması için önceden programlanmış bir Pi ile çalışmanız gerekeceğini lütfen unutmayın. Önceden programlanmış bir Pi kullanmak, tüm kodlamalarınızı yalnızca MATLAB'de gerçekleştirmenize olanak tanır.
4. Kamera Modülü V2 (Raspberry Pi için)
- Şaşırmış olabilirsiniz; Raspberry Pi Kamera Modülü boyutuna rağmen oldukça kaliteli. Bu proje için en ucuz ve en uyumlu seçenektir.
İsteğe bağlı: 3D baskılı stand. Bu kamerayı stabilize etmek için kullanılır. Robotun işlevselliğini etkilemez, ancak renk ve/veya nesne tanıma için görüntüleme verilerini kullanmak istiyorsanız kodlamanıza yardımcı olacaktır.
2. Adım: Yapılandırma
1. Raspberry Pi ve kamera modülünü bağlama (Donanım)
- Raspberry Pi'ye güç sağlamak için, mikrodenetleyici üzerindeki dişi güç bağlantı noktasına erkek uçlu bir mikro USB çalıştırmanız gerekecektir. Opsiyonel: Voltajın 5V'u geçmemesi için voltaj regülatörü kullanılabilir. Raspberry Pi'ye güç verdikten sonra anakarttan erkek uç USB a'yı mikrodenetleyici üzerindeki USB bağlantı noktası A'ya çalıştırarak robotunuza bağlayabilirsiniz.
- Pi'yi Roomba'ya bağladıktan sonra kamera kuruluma hazırdır. Kamera Modülü beklediğinizden çok daha küçük olacaktır. Lensin bir sensöre monte edildiğini ve kameradan beyaz bir şeridin uzandığını unutmayın. Şeridi ÇIKARMAYIN veya YIKMAYIN! Raspberry Pi'ye bağlamak için ihtiyacınız olan kablo budur. Önce şeridin ucunu tutun ve gümüş konektörleri ve mavi kabloyu bulun. Bunlar zıt taraflarda. Ardından, Raspberry Pi'nizdeki ethernet ve HDMI bağlantı noktaları arasındaki yuvayı bulun. Onu kaplayan küçük, beyaz bir kilit olduğuna dikkat edin. Kilidi yavaşça kaldırın, ancak kırılacağı ve kalıcı olarak hasar görebileceği için yuvasından çıkarmayın. Kilidi kaldırdıktan sonra şeridi alın ve gümüş konektörleri HDMI bağlantı noktasına doğru çevirin. Mavi taraf Ethernet bağlantı noktasına bakacaktır. Hala kilidi açıkken şeridi yavaşça yuvaya kaydırın. Yuvaya zorlamanız gerekmez. Yerleştirdikten sonra kilidi aşağı doğru itin. Kameranız düzgün bir şekilde sabitlenmişse, şeridi (nazikçe) çekebilmeli ve gerginliği hissedebilmelisiniz. Şerit gevşek olmamalıdır. Kameranızı Pi'ye bağladıktan sonra ne kadar gevşek olduğunu fark edebilirsiniz. Bu yüzden onu sabitlemek için 3D baskılı bir montaj kullandık. Yüksek kaliteli görüntüleme için kameranızı sabit tutmak için hangi malzemeleri kullanmak istediğinizi belirlemek sizin seçiminizdir.
2. Uygun Dosyaları Kurma ve Roomba'yı Bilgisayarınıza Bağlama Tüm donanımınız yapılandırıldıktan sonra, robotla iletişim kurmanıza izin veren ilişkili m dosyalarıyla birlikte MATLAB'ı kurmaya geçebilirsiniz. Bunu yapmak için MATLAB'ı açın ve ilgili tüm dosyaları bir arada tutmak için yeni bir klasör oluşturun. Gerekli dosyaları kurmak/güncellemek için bu betiği kullanın:
- Tüm dosyalar şimdi oluşturduğunuz klasörde görünmelidir. Geçerli Klasör penceresine sağ tıklayın ve MATLAB'ın dosyaları aradığı dizin listesine bu yolu eklemek için 'Yola Ekle'yi seçin. Tüm dosyalarınızın doğru yolda olduğundan emin olun.
3. Dosyalar yüklendikten sonra artık robotunuza bağlanmaya başlayabilirsiniz. Robotunuzu çalıştırarak ve çalıştırmadan hemen sonra donanımdan sıfırlayarak başlayın (kullanımdan önce ve sonra her defasında robotunuzu donanımdan sıfırlamayı unutmayın). İkinci olarak, hem robotunuzu hem de dizüstü bilgisayarınızı aynı wifi ağına bağlayın. Bundan sonra, önceden programlanmış Raspberry Pi ile MATLAB üzerinden, Roomba'yı verilen adı ve roomba işlevini kullanarak arayarak konuşacağız. Örneğin, aşağıdaki satırı kullanarak robot 28'e bağlanırdım: R = roomba(28).
- Nesneyi bir R değişkenine nasıl atadığıma dikkat edin. Artık, R değişkenini bir yapı gibi ele alarak kurulum dosyasından ilişkili Roomba işlevlerine erişebilirim.
- R.turnAngle(90) Her şey yolunda giderse, bağlantıyı onaylayan bir müzik tonu çalmalıdır.
Adım 3: MATLAB Mantığı
Bu adımın altındaki PDF belgesi, MATLAB'deki kodlama sürecimiz için ayrıntılı bir mantık akış şemasıdır. Robotun yakın çevresinde bir nesne algıladığında bizimle iletişim kurmasını sağlamak için uçurum, ışık ve ışık çarpma sensörlerini etkinleştirdik. Örneğin, robot ileri doğru hareket ettiğinde, ışık sensörleri, hareket ettiği vektöre göre yolundaki nesneleri tarar. Robot için bir mesafe eşiği seçtik, böylece bir nesneye yaklaştığında onunla çarpışmak yerine geri dönecek. Robotumuz da kodlama işlemimizde belirttiğimiz Twitter ile yapılandırılmıştır (bu aşağıda gösterilecektir).
Deneyimi arttırmak için mobil cihazlarımızda MATLAB uygulamasını kullandık, böylece robotun hareketlerini sadece telefonlarımızı eğerek kontrol edebiliyoruz. Bunun yerine MATLAB kod bölümündeki moveDistance komutunu kullanarak robotu kesinlikle hareket ettirebileceğiniz için bu isteğe bağlı bir etkinliktir. Amacınız kesin olmaksa, robotunuzu kontrol etmek için MATLAB komutlarını kullanmanın tercih edildiğini unutmayın. Robotunuzu kameranın belirli bir yerde resim çekmesi için hedeflemek istiyorsanız, robotun hareketlerini MATLAB'da kodlamanız daha iyi olabilir. Eğlenirken, robotunuzu kontrol etmek için MATLAB uygulamasını kullanmak, doğruluk açısından arzu edilmez.
Kod, Roomba'ya temel bir kurulum gerçekleştirmesini ve ardından sürekli bir döngü boyunca devam etmesini emreder. Başlangıçta dizüstü bilgisayar Roomba() komutunu kullanarak Roomba ile bir bağlantı kuracaktır. Ayrıca MATLAB'da webwrite() komutunu kullanarak twitter bağlantısını kurar. Döngü, Roomba'yı çevreleyen ortama bağlı olarak beş ana mantıksal akış içerir. Roomba önce engelleri kontrol eder ve engellendiğini tespit ederse geriye doğru ayarlar. Bu döngüde, Roomba taşınıyorsa kullanıcıları uyaran ikinci yoldur. Sert Mars Savaş Bölgesinde önemli bir yardımcı program. Roomba, konumunun güvenli olduğunu belirledikten sonra, bir sonraki hareketini belirlemek için mobil cihaza bakar. Mobil cihaz öne doğru eğilirse, yuvarlanma ölçümünün ciddiyetine bağlı olarak bir temel hız hesaplayacak, bunun yerine tek tek tekerlek hızlarını eğim derecesine göre dönecek şekilde ayarlayacaktır. Telefon ayrıca Roomba'yı tersine hareket ettirebilir. Tarafsız bir mobil cihaz durumu, son iki yolu açar. Dinlenme halindeki bir Roomba, bir Alien bayrağı arayacak ve kullanıcıyı buna göre uyaracaktır.
Kodumuz aşağıdadır (MATLAB 2017a'da tamamlanmıştır)
%inputs: Wi-Fi bağlantılı bir cihazdan, kameradan gelen yönlendirme verileri
%bilgi, sensör verileri
%outputs: hareket, wifi bağlantılı cihaz ve hareket tarafından kontrol edilir
%, sensör verileri okunarak güvenlik kontrolü yapılır. kamera algılarsa
% bir uzaylı bayrağı, sonra roomba düşman bayrağını tweetleyerek yanıt verir
% tespit edildi.
%amaç: cihazımız, % yarattı, yaratıcısına hizmet ediyor ve yapıyor
% tam olarak ne anlattı.
%Kullanım: aslında program kendi kendine çalışacaktır.
hepsini temizle, hepsini kapat, clc
%Nesneleri ve Değişkenleri Başlatma
r=odaba(28);
m=mobil dev;
%use yanıtı = webwrite(hostname, data)
ana bilgisayar adı = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';
API='SGZCTNQXCWAHRCT5';
tweet='RoboCop Çalışıyor…Komut Bekleniyor';
data = strcat('api_key=', API, '&status=', tweet);
reponse=webwrite(hostname, data);
%sürekli çalışan döngü
1==1 iken
İlgili Verileri İçeren %Yapılar
o=m.yönlendirme; Mobil Cihazın %yönlendirmesi
light=r.getLightBumpers(); %Işık Tampon Değerleri
a = r.getCliffSensors(); %CLiff Sensör Değerleri
çarpma = r.getBumpers(); %Tampon Sensörleri
% tamponları kontrol et
eğer yumru.sağ==1 || bump.left==1 ||bump.front==1
r.moveDistance(-.2,.2);
%ışık Sensörlerini kontrol et
başka bir ışık.sol>60 || light.leftÖn>60 || light.leftCenter>60 || ışık.sağ>60 || light.rightÖn>60 || light.rightCenter>60
r.moveDistance(-.2,.2);
%Cliff Sensörlerini kontrol et
% Hırsızlığa Karşı Sinyal ve bildirim
elseif a.sol<300 && a.sağ<300 && a.leftÖn<300 && a.sağÖn<300
r.stop();
r.bip();
tweet='RoboCop kaldırıldı!'
data = strcat('api_key=', API, '&status=', tweet);
reponse=webwrite(hostname, data);
%Normal Uçurumdan Kaçınma İşlemi
başka bir.left<300 || a.sağ<300 || a.leftFront<300 || a.sağÖn<300
r.moveDistance(-.2,.2);
%Roomba kontrolleri geçti ve şimdi normal çalışma ile çalışacak.
%Başlangıçta cihazın rulosu ölçülür ve baz olur
Daha sonra tekerlek hızını hesaplamak için kullanılan %velocity
%İleri hareket
elseif o(3)>=0 && o(3)<=60
bazVel=(-.5/60)*(o(3)-60);
eğer o(2)>=-70 && o(2)<0
r.setDriveVelocity(baseVel+(.3/50)*abs(o(2)), baseVel-(.3/50)*abs(o(2)));
başka bir o(2)=0
r.setDriveVelocity(baseVel-(.3/50)*abs(o(2)), baseVel+(.3/50)*abs(o(2)));
başka r.dur
son
%Geri Hareket
elseif o(3)>100 && o(3)<150
r.setDriveVelocity(-.2, -.2)
r.bip();
r.bip();
%dinlenme odasıba, floresan olarak işaretlenmiş Uzaylı Bayrağı'nı arayacak
% yeşil kağıt parçası
Başka
r.dur
img=r.getImage(); %görüntü çek
eşik=graythresh(img(200:383,:, 2))+.1; %calc yeşil seviyesi
eşik>.42 ise
tweet='Düşman Tespit Edildi!!'
data = strcat('api_key=', API, '&status=', tweet);
reponse=webwrite(hostname, data);
Başka
r.dur
son
son
son
4. Adım: Sonuç
Unutmayın, yukarıda yazdığımız komut dosyasını kullanabilirsiniz, ancak bunu her zaman ihtiyaçlarınıza göre değiştirebilirsiniz. Telefonunuz tarafından kontrol edilmesi gerekmez! (Ancak, daha eğlenceli hale getirir.) Robotunuzu kontrol etmek için kullanmayı tercih ettiğiniz yöntemi seçin. Robotunuzla dolaşın ve keyfini çıkarın!
Önerilen:
Shadow Light Box - Arduino ile IR Uzaktan Kumanda ile Kontrol: 8 Adım (Resimlerle)
Gölge Işık Kutusu - Arduino ile IR Uzaktan Kumanda ile Kontrol: Bu talimat, bir sonraki Noel için gölge ışık kutusunun nasıl yapılacağına rehberlik edecektir. Kendi odanızı dekore edebilir veya arkadaşınıza hediye olarak yapabilirsiniz. Bu gölge kutusu, Kırmızı, Mavi, Yeşil renklerle karıştırarak çeşitli renkler yapabilir
ESP32 ile PWM - Arduino IDE ile ESP 32'de PWM ile LED Karartma: 6 Adım
ESP32 ile PWM | Arduino IDE ile ESP 32'de PWM ile LED Karartma: Bu talimatta Arduino IDE & PWM temel olarak herhangi bir MCU'dan analog çıkış üretmek için kullanılır ve bu analog çıkış 0V ile 3.3V (esp32 durumunda) arasında herhangi bir şey olabilir & itibaren
MATLAB Kontrollü Roomba: 5 Adım
MATLAB Kontrollü Roomba: Bu projenin amacı, modifiye edilmiş bir iRobot programlanabilir robotun yanı sıra MATLAB'ı kullanmaktır. Grubumuz, uçurum sensörleri, tampon algılama gibi iRobot'un birçok işlevini kullanan bir MATLAB komut dosyası oluşturmak için kodlama becerilerimizi birleştirdi
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
Roomblock: Roomba, Raspberry Pi ve RPLIDAR ile ROS Navigasyonunu Öğrenmek İçin Bir Platform: 9 Adım (Resimlerle)
Roomblock: Roomba, Raspberry Pi ve RPLIDAR ile ROS Navigasyonunu Öğrenmek İçin Bir Platform: Bu nedir?"Roomblock" Roomba, Raspberry Pi 2, lazer sensör (RPLIDAR) ve mobil pilden oluşan bir robot platformudur. Montaj çerçevesi 3D yazıcılar tarafından yapılabilir. ROS navigasyon sistemi, odaların bir haritasını çıkarmayı ve i