Оглавление:
- Шаг 1. Необходимые материалы
- Шаг 2: установка / загрузка
- Шаг 3. Код, часть 1: функция отслеживания
- Шаг 4. Код, часть 2: цикл while
- Шаг 5: Код. Часть 3: Раздел электронной почты
Видео: UTK EF 230 MarsRoomba Project осень 2018: 5 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
В настоящее время марсоходы используются для сбора данных на поверхности Марса различными методами, чтобы в конечном итоге узнать больше о потенциале планеты для микробной жизни. Марсоходы в основном используют инструменты фотографии и анализа почвы для сбора данных, но марсоходы также включают в себя навигационные инструменты, детекторы излучения, атмосферные датчики и лазер для испарения образцов горных пород. Согласно НАСА, цель запланированной на 2020 год миссии марсохода в основном та же, но со специальной задачей «собрать образцы почвы и горных пород и хранить их на поверхности для возможного возвращения на Землю в ходе будущей миссии».
Однако, исходя из предположения, что будущие вездеходы будут использоваться для помощи людям, наша команда рассмотрела, какие аспекты жизни людей может отслеживать марсоход. Мы пришли к выводу, что если в результате какой-либо чрезвычайной ситуации астронавт потеряет сознание из-за отказа системы жизнеобеспечения и оборудования, наш марсоход может служить мобильным маяком бедствия, наблюдая, что астронавт, за которым он следует, неподвижен и передает сообщение о бедствии. Чтобы проследить за человеком и определить неподвижность, марсоход будет принимать входные данные, такие как цвет обуви человека и его движение. Еще один вход, который следует учитывать, - это то, что он должен запомнить свой путь, чтобы ретранслировать сигнал бедствия в случае чрезвычайной ситуации. Наш марсоход удовлетворяет потребность на Марсе в том, что попытка такой дорогостоящей миссии на такой чужой территории требует наличия нескольких уровней отказоустойчивости, и если астронавт не сможет получить помощь самостоятельно из-за неисправности костюма или бессознательного состояния, марсоход может предупредить других..
Это руководство предназначено для помощи читателю в программировании робота Roomba для успешного следования за «космонавтом» и отправки сигнала бедствия, если это применимо.
Шаг 1. Необходимые материалы
1) компьютер / ноутбук с доступом в Интернет
2) MATLAB_R2018a
3) Загрузка Roomba и Roomba
Шаг 2: установка / загрузка
Запустите этот сценарий в MATLAB, чтобы загрузить программное обеспечение, необходимое для доступа к Roomba (сохранено в собственном файле в папке проекта)
Дополнительная помощь:
% Программа установки для EF 230 Roomba Project% Последнее обновление: 13 сентября 2017 г. (Исправлены проблемы безопасности, связанные с https-сервером, и удалено предупреждение об удалении файла в случае возникновения ошибок) function roombaInstall clc; % список файлов для установки files = {'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 destination и получить запрос подтверждения = {'Эта программа загрузит эти файлы EF 230 Roomba:' '' strjoin (files, '') '' 'в эту папку:' '' cd '' 'Вы хотите продолжить? '}; гудок; yn = questdlg (подсказка,… dlgTitle,… «Да», «Нет», «Да»);
если ~ strcmp (yn, 'Да'), возврат; конец
% получить список существующих файлов existing_files = files (cellfun (@exist, files)> 0); if ~ isempty (existing_files)% убедитесь, что их действительно можно заменить prompt = {'Вы заменяете эти файлы:' '' strjoin (existing_files, '') '' 'Можно заменить?' }; гудок; yn = questdlg (подсказка,… dlgTitle,… «Да», «Нет», «Да»); если ~ strcmp (yn, 'Да'), возврат; конец конец
% скачать файлы 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 = 'Установка прошла успешно'; waitfor (msgbox (msg, dlgTitle)); else msg = 'Ошибка установки - подробности см. в окне команд'; waitfor (errordlg (msg, dlgTitle)); конец
конец% roombaInstall
Шаг 3. Код, часть 1: функция отслеживания
Эта функция берет переменную Roomba и изображение с камеры на Roomba и находит центральные координаты xy отслеживаемого объекта
Сохраните этот код в другом файле в той же папке.
function [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) фрагмент изображения (чб); [x, y] = найти (чб); если ~ isempty (x) && ~ isempty (y) xm = round (mean (x)); ym = круглый (среднее (y)); xx = max (1, xm-5): min (xm + 5, size (bw, 1)); yy = max (1, ym-5): min (ym + 5, size (bw, 2)); bwbw = нули (размер (bw), 'uint8'); bwbw (xx, yy) = 255; удерживайте на подзаголовке (1, 2, 2) фрагмент изображения (justBlue + bwbw); конец
Шаг 4. Код, часть 2: цикл while
Этот код управляет роботом Roomba в зависимости от местоположения объекта по осям x и y из функции отслеживания. Это заставит Roomba следить за стенами и скалами и при этом искать синий цвет. Это также будет принимать координаты x и y пути Roomba и создавать соответствующий график с изображением отслеживания. Если датчик удара активирован, он перейдет в раздел электронной почты
% Rover Project
% Джона Зан, Уэйд Прайс, Ноа Слоан% jzahn2, wprice15, nsloan1% Входные данные: значение комнаты, данные камеры, неровности, света и настенные датчики% Цель: следует за космонавтом и избегать препятствий. В случае предупреждения Roomba отправляет электронное письмо% с подробным описанием карты и ее начального положения. % Использование: просто запустите программу с объявлением переменной roomba, а также у% есть движущийся зеленый объект.% Вывод: показывает изображение отслеживания изображения, карту электронных писем и текст пользователю %% После раздела b = 0; % Инициализация переменных c = 0; х = 0; у = 0; тета = 0; while c == 0% Цикл для обнаружения синего объекта и препятствий t = r.timeGet; d = r.getDistance; [xval, yval] = trackingblue (г); обрыв = getCliffSensors (r); % инициализация структур для значений датчиков light = getLightBumpers (r); bump = getBumpers (r); если light.leftCenter> = 10 || light.rightCenter> = 10% Определяет, есть ли стена рядом с r.stop r.setLEDDigits ('help') 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; х = d. * cosd (тета) + х; % x координата комнаты y = d. * sind (theta). * d + y; % y координата вспомогательного участка комнаты (1, 2, 1) plot (x, y, 'bd')% отображает путь и добавляет заголовок заголовка ('Путь к Roomba'); конец
Шаг 5: Код. Часть 3: Раздел электронной почты
Это возьмет намеченный путь и изображение и отправит его на указанный адрес электронной почты
(Здесь показан пример электронного письма)
%% Раздел электронной почты
if b == 1 saveas (gcf, 'rovermap.png')% сохраняет цифру setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Интернет', 'E_mail', '[email protected]'); % mail аккаунт для отправки из setpref ('Интернет', 'SMTP_Username', '[email protected]'); % senders username setpref ('Интернет', 'SMTP_Password', 'gssegsse'); % Senders password props = 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 ('электронное письмо отправлено') end
Рекомендуемые:
Преобразование лампы переменного тока 230 В в питание от USB !: 6 шагов (с изображениями)
Преобразование лампы переменного тока 230 В в питание от USB! Я наткнулся на эти аккуратные лампы с эффектом пламени на eBay, которые мерцают и имеют встроенную тонкую анимацию. Обычно они питаются от сети переменного тока 85-265 В, но для портативных приложений, таких как поддельный пылающий факел или фонарь, это не идеальный вариант. Я модифицировал
Venus Flytrap - ITM осень 2019: 5 шагов
Venus Flytrap - ITM Fall 2019: чего не хватает на всех столах? Механическая мухоловка Venus Flytrap для карандашей, ручек и других предметов
Mars Roomba Project UTK: 4 шага
Mars Roomba Project UTK: ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: ЭТО БУДЕТ РАБОТАТЬ, ТОЛЬКО ЕСЛИ КОМНАТА УСТАНОВЛЕНА ОЧЕНЬ ОПРЕДЕЛЕННЫМ СПОСОБОМ, ЭТА ИНСТРУКЦИЯ СОЗДАНА ДЛЯ УНИВЕРСИТЕТА УЧАЩИХСЯ ТЕННЕССИ И ФАКУЛЬТЕТА И ПРЕДНАЗНАЧЕНА ДЛЯ ИСПОЛЬЗОВАНИЯ. написано и с
DIY Massive 12000 Вт, 230 В, программируемая настройка освещения, 12 каналов: 10 шагов
DIY Massive 12000 Вт, 230 В, программируемая настройка освещения, 12 каналов: Привет всем, В этом проекте я покажу вам, как вы можете сделать массивный контроллер светодиодного освещения мощностью 12000 Вт. Это 12-канальная установка, с помощью этой схемы вы можете управлять любым источником света 230 В. Вы можете сделать различную схему освещения. В этом видео я
Как сделать яблочную гирлянду на осень или снова в школу: 13 шагов (с иллюстрациями)
Как сделать яблочную гирлянду на осень или снова в школу: Анджанетт из RootsAndWingsCo сделала эту очаровательную яблочную гирлянду из фетра и материала. Это был простой проект, который под силу даже тем, кто говорит, что не умеет шить! (Пока вы можете заправить нить в иглу.)