Obsah:

UTK EF 230 MarsRoomba Project Fall 2018: 5 Steps
UTK EF 230 MarsRoomba Project Fall 2018: 5 Steps

Video: UTK EF 230 MarsRoomba Project Fall 2018: 5 Steps

Video: UTK EF 230 MarsRoomba Project Fall 2018: 5 Steps
Video: UTK - EF 230 Autonomous Vehicle Project 2024, Červenec
Anonim
Projekt UTK EF 230 MarsRoomba podzim 2018
Projekt UTK EF 230 MarsRoomba podzim 2018

V současné době se rovery na Marsu používají ke sběru dat na povrchu Marsu různými metodami, až do konečného konce, kdy se dozvíte více o potenciálu planety pro mikrobiální život. Rovers používají pro sběr dat především nástroje pro fotografování a analýzu půdy, ale rovery také zahrnují navigační nástroje, detektory záření, atmosférické senzory a laser pro odpařování vzorků hornin. Plánovaný cíl mise rover 2020 je většinou stejný, ale se zvláštním úkolem „sbírat vzorky půdy a hornin a ukládat je do mezipaměti na povrchu pro případný návrat na Zemi budoucí misí“, uvádí NASA.

Za předpokladu, že budoucí rovery budou použity pro lidskou pomoc, náš tým zvážil, jaké aspekty lidí by rover mohl sledovat. Dospěli jsme k závěru, že v případě nouze, která způsobí, že astronaut bude v bezvědomí s nedostatečnou podporou života a vybavením, by náš rover mohl sloužit jako mobilní majákový maják pozorováním, že astronaut, kterého sledoval, je nehybný a předává zprávu o tísni. Aby rover následoval člověka a určil nehybnost, vzal si vstupy, jako je barva lidských bot a jejich pohyb. Dalším vstupem, který je třeba vzít v úvahu, je, že by si musel pamatovat svou cestu, aby v případě nouze vyslal nouzový signál. Náš rover splňuje potřebu na Marsu v tom, že pokus o tak nákladnou misi v takovém cizím terénu vyžaduje několik vrstev bezpečnostních trezorů, a pokud by astronaut nemohl získat vlastní pomoc kvůli nesprávné funkci obleku nebo bezvědomí, může rover upozornit ostatní.

Tento instruktáž je navržen tak, aby pomohl čtenáři při programování jeho robota, aby úspěšně následoval „astronauta“a vyslal nouzový signál, je -li k dispozici.

Krok 1: Potřebné materiály

Potřebné materiály
Potřebné materiály

1) Počítač/notebook s přístupem na internet

2) MATLAB_R2018a

3) Roomba a Roomba ke stažení

Krok 2: Nastavení/stažení

Nastavení/Stáhnout
Nastavení/Stáhnout

Spusťte tento skript v MATLABu a stáhněte si software potřebný pro přístup k robotu Roomba (uložený ve vlastním souboru ve složce projektu)

Další nápověda:

% Instalační program pro EF 230 Roomba Project% Poslední aktualizace: 13. září 2017 (Opraveny problémy se zabezpečením spojené se serverem https a upozornění na odstranění odstraněného souboru, pokud došlo k chybám) funkce roombaInstall clc; % seznam souborů k instalaci souborů = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % umístění k instalaci z options = weboptions ('CertificateFilename', ''); % řekněte, aby ignoroval požadavky na certifikát server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Instalace/aktualizace Roomba'; % účel zobrazení a výzva k potvrzení = {'Tento program stáhne tyto soubory EF 230 Roomba:' '' strjoin (soubory, '') '' 'do této složky:' '' cd '' 'Chcete pokračovat? '}; pípnutí; yn = questdlg (výzva, … dlgTitle, … 'Ano', 'Ne', 'Ano');

if ~ strcmp (yn, 'Yes'), return; konec

% získat seznam existujících souborů existing_files = files (cellfun (@exist, files)> 0); pokud ~ isempty (existing_files) % ujistěte se, že je opravdu v pořádku nahradit je prompt = {'Nahrazujete tyto soubory:' '' strjoin (existing_files, '') '' 'OK to replace?' }; pípnutí; yn = questdlg (výzva, … dlgTitle, … 'Ano', 'Ne', 'Ano'); if ~ strcmp (yn, 'Yes'), return; konec konec

% stáhnout soubory cnt = 0; pro i = 1: délka (soubory) f = soubory {i}; disp (['Stahování' f]); zkusit url = [server f]; websave (f, URL, možnosti); % přidané možnosti, jak se vyhnout chybám zabezpečení cnt = cnt + 1; catch disp (['Chyba při stahování' f]); atrapa = [f '.html']; pokud existuje (figurína, 'soubor') == 2 smazat (atrapu) konec konec konec

pokud cnt == délka (soubory) msg = 'Instalace byla úspěšná'; waitfor (msgbox (msg, dlgTitle)); else msg = 'Chyba instalace - podrobnosti najdete v příkazovém okně'; waitfor (errordlg (msg, dlgTitle)); konec

konec %roombaInstall

Krok 3: Část kódu 1: Funkce sledování

