Tartalomjegyzék:

UTK EF 230 MarsRoomba Project 2018 ősz: 5 lépés
UTK EF 230 MarsRoomba Project 2018 ősz: 5 lépés

Videó: UTK EF 230 MarsRoomba Project 2018 ősz: 5 lépés

Videó: UTK EF 230 MarsRoomba Project 2018 ősz: 5 lépés
Videó: UTK - EF 230 Autonomous Vehicle Project 2024, November
Anonim
Az UTK EF 230 MarsRoomba projekt 2018 ősze
Az UTK EF 230 MarsRoomba projekt 2018 ősze

Jelenleg a Mars roverjeit különféle módszerek segítségével gyűjtik a Mars felszínén, és végső soron többet tudnak meg a bolygó mikrobiális életben rejlő lehetőségeiről. A roverok elsősorban fényképészeti és talajvizsgálati eszközöket használnak az adatgyűjtéshez, de a roverek között navigációs műszerek, sugárzás -érzékelők, légköri érzékelők és lézer is található a kőzetminták elpárologtatásához. A tervezett 2020 -as rover -küldetés célja többnyire ugyanaz, de az a különleges feladata, hogy „gyűjtsön mintákat a talajból és a kőzetből, és tárolja azokat a felszínen, hogy a jövőbeli küldetés során visszatérhessenek a Földre”.

Azonban azzal a feltevéssel, hogy a jövőbeni rovereket emberi segítségre használják, csapatunk mérlegelte, hogy a rover milyen emberi vonatkozásokat tud figyelni. Arra a következtetésre jutottunk, hogy ha egy vészhelyzet miatt az űrhajós eszméletlenné válik, ha nincs életben lévő élete és felszerelése, akkor a járgányunk egy mobil majális jelzőfényként szolgálhat, ha megfigyeljük, hogy az általa követett űrhajós mozdulatlan, és vészjelzést közvetít. Az ember követése és a mozdulatlanság meghatározása érdekében a rover olyan információkat fog be, mint az emberi cipő színe és mozgása. Egy másik figyelembe veendő adat, hogy emlékeznie kell az útvonalára ahhoz, hogy vészhelyzet esetén vészjelzést küldjön. Roverünk kielégíti a Mars igényeit, mivel egy ilyen költséges küldetés kísérlete ilyen idegen terepen több réteg hibás széfet tesz szükségessé, és ha egy űrhajós nem tud saját segítséget kérni a meghibásodás vagy az eszméletvesztés miatt, a rover figyelmeztethet másokat.

Ez az útmutató segít az olvasónak abban, hogy segítse a Roomba programozását egy "űrhajós" sikeres követésében, és szükség esetén vészjelzést küldjön.

Lépés: Szükséges anyagok

Szükséges anyagok
Szükséges anyagok

1) Internet hozzáférhető számítógép/laptop

2) MATLAB_R2018a

3) Roomba és Roomba Letöltés

2. lépés: Telepítés/letöltés

Beállítás/Letöltés
Beállítás/Letöltés

Futtassa ezt a szkriptet a MATLAB programban a Roomba eléréséhez szükséges szoftver letöltéséhez (saját fájlba mentve a projekt mappába)

További segítség:

% Telepítési program az EF 230 Roomba Project programhoz% Utolsó frissítés: 2017. szeptember 13. (Javítva a https szerverrel kapcsolatos biztonsági problémák és eltávolított fájl törlési figyelmeztetés hiba esetén) function roombaInstall clc; % fájlok listája a telepítendő fájlokhoz = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % location to install from options = weboptions ('CertificateFilename', ''); % mondja meg, hogy figyelmen kívül hagyja a tanúsítványkövetelményeket szerver = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Roomba telepítése/frissítése'; % megjelenítési cél és megerősítés kérése = {'Ez a program letölti ezeket az EF 230 Roomba fájlokat:' '' strjoin (fájlok, '') '' '' ebbe a mappába: '' 'cd' '' Folytatni akarja? '}; hangjelzés; yn = questdlg (prompt,… dlgTitle,… 'Igen', 'Nem', 'Igen');

ha ~ strcmp (yn, 'Igen'), vissza; vége

% get létező fájlok listája létező_fájlok = fájlok (cellfun (@exist, files)> 0); if ~ isempty (létező_fájlok) % győződjön meg arról, hogy valóban rendben van -e a lecserélésük. }; hangjelzés; yn = questdlg (prompt,… dlgTitle,… 'Igen', 'Nem', 'Igen'); ha ~ strcmp (yn, 'Igen'), vissza; vége vége

% letölteni a fájlokat cnt = 0; i = 1 esetén: hossz (fájlok) f = fájlok {i}; disp (['Letöltés' f]); try url = [szerver f]; webes mentés (f, url, opciók); % hozzáadott lehetőség a biztonsági hibák elkerülésére cnt = cnt + 1; catch disp (['Hiba a letöltéskor' f]); dummy = [f '.html']; ha létezik (dummy, 'file') == 2 delete (dummy) end end end end

if cnt == hossz (fájlok) msg = 'A telepítés sikeres'; waitfor (msgbox (msg, dlgTitle)); else msg = 'Telepítési hiba - részletekért lásd a parancsablakot'; waitfor (errordlg (msg, dlgTitle)); vége

end %roombaInstall

3. lépés: Kód 1. rész: Követési funkció

Kód 1. rész: Követési funkció
Kód 1. rész: Követési funkció

Ez a funkció átveszi a Roomba változót és a képet a Roomba kamerájáról, és megkeresi a követett objektum xy középső koordinátáit

Mentse el ezt a kódot egy másik fájlba ugyanabban a mappában.

function [xm, ym] = trackingblue (r) %Bemenetek: roomba változó %Kimenetek: x és y értéke a következő objektum középpontjának %Cél: megkeresi a kék objektum közepét %kép alapján %Használat [x érték, y érték] = követőkék (roomba változó) img = r.getImage; % leolvassa a kamerát a robot alrészletéről (1, 2, 2) alkép (img); %ugyanazt az ablakot jeleníti meg, mint az útvonal címe ('Tracking Image') piros = img (:,:, 1); zöld = img (:,:, 2); kék = img (:,:, 3); justBlue = kék - zöld/2 - piros/2; bw = csakKék> 40; hold on subplot (1, 2, 2) subimage (bw); [x, y] = megtalálás (bw); ha ~ isempty (x) && ~ isempty (y) xm = kerek (átlag (x)); ym = kerek (átlag (y)); xx = max (1, xm-5): min (xm+5, méret (bw, 1)); yy = max (1, ym-5): min (ym+5, méret (bw, 2)); bwbw = nullák (méret (bw), 'uint8'); bwbw (xx, yy) = 255; hold on subplot (1, 2, 2) subimage (justBlue + bwbw); vége

4. lépés: Kód 2. rész: Loop közben

Ez a kód hajtja a Roomba -t az objektum x és y helye alapján a követési funkcióból. Így a Roomba vigyázni fog a falakra és a sziklákra, miközben kéket keres. Ez a Roomba útvonal x és y koordinátáit is felveszi, és létrehoz egy megfelelő görbét a követési képpel. Ha az ütésérzékelő be van kapcsolva, akkor az e -mail részre lép

%Rover projekt

Jonah Zahn, Wade Price, Noah Sloan Figyelmeztetés esetén a roomba e -mailt küld %, amely részletezi a térképet és azt, hogy hol van a kiindulási helyzete szerint. %Használat: csak futtassa a programot a roomba változó deklarálásával, %pedig mozgó zöld objektummal rendelkezik %Kimenetek: képkövető képet, e -mail térképet és szöveget jelenít meg a felhasználónak %% A b = 0 szakasz követése; %Változók inicializálása c = 0; x = 0; y = 0; téta = 0; míg c == 0 %Loop, hogy érzékelje a kék tárgyat és akadályokat t = r.timeGet; d = r.getTávolság; [xval, yval] = követőkék (r); szikla = getCliffSensors (r); %a szerkezetek inicializálása a fényérzékelő értékekhez = getLightBumpers (r); bump = getBumpers (r); ha világos.balközpont> = 10 || light.rightCenter> = 10 % Érzékeli, ha fal van az r.stop r.setLEDDigits ('help') c = 1 %, míg b == 0 %, ha bump.right == 1 || bump.left == 1 || bump.front == 1 % Érzékeli, ha ütközött valamit, miután érzékelt egy falat % c = 1 % b = 1 % disp ('bump') % end % end elseif bump.right == 1 || bump.left == 1 || bump.front == 1 %Érzi, ha ütközött valamit, ha igen, e -mailt küld r.stop c = 1 b = 1 elseif cliff.leftFront <= 100 || cliff.rightFront <= 100 || szikla.bal <= 100 || cliff.right <= 100 %Érzékeli, ha van egy szikla r.stop c = 1 r.setLEDDigits ('help') else %Beállítja a meghajtó sebességét, hogy kövesse a kéket, ha yval = 100 r.setDriveVelocity (0,1) elseif yval 400 r.turnAngle (-5) end end theta = theta + r.getAngle; x = d.*cosd (téta) + x; a szoba % x koordinátája y = d.*sind (théta).*d + y; a roomba alterület % y koordinátája (1, 2, 1) plot (x, y, 'bd') % az útvonalat ábrázolja, és hozzáad egy címet ('Roomba Path') hold; vége

5. lépés: Kód 3. rész: E -mail szakasz

Ez az ábrázolt útvonalat és képet veszi fel, és elküldi egy megadott e -mail címre

(Itt látható a példa e -mail címmel)

%% E -mail szakasz

ha b == 1 saveas (gcf, 'rovermap.png') %menti a setpref számot ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'E_mail', '[email protected]'); % mail fiók küldése a setpref -ből ('Internet', 'SMTP_Username', '[email protected]'); % senders uspre setpref ('Internet', 'SMTP_Password', 'gssegsse'); % Küldők jelszava props = 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 ('példa e -mail', 'RoverBeacon', 'Az űrhajós megállt.

Ajánlott: