Оглавление:

Проект Roomba MATLAB: 5 шагов
Проект Roomba MATLAB: 5 шагов

Видео: Проект Roomba MATLAB: 5 шагов

Видео: Проект Roomba MATLAB: 5 шагов
Видео: Моделирование рыночных рисков с MATLAB 2024, Ноябрь
Anonim
Roomba MATLAB Project
Roomba MATLAB Project

Текущий план НАСА для марсохода состоит в том, чтобы он был сборщиком данных и странствовал по Марсу, собирая образцы почвы, чтобы вернуть их на Землю, чтобы ученые могли увидеть, были ли на планете какие-либо предыдущие формы жизни. Кроме того, марсоход отправляет изображения ученым, чтобы они могли помочь в навигации марсохода и исправить любые проблемы, которые могут возникнуть.

Идея нашей группы для нашего проекта заключается в том, чтобы марсоход делал то же самое, что и марсоход НАСА, который покинет Землю в 2020 году, но также для того, чтобы картографировать географию земли. Roomba сможет почувствовать обрыв и остановиться до того, как он упадет, а затем вернуться назад, повернуться и изменить свой курс, чтобы он не упал и не получил повреждений. Другая наша идея, интегрированная в наш проект, заключается в том, чтобы Roomba мог наносить на карту ориентиры, которые он видит, и показывать график каждый раз, когда цикл завершается и его курс завершается.

Это руководство предназначено для всех, кто хотел бы создать такой же тип кода для своего Roomba.

Шаг 1: Шаг 1: Необходимые материалы

Шаг 1. Необходимые материалы
Шаг 1. Необходимые материалы
Шаг 1. Необходимые материалы
Шаг 1. Необходимые материалы

Тебе понадобится:

  1. Roomba
  2. MATLAB
  3. Этот файл для запуска Roomba
  4. Плоская поверхность
  5. Поверхность стола, выступающая в роли "утеса"

Шаг 2: Шаг 2: Настройка / получение кода для Roomba

Шаг 2: Настройка / получение кода для Roomba
Шаг 2: Настройка / получение кода для Roomba

Ваш экран будет выглядеть так, как только вы введете файлы.

Шаг 3: Шаг 3: Настройка датчиков высоты / светодиодного освещения

Этот код сообщит вашей Roomba, на какой именно угол повернуть, проверит информацию о батарее, сообщит вашей Roomba, с какой скоростью двигаться, и будет проверять, нет ли человека через камеру Roomba. Он также издаст звуковой сигнал, если опознает человека, и остановится перед тем, как спуститься со скалы.

% попробуйте rob.setLEDDigits ('') x = 0; у = 0; тета = 0; препятствие = ; цикл = 1; AngCorr = @ (x) x + 3,059. * X. ^ 0,4205; % Функция для корректировки углов поворота, когда rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0.1)% Go% Проверить наличие личности, если AA_checkperson (rob) rob.beep end% Проверить датчик высоты, если AA_cliffcheck (rob) rob.stop rob.setLEDDigits ('Обрыв') пауза (0,5) препятствие (цикл) = 2; AA_cliffbeep (rob)% Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end

Шаг 4: Шаг 4: поиск препятствий

Этот код заставит Roomba проверить наличие предметов вокруг него и проверит датчик удара, чтобы убедиться, что он останавливается, прежде чем он повредит себя.

% Проверить датчик освещенности, если AA_lightcheck (rob) rob.stop rob.setLEDDigits ('Wall') pause (0.5) преграда (цикл) = 1; % Wall AA_wallbeep (rob)% Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end% Проверить датчик удара, если AA_bumpcheck (rob) rob.stop rob.setLEDDigits ('Wall') pause (0.5) препятствие (цикл) = 1; % Wall AA_wallbeep (rob)% Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end% Если нет, если isempty (препятствие) препятствие (цикл) = 0; elseif длина (препятствие) <цикл препятствие (цикл) = 0; конец

Шаг 5: Шаг 5: Построение графика

Шаг 5: Построение графика
Шаг 5: Построение графика

Этот код скажет вашей Roomba составить график того, с чем она сталкивается в своем путешествии. Подобный сюжет появится после того, как Roomba остановится.

% Получить позицию d = rob.getDistance; если цикл == 1 тета (цикл) = 0; х (цикл) = d. * cosd (тета (цикл)); % общего пройденного расстояния в x y (цикл) = d. * sind (theta (цикл)); % общего пройденного расстояния в y else theta (цикл) = theta (цикл-1) + rob.getAngle; х (цикл) = d. * cosd (тета (цикл)) + x (цикл-1); % общего пройденного расстояния в x y (цикл) = d. * sind (theta (цикл)). * d + y (цикл-1); % общего пройденного расстояния в конце y% Условие разрыва, если rob.getButtons.clean break end% Приращение цикла cycle = cycle + 1; end rob.stop for i = 1: цикл, если препятствие (i) == 1% График стены (x (i), y (i), 'Marker', 'square', 'MarkerEdgeColor', 'r') elseif препятствие (i) == 2% График обрыва (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') конечный текст (.9, 0.9, sprintf ('Square = Wall / nCircle = Cliff '),' Units ',' normalized ') удерживать конец% сигнала бедствия, пока истина rob.beep pause (3) if rob.getButtons.clean break end end% catch% rob.stop% end

Рекомендуемые: