Indholdsfortegnelse:
- Trin 1: Nødvendige materialer
- Trin 2: Opsætning/download
- Trin 3: Kode Del 1: Sporingsfunktion
- Trin 4: Kode Del 2: While Loop
- Trin 5: Kode Del 3: E -mail sektion
Video: UTK EF 230 MarsRoomba Project Efterår 2018: 5 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
I øjeblikket bruges Mars -rovere til at indsamle data på Mars overflade ved hjælp af forskellige metoder til den endelige ende med at lære mere om planetens potentiale for mikrobielt liv. Rovers bruger primært fotografi og jordanalyseværktøjer til dataindsamling, men rovers omfatter også navigationsinstrumenter, strålingsdetektorer, atmosfæriske sensorer og en laser til fordampning af stenprøver. Den planlagte rovermission i 2020 er stort set det samme, men med den særlige opgave at "indsamle prøver af jord og sten og gemme dem på overfladen for potentiel tilbagevenden til Jorden ved en fremtidig mission," ifølge NASA.
Men under forudsætningen af, at fremtidige rovere vil blive brugt til menneskelig bistand, overvejede vores team, hvilke aspekter af mennesker roveren kunne overvåge. Vi kom til den konklusion, at hvis en nødsituation gør en astronaut bevidstløs med svigtende livsstøtte og udstyr, kan vores rover tjene som et mobilt fyrtårn ved at observere, at den astronaut, den fulgte, er urørlig og videresender et nødsbudskab. For at følge mennesket og bestemme immobilitet ville roveren tage input som farven på menneskets sko og deres bevægelse. Et andet input at overveje er, at det skulle huske sin vej for at videresende et nødsignal i nødstilfælde. Vores rover opfylder et behov på Mars ved at forsøge en så kostbar mission på sådant fremmed terræn nødvendiggør flere lag fejlsikre, og skulle en astronaut ikke være i stand til at få deres egen hjælp på grund af funktionsfejl eller bevidstløshed, kan roveren advare andre.
Denne instruks er designet til at hjælpe læseren med at programmere sin Roomba til med succes at følge en "astronaut" og til at sende et nødsignal, hvis det er relevant.
Trin 1: Nødvendige materialer
1) Internet/tilgængelig computer/bærbar computer
2) MATLAB_R2018a
3) Roomba og Roomba Download
Trin 2: Opsætning/download
Kør dette script i MATLAB for at downloade den software, der er nødvendig for at få adgang til Roomba (gemt i sin egen fil i projektmappen)
Yderligere hjælp:
% Installationsprogram til EF 230 Roomba Project% Sidste opdatering: 13. september 2017 (Fixede sikkerhedsproblemer forbundet med https -server og fjernet advarsel om sletning af filer, hvis der opstod fejl) funktion roombaInstall clc; % liste over filer til installation af filer = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % placering at installere fra optioner = weboptioner ('CertificateFilename', ''); % bed den om at ignorere certifikatkrav server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Roomba -installation/opdatering'; % visningsformål og få bekræftelsesprompt = {'Dette program vil downloade disse EF 230 Roomba -filer:' '' strjoin (filer, '') '' 'til denne mappe:' '' cd '' 'Vil du fortsætte? '}; bip; yn = questdlg (prompt,… dlgTitle,… 'Ja', 'Nej', 'Ja');
hvis ~ strcmp (yn, 'Ja'), returneres; ende
% få liste over filer, der findes eksisterende_filer = filer (cellfun (@exist, filer)> 0); hvis ~ isempty (eksisterende_filer) % sørg for, at det virkelig er ok at udskifte dem prompt = {'Du erstatter disse fil (er):' '' strjoin (eksisterende_filer, '') '' 'OK at erstatte?' }; bip; yn = questdlg (prompt,… dlgTitle,… 'Ja', 'Nej', 'Ja'); hvis ~ strcmp (yn, 'Ja'), returneres; ende ende
% download filerne cnt = 0; for i = 1: længde (filer) f = filer {i}; disp (['Downloader' f]); prøv url = [server f]; websave (f, url, muligheder); % tilføjede muligheder for at undgå sikkerhedsfejl cnt = cnt + 1; catch disp (['Fejl ved download' f]); dummy = [f '.html']; hvis findes (dummy, 'fil') == 2 slet (dummy) ende ende ende
if cnt == length (files) msg = 'Installation vellykket'; waitfor (msgbox (msg, dlgTitle)); else msg = 'Installationsfejl - se kommandovinduet for detaljer'; waitfor (errordlg (msg, dlgTitle)); ende
slut %roombaInstall
Trin 3: Kode Del 1: Sporingsfunktion
Denne funktion tager Roomba -variablen og billedet fra kameraet på Roomba og finder de midterste xy -koordinater for det sporede objekt
Gem denne kode i en anden fil i den samme mappe.
funktion [xm, ym] = trackingblue (r) %Inputs: roomba variabel %Outputs: x og y værdi af midten af følgende objekt %Formål: finder midten af et blåt objekt givet et billede %Anvendelse [x værdi, y værdi] = trackingblue (roomba -variabel) img = r.getImage; % læser kameraet af underbilledet (1, 2, 2) fra robotundergrunden (img); %viser billede i samme vindue som stititlen ('Sporingsbillede') rød = img (:,:, 1); grøn = img (:,:, 2); blå = img (:,:, 3); justBlue = blå - grøn/2 - rød/2; bw = justBlue> 40; hold på delplot (1, 2, 2) delbillede (bw); [x, y] = find (bw); hvis ~ isempty (x) && ~ isempty (y) xm = round (mean (x)); ym = rund (middelværdi (y)); xx = max (1, xm-5): min (xm+5, størrelse (bw, 1)); yy = max (1, ym-5): min (ym+5, størrelse (bw, 2)); bwbw = nuller (størrelse (bw), 'uint8'); bwbw (xx, åå) = 255; hold på delplot (1, 2, 2) delbillede (justBlue + bwbw); ende
Trin 4: Kode Del 2: While Loop
Denne kode driver Roomba baseret på objektets x og y placering fra sporingsfunktionen. Dette får Roomba til at passe på vægge og klipper, mens den søger blå. Dette vil også tage x- og y -koordinaterne for Roomba -stien og oprette et tilsvarende plot med sporingsbilledet. Hvis bump -sensoren er aktiveret, går den videre til e -mail -sektionen
%Rover -projekt
%Jonah Zahn, Wade Price, Noah Sloan %jzahn2, wprice15, nsloan1 %Inputs: roomba værdi, kameradata, bump, lys og væg sensorer %Formål: Følger astronaut og undgår forhindringer. Hvis der advares, sender roomba en e -mail %, der beskriver et kort, og hvor det er i henhold til dets startposition. %Anvendelse: bare kør programmet med at have erklæret en roomba -variabel, også %har et grønt objekt i bevægelse %Outputs: viser billedsporingsbillede, e -mailkort og tekst til bruger %% Følgende afsnit b = 0; %Initialiseringsvariabler c = 0; x = 0; y = 0; theta = 0; mens c == 0 %Loop for at få det til at registrere det blå objekt og forhindringer t = r.timeGet; d = r.getDistance; [xval, yval] = trackingblue (r); cliff = getCliffSensors (r); %initialiserer strukturerne for sensorværdier lys = getLightBumpers (r); bump = getBumpers (r); hvis light.leftCenter> = 10 || light.rightCenter> = 10 % Sanser, hvis der er en væg i nærheden af r.stop r.setLEDDigits ('hjælp') c = 1 %, mens b == 0 % hvis bump.right == 1 || bump. venstre == 1 || bump.front == 1 % Sanser, hvis den har stødt noget, efter at den har registreret en væg % c = 1 % b = 1 % disp ('bump') % end % end elseif bump.right == 1 || bump. venstre == 1 || bump.front == 1 %Sanser, hvis den har stødt på noget, i så fald sender den en e -mail r.stop c = 1 b = 1 elseif cliff.leftFront <= 100 || cliff.rightFront <= 100 || klint. venstre <= 100 || cliff.right <= 100 %Sanser, hvis der er en klippe i nærheden af r.stop c = 1 r.setLEDDigits ('hjælp') else %Indstiller drevhastighederne til at følge den blå, hvis yval = 100 r.setDriveVelocity (0.1) elseif yval 400 r.turnAngle (-5) ende ende theta = theta + r.getAngle; x = d.*cosd (theta) + x; % x koordinat for roomba y = d.*sind (theta).*d + y; % y koordinat for roomba -underplot (1, 2, 1) plot (x, y, 'bd') % tegner stien og tilføjer en titeltitel ('Roomba Path') hold på; ende
Trin 5: Kode Del 3: E -mail sektion
Dette vil tage den plottede sti og billede og sende det til en bestemt e -mail -adresse
(Vist her med eksempelemail)
%% e -mailsektion
hvis b == 1 saveas (gcf, 'rovermap.png') %gemmer tallet setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'E_mail', '[email protected]'); % mailkonto, der skal sendes fra setpref ('Internet', 'SMTP_Username', '[email protected]'); % afsendere brugernavn setpref ('Internet', 'SMTP_Password', 'gssegsse'); % Afsenders adgangskode rekvisitter = 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 ('eksempel -e -mail', 'RoverBeacon', 'Astronauten er stoppet med at bevæge sig. For gendannelse skal du følge anvisningerne i den vedhæftede fil.', 'rovermap.png') disp ('e -mail sendt') ende
Anbefalede:
Robotprojekt UTK 2017: 3 trin
Robot Project UTK 2017: Mission: Vores team af ingeniører er blevet ansat af Froogle, et nonprofit-fundament for open source-teknologiudvikling, til at udvikle en innovativ Human Assisting Mars Rover.-Out teams " rover " er en roomba, som vi kodede for at udføre en serie af
Generator - Fidget Spinner Powering 9W LED Pære 230 V: 3 trin (med billeder)
Generator - Fidget Spinner Powering 9W Led Bulb 230 V: I nedenstående rækker ønsker vi at vise, hvordan en kraftfuld fidget spinner generator kan oprettes. Det vil generere 100 volt ac i starten, og det vil være i stand til at tænde en LED -pære 230 V 9 W. Et uddannelsesprojekt ved hjælp af få materialer. Find
EF 230: Home System 3000 Instruktionsbar: 4 trin
EF 230: Home System 3000 Instruktable: Home System 3000 er en enhed, der bruger en Arduino, en temperatursensor, en piezo -summer, en optisk detektor/fototransistor og en servo til at vise måder at forbedre hjemmets energieffektivitet
Mars Roomba Project UTK: 4 trin
Mars Roomba -projekt UTK: ANSVARSFRASKRIVELSE: DETTE KUN KUN ARBEJDE, HVIS ROOMBAEN ER OPSÆTTET I GENNEMFØRENDE SPECIFIK MÅDE, DENNE INSTRUKTABLE VAR SKABT TIL OG TIL AT BRUGES AF UNIVERSITETET I TENNESSEE -STUDENTER OG FAKULTYT Denne kode bruges til at oprette lokalt skrevet og s
Sådan laver du en æblekrans til efterår eller tilbage til skolen: 13 trin (med billeder)
Sådan laver du en æblekrans til efterår eller tilbage til skolen: Anjeanette, af RootsAndWingsCo lavede denne yndige æblekrans af filt og materiale. Det var et simpelt projekt, som selv dem, der siger, at de ikke kan sy-kan! (Så længe du kan tråde din nål.)