Innehållsförteckning:
- Steg 1: Material som behövs
- Steg 2: Installera/ladda ner
- Steg 3: Kod Del 1: Spårningsfunktion
- Steg 4: Kod Del 2: While Loop
- Steg 5: Kod Del 3: E -postavsnitt
Video: UTK EF 230 MarsRoomba Project hösten 2018: 5 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
För närvarande används Mars -rovers för att samla in data på Mars yta genom olika metoder för att i slutändan lära sig mer om planetens potential för mikrobiellt liv. Rovers använder främst fotograferings- och markanalysverktyg för datainsamling, men rovers inkluderar också navigationsinstrument, strålningsdetektorer, atmosfäriska sensorer och en laser för förångning av bergprover. Det planerade roveruppdragets 2020 -mål är i stort sett detsamma, men med den särskilda uppgiften att "samla jord- och bergprover och lagra dem på ytan för eventuell återkomst till jorden genom ett framtida uppdrag", enligt NASA.
Men under förutsättningen att framtida rovers kommer att användas för mänsklig hjälp, övervägde vårt team vilka aspekter av människor som rovern kunde övervaka. Vi kom till slutsatsen att om en nödsituation skulle göra en astronaut medvetslös med sviktande livsstöd och utrustning, kan vår rover fungera som en rörlig ledstjärna genom att observera att astronauten den följde är orörlig och förmedlar ett nödbudskap. För att följa människan och bestämma orörlighet skulle rovern ta insatser som färgen på människans skor och deras rörelse. En annan ingång att tänka på är att den måste komma ihåg sin väg för att vidarebefordra en nödsignal i nödfall. Vår rover tillgodoser ett behov på Mars genom att ett sådant kostsamt uppdrag på sådan främmande terräng kräver flera lager av felsäkerhetsskåp, och skulle en astronaut inte kunna få sin egen hjälp på grund av funktionsfel eller medvetslöshet, kan rovern varna andra.
Denna instruktionsbok är utformad för att hjälpa läsaren att programmera sin Roomba för att framgångsrikt följa en "astronaut" och att skicka en nödsignal om tillämpligt.
Steg 1: Material som behövs
1) Internet/tillgänglig dator/bärbar dator
2) MATLAB_R2018a
3) Roomba och Roomba Ladda ner
Steg 2: Installera/ladda ner
Kör detta skript i MATLAB för att ladda ner den programvara som behövs för att komma åt Roomba (sparad i sin egen fil i projektmappen)
Ytterligare hjälp:
% Installationsprogram för EF 230 Roomba -projekt% Senaste uppdatering: 13 september 2017 (Fixade säkerhetsproblem i samband med https -servern och borttagning av filradering om fel uppstår) funktion roombaInstall clc; % lista över filer att installera filer = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % plats att installera från alternativ = weboptions ('CertificateFilename', ''); % berätta att den ignorerar certifikatkrav server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Roomba -installation/uppdatering'; % display purpose and get confirm prompt = {'Detta program hämtar dessa EF 230 Roomba -filer:' '' strjoin (files, '') '' 'till den här mappen:' '' cd '' 'Vill du fortsätta? '}; pip; yn = questdlg (prompt,… dlgTitle,… "Ja", "Nej", "Ja");
om ~ strcmp (yn, 'Ja'), returnera; slutet
% få lista över filer som finns eksisterende_filer = filer (cellfun (@exist, filer)> 0); om ~ isempty (eksisterende_filer) % se till att det verkligen är ok att byta ut dem prompt = {'Du byter ut dessa filer:' '' strjoin (befintliga_filer, '') '' 'OK att ersätta?' }; pip; yn = questdlg (prompt,… dlgTitle,… "Ja", "Nej", "Ja"); om ~ strcmp (yn, 'Ja'), returnera; slutet slut
% ladda ner filerna cnt = 0; för i = 1: längd (filer) f = filer {i}; disp (['Hämtar' f]); prova url = [server f]; webbspara (f, url, alternativ); % tillagda alternativ för att undvika säkerhetsfel cnt = cnt + 1; catch disp (['Fel vid nedladdning' f]); dummy = [f '.html']; if exist (dummy, 'file') == 2 delete (dummy) end end end
if cnt == length (files) msg = 'Installation lyckades'; waitfor (msgbox (msg, dlgTitle)); else msg = 'Installationsfel - se kommandofönstret för mer information'; waitfor (errordlg (msg, dlgTitle)); slutet
slutet %roombaInstall
Steg 3: Kod Del 1: Spårningsfunktion
Denna funktion tar Roomba -variabeln och bilden från kameran på Roomba och hittar mitten xy -koordinaterna för det spårade objektet
Spara denna kod i en annan fil i samma mapp.
funktion [xm, ym] = trackingblue (r) %Ingångar: roomba -variabel %Outputs: x och y -värdet för mitten av följande objekt %Syfte: hittar mitten av ett blått objekt med en bild %Användning [x -värde, y värde] = trackingblue (roomba -variabel) img = r.getImage; % läser av kameran från robotens delplan (1, 2, 2) delbild (img); %visar bild i samma fönster som sökvägsrubriken ('Spårningsbild') röd = img (:,:, 1); grön = img (:,:, 2); blå = img (:,:, 3); justBlue = blå - grön/2 - röd/2; bw = justBlue> 40; håll på delplan (1, 2, 2) delbild (bw); [x, y] = hitta (bw); om ~ isempty (x) && ~ isempty (y) xm = round (mean (x)); ym = rund (medelvärde (y)); xx = max (1, xm-5): min (xm+5, storlek (bw, 1)); yy = max (1, ym-5): min (ym+5, storlek (bw, 2)); bwbw = nollor (storlek (bw), 'uint8'); bwbw (xx, åå) = 255; håll på delplan (1, 2, 2) delbild (justBlue + bwbw); slutet
Steg 4: Kod Del 2: While Loop
Denna kod driver Roomba baserat på objektets x och y -plats från spårningsfunktionen. Detta kommer att få Roomba att se upp för väggar och klippor, medan du letar efter blått. Detta tar också x- och y -koordinaterna för Roomba -sökvägen och skapar en motsvarande plot med spårningsbilden. Om bump -sensorn är aktiverad går den vidare till e -postavsnittet
%Rover -projekt
%Jonah Zahn, Wade Price, Noah Sloan %jzahn2, wprice15, nsloan1 %Ingångar: roomba -värde, kameradata, bump-, ljus- och väggsensorer %Syfte: Följer astronaut och undviker hinder. Om varnas skickar roomba ett e -postmeddelande med information om en karta och var den är i enlighet med dess startposition. %Användning: kör bara programmet med att ha deklarerat en roomba -variabel, även %har ett rörligt grönt objekt %Utdata: visar bildspårningsbild, e -postkarta och text till användaren %% Efter avsnitt b = 0; %Initieringsvariabler c = 0; x = 0; y = 0; theta = 0; medan c == 0 %Loop för att få det att upptäcka det blå objektet och hinder t = r.timeGet; d = r.getDistance; [xval, yval] = trackingblue (r); cliff = getCliffSensors (r); %initierar strukturerna för sensorvärden ljus = getLightBumpers (r); bump = getBumpers (r); om light.leftCenter> = 10 || light.rightCenter> = 10 % Känner om det finns en vägg nära r.stop r.setLEDDigits ('hjälp') c = 1 % medan b == 0 % om bump.right == 1 || bump.vänster == 1 || bump.front == 1 % Känner om det har stött på något efter att det känner av en vägg % c = 1 % b = 1 % disp ('bump') % end % end elseif bump.right == 1 || bump.vänster == 1 || bump.front == 1 %Känner om det har stött på något, i så fall skickar det ett e -postmeddelande r.stop c = 1 b = 1 elseif cliff.leftFront <= 100 || cliff.rightFront <= 100 || klippa. vänster <= 100 || cliff.right <= 100 %Känner om det finns en klippa nära r.stop c = 1 r.setLEDDigits ('hjälp') annars %Ställer in drivhastigheterna för att följa den blå om 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 för roomba y = d.*sind (theta).*d + y; % y koordinat för roomba -subplot (1, 2, 1) plot (x, y, 'bd') % plottar sökvägen och lägger till en titeltitel ('Roomba Path') vänta; slutet
Steg 5: Kod Del 3: E -postavsnitt
Detta tar den plottade sökvägen och bilden och skickar den till en viss e -postadress
(Visas här med exempel e -post)
%% e -postavsnitt
om b == 1 saveas (gcf, 'rovermap.png') %sparar siffran setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'E_mail', '[email protected]'); % e -postkonto att skicka från setpref ('Internet', 'SMTP_Username', '[email protected]'); % avsändarnamn användarnamn setpref ('Internet', 'SMTP_Password', 'gssegsse'); % Avsändares lösenord rekvisita = 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 ('exempel -e -post', 'RoverBeacon', 'Astronauten har slutat röra sig. För återställning, följ anvisningarna i den bifogade filen.', 'rovermap.png') disp ('e -post skickad') slut
Rekommenderad:
Robotprojekt UTK 2017: 3 steg
Robot Project UTK 2017: Mission: Vårt team av ingenjörer har anställts av Froogle, en ideell stiftelse för teknikutveckling med öppen källkod, för att utveckla en innovativ Human Assisting Mars Rover.-Out-team " rover " är en roomba som vi kodade för att köra en serie
Venus Flytrap - ITM hösten 2019: 5 steg
Venus Flytrap - ITM hösten 2019: Vad saknas på allas skrivbord? En mekanisk Venus Flytrap som rymmer pennor, pennor och andra föremål
Mars Roomba Project UTK: 4 steg
Mars Roomba Project UTK: ANSVARSFRISKRIVNING: DETTA KOMMER ENDAST ATT ROOMBA INSTALLERAS PÅ AVERY SPECIFIK SÄTT, DENNA INSTRUKTABEL SKAPADE FÖR OCH AVSIKTAD ATT ANVÄNDAS AV UNIVERSITETEN I TENNESSEE STUDENTER OCH FAKULTYT Denna kod används för att ställa in lokalt skrivet och s
Så här lägger du till en anpassad bild på din Xbox 360 -instrumentpanel. (Uppdatering före hösten 08): 8 steg
Så här lägger du till en anpassad bild på din Xbox 360 -instrumentpanel. (Uppdatering före hösten 08): I den här instruerbara bilden kommer jag att visa dig hur du lägger en anpassad bild som bakgrund på din Xbox 360. Det finns samma steg för att göra detta med den nya och gamla instrumentpanelen. När jag får en chans kommer jag att uppdatera det hela med nya bilder
Hur man gör en Apple Garland för hösten eller tillbaka till skolan: 13 steg (med bilder)
Hur man gör en äppelkrans för hösten eller tillbaka till skolan: Anjeanette, av RootsAndWingsCo gjorde denna förtjusande äppelkrans av filt och material. Det var ett enkelt projekt som även de som säger att de inte kan sy-kan göra! (Så länge du kan trä din nål.)