Turinys:
- 1 žingsnis: reikalingos medžiagos
- 2 veiksmas: sąranka/atsisiuntimas
- 3 žingsnis: kodas 1 dalis: sekimo funkcija
- 4 žingsnis: kodas 2 dalis
- 5 veiksmas: kodas 3 dalis: el. Pašto skyrius
Video: „UTK EF 230 MarsRoomba“projekto ruduo 2018: 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Šiuo metu Marso roveriai yra naudojami duomenims rinkti Marso paviršiumi įvairiais metodais, iki galo sužinoti daugiau apie planetos potencialą mikrobams. „Rovers“duomenų rinkimui pirmiausia naudoja fotografavimo ir dirvožemio analizės įrankius, tačiau roveriai taip pat apima navigacijos prietaisus, radiacijos detektorius, atmosferos jutiklius ir lazerį uolienų mėginių garinimui. Planuojamos 2020 m. Roverio misijos tikslas iš esmės yra tas pats, tačiau su specialia užduotimi „surinkti dirvožemio ir uolienų mėginius ir išsaugoti juos paviršiuje, kad ateityje jie galėtų grįžti į Žemę“, teigia NASA.
Tačiau laikydamiesi prielaidos, kad būsimi roveriai bus naudojami žmonėms padėti, mūsų komanda svarstė, kokius žmonių aspektus roveris galėtų stebėti. Mes padarėme išvadą, kad jei avarijos atveju astronautas prarastų sąmonę, nes jam trūksta gyvybės palaikymo ir įrangos, mūsų roveris galėtų būti mobilus gegužinis švyturys, pastebėjęs, kad jo sekamas astronautas yra nejudrus ir perduoda nelaimės pranešimą. Kad galėtų sekti žmogų ir nustatyti nejudrumą, roveris imtųsi tokių duomenų, kaip žmogaus batų spalva ir jų judesiai. Kitas dalykas, į kurį reikia atsižvelgti, yra tai, kad jis turėtų prisiminti savo kelią, kad avariniu atveju perduotų nelaimės signalą. Mūsų roveris patenkina Marso poreikį, nes norint atlikti tokią brangią misiją tokioje svetimoje vietovėje reikia kelių sluoksnių nesaugių seifų, o jei astronautas negalės gauti savo pagalbos dėl netinkamo veikimo ar sąmonės netekimo, roveris gali įspėti kitus.
Ši instrukcija skirta padėti skaitytojui užprogramuoti savo „Roomba“sėkmingai sekti „astronautą“ir prireikus nusiųsti nelaimės signalą.
1 žingsnis: reikalingos medžiagos
1) Kompiuteris/nešiojamas kompiuteris, prieinamas internete
2) MATLAB_R2018a
3) „Roomba“ir „Roomba“atsisiųsti
2 veiksmas: sąranka/atsisiuntimas
Paleiskite šį scenarijų MATLAB, kad atsisiųstumėte programinę įrangą, reikalingą norint pasiekti „Roomba“(išsaugotą savo faile projekto aplanke)
Papildoma pagalba:
% EF 230 „Roomba Project“diegimo programa% Paskutinis atnaujinimas: 2017 m. Rugsėjo 13 d. (Ištaisytos saugos problemos, susijusios su „https“serveriu ir pašalintų failų ištrynimo įspėjimas, jei įvyko klaidų) funkcija roombaInstall clc; % failų, kuriuos reikia įdiegti, sąrašas = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % vieta įdiegti iš options = weboptions ('CertificateFilename', ''); % liepia ignoruoti sertifikatų reikalavimų serverį = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = '„Roomba“diegimas/atnaujinimas “; % rodymo tikslas ir gaukite patvirtinimo raginimą = {'Ši programa atsisiųs šiuos EF 230 Roomba failus:' '' strjoin (failai, '') '' '' į šį aplanką: '' 'cd' '' Ar norite tęsti? '}; pyptelėjimas; yn = questdlg (raginimas,… dlgTitle,… „Taip“, „Ne“, „Taip“);
jei ~ strcmp (yn, 'Taip'), grįžti; galas
% get failų, kurie egzistuoja, sąrašas jei ~ isempty (egzistuojantys_failai) % įsitikinkite, kad tikrai gerai juos pakeisti. }; pyptelėjimas; yn = questdlg (raginimas,… dlgTitle,… „Taip“, „Ne“, „Taip“); jei ~ strcmp (yn, 'Taip'), grįžti; pabaiga galas
% atsisiųsti failus cnt = 0; i = 1: ilgis (failai) f = failai {i}; disp (['Atsisiunčiama' f]); pabandykite url = [serveris f]; žiniatinklio išsaugojimas (f, url, parinktys); % pridėta parinkčių, kad būtų išvengta saugumo klaidų cnt = cnt + 1; catch disp (['Klaida atsisiunčiant' f]); manekenas = [f '.html']; jei egzistuoja (manekenas, 'failas') == 2 ištrinti (fiktyvus) pabaigos pabaigą
if cnt == ilgis (failai) msg = 'Sėkmingas diegimas'; laukti (msgbox (msg, dlgTitle)); else msg = 'Įdiegimo klaida - daugiau informacijos rasite komandų lange'; waitfor (errordlg (msg, dlgTitle)); galas
pabaiga %roombaInstall
3 žingsnis: kodas 1 dalis: sekimo funkcija
Ši funkcija paima kintamąjį „Roomba“ir vaizdą iš „Roomba“kameros ir nustato stebimo objekto centro xy koordinates
Išsaugokite šį kodą kitame to paties aplanko faile.
funkcija [xm, ym] = trackingblue (r) %Įėjimai: roomba kintamasis %Išėjimai: x ir y šio objekto centro reikšmė %Tikslas: suranda mėlyno objekto centrą su vaizdu %Naudojimas [x reikšmė, y value] = trackingblue (roomba kintamasis) img = r.getImage; % nuskaito fotoaparatą iš roboto papildomosios dalies (1, 2, 2) antrinio vaizdo (img); %rodo vaizdą tame pačiame lange kaip ir kelio pavadinimas ('Stebėjimo vaizdas') red = img (:,:, 1); žalia = img (:,:, 2); mėlyna = img (:,:, 3); tik mėlyna = mėlyna - žalia/2 - raudona/2; bw = tik mėlyna> 40; sulaikyti antrinėje dalyje (1, 2, 2) pavaizdą (bw); [x, y] = rasti (bw); if ~ isempty (x) && ~ isempty (y) xm = round (mean (x)); ym = apvalus (vidurkis (y)); xx = max (1, xm-5): min (xm+5, dydis (bw, 1)); yy = max (1, ym-5): min (ym+5, dydis (bw, 2)); bwbw = nuliai (dydis (bw), 'uint8'); bwbw (xx, yy) = 255; palaikykite antrinės dalies (1, 2, 2) antrinį vaizdą (tikBlue + bwbw); galas
4 žingsnis: kodas 2 dalis
Šis kodas varo „Roomba“pagal stebėjimo funkcijos objekto x ir y vietą. Tai leis „Roomba“saugotis sienų ir uolų, ieškant mėlynos spalvos. Tai taip pat užims „Roomba“kelio x ir y koordinates ir sukurs atitinkamą grafiką su stebėjimo vaizdu. Jei įjungtas smūgio jutiklis, jis pereis į el
„Rover“projektas
%Jonah Zahn, Wade Price, Noah Sloan %jzahn2, wprice15, nsloan1 %Įėjimai: roomba vertė, kameros duomenys, smūgis, šviesos ir sienos jutikliai %Tikslas: seka astronautą ir vengia kliūčių. Jei įspėjama, „roomba“siunčia el. Laišką, kuriame išsamiai aprašomas žemėlapis ir kur jis yra pagal pradinę padėtį. %Naudojimas: tiesiog paleiskite programą paskelbę „roomba“kintamąjį, taip pat %turi judantį žalią objektą %Išėjimai: rodo vaizdo stebėjimo paveikslėlį, el. Laiškų žemėlapį ir tekstą vartotojui %% Sekite b = 0; %Kintamųjų inicijavimas c = 0; x = 0; y = 0; teta = 0; o c == 0 %kilpa, kad ji aptiktų mėlyną objektą ir kliūtis t = r.timeGet; d = r.getDistance; [xval, yval] = stebėjimo mėlyna (r); skardis = getCliffSensors (r); %inicijavimo struktūros jutiklio reikšmėms šviesa = getLightBumpers (r); guzas = getBumpers (r); jei šviesa.kairysCentras> = 10 || light.rightCenter> = 10 % Jausmas, jei šalia sienos yra r.stop r.setLEDDigits ('pagalba') c = 1 %, o b == 0 %, jei atsitrenkia.stat == 1 || guzas.kairė == 1 || bump.front == 1 % Jausmas, jei jis kažką atsitrenkė, pajutęs sieną % c = 1 % b = 1 % disp ('guzas') % end % end elseif bump.right == 1 || guzas.kairė == 1 || bump.front == 1 %Pajuto, ar kažką atsitrenkė, jei taip, jis atsiųs el. laišką r.stop c = 1 b = 1 elseif cliff.leftFront <= 100 || skardis.priekinis priekis <= 100 || skardis.kairė <= 100 || cliff.right <= 100 %Jausmas, jei šalia uolos yra skardis. stop c = 1 r.setLEDDigits ('help') else %Nustato važiavimo greitį, kad jis atitiktų mėlyną spalvą, jei yval = 100 r.setDriveVelocity (0,1) elseif yval 400 r.turnAngle (-5) pabaigos pabaiga teta = teta + r.getAngle; x = d.*cosd (teta) + x; % x kambario koordinatė y = d.*sind (teta).*d + y; % y „roomba“poskyrio koordinatė (1, 2, 1) grafikas (x, y, „bd“) % nubraižo kelią ir prideda pavadinimo pavadinimą („Roomba Path“) palaukite; galas
5 veiksmas: kodas 3 dalis: el. Pašto skyrius
Tai atliks nubrėžtą kelią ir vaizdą ir nusiųs jį nurodytu el. Pašto adresu
(Čia parodyta el. Pašto pavyzdys)
%% El. Pašto skiltis
jei b == 1 saveas (gcf, 'rovermap.png') %išsaugo figūrą setpref ('Internetas', 'SMTP_Server', 'smtp.gmail.com'); setpref („Internetas“, „El. paštas“, „[email protected]“); % pašto paskyra, kurią reikia siųsti iš setpref ('Internetas', 'SMTP_Username', '[email protected]'); % siuntėjų vartotojo vardas setpref ('Internetas', 'SMTP_Password', 'gssegsse'); % Siuntėjų slaptažodžių rekvizitai = 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 („pavyzdinis el. paštas“, „RoverBeacon“, „Astronautas nustojo judėti. Norėdami atsigauti, vadovaukitės pridėto failo nurodymais.“, „rovermap.png“) disp („el. laiškas išsiųstas“) pabaiga
Rekomenduojamas:
Automatinis EKG- BME 305 galutinis projekto papildomas kreditas: 7 žingsniai
Automatinis EKG-BME 305 galutinis projekto papildomas kreditas: elektrokardiograma (EKG arba EKG) naudojama plakančios širdies skleidžiamiems elektriniams signalams matuoti ir atlieka svarbų vaidmenį diagnozuojant ir prognozuojant širdies ir kraujagyslių ligas. Kai kuri informacija, gauta iš EKG, apima ritmą
CPE 133 galutinis projekto dešimtainis skaičius iki dvejetainio: 5 žingsniai
CPE 133 galutinis projekto dešimtainis skaičius iki dvejetainio: dvejetainiai skaičiai yra vienas iš pirmųjų dalykų, kurie ateina į galvą galvojant apie skaitmeninę logiką. Tačiau dvejetainiai skaičiai gali būti sudėtinga naujokams. Šis projektas padės naujiems ir patyrusiems dvejetainius skaičius
„Arduino+Blynk“projekto valdymo garsinis signalas: 8 žingsniai
„Arduino+Blynk“projekto valdymo garsinis signalas: „Blynk“naudojamas tam, kad daiktų internetas būtų įmanomas labai patogiu būdu. Šiame projekte nenaudoju jokio „Bluetooth“ar „Wifi“modulio belaidžiam ryšiui palaikyti. Tai įmanoma naudojant „Blynk“programą, kuri gali padėti jums sukurti savo programą
„Pasidaryk pats“išradingo meno projekto idėja su šviesos diodais ir garsu: 3 žingsniai
„Pasidaryk pats“išradingo meno projekto idėja su šviesos diodais ir garsu: šiame vaizdo įraše parodysiu, kaip namuose sukurti unikalų meno projektą naudojant LED juostą ir garsą
„Venus Flytrap“- ITM ruduo 2019: 5 žingsniai
„Venus Flytrap“- ITM ruduo 2019: ko trūksta visiems? Mechaninis „Venus Flytrap“, kuriame telpa pieštukai, rašikliai ir kiti daiktai