Съдържание:
- Стъпка 1: Необходими материали
- Стъпка 2: Настройка/Изтегляне
- Стъпка 3: Код Част 1: Функция за проследяване
- Стъпка 4: Код Част 2: Докато цикъл
- Стъпка 5: Код Част 3: Имейл раздел
Видео: UTK EF 230 MarsRoomba Project есен 2018: 5 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
В момента марсоходът се използва за събиране на данни на повърхността на Марс чрез различни методи, за да се научи повече за потенциала на планетата за микробен живот. Роверите използват предимно фотография и инструменти за анализ на почвата за събиране на данни, но роувърите също включват навигационни инструменти, детектори на радиация, атмосферни сензори и лазер за изпаряване на скални проби. Планираната мисия за роувър за 2020 г. е предимно същата, но със специалната задача да „събере проби от почва и скала и да ги кешира на повърхността за потенциално завръщане на Земята чрез бъдеща мисия“, според НАСА.
Въпреки това, при предпоставката, че бъдещите роувъри ще бъдат използвани за човешка помощ, нашият екип обмисли кои аспекти на хората ровърът може да наблюдава. Стигнахме до заключението, че ако при някаква извънредна ситуация астронавтът изпадне в безсъзнание с недостатъчно поддържане на живота и оборудването, нашият роувър може да служи като подвижен маяк, след като наблюдава, че астронавтът, който е последвал, е неподвижен и предава съобщение за бедствие. За да проследи човека и да определи неподвижността, марсоходът би приел данни като цвета на обувките на човека и тяхното движение. Друг вход, който трябва да се вземе предвид, е, че той трябва да запомни пътя си, за да предаде сигнал за бедствие в случай на спешност. Нашият марсоход отговаря на нуждата на Марс, тъй като опитът за такава скъпа мисия на такъв чужд терен изисква множество слоеве на аварийни сейфове и ако астронавтът не може да получи своята помощ поради неизправност в костюма или безсъзнание, роувърът може да предупреди другите.
Тази инструкция е предназначена да помогне на читателя при програмирането на неговата или нейната Roomba да следва успешно „астронавт“и да изпраща сигнал за бедствие, ако е приложимо.
Стъпка 1: Необходими материали
1) Компютър/лаптоп с достъп до интернет
2) MATLAB_R2018a
3) Изтегляне на Roomba и Roomba
Стъпка 2: Настройка/Изтегляне
Стартирайте този скрипт в MATLAB, за да изтеглите софтуера, необходим за достъп до Roomba (запазен в собствен файл в папката на проекта)
Допълнителна помощ:
% Инсталационна програма за проект EF 230 Roomba% Последна актуализация: 13 септември 2017 г. (Фиксирани проблеми със сигурността, свързани с https сървъра и предупреждение за изтриване на файл при възникване на грешки) функция roombaInstall clc; % списък с файлове за инсталиране на файлове = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % местоположение за инсталиране от options = weboptions ('CertificateFilename', ''); % му кажете да игнорира изискванията за сертификат server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Инсталиране/актуализиране на Roomba'; % display display and get prompt prompt = {'Тази програма ще изтегли тези файлове EF 230 Roomba:' '' strjoin (files, '') '' '' в тази папка: '' 'cd' '' Искате ли да продължите? '}; звуков сигнал; yn = questdlg (подкана,… dlgTitle,… „Да“, „Не“, „Да“);
ако ~ strcmp (yn, 'Да'), връщане; край
% get списък с съществуващи файлове postoje_files = файлове (cellfun (@exist, файлове)> 0); if ~ isempty (existing_files) % уверете се, че наистина е добре да ги замените prompt = {'Заменяте тези файлове (файлове):' '' strjoin (existing_files, '') '' 'OK to replace?' }; звуков сигнал; yn = questdlg (подкана,… dlgTitle,… „Да“, „Не“, „Да“); ако ~ strcmp (yn, 'Да'), връщане; край край
% изтегляне на файловете cnt = 0; за i = 1: дължина (файлове) f = файлове {i}; disp (['Изтегляне' f]); опитайте url = [сървър f]; websave (f, url, options); % добавени опции за избягване на грешки в сигурността cnt = cnt + 1; catch disp (['Грешка при изтеглянето' f]); манекен = [f '.html']; ако съществуват (фиктивен, 'файл') == 2 изтриване (фиктивен) край край край
if cnt == length (files) msg = 'Инсталацията е успешна'; waitfor (msgbox (msg, dlgTitle)); else msg = 'Грешка при инсталиране - вижте командния прозорец за подробности'; waitfor (errordlg (msg, dlgTitle)); край
край %roomba Инсталиране
Стъпка 3: Код Част 1: Функция за проследяване
Тази функция взема променливата Roomba и картината от камерата на Roomba и намира централните координати xy на проследявания обект
Запазете този код в друг файл в същата папка.
функция [xm, ym] = trackingblue (r) %Входове: променлива roomba %Изходи: x и y стойност на центъра на следния обект %Цел: намира центъра на син обект с изображение %Употреба [x стойност, y стойност] = trackingblue (променлива roomba) img = r.getImage; % чете камерата от подсхемата на робота (1, 2, 2) подобраза (img); %показва изображение в същия прозорец като заглавието на пътя ('Проследяващо изображение') red = img (:,:, 1); зелено = img (:,:, 2); синьо = img (:,:, 3); justBlue = синьо - зелено/2 - червено/2; bw = justBlue> 40; задръжте подсхемата (1, 2, 2) подобраза (bw); [x, y] = намери (bw); ако ~ 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: Докато цикъл
Този код управлява Roomba въз основа на местоположението x и y на обекта от функцията за проследяване. Това ще накара Roomba да внимава за стени и скали, докато търси синьо. Това също ще вземе координатите x и y на пътя на Roomba и ще създаде съответния график с проследяващото изображение. Ако сензорът за удар е активиран, той ще премине към секцията за имейли
%Rover Project
%Jonah Zahn, Wade Price, Noah Sloan %jzahn2, wprice15, nsloan1 %Входове: стойност на roomba, данни от камерата, сензори за светлина, светлина и стена %Цел: Следва астронавта и избягва препятствията. Ако бъде предупреден, roomba изпраща имейл %с подробна информация за картата и къде се намира според началната си позиция. %Употреба: просто стартирайте програмата с декларираща променлива roomba, също така %имате движещ се зелен обект %Изходи: показва картина за проследяване на изображения, карта на имейли и текст на потребителя %% Следвайки раздел b = 0; %Инициализиране на променливи c = 0; x = 0; y = 0; тета = 0; докато c == 0 %Loop, за да го накара да открие синия обект и препятствия t = r.timeGet; d = r.getDistance; [xval, yval] = trackingblue (r); cliff = getCliffSensors (r); %инициализиране на структурите за сензорни стойности light = getLightBumpers (r); bump = getBumpers (r); ако light.leftCenter> = 10 || light.rightCenter> = 10 % Усеща дали има стена в близост до r.stop r.setLEDDigits ('помощ') 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 elseif cliff.leftFront <= 100 || cliff.rightFront <= 100 || cliff.left <= 100 || cliff.right <= 100 %Чувства, ако има скала близо до r.stop c = 1 r.setLEDDigits ('help') else %Задава скоростите на задвижване, които да следват синьото, ако yval = 100 r.setDriveVelocity (0.1) elseif yval 400 r.turnAngle (-5) end end theta = theta + r.getAngle; x = d.*cosd (тета) + x; % x координата на румба y = d.*sind (theta).*d + y; % y координата на подплота на roomba (1, 2, 1) график (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 ('Internet', 'SMTP_Username', '[email protected]'); % потребители на подателите setpref ('Интернет', 'SMTP_Password', 'gssegsse'); % Реквизити за пароли на податели = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'вярно'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465'); sendmail ('пример имейл', 'RoverBeacon', 'Астронавтът е спрял да се движи. За възстановяване следвайте указанията в прикачения файл.', 'rovermap.png') disp ('имейл изпратен') край
Препоръчано:
Робот проект UTK 2017: 3 стъпки
Робот Проект UTK 2017: Мисия: Нашият екип от инженери е нает от Froogle, фондация с нестопанска цел за разработване на технологии с отворен код, за разработване на иновативни екипи за помощ на Марс Rover. е румба, която кодирахме за изпълнение на поредица от
Генератор - Fidget Spinner, захранващ 9W LED крушка 230 V: 3 стъпки (със снимки)
Генератор - Fidget Spinner, захранващ 9W Led крушка 230 V: В редовете по -долу искаме да покажем как може да се създаде мощен генератор на fidget spinner. Той ще генерира 100 Volts Ac в началото и ще може да запали LED крушка 230 V 9 W. Образователен проект, използващ само няколко материала. Намирам
Venus Flytrap - ITM есен 2019: 5 стъпки
Venus Flytrap - ITM Fall 2019: Какво липсва на бюрото на всички? Механична мухоловка на Венера, която държи моливи, химикалки и други предмети
Проект Mars Roomba UTK: 4 стъпки
Проект Mars Roomba UTK: ОТКАЗ ОТ ОТГОВОРНОСТ: ТОВА ЩЕ РАБОТИ САМО, АКО СТАЯТА Е НАСТРОЕНА ПО ВСЕКИ СПЕЦИФИЧЕН НАЧИН, ТОЗИ ИНСТРУКЦИЯ Е СЪЗДАДЕН И НАМЕРЕН ДА СЕ ИЗПОЛЗВА ОТ УНИВЕРСИТЕТ НА УЧЕНИЦИТЕ НА ТЕНИСИТЕ И ФАКУЛТИТЕ Този код се използва написано и s
Как да си направим гирлянд от ябълки за есен или връщане в училище: 13 стъпки (със снимки)
Как да си направим гирлянд от ябълки за есен или връщане в училище: Anjeanette, от RootsAndWingsCo направи този очарователен гирлянд от ябълки от филц и материал. Това беше прост проект, който дори тези, които казват, че не могат да шият, могат! (Стига да можете да вкарате иглата си.)