Kazalo:
- Korak: Potrebni materiali
- 2. korak: Nastavitev/prenos
- 3. korak: Koda 1. del: Funkcija sledenja
- 4. korak: Koda 2. del: Medtem ko je zanka
- 5. korak: Koda 3. del: Oddelek za e -pošto
Video: UTK EF 230 MarsRoomba Project jesen 2018: 5 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:06
Trenutno se Mars roverji uporabljajo za zbiranje podatkov o površini Marsa z različnimi metodami do končnega spoznanja o potencialu planeta za življenje mikrobov. Roverji za zbiranje podatkov uporabljajo predvsem orodja za fotografiranje in analizo tal, roverji pa vključujejo tudi navigacijske instrumente, detektorje sevanja, atmosferske senzorje in laser za uparjanje vzorcev kamnin. Načrtovana misija roverja za leto 2020 je večinoma enaka, vendar s posebno nalogo, da "zbere vzorce zemlje in kamnine ter jih predpomni na površino, da bi se s prihodnjo misijo vrnila na Zemljo", pravi NASA.
Toda pod predpostavko, da bodo prihodnji roverji uporabljeni za človeško pomoč, je naša ekipa razmislila, katere vidike ljudi bi rover lahko spremljal. Prišli smo do zaključka, da bi lahko v primeru izrednih razmer astronavt izgubil zavest zaradi pomanjkljive oskrbe z življenjem in opreme, bi lahko naš rover služil kot premični svetilnik, ko bi opazil, da je astronavt, ki mu je sledil, nepremičen in prenašal sporočilo o stiski. Da bi sledil človeku in določil nepremičnost, bi rover vnesel podatke, kot so barva človeških čevljev in njihovo gibanje. Še en vložek, ki ga je treba upoštevati, je, da bi si moral zapomniti svojo pot, da bi v nujnih primerih posredoval signal v sili. Naš rover izpolnjuje potrebo na Marsu, da poskušanje tako drage misije na tako tujem terenu zahteva več plasti varnostnih sefov in če astronavt zaradi okvare obleke ali nezavesti ne more dobiti svoje pomoči, lahko rover opozori druge.
Ta Instructable je zasnovan tako, da bralcu pomaga pri programiranju njegove Roombe, da uspešno sledi "astronavtu" in po potrebi pošlje signal v sili.
Korak: Potrebni materiali
1) Računalnik/prenosni računalnik, dostopen do interneta
2) MATLAB_R2018a
3) Roomba in Roomba Download
2. korak: Nastavitev/prenos
Zaženite ta skript v MATLAB -u, da prenesete programsko opremo, potrebno za dostop do Roombe (shranjeno v svoji datoteki v mapi projekta)
Dodatna pomoč:
% Namestitveni program za projekt EF 230 Roomba% Zadnja posodobitev: 13. september 2017 (Odpravljene varnostne težave, povezane s strežnikom https, in opozorilo o izbrisu datoteke, če pride do napak) funkcija roombaInstall clc; % seznam datotek za namestitev datotek = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % lokacija za namestitev iz možnosti = weboptions ('CertificateFilename', ''); % mu povejte, naj prezre zahteve za certifikate server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Namestitev/posodobitev Roombe'; % display name in get prompt prompt = {'Ta program bo prenesel te datoteke EF 230 Roomba:' '' strjoin (files, '') '' '' v to mapo: '' 'cd' '' Ali želite nadaljevati? '}; pisk; yn = questdlg (poziv, … dlgTitle,… 'Da', 'Ne', 'Da');
če ~ strcmp (yn, 'Da'), vrni; konec
% get seznam datotek, ki obstajajo obstoječe_files = datoteke (cellfun (@exist, files)> 0); if ~ isempty (existing_files) % se prepričajte, da jih je res v redu zamenjati prompt = {'Zamenjate te datoteke (datoteke):' '' strjoin (existing_files, '') '' 'OK to replace?' }; pisk; yn = questdlg (poziv, … dlgTitle,… 'Da', 'Ne', 'Da'); če ~ strcmp (yn, 'Da'), vrni; konec konec
% prenese datoteke cnt = 0; za i = 1: dolžina (datoteke) f = datoteke {i}; disp (['Prenos' f]); poskusite url = [strežnik f]; websave (f, url, možnosti); % dodanih možnosti za izogibanje varnostnim napakam cnt = cnt + 1; catch disp (['Napaka pri nalaganju' f]); lutka = [f '.html']; če obstaja (lažna, 'datoteka') == 2 izbriši (lažna) konec end end
if cnt == length (files) msg = 'Namestitev je uspela'; waitfor (msgbox (msg, dlgTitle)); else msg = 'Napaka pri namestitvi - za podrobnosti glej ukazno okno'; waitfor (errordlg (msg, dlgTitle)); konec
end %roombaInstall
3. korak: Koda 1. del: Funkcija sledenja
Ta funkcija vzame spremenljivko Roomba in sliko iz kamere na Roombi ter poišče osrednje xy koordinate sledljivega predmeta
To kodo shranite v drugo datoteko v isti mapi.
funkcija [xm, ym] = trackingblue (r) %Vhodi: spremenljivka roomba %Izhodi: x in y vrednost središča naslednjega predmeta %Namen: najde središče modrega predmeta s sliko %Uporaba [vrednost x, y value] = trackingblue (spremenljivka roomba) img = r.getImage; % bere kamero z podplikate robota (1, 2, 2) (img); %prikazuje sliko v istem oknu kot naslov poti ('Sledilna slika') red = img (:,:, 1); zelena = img (:,:, 2); modra = img (:,:, 3); justBlue = modra - zelena/2 - rdeča/2; bw = samo modra> 40; pridržite podpodris (1, 2, 2) podsliko (bw); [x, y] = najdi (črno); če je ~ prazno (x) && ~ prazno (y) xm = okroglo (povprečje (x)); ym = okroglo (povprečje (y)); xx = max (1, xm-5): min (xm+5, velikost (bw, 1)); yy = max (1, ym-5): min (ym+5, velikost (bw, 2)); bwbw = ničle (velikost (bw), 'uint8'); bwbw (xx, yy) = 255; pridržite podsliko (1, 2, 2) podobo (samo modra + bwbw); konec
4. korak: Koda 2. del: Medtem ko je zanka
Ta koda poganja Roombo na podlagi lokacije x in y predmeta iz funkcije sledenja. Tako bo Roomba pozorna na stene in pečine, medtem ko išče modro. To bo vzelo tudi koordinate x in y poti Roomba in ustvarilo ustrezno ploskev s sliko za sledenje. Če je senzor udarcev aktiviran, se bo pomaknil na razdelek za e -pošto
%Roverjev projekt
%Jonah Zahn, Wade Price, Noah Sloan %jzahn2, wprice15, nsloan1 %Vhodi: vrednost roombe, podatki o kameri, udarci, svetlobni in stenski senzorji %Namen: Sledi astronavtu in se izogiba oviram. Če je opozorilo, roomba pošlje e -poštno sporočilo %s podrobnostmi o zemljevidu in o tem, kje je glede na začetni položaj. %Uporaba: samo zaženite program z deklarirano spremenljivko roomba, %tudi imate premikajoč se zeleni objekt %Izhodi: prikaže sliko za sledenje slikam, zemljevid e -pošte in besedilo uporabniku %% Po razdelku b = 0; %Inicializacija spremenljivk c = 0; x = 0; y = 0; theta = 0; medtem ko je c == 0 %Loop, da zazna modri predmet in ovire t = r.timeGet; d = r.getDistance; [xval, yval] = sledilno modro (r); cliff = getCliffSensors (r); %inicializacija struktur za vrednosti senzorjev light = getLightBumpers (r); bump = getBumpers (r); če je light.leftCenter> = 10 || light.rightCenter> = 10 % Zazna, če je v bližini r.stop stena r.setLEDDigits ('pomoč') c = 1 %, medtem ko je b == 0 %, če je bump.right == 1 || bump.left == 1 || bump.front == 1 % Zazna, če je nekaj udaril, potem ko zazna steno % c = 1 % b = 1 % disp ('bump') % end % end elseif bump.right == 1 || bump.left == 1 || bump.front == 1 %Zazna, če je kaj naletelo, v tem primeru bo poslalo e -poštno sporočilo r.stop c = 1 b = 1 elseif cliff.leftFront <= 100 || cliff.rightFront <= 100 || cliff.left <= 100 || cliff.right <= 100 %Zazna, če je v bližini r.stop pečina c = 1 r.setLEDDigits ('help') else %Nastavi hitrosti vožnje, da sledijo modri barvi, če je yval = 100 r.setDriveVelocity (0,1) elseif yval 400 r.turnAngle (-5) konec konca theta = theta + r.getAngle; x = d.*cosd (theta) + x; % x koordinata roombe y = d.*sind (theta).*d + y; % y koordinata roomba podplata (1, 2, 1) plot (x, y, 'bd') % nariše pot in doda naslov naslova ('Roomba Path') hold on; konec
5. korak: Koda 3. del: Oddelek za e -pošto
To bo vzelo začrtano pot in sliko ter jo poslalo na določen e -poštni naslov
(Prikazano tukaj z vzorčnim e -poštnim naslovom)
%% E -poštni odsek
če je b == 1 saveas (gcf, 'rovermap.png') %shrani številko setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'E_mail', '[email protected]'); % poštnega računa za pošiljanje iz setpref ('Internet', 'SMTP_Username', '[email protected]'); % uporabnikov pošiljateljev setpref ('Internet', 'SMTP_Password', 'gssegsse'); % Podporniki gesla pošiljateljev = 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 ('example email', 'RoverBeacon', 'Astronavt se je prenehal premikati. Za obnovitev sledite navodilom v priloženi datoteki.', 'rovermap.png') disp ('email sent') end
Priporočena:
Robotski projekt UTK 2017: 3 koraki
Robotski projekt UTK 2017: Poslanstvo: Našo ekipo inženirjev je najela neprofitna fundacija Froogle za razvoj odprtokodne tehnologije za razvoj inovativnih skupin Mars Rover, ki pomagajo človeku. Izhod " rover " je roomba, ki smo jo kodirali za izvedbo serije o
Venus Flytrap - ITM jesen 2019: 5 korakov
Venus Flytrap - ITM jesen 2019: Kaj manjka na mizi vseh? Mehanska venerina mušica, ki drži svinčnike, pisala in druge predmete
Mars Roomba Project UTK: 4 koraki
Mars Roomba Project UTK: OPOZORILO: TO BO DELOVALO SAMO, ČE JE ROOMBA NA VSAK POSEBEN NAČIN NASTAVLJENA, TO NAVODILO JE USTVARIL IN NAMENUJAL UPORABLJATI UNIVERZA TENENZENCEV UČENCEV IN FACULTY To kodo uporabite za to napisano in s
EF 230 ujame sonce: 6 korakov
EF 230 Captures the Sun: Ta navodila bodo podrobno opisala uporabo kompleta Arduino/vezja in MATLAB za ustvarjanje prototipa domačega energetskega sistema, ki se osredotoča na pridobivanje vetrne in sončne energije. Z ustreznimi materiali in z uporabo priložene kode/nastavitve lahko
Kako narediti jabolčni venec za jesen ali vrnitev v šolo: 13 korakov (s slikami)
Kako narediti jabolčni venec jeseni ali nazaj v šolo: Anjeanette iz podjetja RootsAndWingsCo je ta čudovit jabolčni venec izdelala iz klobučevine in materiala. To je bil preprost projekt, ki ga zmorejo tudi tisti, ki pravijo, da ne znajo šivati! (Dokler lahko vtaknete iglo.)