Kód Část 1: Funkce sledování
Kód Část 1: Funkce sledování

Tato funkce převezme proměnnou Roomba a obrázek z kamery na Roombě a najde středové souřadnice xy sledovaného objektu

Uložte tento kód do jiného souboru ve stejné složce.

funkce [xm, ym] = trackingblue (r) %Vstupy: proměnná roomba %Výstupy: x a y hodnota středu následujícího objektu %Účel: najde střed modrého objektu s daným obrázkem %Využití [hodnota x, y hodnota] = trackingblue (proměnná roomba) img = r.getImage; % přečte kameru z dílčího obrázku (1, 2, 2) robota (obr.); %zobrazuje obrázek ve stejném okně jako název cesty ('Tracking Image') red = img (:,:, 1); zelená = img (:,:, 2); modrá = img (:,:,, 3); justBlue = modrá - zelená/2 - červená/2; bw = justBlue> 40; podržet subplot (1, 2, 2) subimage (bw); [x, y] = find (bw); pokud ~ je prázdný (x) && ~ prázdný (y) xm = kulatý (průměr (x)); ym = kulatý (průměr (y)); xx = max (1, xm-5): min (xm+5, velikost (bw, 1)); yy = max (1, ym-5): min (ym+5, velikost (bw, 2)); bwbw = nuly (velikost (bw), 'uint8'); bwbw (xx, yy) = 255; podržet subplot (1, 2, 2) subimage (justBlue + bwbw); konec

Krok 4: Kód Část 2: Zatímco smyčka

Tento kód řídí robot Roomba na základě umístění objektu x a y z funkce sledování. Díky tomu bude Roomba dávat pozor na stěny a útesy a hledat modrou. To také vezme souřadnice x a y cesty Roomba a vytvoří odpovídající graf se sledovacím obrázkem. Pokud je snímač nárazu aktivován, přejde do sekce e -mailu

%Projekt Rover

%Jonah Zahn, Wade Price, Noah Sloan %jzahn2, wprice15, nsloan1 %Vstupy: hodnota roomba, data z kamery, nárazy, světelné a nástěnné senzory %Účel: Sleduje astronauta a vyhýbá se překážkám. Pokud je varován, roomba odešle e -mail %s podrobností o mapě a o tom, kde se nachází, podle počáteční polohy. %Použití: stačí spustit program s deklarovanou proměnnou roomba, také %mít pohybující se zelený objekt %Výstupy: zobrazí obrázek sledující obrázek, mapu e -mailů a text uživateli %% Za sekcí b = 0; %Inicializační proměnné c = 0; x = 0; y = 0; theta = 0; zatímco c == 0 %smyčka, aby detekovala modrý objekt a překážky t = r.timeGet; d = r.getDistance; [xval, yval] = trackingblue (r); cliff = getCliffSensors (r); %inicializace struktur pro hodnoty senzorů light = getLightBumpers (r); bump = getBumpers (r); pokud light.leftCenter> = 10 || light.rightCenter> = 10 % Rozpozná, pokud je v blízkosti r.stop r.setLEDDigits ('help') c = 1 %, zatímco b == 0 % pokud bump.right == 1 || bump.left == 1 || bump.front == 1 % Rozpozná, pokud něco narazilo poté, co zjistilo, že zeď % c = 1 % b = 1 % disp ('bump') % end % end elseif bump.right == 1 || bump.left == 1 || bump.front == 1 %Rozpozná, pokud něco narazilo, pokud ano, odešle e -mail r.stop c = 1 b = 1 elseif cliff.leftFront <= 100 || cliff.rightFront <= 100 || cliff.left <= 100 || cliff.right <= 100 %Rozpozná, pokud se poblíž útesu nachází útes c = 1 r.setLEDDigits ('help') else %Nastaví rychlosti pohonu podle modré, pokud yval = 100 r.setDriveVelocity (0,1) elseif yval 400 r.turnAngle (-5) end end theta = theta + r.getAngle; x = d.*cosd (theta) + x; % x souřadnice roomba y = d.*sind (theta).*d + y; Souřadnice % y souřadnice podplochy (1, 2, 1) roomba (1, 2, 1) (x, y, 'bd') % vykreslí cestu a přidá název titulu ('Roomba Path'), počkejte; konec

Krok 5: Část 3 kódu: Sekce e -mailu

To vezme vykreslenou cestu a obrázek a odešle jej na zadanou e -mailovou adresu

(Zde je uvedeno s příkladem e -mailu)

%% e -mailová sekce

if b == 1 saveas (gcf, 'rovermap.png') %save the figure setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'E_mail', '[email protected]'); % poštovní účet k odeslání ze setpref ('Internet', 'SMTP_Username', '[email protected]'); % odesílatelů uživatelské jméno setpref ('Internet', 'SMTP_Password', 'gssegsse'); % Odesílatel heslo 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 ('ukázkový e -mail', 'RoverBeacon', 'Astronaut se přestal pohybovat. Pro obnovu postupujte podle pokynů v přiloženém souboru.', 'rovermap.png') disp ('email sent') end

Doporučuje: