Innholdsfortegnelse:
- Trinn 1: Nødvendige materialer
- Trinn 2: Oppsett/nedlasting
- Trinn 3: Kode Del 1: Sporingsfunksjon
- Trinn 4: Kode del 2: While Loop
- Trinn 5: Kode Del 3: E -post seksjon
Video: UTK EF 230 MarsRoomba Project høsten 2018: 5 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
For tiden brukes Mars -rovere til å samle data på overflaten av Mars gjennom forskjellige metoder, til den endelige enden på å lære mer om planetens potensial for mikrobielt liv. Rovers bruker først og fremst fotografering og jordanalyseverktøy for datainnsamling, men rovere inkluderer også navigasjonsinstrumenter, strålingsdetektorer, atmosfæriske sensorer og en laser for fordampning av steinprøver. Det planlagte roveroppdraget i 2020 er stort sett det samme, men med den spesielle oppgaven å "samle prøver av jord og stein og lagre dem på overflaten for potensiell retur til jorden ved et fremtidig oppdrag," ifølge NASA.
Men under forutsetningen om at fremtidige rovere vil bli brukt til menneskelig hjelp, vurderte teamet vårt hvilke aspekter ved mennesker roveren kunne overvåke. Vi kom til den konklusjonen at hvis en nødssituasjon skulle gjøre en astronaut bevisstløs med sviktende livsstøtte og utstyr, kunne roveren vår fungere som et mobilt fyrtårn ved å observere at astronauten den fulgte er ubevegelig og videreformidle et nødsbudskap. For å følge mennesket og bestemme immobilitet, ville roveren ta innspill som fargen på menneskets sko og bevegelse. En annen innspill å vurdere er at den må huske veien for å sende et nødsignal i nødstilfeller. Roveren vår dekker et behov på Mars ved at et slikt kostbart oppdrag på slikt fremmed terreng krever flere lag med feilsikring, og skulle en astronaut ikke kunne få sin egen hjelp på grunn av funksjonsfeil eller bevisstløshet, kan roveren varsle andre.
Denne instruksen er designet for å hjelpe leseren med å programmere sin Roomba til å lykkes med å følge en "astronaut" og sende et nødssignal hvis det er aktuelt.
Trinn 1: Nødvendige materialer
1) Internett -tilgjengelig datamaskin/bærbar PC
2) MATLAB_R2018a
3) Roomba og Roomba Last ned
Trinn 2: Oppsett/nedlasting
Kjør dette skriptet i MATLAB for å laste ned programvaren som trengs for å få tilgang til Roomba (lagret i sin egen fil i prosjektmappen)
Ytterligere hjelp:
% Installasjonsprogram for EF 230 Roomba Project% Siste oppdatering: 13. september 2017 (Fikset sikkerhetsproblemer knyttet til https -server og fjernet advarsel om sletting av filer hvis det oppstår feil) funksjon roombaInstall clc; % liste over filer for å installere filer = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % plassering å installere fra alternativer = weboptions ('CertificateFilename', ''); % be den om å ignorere sertifikatkrav server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Roomba Install/Update'; % visningsformål og få bekreftelsesprompt = {'Dette programmet vil laste ned disse EF 230 Roomba -filene:' '' strjoin (files, '') '' 'til denne mappen:' '' cd '' 'Vil du fortsette? '}; pip; yn = questdlg (ledetekst, … dlgTitle,… 'Ja', 'Nei', 'Ja');
hvis ~ strcmp (yn, 'Ja'), returner; slutt
% få liste over filer som eksisterer eksisterende_filer = filer (cellfun (@exist, filer)> 0); Hvis ~ isempty (eksisterende_filer) % sørg for at det virkelig er greit å bytte dem prompt = {'Du bytter ut disse filene:' '' strjoin (eksisterende_filer, '') '' 'OK å erstatte?' }; pip; yn = questdlg (ledetekst, … dlgTitle,… 'Ja', 'Nei', 'Ja'); hvis ~ strcmp (yn, 'Ja'), returner; ende ende
% last ned filene cnt = 0; for i = 1: lengde (filer) f = filer {i}; disp (['Laster ned' f]); prøv url = [server f]; websave (f, url, alternativer); % lagt til alternativer for å unngå sikkerhetsfeil cnt = cnt + 1; catch disp (['Feil ved nedlasting' f]); dummy = [f '.html']; hvis finnes (dummy, 'file') == 2 slett (dummy) end end end
if cnt == length (files) msg = 'Installasjon vellykket'; waitfor (msgbox (msg, dlgTitle)); else msg = 'Installasjonsfeil - se kommandovinduet for detaljer'; waitfor (errordlg (msg, dlgTitle)); slutt
slutt %roombaInstall
Trinn 3: Kode Del 1: Sporingsfunksjon
Denne funksjonen tar Roomba -variabelen og bildet fra kameraet på Roomba og finner de midtre xy -koordinatene til det sporede objektet
Lagre denne koden i en annen fil i samme mappe.
funksjon [xm, ym] = trackingblue (r) %Innganger: roomba -variabel %Utganger: x og y -verdien til midten av følgende objekt %Formål: finner midten av et blått objekt gitt et bilde %Bruk [x -verdi, y verdi] = trackingblue (roomba -variabel) img = r.getImage; % leser kameraet av robotundersplottet (1, 2, 2) delbilde (avbildning); %viser bildet i samme vindu som banetittelen ('Tracking Image') red = img (:,:, 1); grønn = img (:,:, 2); blå = img (:,:, 3); justBlue = blå - grønn/2 - rød/2; bw = justBlue> 40; hold på delplot (1, 2, 2) delbilde (bw); [x, y] = finn (bw); hvis ~ isempty (x) && ~ isempty (y) xm = round (mean (x)); ym = rund (gjennomsnitt (y)); xx = maks (1, xm-5): min (xm+5, størrelse (bw, 1)); åå = maks (1, ym-5): min (ym+5, størrelse (bw, 2)); bwbw = nuller (størrelse (bw), 'uint8'); bwbw (xx, åå) = 255; hold på delplottet (1, 2, 2) delbilde (justBlue + bwbw); slutt
Trinn 4: Kode del 2: While Loop
Denne koden driver Roomba basert på x og y plasseringen av objektet fra sporingsfunksjonen. Dette vil få Roomba til å passe på vegger og klipper mens du søker blått. Dette vil også ta x- og y -koordinatene til Roomba -banen og opprette et tilsvarende plott med sporingsbildet. Hvis støtsensoren er aktivert, går den videre til e -postdelen
%Rover -prosjekt
%Jonah Zahn, Wade Price, Noah Sloan %jzahn2, wprice15, nsloan1 %Innganger: roomba -verdi, kameradata, støt, lys og veggsensorer %Formål: Følger astronaut og unngår hindringer. Hvis varslet, sender roomba en e -post %som beskriver et kart og hvor det er i henhold til startposisjonen. %Bruk: bare kjør programmet med å ha erklært en roomba -variabel, også %har et grønt objekt i bevegelse %Utdata: viser bildesporingsbilde, e -postkart og tekst til bruker %% Følgende seksjon b = 0; %Initialiserer variabler c = 0; x = 0; y = 0; theta = 0; mens c == 0 %Loop for å få det til å oppdage det blå objektet og hindringer t = r.timeGet; d = r.getDistance; [xval, yval] = trackingblue (r); cliff = getCliffSensors (r); %initialiserer strukturene for sensorverdier lys = getLightBumpers (r); bump = getBumpers (r); hvis light.leftCenter> = 10 || light.rightCenter> = 10 % Sanser hvis det er en vegg i nærheten av r.stop r.setLEDDigits ('hjelp') c = 1 % mens b == 0 % hvis bump.right == 1 || bump.left == 1 || bump.front == 1 % Sanser om den har støttet noe etter at den registrerer en vegg % c = 1 % b = 1 % disp ('bump') % end % end elseif bump.right == 1 || bump.left == 1 || bump.front == 1 %Sanser hvis den har støttet noe, i så fall vil den sende en e -post r.stop c = 1 b = 1 elseif cliff.leftFront <= 100 || cliff.rightFront <= 100 || klippe. venstre <= 100 || cliff.right <= 100 %Sanser hvis det er en klippe nær r.stop c = 1 r.setLEDDigits ('hjelp') else %Angir stasjonshastighetene for å følge den blå hvis yval = 100 r.setDriveVelocity (0.1) elseif yval 400 r.turnAngle (-5) end end theta = theta + r.getAngle; x = d.*cosd (theta) + x; % x koordinat av romba y = d.*sind (theta).*d + y; % y -koordinat for roomba -underplottet (1, 2, 1) plottet (x, y, 'bd') % plotter banen og legger til en titteltittel ('Roomba Path') hold på; slutt
Trinn 5: Kode Del 3: E -post seksjon
Dette tar den plottede banen og bildet og sender det til en spesifisert e -postadresse
(Vist her med eksempel e -post)
%% e -postdel
hvis b == 1 saveas (gcf, 'rovermap.png') %lagrer tallet setpref ('Internett', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internett', 'E_mail', '[email protected]'); % e -postkonto som skal sendes fra setpref ('Internett', 'SMTP_Username', '[email protected]'); % avsendere brukernavn setpref ('Internett', 'SMTP_Password', 'gssegsse'); % Avsendere passord 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 -post', 'RoverBeacon', 'Astronauten har sluttet å bevege seg. Følg instruksjonene i den vedlagte filen for gjenoppretting,' rovermap-p.webp
Anbefalt:
Robot Project UTK 2017: 3 trinn
Robot Project UTK 2017: Mission: Teamet vårt av ingeniører har blitt ansatt av Froogle, et ideelt fundament for teknologiutvikling med åpen kildekode, for å utvikle en innovativ Human Assisting Mars Rover.-Out-team " rover " er en roomba som vi kodet for å utføre en serie
Generator - Fidget Spinner Powering 9W LED Pære 230 V: 3 trinn (med bilder)
Generator - Fidget Spinner Powering 9W Led Bulb 230 V: I radene nedenfor ønsker vi å vise hvordan en kraftig fidget spinner generator kan opprettes. Den vil generere 100 volt Ac i starten, og den vil kunne tenne en led -pære 230 V 9 W. Et pedagogisk prosjekt med bare noen få materialer. Finn
EF 230: Home System 3000 Instruerbar: 4 trinn
EF 230: Home System 3000 Instruerbar: Home System 3000 er en enhet som bruker en Arduino, en temperatursensor, en piezo -summer, en optisk detektor/fototransistor og en servo for å vise måter å forbedre hjemmets energieffektivitet
Mars Roomba Project UTK: 4 trinn
Mars Roomba Project UTK: ANSVARSFRASKRIVELSE: DETTE KUNNE VIRKE HVIS ROOMBA ER SET OPP I AVERY SPECIFIC WAY, DENNE INSTRUKTABLE VAR SKAPT FOR OG HENSIKT TIL BRUK AV UNIVERSITETET I TENNESSEE STUDENTER OG FAKULTYT Denne koden brukes til å sette opp en lokal skrevet og s
Slik legger du til et tilpasset bilde på Xbox 360 -oversikten. (Oppdatering før høsten 08): 8 trinn
Slik legger du til et tilpasset bilde på Xbox 360 -instrumentbordet. (Oppdatering før høsten 08): I denne instruksen vil jeg vise deg hvordan du legger et tilpasset bilde som bakgrunn på Xbox 360. Det er de samme trinnene for å gjøre dette med det nye og gamle dashbordet. Når jeg får sjansen, vil jeg oppdatere det hele med nye bilder