Satura rādītājs:
- 1. darbība. Nepieciešamie materiāli
- 2. darbība: iestatīšana/lejupielāde
- 3. darbība. Kods 1. daļa: izsekošanas funkcija
- 4. solis: kods 2. daļa: kamēr cilpa
- 5. darbība: kods 3. daļa: e -pasta sadaļa
Video: UTK EF 230 MarsRoomba projekts 2018. gada rudens: 5 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Pašlaik Marsa roverus izmanto, lai savāktu datus uz Marsa virsmas, izmantojot dažādas metodes, līdz galam, lai uzzinātu vairāk par planētas potenciālu mikrobu dzīvē. Rovers datu vākšanai galvenokārt izmanto fotografēšanas un augsnes analīzes rīkus, bet roveros ietilpst arī navigācijas instrumenti, radiācijas detektori, atmosfēras sensori un lāzers iežu paraugu iztvaikošanai. Paredzētās 2020. gada roveru misijas mērķis lielākoties ir viens un tas pats, bet ar īpašo uzdevumu “savākt augsnes un iežu paraugus un tos saglabāt kešatmiņā uz virsmas, lai nākotnē varētu atgriezties uz Zemes”, norāda NASA.
Tomēr, pieņemot, ka nākamie roveri tiks izmantoti cilvēku palīdzībai, mūsu komanda apsvēra, kādus cilvēku aspektus rover varētu uzraudzīt. Mēs nonācām pie secinājuma, ka gadījumā, ja kāda ārkārtas situācija padarītu astronautu bezsamaņā bez dzīvības nodrošināšanas un aprīkojuma trūkuma, mūsu roveris varētu kalpot kā mobila maija bāka, novērojot, ka astronauts, kuram tas seko, ir nekustīgs un pārraida briesmu vēstījumu. Lai sekotu cilvēkam un noteiktu nekustīgumu, roveris izmantos tādas ziņas kā cilvēka apavu krāsa un to kustība. Vēl viena informācija, kas jāņem vērā, ir tā, ka tai būtu jāatceras savs ceļš, lai avārijas gadījumā nosūtītu briesmu signālu. Mūsu roveris atbilst Marsa vajadzībām, jo, lai veiktu tik dārgu misiju šādā ārzemju apvidū, ir nepieciešami vairāki neaizsargātu seifu slāņi, un, ja astronauts nevarēs saņemt savu palīdzību nepareizas darbības vai bezsamaņas dēļ, roveris var brīdināt citus.
Šī pamācība ir paredzēta, lai palīdzētu lasītājam programmēt savu Roomba, lai sekotu "astronautam", un vajadzības gadījumā nosūtīt briesmu signālu.
1. darbība. Nepieciešamie materiāli
1) Internets pieejams dators/klēpjdators
2) MATLAB_R2018a
3) Roomba un Roomba lejupielāde
2. darbība: iestatīšana/lejupielāde
Palaidiet šo skriptu MATLAB, lai lejupielādētu programmatūru, kas nepieciešama, lai piekļūtu Roomba (saglabāta savā failā projekta mapē)
Papildu palīdzība:
% EF 230 Roomba Project instalēšanas programma% Pēdējais atjauninājums: 2017. gada 13. septembris (novērstas drošības problēmas, kas saistītas ar https serveri un brīdinājums par noņemtu failu dzēšanu, ja rodas kļūdas) function roombaInstall clc; % instalējamo failu saraksts = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % atrašanās vieta, ko instalēt no options = weboptions ('CertificateFilename', ''); % sakiet, lai tas ignorētu sertifikātu prasību serveri = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Roomba instalēšana/atjaunināšana'; % displeja mērķis un saņemt apstiprinājuma uzvedni = {'Šī programma lejupielādēs šos EF 230 Roomba failus:' '' strjoin (faili, '') '' '' šajā mapē: '' 'cd' '' Vai vēlaties turpināt? '}; pīkstiens; yn = questdlg (uzvedne,… dlgTitle,… 'Jā', 'Nē', 'Jā');
ja ~ strcmp (yn, 'Jā'), atgriezties; beigas
% get to failu saraksts, kas pastāv esošie_files = faili (cellfun (@exist, files)> 0); ja ~ isempty (esošie_faili) % pārliecinieties, vai tiešām ir pareizi tos nomainīt. }; pīkstiens; yn = questdlg (uzvedne,… dlgTitle,… 'Jā', 'Nē', 'Jā'); ja ~ strcmp (yn, 'Jā'), atgriezties; beigas beigas
% lejupielādēt failus cnt = 0; i = 1: garums (faili) f = faili {i}; disp (['Lejupielāde' f]); mēģiniet url = [serveris f]; tīmekļa saglabāšana (f, url, opcijas); % pievienotas iespējas, lai izvairītos no drošības kļūdām cnt = cnt + 1; catch disp (['Kļūda lejupielādējot' f]); fiktīvs = [f '.html']; ja pastāv (fiktīvs, 'fails') == 2 dzēst (fiktīvu) beigas beigas
if cnt == garums (faili) msg = 'Instalēšana veiksmīga'; gaidīt (msgbox (msg, dlgTitle)); else msg = 'Instalācijas kļūda - sīkāku informāciju skatīt komandu logā'; waitfor (errordlg (msg, dlgTitle)); beigas
end %roombaInstall
3. darbība. Kods 1. daļa: izsekošanas funkcija
Šī funkcija ņem Roomba mainīgo un attēlu no Roomba kameras un atrod izsekotā objekta centra xy koordinātas
Saglabājiet šo kodu citā failā tajā pašā mapē.
funkcija [xm, ym] = trackingblue (r) %Ievadi: roomba mainīgais %Izejas: x un y vērtība šāda objekta centrā %Mērķis: atrod zila objekta centru, ņemot vērā attēlu %Lietojums [x vērtība, y vērtība] = trackingblue (roomba mainīgais) img = r.getImage; % nolasa kameru no robota apakšplāna (1, 2, 2) apakšattēla (img); %parāda attēlu tajā pašā logā kā ceļa nosaukums ('izsekošanas attēls') red = img (:,:, 1); zaļš = img (:,:, 2); zils = img (:,:, 3); justBlue = zils - zaļš/2 - sarkans/2; bw = tikai zils> 40; turēt apakšplānā (1, 2, 2) apakšattēlu (bw); [x, y] = atrast (bw); ja ~ isempty (x) && ~ isempty (y) xm = apaļš (vidējais (x)); ym = apaļš (vidējais (y)); xx = max (1, xm-5): min (xm+5, izmērs (bw, 1)); yy = max (1, ym-5): min (ym+5, izmērs (bw, 2)); bwbw = nulles (izmērs (bw), 'uint8'); bwbw (xx, yy) = 255; turēt apakšplānā (1, 2, 2) apakšattēlu (justBlue + bwbw); beigas
4. solis: kods 2. daļa: kamēr cilpa
Šis kods virza Roomba, pamatojoties uz izsekošanas funkcijas objekta atrašanās vietu x un y. Tas liks Roomba uzmanīties no sienām un klintīm, vienlaikus meklējot zilu krāsu. Tas arī ņems Roomba ceļa x un y koordinātas un izveidos atbilstošu diagrammu ar izsekošanas attēlu. Ja trieciena sensors ir aktivizēts, tas pāriet uz e -pasta sadaļu
%Rover projekts
%Jonah Zahn, Wade Price, Noah Sloan %jzahn2, wprice15, nsloan1 %Ievadi: roomba vērtība, kameras dati, trieciens, gaismas un sienas sensori %Mērķis: seko astronautam un izvairās no šķēršļiem. Ja tiek brīdināts, roomba nosūta e -pastu %, kurā sīki aprakstīta karte un vieta, kur tā atrodas atbilstoši sākuma pozīcijai. %Lietošana: vienkārši palaidiet programmu ar deklarētu roomba mainīgo, arī %ir kustīgs zaļš objekts %Rezultāti: parāda attēla izsekošanas attēlu, e -pasta karti un tekstu lietotājam %% Sekojot b = 0; %Inicializējošie mainīgie c = 0; x = 0; y = 0; teta = 0; kamēr c == 0 %Cilpa, lai tā noteiktu zilo objektu un šķēršļus t = r.timeGet; d = r.getDistance; [xval, yval] = izsekošanas zils (r); klints = getCliffSensors (r); %inicializējot struktūras sensora vērtībām gaisma = getLightBumpers (r); sasist = getBumpers (r); ja gaisma.leftCenter> = 10 || light.rightCenter> = 10 % Jūt, ja r.stop r.setLEDDigits ('palīdzība') tuvumā ir siena c = 1 %, savukārt b == 0 %, ja trieciens.preces == 1 || sasist.pa kreisi == 1 || bump.front == 1 % Jūt, ja tas ir kaut ko sasitis pēc tam, kad uztver sienu % c = 1 % b = 1 % disp ('bump') % end % end elseif bump.right == 1 || sasist.pa kreisi == 1 || bump.front == 1 %Jūt, ja ir kaut ko sasitis, ja tā, tad nosūtīs e -pastu r.stop c = 1 b = 1 elseif cliff.leftFront <= 100 || cliff.rightFront <= 100 || klints.pa kreisi <= 100 || cliff.right <= 100 %sajūtas, ja pie klints atrodas klints. stop c = 1 r.setLEDDigits ('help') else %Iestata piedziņas ātrumus, lai tie atbilstu zilajam, ja yval = 100 r.setDriveVelocity (0,1) elseif yval 400 r.turnAngle (-5) gala beigas teta = teta + r.getAngle; x = d.*cosd (teta) + x; % x telpas koordināta y = d.*sind (teta).*d + y; Roomba apakšplāna % 1 koordināta (1, 2, 1) diagramma (x, y, 'bd') % uzzīmē ceļu un pievieno virsraksta nosaukumu ('Roomba Path'); beigas
5. darbība: kods 3. daļa: e -pasta sadaļa
Tas aizvedīs uzzīmēto ceļu un attēlu un nosūtīs to uz norādīto e -pasta adresi
(Šeit redzams ar e -pasta piemēru)
%% e -pasta sadaļa
ja b == 1 saveas (gcf, 'rovermap.png') %saglabā skaitli setpref ('Internets', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internets', 'E_mail', '[email protected]'); % pasta konts, kas jānosūta no setpref ('Internets', 'SMTP_Username', '[email protected]'); % sūtītāju lietotājvārds setpref ('Internets', 'SMTP_Password', 'gssegsse'); % Sūtītāju paroles rekvizīti = 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 ('parauga e -pasts', 'RoverBeacon', 'Astronauts ir pārstājis kustēties. Lai atgūtu, izpildiet pievienotajā failā sniegtos norādījumus.', 'rovermap.png') disp ('e -pasts nosūtīts') beigas
Ieteicams:
2018. gada 10. paaudzes Honda Civic USB mod Kenwood galvas blokam: 5 soļi
2018. gada 10. paaudzes Honda Civic USB mod Kenwood galvas ierīcei: Šajā gadījumā es mainīju sava Civic USB porta atvērumu, lai tas pieņemtu to, ko nopirku no Amazon, lai es varētu to savienot ar savu pēcpārdošanas Kenwood galvas bloku (DMX9706S). Tas atrodas tajā pašā bedrē un var aizņemt 30 minūtes vai ilgāk
Venus Flytrap - ITM rudens 2019: 5 soļi
Venus Flytrap - ITM Fall 2019: Kas trūkst ikviena galda? Mehāniskais Venēras mušu slazds, kurā glabājas zīmuļi, pildspalvas un citi priekšmeti
Raspberry Pi Stretch - 2018. gada triki: 7 soļi
Raspberry Pi Stretch - 2018. gada triki: Ievads Ir pagājis laiks, kopš es pēdējo reizi izveidoju Raspberry Pi no nulles. Dažas lietas ir mainījušās (gandrīz uz labo pusi). Šajā pamācībā ir izklāstītas dažas jaunas lietas, vai nu jaunas sistēmā, vai varbūt es tikko iemācījos
NE555 balstīts mainīgā ieslēgšanas/izslēgšanas taimeris (atjaunināts 2018. gadā): 4 soļi
NE555 balstīts mainīgā ieslēgšanas/izslēgšanas taimeris (atjaunināts 2018. gadā): Laipni lūdzam, daži mani draugi, ieskaitot mani, mūsu velosipēdiem ir izveidojuši D.I.Y punktveida gaismas, taču, kā parasti, viņi kļuva greizsirdīgi, skatoties citas firmas gaismas. Kāpēc? Jo šīm gaismām ir stroboskopa funkcija! lol Katrs mans draugs ir radījis savu gaismu
Kā ievietot pielāgotu attēlu savā Xbox 360 informācijas panelī. (Atjaunināšana pirms rudens 08): 8 soļi
Kā ievietot pielāgotu attēlu Xbox 360 informācijas panelī. (Atjaunināšana pirms rudens 08): šajā pamācībā es jums parādīšu, kā xbox 360 fonā ievietot pielāgotu attēlu. Lai to izdarītu, veiciet tās pašas darbības jaunais un vecais informācijas panelis. kad man būs iespēja, es visu atjaunināšu ar jaunām bildēm