İçindekiler:

MATLAB ile Roomba: 4 Adım (Resimlerle)
MATLAB ile Roomba: 4 Adım (Resimlerle)

Video: MATLAB ile Roomba: 4 Adım (Resimlerle)

Video: MATLAB ile Roomba: 4 Adım (Resimlerle)
Video: MATLAB ile Ses Hızının Ölçümü (Measurement of Speed of Sound via MATLAB) 2024, Kasım
Anonim
MATLAB ile Roomba
MATLAB ile Roomba

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

Parçalar ve Malzemeler
Parçalar ve Malzemeler
Parçalar ve Malzemeler
Parçalar ve Malzemeler
Parçalar ve Malzemeler
Parçalar ve Malzemeler
Parçalar ve Malzemeler
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

Yapılandırma
Yapılandırma
Yapılandırma
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: