İçindekiler:
- Adım 1: Gerekli Malzemeler
- 2. Adım: Kurulum/İndirme
- Adım 3: Kod Bölümü 1: İzleme İşlevi
- Adım 4: Kod Bölüm 2: Döngü Sürerken
- Adım 5: Kod Bölümü 3: E-posta Bölümü
Video: UTK EF 230 MarsRoomba Projesi Sonbahar 2018: 5 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Şu anda, Mars gezicileri, gezegenin mikrobiyal yaşam potansiyeli hakkında daha fazla bilgi edinmenin nihai sonuna kadar çeşitli yöntemlerle Mars yüzeyinde veri toplamak için kullanılmaktadır. Geziciler veri toplama için öncelikle fotoğrafçılık ve toprak analiz araçlarını kullanır, ancak geziciler ayrıca navigasyon aletleri, radyasyon dedektörleri, atmosferik sensörler ve kaya numunesi buharlaşması için bir lazer içerir. Planlanan 2020 gezici misyonunun hedefi çoğunlukla aynı, ancak NASA'ya göre "toprak ve kaya örneklerini toplamak ve gelecekteki bir görevle Dünya'ya potansiyel geri dönüş için bunları yüzeyde önbelleğe almak" özel görevi.
Bununla birlikte, gelecekteki gezicilerin insan yardımı için kullanılacağı öncülü altında, ekibimiz gezicinin insanların hangi yönlerini izleyebileceğini düşündü. Bir acil durumda yaşam desteği ve teçhizatı bozulan bir astronotun bilincini kaybetmesi durumunda, gezginimizin, takip ettiği astronotun hareketsiz olduğunu gözlemleyerek ve bir tehlike mesajı ileterek mobil bir acil durum işareti olarak hizmet edebileceği sonucuna vardık. İnsanı takip etmek ve hareketsizliği belirlemek için gezici, insanın ayakkabılarının rengi ve hareketleri gibi girdileri alacaktır. Dikkate alınması gereken diğer bir girdi, acil bir durumda tehlike sinyali iletmek için yolunu hatırlaması gerektiğidir. Gezicimiz Mars'taki bir ihtiyacı karşılıyor, çünkü bu tür yabancı bir arazide böylesine maliyetli bir göreve girişmek, birden fazla güvenlik önlemi katmanı gerektiriyor ve bir astronot giysi arızası veya bilinç kaybı nedeniyle kendi yardımını alamıyorsa, gezici başkalarını uyarabilir..
Bu Eğitilebilirlik, okuyucunun Roomba'sını bir "astronot"u başarılı bir şekilde takip etmesi ve uygunsa bir tehlike sinyali göndermesi için programlamasına yardımcı olmak için tasarlanmıştır.
Adım 1: Gerekli Malzemeler
1) İnternet erişimli bilgisayar/dizüstü bilgisayar
2) MATLAB_R2018a
3) Roomba ve Roomba İndirme
2. Adım: Kurulum/İndirme
Roomba'ya (proje klasöründeki kendi dosyasına kaydedilmiş) erişmek için gereken yazılımı indirmek için bu betiği MATLAB'da çalıştırın
Ek Yardım:
% EF 230 Roomba Projesi için kurulum programı% Son güncelleme: 13 Eylül 2017 (https sunucusuyla ilişkili güvenlik sorunları düzeltildi ve hata oluşursa dosya silme uyarısı kaldırıldı) function roombaInstall clc; % dosyaları yüklenecek dosyaların listesi = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; seçeneklerden kurulacak % konum = weboptions('CertificateFilename', ''); % sertifika gereksinimlerini göz ardı etmesini söyle server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Roomba Yükleme/Güncelleme'; % amacı göster ve onay al istemi = { 'Bu program şu EF 230 Roomba dosyalarını indirecek:' '' strjoin(files, ' ') '' 'bu klasöre:' '' cd '' 'Devam etmek istiyor musunuz? ' }; bip; yn = questdlg(istem, … dlgTitle, … 'Evet', 'Hayır', 'Evet');
eğer ~strcmp(yn, 'Evet'), return; son
% var olan dosyaların listesini al Mevcut_dosyalar = files(cellfun(@exist, files) > 0); eğer ~isempty(existing_files) % onları değiştirmenin gerçekten uygun olduğundan emin olun komut istemi = {'Bu dosyaları değiştiriyorsunuz: ' '' strjoin(existing_files, ' ') '' 'Değiştirilecek mi?' }; bip; yn = questdlg(istem, … dlgTitle, … 'Evet', 'Hayır', 'Evet'); eğer ~strcmp(yn, 'Evet'), return; son son
% dosyaları indir cnt = 0; i=1 için:uzunluk(dosyalar) f=dosyalar{i}; disp(['İndiriliyor' f]); url'yi deneyin = [sunucu f]; websave(f, url, seçenekler); % güvenlik hatalarını önlemek için eklenen seçenekler cnt = cnt + 1; catch disp(['İndirmede hata' f]); kukla = [f '.html']; eğer varsa(kukla, 'dosya')==2 sil(kukla) son son son
if cnt == uzunluk(dosyalar) msg = 'Kurulum Başarılı'; waitfor(msgbox(msg, dlgTitle)); else msg = 'Kurulum Hatası - ayrıntılar için komut penceresine bakın'; waitfor(errordlg(msg, dlgTitle)); son
%roombaYüklemeyi sonlandır
Adım 3: Kod Bölümü 1: İzleme İşlevi
Bu fonksiyon Roomba değişkenini ve resmi Roomba üzerindeki kameradan alır ve izlenen nesnenin merkez xy koordinatlarını bulur
Bu kodu aynı klasördeki başka bir dosyaya kaydedin.
function [xm, ym] = traceblue(r)%Girişler: roomba değişkeni %Çıkışlar: aşağıdaki nesnenin merkezinin x ve y değeri %Amaç: bir görüntü verilen mavi nesnenin merkezini bulur %Kullanım [x değeri, y değer] = traceblue(roomba değişkeni) img=r.getImage; % robot alt grafiğinden kamerayı okur(1, 2, 2) subimage(img); %, yolu başlık('İzleme Resmi') ile aynı pencerede gösterir red = img(:,:, 1); yeşil = img(:,:, 2); mavi = img(:,:, 3); justBlue = mavi - yeşil/2 - kırmızı/2; bw = justBlue > 40; subplot(1, 2, 2) subimage(bw) üzerinde tutun; [x, y] = bul(bw); if ~sempty(x) && ~isempty(y) xm = yuvarlak(ortalama(x)); ym = yuvarlak(ortalama(y)); xx = maks(1, xm-5):min(xm+5, boyut(bw, 1)); yy = maks(1, ym-5):min(ym+5, boyut(bw, 2)); bwbw = sıfırlar(boyut(bw), 'uint8'); bwbw(xx, yy) = 255; subplot(1, 2, 2) subimage(justBlue + bwbw) üzerinde tutun; son
Adım 4: Kod Bölüm 2: Döngü Sürerken
Bu kod, Roomba'yı, izleme işlevinden nesnenin x ve y konumuna göre yönlendirir. Bu, Roomba'nın maviyi ararken duvarlara ve uçurumlara dikkat etmesini sağlayacaktır. Bu ayrıca Roomba yolunun x ve y koordinatlarını alacak ve izleme görüntüsüyle ilgili bir çizim oluşturacaktır. Çarpma sensörü etkinleştirilirse, e-posta bölümüne geçecektir
%Rover Projesi
%Jonah Zahn, Wade Price, Noah Sloan %jzahn2, wprice15, nsloan1 Girdiler: roomba değeri, kamera verileri, tümsek, ışık ve duvar sensörleri %Amaç: Astronotları takip eder ve engellerden kaçınır. Eğer uyarılırsa, roomba bir haritanın detaylarını ve başlangıç konumuna göre nerede olduğunu gösteren bir e-posta gönderir. %Kullanım: programı sadece bir roomba değişkeni bildirmiş olarak çalıştırın, ayrıca % hareketli yeşil bir nesneye sahip olun % Çıktılar: resim izleme resmini, e-posta haritasını ve kullanıcıya %% metni gösterir Bölüm b=0; %Başlangıç değişkenleri c=0; x=0; y=0; teta=0; while c==0 mavi nesneyi ve engelleri algılamasını sağlamak için %döngü t = r.timeGet; d = r.getDistance; [xval, yval] = trackblue(r); cliff=getCliffSensors(r); %sensör değerleri için yapıların başlatılması light=getLightBumpers(r); çarpma= getBumpers(r); if light.leftCenter >= 10 || light.rightCenter >= %10 r.stop yakınında bir duvar olup olmadığını algılar r.setLEDDigits('help') c=1 % iken b==0 % eğer bump.right == 1 || yumru.sol == 1 || bump.front == 1 %Bir duvar algıladıktan sonra bir şeye çarptığını algılar % c=1 % b=1 % disp('bump') % end % end elseif bump.right == 1 || yumru.sol == 1 || bump.front == 1 %Bir şeye çarptıysa algılar, öyleyse bir e-posta gönderir r.stop c=1 b=1 elseif cliff.leftFront <= 100 || cliff.rightÖn <= 100 || uçurum.sol <= 100 || cliff.right <= 100 %r.stop yakınında bir uçurum olup olmadığını algılar c=1 r.setLEDDigits('help') else %yval = 100 ise sürücü hızlarını maviyi takip edecek şekilde ayarlar r.setDriveVelocity(0.1) elseif yval 400 r.turnAngle(-5) end end theta = theta + r.getAngle; x = d.*cosd(teta) + x; oda alanının % x koordinatı y = d.*sind(theta).*d + y; roomba alt grafiğinin % y koordinatı(1, 2, 1) arsa(x, y, 'bd') % yolu çizer ve bir başlık başlığı ekler('Roomba Yolu') beklet; son
Adım 5: Kod Bölümü 3: E-posta Bölümü
Bu, çizilen yolu ve görüntüyü alacak ve belirtilen bir e-posta adresine gönderecektir
(Burada örnek e-posta ile gösterilmiştir)
%% E-posta Bölümü
if b==1 saveas(gcf, 'rovermap.png') %şekli kaydeder setpref('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref('İnternet', 'E_mail', '[email protected]'); setpref('Internet', 'SMTP_Username', '[email protected]'); % gönderici kullanıcı adı setpref('Internet', 'SMTP_Password', 'gssegsse'); % Gönderici parolası sahne = Java.lang. System.getProperties; props.setProperty('mail.smtp.auth', 'true'); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.port', '465'); sendmail('example email', 'RoverBeacon', 'Astronot hareket etmeyi durdurdu. Kurtarma için ekteki dosyadaki talimatları izleyin.', 'rovermap.png') disp('email gönderildi') end
Önerilen:
Robot Projesi UTK 2017: 3 Adım
Robot Projesi UTK 2017: Misyon: Mühendis ekibimiz, açık kaynaklı teknoloji geliştirme için Kâr Amacı Gütmeyen bir kuruluş olan Froogle tarafından yenilikçi bir İnsan Destekli Mars Rover'ı geliştirmek üzere işe alındı. bir dizi yürütmek için kodladığımız bir roomba o
Venüs Flytrap - ITM Sonbahar 2019: 5 Adım
Venus Flytrap - ITM Sonbahar 2019: Herkesin masasında eksik olan ne? Kalem, tükenmez kalem ve diğer nesneleri tutan mekanik bir Venüs Sinekkapan
ITTT Projesi 2018 - Dünya: 5 Adım
ITTT Projesi 2018 | Earth: Merhaba!Okulum bana Arduino kullanarak etkileşimli bir sistem oluşturmam ve bunu gerçek hayatta kurmam gereken bir proje verdi. Sensörler ve düğmelerle etkileşiminizin ülkeleri aydınlatacağı ve dünyanın dönmesini sağlayacağı bir dünya küresi yapmaya karar verdim
Mars Roomba Projesi UTK: 4 Adım
Mars Roomba Projesi UTK: SORUMLULUK REDDİ: BU YALNIZCA ROOMBA HERHANGİ BİR ÖZEL ŞEKİLDE KURULDUĞUNDA ÇALIŞACAKTIR, BU EĞİTİM TABLOSU TENNESSEE ÖĞRENCİLERİ VE FAKÜLTE ÜNİVERSİTESİ İÇİN OLUŞTURULMUŞ VE KULLANILMASI AMAÇLANMIŞTIR.Bu kod, yerel olarak çalışacak bir Roomba kurmak için kullanılır. yazılı ve
Sonbahar veya Okula Dönüş için Elma Çelengi Nasıl Yapılır: 13 Adım (Resimlerle)
Sonbaharda veya Okula Dönüş için Elma Çelengi Nasıl Yapılır: RootsAndWingsCo'dan Anjeanette, bu sevimli elma çelenkini keçe ve malzemeden yaptı. Dikemiyorum diyenlerin bile yapabileceği basit bir projeydi! (İğnenize iplik geçirebildiğiniz sürece.)