Оглавление:

Roomba Parking Pal: 6 шагов
Roomba Parking Pal: 6 шагов

Видео: Roomba Parking Pal: 6 шагов

Видео: Roomba Parking Pal: 6 шагов
Видео: Roomba I3 freaking rocks 2024, Июль
Anonim
Roomba Parking Pal
Roomba Parking Pal

В этом проекте используется программируемая Roomba iRobot Create, MATLAB r2018a и MATLAB mobile. Используя эти три средства и наши знания кодирования, мы запрограммировали iRobot Create на интерпретацию цветов и использование встроенных датчиков для выполнения задач. Этот проект зависит от связи Raspberry Pi и MATLAB для выполнения этих задач.

Шаг 1: материалы

Материалы
Материалы
Материалы
Материалы

1. iRobot Create Robot

2. MATLAB r2018a

3. Raspberry Pi

4. Модуль камеры

5. Стойка стабилизатора камеры с трехмерной печатью.

6. Смартфон с установленным MATLAB Mobile.

7. Ноутбук / компьютер с установленным MATLAB.

Шаг 2: Подключение

Этот шаг касается подключения Raspberry Pi к роботу, во-вторых, подключения робота к вашему компьютеру и подключения смартфона к компьютеру.

Самая простая часть этого процесса - подключить Raspberry Pi к вашему роботу, поскольку Raspberry Pi крепится к верхней части робота. От робота идет шнур, и все, что вам нужно сделать, это подключить к Raspberry Pi сбоку.

Следующим шагом является подключение робота к вашему компьютеру, чтобы вы могли запускать команды, которые должен выполнять робот. Первое, что вам нужно сделать, это подключить компьютер к беспроводной сети, которую создает Roomba. Теперь рекомендуется использовать значок Set Path в MATLAB, чтобы установить путь, чтобы вы могли использовать функции на панели инструментов Roomba из MATLAB. Каждый раз, когда вы начинаете и заканчиваете использование робота, вы должны выполнить жесткую перезагрузку робота «Приветствие двумя пальцами», что означает, что вы удерживаете кнопки док-станции и точки в течение десяти секунд, пока не погаснет свет, указывающий на то, что нужно отпустить. Вы успешно выполнили этот аппаратный сброс, если слышите, как робот играет короткую шкалу. Затем вы должны подключиться к roomba, используя строку кода типа «r = roomba (x)», где «x» - это номер, назначенный вашему роботу.

Наконец, вам необходимо загрузить MATLAB mobile на любое мобильное устройство, которое вы будете использовать для этого проекта, и это приложение доступно как на устройствах Android, так и на устройствах Apple. После установки приложения вам нужно будет войти в систему, используя свои учетные данные. Затем вы должны подключить это устройство к своему компьютеру, используя вкладку с надписью «Еще» -> затем нажмите «Настройки» -> затем нажмите «Добавить компьютер». Появится экран, показанный на рисунках выше. Следующий шаг, который вы должны выполнить, - это просто подключить и забрать запрашиваемую информацию. После успешного подключения вы сможете вызывать функции, которые вы определяете на своем компьютере, на своем телефоне для управления роботом.

Шаг 3: Логическое создание кода MATLAB для использования датчиков

Логическое создание кода MATLAB для использования датчиков
Логическое создание кода MATLAB для использования датчиков

Код будет проще всего создать, когда большая его часть находится внутри цикла while, так что roomba может постоянно обновлять допустимые значения, на которые он смотрит. Если есть ошибка, MATLAB отобразит ошибку и место ее появления в коде, что сделает устранение неполадок относительно простым.

Разработанный в MATLAB r2018a, этот код использует стандартные наборы инструментов, набор инструментов iRobot Create, а также мобильный набор инструментов MATLAB. Roomba, используемый в этом примере, обозначен как 26, а r = roomba (26) нужно запустить только один раз, чтобы полностью связаться с roomba.

Код:

функция parkassist (x), если x == 1

r = roomba (26)% подключается к roomba

пока правда

r.setDriveVelocity (.05,.05)% устанавливает меньшую скорость движения Roomba.

bump = r.getBumpers% получает данные от датчиков удара

cliff = r.getCliffSensors% получает данные от датчиков обрыва

light = r.getLightBumpers% получает данные от датчиков светового удара

img = r.getImage;% считывает камеру робота

red_mean = mean (mean (img (:,:, 1)))% читает среднее количество красных пикселей

green_mean = mean (mean (img (:,:, 2)))% читает среднее количество зеленых пикселей

blue_mean = mean (mean (img (:,:, 3)))% читает среднее количество синих пикселей

если bump.front == 1% считывает передние датчики неровностей

r.stop% останавливает roomba

msgbox ('Path Obscured!', 'Parking Assistant Message')% отображает сообщение о том, что путь скрыт break% завершает цикл

elseif green_mean> 150

r.stop% останавливает roomba

cont = questdlg ('Продолжить?', 'Путь завершен')% отображает окно вопроса с просьбой продолжить

if cont == 'Да'

parkassist (1)% перезапускает код

еще

конец

break% завершает цикл

elseif red_mean> 140

r.turnAngle (45)% поворачивает румбу на 45 градусов

r.timeStart% запускает счетчик времени

пока правда

r.setDriveVelocity (.05,.05)% устанавливает скорость румбы

time = r.timeGet% присваивает время переменной

bump = r.getBumpers% получает данные от датчиков удара

cliff = r.getCliffSensors% получает данные от датчиков обрыва

light = r.getLightBumpers% получает данные от датчиков светового удара

img = r.getImage;% считывает камеру робота

red_mean = mean (mean (img (:,:, 1)))% читает среднее количество красных пикселей

green_mean = mean (mean (img (:,:, 2)))% читает среднее количество зеленых пикселей

blue_mean = mean (mean (img (:,:, 3)))% читает среднее количество синих пикселей

если blue_mean> 120

r.moveDistance (-0.01)% перемещает Roomba на заданное расстояние назад. song Play (r, 'T400, C, D, E, F, G, A, B, C ^', 'true')% воспроизводит возрастающую музыкальную гамму

msgbox ('Water Found!', 'Parking Assistant Message')% отображает сообщение о том, что вода была обнаружена. r.turnAngle (-80)% поворачивает roomba на 80 градусов

break% завершает текущий цикл

elseif light.rightFront> 25 || light.leftFront> 25% считывает датчики светового удара

r.moveDistance (-0.01)% перемещает комнатку назад на заданное расстояние

r.turnAngle (-35)% поворачивает румбу на 35 градусов

break% завершает текущий цикл

elseif cliff.rightFront <2500 && cliff.leftFront <2500% считывает оба датчика обрыва

r.moveDistance (-0.1)% перемещает комнатку назад на заданное расстояние

r.turnAngle (-80)% поворачивает Roomba на 80 градусов

break% завершает текущий цикл

иначе время> = 3

r.stop% останавливает roomba

Contin = questdlg ('Станция свободна, продолжить?', 'Сообщение помощника по парковке')% спрашивает, должна ли Roomba продолжать работу, если contin == 'Да'

r.turnAngle (-90)% поворачивает румбу на 90 градусов

parkassist (1)% перезапускает функцию

еще

r.stop% останавливает Roomba

конец

еще

конец

конец

elseif cliff.rightFront <2500 && cliff.leftFront <2500% считывает оба датчика обрыва

r.moveDistance (-0.1)% перемещает комнатку назад на заданное расстояние

r.turnAngle (-90)% поворачивает roomba на 90 градусов

elseif cliff.rightFront <2500% считывает правый датчик обрыва

r.turnAngle (-5)% слегка поворачивает румбу в направлении, противоположном датчику обрыва.

elseif cliff.leftFront <2500% считывает левый датчик обрыва

r.turnAngle (5)% слегка поворачивает румбу в направлении, противоположном датчику обрыва.

еще

конец

конец

конец

Шаг 4: Тестирование кода и робота

Тестирование кода и робота
Тестирование кода и робота
Тестирование кода и робота
Тестирование кода и робота
Тестирование кода и робота
Тестирование кода и робота

После разработки кода следующим шагом было тестирование кода и робота. Поскольку в коде можно сделать множество различных настроек, таких как угол поворота робота, скорость его движения и пороговые значения для каждого цвета, лучший способ определить эти значения для вашего робота - это проверить их и меняйте по мере продвижения. Для каждого рабочего дня мы постоянно меняли эти значения, поскольку некоторые из них зависят от среды, в которой работает ваш робот. Лучший способ, который мы нашли, - это поместить Roomba на тот путь, по которому вы хотите, чтобы он шел, и чтобы достаточно высокий барьер, чтобы камера не могла определять цвета, которые вам не нужны. Следующим шагом является запуск и отображение нужных вам цветов, когда вы хотите, чтобы он выполнил эту задачу. На ходу, если вы видите проблему, лучше всего вдавить передний бампер, заставив его остановиться, а затем изменить параметр, с которым у вас возникли проблемы.

Шаг 5: Распознавание ошибки

После завершения каждого завершенного проекта всегда есть источники ошибок. Для нас мы столкнулись с ошибкой из-за того простого факта, что робот не точно определяет угол, на который он поворачивается, поэтому, если вы скажете ему повернуть на 45 градусов, он будет неточным. Еще одним источником ошибок для нас было то, что иногда робот выходит из строя, и вам нужно выполнить его полный сброс, прежде чем он снова заработает. Основным последним источником ошибок для нас было то, что один и тот же код не будет иметь одинаковый эффект на разных роботов, поэтому вам, возможно, придется набраться терпения и соответствующим образом настроить.

Шаг 6: Заключение

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

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