Мазмұны:
- 1 -қадам: Қажетті материалдар
- 2 -қадам: орнату/жүктеу
- 3 -қадам: Код 1 -бөлім: Бақылау функциясы
- 4 -қадам: Код 2 -бөлім: Цикл кезінде
- 5 -қадам: Код 3 -бөлім: Электрондық пошта бөлімі
Бейне: UTK EF 230 MarsRoomba жобасы 2018 жылдың күзі: 5 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:26
Қазіргі уақытта Марс роверлері әр түрлі әдістермен Марстың бетіндегі мәліметтерді жинау үшін пайдаланылады, бұл планетаның микроорганизмдердің тіршілігі туралы көбірек білуге мүмкіндік береді. Роверлер негізінен фотосурет пен топырақ талдау құралдарын пайдаланады, бірақ роверлер навигациялық құралдарды, радиациялық детекторларды, атмосфералық датчиктерді және тау жыныстарының булануына арналған лазерді қамтиды. НАСА -ның мәлімдеуінше, 2020 жылға жоспарланған ровер миссиясының мақсаты негізінен бірдей, бірақ арнайы тапсырма бойынша «топырақ пен тау жыныстарының үлгілерін жинау және оларды болашақ миссиямен Жерге ықтимал қайтару үшін жер бетінде кэште сақтау».
Алайда, болашақ роверлер адамдарға көмек ретінде пайдаланылады деген болжаммен біздің команда ровер адамның қандай аспектілерін бақылай алатынын қарастырды. Біз қандай да бір төтенше жағдайда ғарышкерді өмірлік қамтамасыз ету мен құрал -жабдықтармен ес -түссіз қалдырса, біздің ровер ғарышкердің қозғалмайтынын байқап, апат туралы хабар жібере отырып, жылжымалы маяк қызметін атқара алады деген қорытындыға келдік. Адамды қадағалап, қозғалмайтындығын анықтау үшін ровер адамның аяқ киімінің түсі мен олардың қозғалысы сияқты ақпаратты алады. Тағы бір ескерту керек, ол төтенше жағдайда апат сигналын беру үшін өз жолын есте сақтауы керек. Біздің ровер Марстағы қажеттілікті қанағаттандырады, өйткені мұндай шетелде осындай қымбат миссияны жасау бірнеше рет қауіпсіз сейфті қажет етеді, ал егер ғарышкер костюмнің дұрыс жұмыс істемеуіне немесе есінен тануына байланысты өз көмегін ала алмаса, ровер басқаларға ескерту жасай алады..
Бұл нұсқаулық оқырманға Roomba бағдарламасын «ғарышкерді» сәтті орындауға және қажет болған жағдайда апат сигналын жіберуге көмектесуге арналған.
1 -қадам: Қажетті материалдар
1) Интернетке қол жетімді компьютер/ноутбук
2) MATLAB_R2018a
3) Roomba және Roomba жүктеу
2 -қадам: орнату/жүктеу
Бұл сценарийді Roomba -ға кіруге қажетті бағдарламалық қамтамасыз етуді жүктеу үшін MATLAB -те іске қосыңыз (жоба қалтасында өз файлында сақталған)
Қосымша анықтама:
% EF 230 Roomba жобасы үшін орнату бағдарламасы% Соңғы жаңарту: 2017 жылдың 13 қыркүйегі (https серверімен байланысты түзетілген қауіпсіздік мәселелері және қателер орын алса, файлды жою туралы ескерту) roombaInstall clc функциясы; % файлдарды орнататын файлдар тізімі = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; опциялардан орнатылатын % орын = weboptions ('CertificateFilename', ''); % сертификат талаптарын елемеуді айтады сервер = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Roomba орнату/жаңарту'; % display мақсаты және растау шақыруын алу = {'Бұл бағдарлама EF 230 Roomba файлдарын жүктейді:' '' strjoin (файлдар, '') '' 'мына қалтаға:' '' cd '' 'Жалғастырғыңыз келе ме? '}; дыбыстық сигнал; yn = questdlg (шақыру,… dlgTitle,… 'Иә', 'Жоқ', 'Иә');
if ~ strcmp (yn, 'Yes'), return; Соңы
% бұрыннан бар файлдардың тізімін алады_files = файлдар (cellfun (@exist, files)> 0); if ~ isempty (existing_files) % оларды ауыстырудың дұрыс екеніне көз жеткізіңіз шақыру = {'Сіз бұл файлдарды ауыстырасыз:' '' strjoin (existing_files, '') '' 'Ауыстыруға болады ма?' }; дыбыстық сигнал; yn = questdlg (шақыру,… dlgTitle,… 'Иә', 'Жоқ', 'Иә'); if ~ strcmp (yn, 'Yes'), return; соңы соңы
% файлдарды жүктеу cnt = 0; i = 1 үшін: ұзындық (файлдар) f = файлдар {i}; disp (['Жүктеу' f]); url = [сервер f] көріңіз; websave (f, url, опциялар); қауіпсіздік қателерін болдырмау үшін % опциялар қосылды cnt = cnt + 1; catch disp (['Жүктеу қатесі' f]); манекен = [f '.html']; егер бар болса (муляж, 'файл') == 2 жою (манекен) соңы соңы
if cnt == length (files) msg = 'Орнату сәтті болды'; күту (msgbox (msg, dlgTitle)); else msg = 'Орнату қателігі - мәліметтерді командалық терезеден қараңыз'; күту (errordlg (msg, dlgTitle)); Соңы
end %roombaInstall
3 -қадам: Код 1 -бөлім: Бақылау функциясы
Бұл функция Roomba айнымалысы мен Roomba камерасындағы суретті алады және бақыланатын объектінің орталық xy координаттарын табады
Бұл кодты сол қалтадағы басқа файлға сақтаңыз.
функция [xm, ym] = trackingblue (r) %Кірістер: roomba айнымалы %Шығу: келесі объектінің центрінің x және y мәні %Мақсаты: суреттің көмегімен көк нысанның ортасын табады %Пайдалану [x мәні, у мән] = trackingblue (roomba айнымалысы) img = r.getImage; % камераны роботтың қосалқы бөлігінен (1, 2, 2) кіші суреттен оқиды (img); %кескінді жолдың атауы ('Tracking Image') сияқты терезеде суретті көрсетеді red = img (:,,:, 1); жасыл = img (:,,:, 2); көк = img (:,,:, 3); justBlue = көк - жасыл/2 - қызыл/2; bw = justBlue> 40; (1, 2, 2) қосалқы суретті ұстаңыз (bw); [x, y] = табу (bw); if ~ isempty (x) && ~ isempty (y) xm = дөңгелек (орташа (x)); ym = дөңгелек (орташа (y)); xx = max (1, xm-5): min (xm+5, өлшемі (bw, 1)); yy = max (1, ym-5): min (ym+5, өлшемі (bw, 2)); bwbw = нөлдер (өлшемі (bw), 'uint8'); bwbw (xx, yy) = 255; (1, 2, 2) қосалқы суретті ұстау (justBlue + bwbw); Соңы
4 -қадам: Код 2 -бөлім: Цикл кезінде
Бұл код объектінің x және y орналасуына негізделген Roomba -ны бақылау функциясынан шығарады. Бұл Roomba көгілдір түстерді іздей отырып, қабырғалар мен жартастарға назар аударады. Бұл сонымен қатар Roomba жолының x және y координаттарын алады және бақылау кескіні бар сәйкес сюжет жасайды. Егер соққы сенсоры іске қосылса, ол электрондық пошта бөліміне өтеді
%Rover жобасы
%Жүніс Зан, Уэйд Прайс, Нух Слоан %jzahn2, wprice15, nsloan1 %Кірістер: бөлме температурасы, камера деректері, соққы, жарық пен қабырға сенсорлары %Мақсаты: Ғарышкерді қадағалайды және кедергілерден аулақ болады. Егер ескерту болса, Roomba картаны және оның бастапқы орнына сәйкес орналасқан %электрондық поштаны жібереді. %Қолданылуы: жай ғана roomba айнымалысын жариялай отырып, бағдарламаны іске қосыңыз, сонымен қатар %жылжымалы жасыл объекті бар %Шығу: пайдаланушыға кескінді бақылау суретін, электрондық пошта картасын және мәтінді көрсетеді %% Келесі бөлімнен кейін b = 0; %Айнымалыларды инициализациялау c = 0; x = 0; y = 0; тета = 0; while c == 0 %Loop көк объект пен кедергілерді анықтауға мүмкіндік береді t = r.timeGet; d = r.getDistance; [xval, yval] = қадағалау көк (r); қия = getCliffSensors (r); %сенсор мәндері үшін құрылымдарды инициализациялау light = getLightBampers (r); bump = getBampers (r); егер light.leftCenter> = 10 || light.rightCenter> = 10 % r.stop r.setLEDDigits ('анықтама') с = 1 % жанында қабырға болса, сезеді c = 1 %, ал b == 0 %, егер bump.right == 1 || bump.left == 1 || bump.front == 1 % Егер ол қабырғаны сезгеннен кейін бірдеңені соқтығысқанын сезсе % c = 1 % b = 1 % disp ('bump') % end % end elseif bump.right == 1 || bump.left == 1 || bump.front == 1 %Егер ол бірдеңе соқтығысқанын сезсе, онда ол r.stop c = 1 b = 1 басқа электрондық поштаны жібереді cliff.leftFront <= 100 || cliff.rightFront <= 100 || cliff.left <= 100 || cliff.right <= 100 %r.stop c = 1 r.setLEDDigits («анықтама») қасында жартастың бар -жоғын сезеді %yval = 100 r.setDriveVelocity (0.1) elseif yval болса, диск жылдамдығын көк түске қарай орнатады. 400 r.turnAngle (-5) соңы соңғы тета = тета + r.getAngle; x = d.*cosd (teta) + x; % x бөлменің координаты y = d.*sind (тета).*d + y; (1, 2, 1) бөлменің % y координаты (x, y, 'bd') % жолды белгілейді және тақырып атауын қосады ('Roomba Path') ұстап тұрыңыз; Соңы
5 -қадам: Код 3 -бөлім: Электрондық пошта бөлімі
Бұл жоспарланған жол мен суретті алады және оны көрсетілген электрондық пошта мекенжайына жібереді
(Бұл жерде электрондық поштаның үлгісі көрсетілген)
%% электрондық пошта бөлімі
егер b == 1 saveas (gcf, 'rovermap.png') %setpref фигурасын сақтайды ('Интернет', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Интернет', 'E_mail', '[email protected]'); setpref жіберілетін % пошта тіркелгісі ('Интернет', 'SMTP_Username', '[email protected]'); % жіберушілердің пайдаланушы аты setpref ('Интернет', 'SMTP_Password', 'gssegsse'); % Жіберушілер құпия сөзі = 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 ('электрондық поштаның мысалы', 'RoverBeacon', 'Ғарышкер қозғалуды тоқтатты. Қалпына келтіру үшін қоса берілген файлдағы нұсқауларды орындаңыз.', 'rovermap.png') disp ('email sent') end
Ұсынылған:
Raspberry PI (RPi) үшін LIRC көмегімен IR қашықтан басқару құралын оңай орнату - 2019 жылдың шілдесі [1 -бөлім]: 7 қадам
Raspi PI (RPi) үшін LIRC -ді қолдану арқылы IR -ді қашықтан басқару пультін оңай орнату - 2019 жылдың шілдесі [1 -бөлім]: Көп ізденістен кейін мен RPi жобам үшін IR қашықтан басқару пультін қалай орнату керектігі туралы қайшылықты ақпаратқа таң қалдым. Мен оңай болады деп ойладым, бірақ Linux InfraRed Control (LIRC) жүйесін орнату ұзақ уақыт бойы қиын болды
Raspberry PI (RPi) үшін LIRC көмегімен IR қашықтан басқару құралын оңай орнату - 2019 жылдың шілдесі [2 -бөлім]: 3 қадам
Raspi PI (RPi) үшін LIRC көмегімен IR қашықтан басқару пультін оңай орнату - 2019 ж. Шілде [2 -бөлім]: 1 -бөлімде мен RPi + VS1838b жинауды және IR қашықтан басқару пультінен IR командаларын алу үшін Raspbian LIRC модулін қалай конфигурациялауды көрсеттім. Аппараттық құралдар мен LIRC орнатуға қатысты мәселелер 1 -бөлімде талқыланады. 2 -бөлімде hardwa интерфейсі қалай болатынын көрсетеді
Теледидар динамигінен DIY MP5 ойнатқышы - 2019 жылдың ең жақсы бағасы: 9 қадам (суреттермен)
DIY MP5 ойнатқышы теледидар спикерінен - ең жақсы баға 2019: Сәлем достар. Сізді осы керемет жобада қайта кездестіргеніме қуаныштымын. Мұнда болғаныңыз үшін рахмет, менің YouTube каналыма кіріңіз. Сізге және сіздің отбасыңызға зор денсаулық пен бақыт тілеймін, ыстық желім - бұл менің DIY жобаларым үшін әрқашан тамаша таңдау. Қане, бастайық. Менің
ITTT жобасы 2018 - Жер: 5 қадам
ITTT жобасы 2018 | Жер: Сәлеметсіз бе! Менің мектебім маған жоба берді, онда мен Arduino көмегімен интерактивті жүйе құрып, оны нақты өмірде құруға тура келді. Мен сенсорлар мен түймелермен өзара әрекеттесу елдерді жарықтандыратын және жер шарын айналдыратын әлемдік глобус жасауға шешім қабылдадым
Марс Roomba жобасы UTK: 4 қадам
Mars Roomba Project UTK: Жауапкершіліктен бас тарту: бұл тек жұмыс істейтін болады, егер робма әр түрлі жағдайда орнатылса, бұл нұсқаулық ТЕННЕСУЛАР УНИВЕРСИТЕТІ ЖӘНЕ ПАЙДАЛАНУҒА АРНАЛҒАН, бұл бөлмеде жергілікті код орнатылған. жазылған және