Оглавление:

Roomba Scout Explorer: 8 шагов
Roomba Scout Explorer: 8 шагов

Видео: Roomba Scout Explorer: 8 шагов

Видео: Roomba Scout Explorer: 8 шагов
Видео: Робот-разведчик от Moorebot. Настройка распаковки. Монитор привода дрона и самостоятельная зарядка при парковке. 2024, Ноябрь
Anonim
Roomba Scout Explorer
Roomba Scout Explorer

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

Что касается уникальности, мы сосредоточились на создании диаграммы, показывающей каждый путь, по которому робот берет начало. Кроме того, робот сможет подсчитывать количество объектов в своей окрестности в панорамном стиле.

Шаг 1: оборудование

-Румба с присоединяемой камерой (с известным именем)

-Подключенный сервер

-Windows 10 / Mac с подключением к Интернету

-Яркая платформа

-Темный пол

-Любые случайные предметы монохроматического дизайна.

Шаг 2: Настройка MATLAB

Настройка MATLAB
Настройка MATLAB

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

После загрузки MATLAB 2016a и далее создайте папку, содержащую эти файлы роботов, вставьте следующий файл MATLAB ниже в папку и запустите его, чтобы установить оставшиеся необходимые файлы roomba.

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

Теперь используйте команду ниже в командном окне, чтобы настроить roomba:

r = roomba (#).

Символ # - это «номер» указанного Roomba; однако, если вам просто нужен симулятор Roomba, просто введите следующую команду:

r = roomba (0).

Моделирование рекомендуется для тестирования моделей движения.

Если вам интересно, каким командам может следовать Roomba, введите в командное окно следующее:

doc roomba.

Для получения дополнительных сведений посетите следующий веб-сайт:

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

Шаг 3: Функция: движение

Функция: движение
Функция: движение
Функция: движение
Функция: движение

Что касается движения, Roomba должен двигаться автоматически в течение определенного периода времени, указанного во входных данных. Цель движения робота - правильно реагировать, когда его датчики (бамперы, световые бамперы и датчики обрыва) меняются при наличии различных препятствий. Эта часть будет выступать в качестве основы для всех команд Roomba, поскольку позже в код будут добавлены дополнительные функции. Требовались некоторые уточнения:

-Чтобы уменьшить урон, робот должен снизить скорость до более низкой скорости.

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

- Через некоторое время румба остановится и сделает снимки окружающей местности.

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

Шаг 4: Функция: обработка изображений

Функция: обработка изображений
Функция: обработка изображений

В соответствии с запросом нам было поручено изменить данные изображения (или нескольких изображений), которые были получены камерой робота, для чего мы решили заставить Roomba «подсчитывать» количество объектов, которые он видит на изображении.

Мы следовали технике, когда MATLAB рисовал границы вокруг черных объектов, которые контрастируют с белым фоном. Однако эта функция может вызывать затруднения на открытом пространстве, поскольку камера воспринимает разные формы и цвета, что приводит к необычно высоким показателям.

Обратите внимание, что эта функция не может работать в симуляторе, так как камера не предусмотрена; если попытаться сделать это, произойдет ошибка, объявляющая, что можно использовать только матрицу (:,:, 3).

Шаг 5: Функция: отображение

Функция: отображение
Функция: отображение
Функция: отображение
Функция: отображение
Функция: отображение
Функция: отображение
Функция: отображение
Функция: отображение

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

Чтобы добавить ограничение на продолжительность времени выполнения функции, для целей тестирования использовалось ограничение n <20 для цикла while.

Имейте в виду, что из-за сложности кода возникает больше ошибок, поскольку сегмент кода выполняется в течение длительного времени; Судя по предыдущим тестам, десять неровностей - это количество баллов до появления значительных ошибок.

Шаг 6: Сопоставление

Сопоставление
Сопоставление
Сопоставление
Сопоставление
Сопоставление
Сопоставление
Сопоставление
Сопоставление

Поскольку все это будет помещено в один файл, мы создали функцию, используя каждый из двух предыдущих шагов в качестве подфункций. Окончательный вариант был сделан со следующей модификацией функции redux под названием «recon». Чтобы избежать путаницы для MATLAB, скрипты «counter» и «rombplot3» были переименованы как встроенные функции «CountR» и «plotr» соответственно.

В окончательную версию пришлось внести несколько изменений в отличие от предыдущих скриптов:

-Происхождение всегда будет отмечено красным кружком

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

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

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

-Изображения изменены, чтобы удалить верхнюю часть из-за того, что отметка времени потенциально мешает результатам

- Границы не будут засчитаны как объект из-за довольно большого количества приобретенных

-Некоторые переменные были изменены, поэтому во избежание путаницы используйте версии выше для справки.

Шаг 7: Тестирование

Тестирование
Тестирование

Тесты для каждого отдельного компонента временами оказывались довольно неоднозначными, поэтому потребовались изменения определенных предустановленных значений. Тематический фон, на котором мы хотели проверить возможности робота в закрытом помещении, просто представлял собой белую доску, лежащую на гораздо более темном полу. Вы можете разбрасывать предметы по площади; заставить их действовать как объекты, на которые можно натолкнуться, или объекты, находящиеся на удалении от движущейся зоны робота.

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

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

Фактическое время, необходимое для полного выполнения функции, всегда превышает запрошенное время, что имеет смысл, учитывая, что функция не может остановиться в середине одного из восстановлений. К сожалению, у этой версии подсчета изображений есть свои проблемы, особенно в областях, которые либо в основном монохроматичны, либо различаются по яркости; поскольку он пытается различать два оттенка, он склонен воспринимать нежелательные объекты, поэтому всегда считает до безумно больших чисел.

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

Заключение
Заключение

Хотя эта задача была очень авантюрной и творческой работой, которая принесла радость облегчения, я, по моим личным наблюдениям, мог видеть большое количество ошибок, которые могли быть проблематичными, как в коде, так и в поведении робота.

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

Тем не менее, это долгий, но интеллектуально стимулирующий проект, который послужил интересным обучающим опытом для применения кодов и команд, чтобы напрямую влиять на поведение реального робота.

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