Mündəricat:
- Addım 1: Lazım olan materiallar
- Addım 2: Quraşdırma/Yükləmə
- Addım 3: Kod 1 -ci hissə: İzləmə funksiyası
- Addım 4: Kod 2 -ci hissə: Döngə halında
- Addım 5: Kod Part 3: E -poçt Bölməsi
Video: UTK EF 230 MarsRoomba Layihəsi Payız 2018: 5 Addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:47
Hal -hazırda, Mars gəmiləri, planetin mikrob canlıları üçün potensialı haqqında daha çox məlumat əldə etmək üçün müxtəlif üsullarla Mars səthində məlumat toplamaq üçün istifadə olunur. Rovers əsasən məlumat toplamaq üçün fotoqrafiya və torpaq analizi vasitələrindən istifadə edir, lakin gəzənlərə naviqasiya alətləri, radiasiya detektorları, atmosfer sensorlar və qaya nümunələrinin buxarlanması üçün lazer də daxildir. NASA -ya görə, 2020 -ci ildə planlaşdırılan rover missiyasının məqsədi əsasən eynidir, lakin "torpaq və qaya nümunələri toplamaq və gələcəkdə bir missiya ilə Yerə qayıtmaq üçün onları səthdə gizlətmək" xüsusi vəzifəsi ilə.
Bununla birlikdə, gələcək roverlərin insan yardımı üçün istifadə ediləcəyi fərziyyəsi altında, komandamız, roverin insanların hansı cəhətlərini izləyə biləcəyini düşündü. Belə bir nəticəyə gəldik ki, bəzi fövqəladə hallar bir astronavtı həyat dəstəyi və avadanlıqları ilə birlikdə şüursuz hala gətirərsə, gəmiçimiz, təqib etdiyi astronavtın hərəkətsiz olduğunu müşahidə edərək, narahatlıq mesajı verərək mobil bir mayak kimi xidmət edə bilər. İnsanı izləmək və hərəkətsizliyi müəyyən etmək üçün, rover insanın ayaqqabılarının rəngi və hərəkəti kimi girişləri alacaqdı. Nəzərə alınmalı olan başqa bir məqam, fövqəladə bir vəziyyətdə bir siqnal ötürmək üçün yolunu xatırlamalıdır. Gəzicimiz Marsda bir ehtiyaca cavab verir ki, belə bir xarici ərazidə bu qədər baha başa gələn bir missiyanı yerinə yetirmək üçün bir neçə qat təhlükəsizlik kassası tələb olunur və kosmonavt uyğunsuzluq və ya şüursuzluq səbəbindən öz yardımını ala bilmirsə, gəzən başqalarını xəbərdar edə bilər..
Bu Təlimat, oxucunun Roombasını "astronavt" ı uğurla təqib etməsi və lazım olduqda bir narahatlıq siqnalı göndərməsi üçün proqramlaşdırmasında kömək etmək üçün hazırlanmışdır.
Addım 1: Lazım olan materiallar
1) İnternetə çıxışı olan kompüter/dizüstü kompüter
2) MATLAB_R2018a
3) Roomba və Roomba Yükləmə
Addım 2: Quraşdırma/Yükləmə
Roomba'ya daxil olmaq üçün lazım olan proqramı yükləmək üçün bu layihəni MATLAB -da işlədin (layihə qovluğunda öz faylında saxlanılır)
Əlavə Yardım:
EF 230 Roomba Layihəsi üçün Quraşdırma Proqramı Son yeniləmə: 13 Sentyabr 2017 (https serveri ilə əlaqəli sabit təhlükəsizlik problemləri və səhvlər baş verərsə silinmiş fayl silmə xəbərdarlığı) functionbabaInstall clc; Faylların quraşdırılacağı faylların % siyahısı = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; variantlardan yükləniləcək % yer = weboptions ('CertificateFilename', ''); % sertifikat tələblərinə məhəl qoymamağı söyləyin server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Roomba Quraşdır/Yeniləyin'; % keçirmək məqsədi və təsdiq sorğusu alın = {'Bu proqram bu EF 230 Roomba fayllarını yükləyəcək:' '' strjoin (files, '') '' 'bu qovluğa:' '' cd '' 'Davam etmək istəyirsiniz? '}; bip; yn = questdlg (sorğu,… dlgTitle,… 'Bəli', 'Xeyr', 'Bəli');
if ~ strcmp (yn, 'Yes'), return; bitmək
% mövcud faylların siyahısını əldə edin_files = fayllar (cellfun (@exist, files)> 0); if ~ isempty (existing_files) % onları dəyişdirməyin həqiqətən yaxşı olduğundan əmin olun = {'Bu faylları dəyişdirirsiniz:' '' strjoin (mevcut_files, '') '' 'Əvəz etmək yaxşıdır?' }; bip; yn = questdlg (sorğu,… dlgTitle,… 'Bəli', 'Xeyr', 'Bəli'); if ~ strcmp (yn, 'Yes'), return; sonu son
% faylları yükləyin cnt = 0; i = 1 üçün: uzunluq (fayllar) f = fayllar {i}; disp (['Yüklənir' f]); url = [server f] cəhd edin; websave (f, url, seçimlər); Təhlükəsizlik səhvlərinin qarşısını almaq üçün əlavə variantlar cnt = cnt + 1; catch disp (['Yükləmə xətası' f]); kukla = [f '.html']; varsa (kukla, 'fayl') == 2 silmək (kukla) son ucu sonu
if cnt == length (files) msg = 'Quraşdırma Uğurlu'; waitfor (msgbox (msg, dlgTitle)); else msg = 'Quraşdırma xətası - ətraflı məlumat üçün komanda pəncərəsinə baxın'; waitfor (səhv (msg, dlgTitle)); bitmək
son %roombaInstall
Addım 3: Kod 1 -ci hissə: İzləmə funksiyası
Bu funksiya Roomba dəyişənini və Roomba'daki kameradan şəkil alır və izlənilən obyektin mərkəzi xy koordinatlarını tapır
Bu kodu eyni qovluqdakı başqa bir faylda qeyd edin.
function [xm, ym] = trackingblue (r) %Girişlər: roomba dəyişən %Çıxışlar: Aşağıdakı obyektin mərkəzinin x və y dəyəri %Məqsəd: bir şəkil verilən mavi bir obyektin mərkəzini tapır %İstifadə [x dəyər, y dəyər] = trackingblue (roomba dəyişən) img = r.getImage; % robotun alt sahəsinin kamerasını oxuyur (1, 2, 2) alt görüntü (img); %şəkli yolun başlığı ilə eyni pəncərədə göstərir ('İzləmə Şəkli') red = img (:,:,, 1); yaşıl = img (:,,:, 2); mavi = img (:,,:, 3); justBlue = mavi - yaşıl/2 - qırmızı/2; bw = justBlue> 40; subplot (1, 2, 2) alt görüntüsünü (bw) saxlayın; [x, y] = tap (bw); if ~ isempty (x) && ~ isempty (y) xm = round (ortalama (x)); ym = yuvarlaq (orta (y)); xx = maksimum (1, xm-5): min (xm+5, ölçü (bw, 1)); yy = maksimum (1, ym-5): min (ym+5, ölçü (bw, 2)); bwbw = sıfır (ölçü (bw), 'uint8'); bwbw (xx, yy) = 255; subplot (1, 2, 2) alt görüntüsünü tutun (justBlue + bwbw); bitmək
Addım 4: Kod 2 -ci hissə: Döngə halında
Bu kod, Obyektin x və y mövqeyinə əsaslanaraq Roombanı izləmə funksiyasından uzaqlaşdırır. Bu, Roombanı mavi axtararkən divarlara və uçurumlara diqqət yetirməyə məcbur edəcək. Bu da Roomba yolunun x və y koordinatlarını alacaq və izləmə şəkli ilə uyğun bir süjet yaradacaq. Zərbə sensoru işə salınsa, e -poçt bölməsinə keçəcək
Rover Layihəsi
Jonah Zahn, Wade Price, Noah Sloan jzahn2, wprice15, nsloan1 %Girişlər: otaq dəyəri, kamera məlumatları, qabar, işıq və divar sensorları Məqsəd: Astronavtı izləyir və maneələrin qarşısını alır. Xəbərdar olunarsa, roomba xəritəni və başlanğıc mövqeyinə görə harada olduğunu ətraflı bir e -poçt göndərir. İstifadə: yalnız bir roomba dəyişən elan edərək proqramı çalıştırın, bir də hərəkət edən yaşıl obyekti var Çıxışlar: şəkil izləmə şəklini, e -poçt xəritəsini və istifadəçiyə mətni göstərir %% Bölmə aşağıdakı b = 0; %Dəyişənlərin işə salınması c = 0; x = 0; y = 0; teta = 0; mavi obyekti və maneələri aşkar etmək üçün c == 0 %Loop isə t = r.timeGet; d = r.getDistance; [xval, yval] = izləmə mavisi (r); uçurum = getCliffSensors (r); sensor dəyərləri üçün strukturların işə salınması işıq = getLightBumpers (r); bump = getBampers (r); əgər light.leftCenter> = 10 || light.rightCenter> = 10 % r.stop r.setLEDDigits ('yardım') c = 1 % yaxınlığında bir divar varsa hissləri c = 1 %, b == 0 % bump.right == 1 || bump.left == 1 || bump.front == 1 % Divar hiss etdikdən sonra bir şeyin çarpdığını hiss edir % c = 1 % b = 1 % disp ('bump') % end % end elseif bump.right == 1 || bump.left == 1 || bump.front == 1 %Bir şeyin toqquşduğunu hiss edir, əgər belədirsə, e -poçt göndərir r.stop c = 1 b = 1 başqa cliff.leftFront <= 100 || cliff.rightFront <= 100 || cliff.left <= 100 || cliff.right <= 100 %r.stop c = 1 r.setLEDDigits ('help') başqa bir uçurumun olub olmadığını hiss edir %yval = 100 r.setDriveVelocity (0.1) başqa yifdə olduqda sürücü sürətlərini mavi rəngə uyğun olaraq təyin edir. 400 r.turnAngle (-5) son ucu teta = teta + r.getAngle; x = d.*cosd (teta) + x; Roomba % x koordinatı y = d.*sind (teta).*d + y; Roomba alt sahəsinin % y koordinatı (1, 2, 1) sahə (x, y, 'bd') % yolu göstərir və bir başlıq başlığı ('Roomba Yolu') saxlayır; bitmək
Addım 5: Kod Part 3: E -poçt Bölməsi
Bu, qurulmuş yolu və görüntünü götürəcək və müəyyən bir e -poçt ünvanına göndərəcəkdir
(E -poçt nümunəsi ilə burada göstərilmişdir)
%% E -poçt Bölməsi
əgər b == 1 saveas (gcf, 'rovermap.png') %setpref rəqəmini saxlayırsa ('İnternet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('İnternet', 'E_mail', '[email protected]'); setpref -dən göndəriləcək % poçt hesabı ('İnternet', 'SMTP_Username', '[email protected]'); % göndərən istifadəçi adı setpref ('İnternet', 'SMTP_Password', 'gssegsse'); % Göndərənlər parol rekvizitləri = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'doğru'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465'); sendmail ('nümunə e -poçt', 'RoverBeacon', 'Astronavt hərəkəti dayandırdı. Bərpa üçün əlavə olunmuş fayldakı təlimatları izləyin.', 'rovermap.png') disp ('e -poçt göndərildi') sonu
Tövsiyə:
Avtomatlaşdırılmış EKQ- BME 305 Final Layihəsi Əlavə Kredit: 7 Addım
Avtomatlaşdırılmış EKQ- BME 305 Final Layihəsi Əlavə Kredit: Ürək döyüntüsünün istehsal etdiyi elektrik siqnallarını ölçmək üçün elektrokardioqram (EKQ və ya EKQ) istifadə olunur və ürək-damar xəstəliklərinin diaqnozu və proqnozunda böyük rol oynayır. EKQ -dən əldə edilən bəzi məlumatlar ritmləri ehtiva edir
Robot Layihəsi UTK 2017: 3 addım
Robot Layihəsi UTK 2017: Missiya: Mühəndislər qrupumuz, innovativ İnsan Yardımçı Mars Rover-in inkişaf etdirilməsi üçün açıq mənbəli texnologiya inkişafı üçün Kommersiya Təşkilatı olmayan Froogle tərəfindən işə götürüldü. bir seriyanı icra etmək üçün kodladığımız bir otaqdır
ITTT Layihəsi 2018 - Yer: 5 addım
ITTT Layihəsi 2018 | Yer: Salam! Məktəbim mənə Arduino istifadə edərək interaktiv bir sistem yaratmalı və bunu real həyatda qurmalı olduğum bir layihə verdi. Sensor və düymələrlə qarşılıqlı əlaqənizin ölkələri işıqlandıracağı və dünyanın fırlanmasına səbəb olacaq bir dünya kürəsi yaratmağa qərar verdim
Mars Roomba Layihəsi UTK: 4 addım
Mars Roomba Layihəsi UTK: XƏBƏRDARLIQ: BU YALNIZ İŞLƏYƏCƏK, ROOMBA AYRINDAN XÜSUSİYYƏTLİ YÖNLƏDİRİLMİŞDƏ, BU TƏLİMAT TENNESSEE TƏLƏBƏLƏRİ ÜNİVERSİTESİ VƏ İSTİFADƏ EDİLMƏK ÜÇÜN YAZILIR yazılı və s
Payız və ya məktəbə qayıtmaq üçün Apple Garland necə etmək olar: 13 addım (şəkillərlə)
Payız və ya məktəbə qayıtmaq üçün alma çələngini necə etmək olar: Anjeanette, RootsAndWingsCo, bu sevimli alma çələngini keçə və materialdan hazırladı. Tikə bilməyəcəyini söyləyənlərin belə edə biləcəyi sadə bir layihə idi! (Nə qədər ki, iynənizi saplaya bilərsiniz.)