Оглавление:

Roomba, помогающий космонавту: 4 шага
Roomba, помогающий космонавту: 4 шага

Видео: Roomba, помогающий космонавту: 4 шага

Видео: Roomba, помогающий космонавту: 4 шага
Видео: Как чистить робот-пылесос, чтобы он прослужил ДОЛГО⚠️ Правильная очистка iRobot и Xiaomi✅ 2024, Ноябрь
Anonim
Roomba, помогающий космонавту
Roomba, помогающий космонавту

Этот проект выполнен с использованием Raspberry Pi 3 на борту iRobot Create Version 2. MATLAB используется для программирования робота, чтобы он следовал определенным инструкциям, используя его датчики и камеру. Датчики и камеры используются для выполнения определенных задач, которые будут следовать за космонавтом и предоставить ему / ей возможность связаться с его / ее домашней базой, если что-то пойдет не так.

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

Необходимые детали
Необходимые детали
Необходимые детали
Необходимые детали
Необходимые детали
Необходимые детали
Необходимые детали
Необходимые детали

1. iRobot Create Version 2

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

2. Raspberry Pi 3

Raspberry Pi использовался в качестве программируемого устройства для этого проекта. Код разработан для Pi, а прилагаемая версия Pi - 3 (модель B). Можно использовать и другие программируемые платы, такие как Arduino, однако для Arduino и большинства других плат потребуется кодирование, отличное от описанного в другом шаге

3. Модуль камеры Raspberry Pi

Единственное внешнее подключение к Raspberry Pi, необходимое для этого проекта, - это модуль камеры. Модуль камеры является неотъемлемой частью этого проекта, поскольку Roomba будет выполнять задачи только в зависимости от того, что он видит в камере

4. MATLAB 2018a

Вторая самая последняя версия MATLAB, 2018a, использовалась для кодирования, задействованного в этой настройке. Вероятно, что многие другие версии MATLAB будут работать с этим, поскольку программирование roomba существует уже некоторое время

Шаг 2: файлы и конфигурация камеры

Файлы и конфигурация камеры
Файлы и конфигурация камеры

1. Подключение Raspberry Pi и камеры к Roomba

  • Pi может подключаться к iRobot напрямую через микро-USB. Это все, что нужно, чтобы его можно было использовать. Тем не менее, рекомендуется надежно разместить его на Roomba, как показано на рисунках в презентации.
  • Камера имеет прямое соединение с Raspberry Pi, и настоятельно рекомендуется приобрести или изготовить что-нибудь, чтобы держать камеру прямо вверх. В камере нет смысла, если ее нельзя удерживать на месте, чтобы показать то, что видит Roomba.

2. Файлы

  • После того, как все настроено и подключено, убедитесь, что робот перезагружен и готов к работе, удерживая кнопки «Spot» и «Dock» в течение 10 секунд вместе.
  • Здесь в первую очередь нужен MATLAB. Сначала необходимо установить файлы для Roomba, и все, что нужно для этих файлов, - это запустить код, указанный по этой ссылке:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Шаг 3: Начальное тестирование Roomba

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

1. Убедитесь, что вы подключены к той же сети Wi-Fi, что и Roomba. Без этого вы никогда не подключитесь через MATLAB.

2. Узнайте, какой номер назначен вашей Roomba, чтобы вы могли напрямую подключиться к выбранной вами Roomba. Например, если номер вашего roomba равен 30, вы должны подключиться к нему, набрав roomba (30) в командном окне в MATLAB.

3. Roomba можно управлять с помощью структур в MATLAB. Например, если вы установите в своем коде для roomba (30) переменную 'r', робота можно будет переместить вперед с помощью команды r.moveDistance (0.2, 0.1).

4. Roomba может передавать множество различных команд, и их можно увидеть, набрав «doc roomba» в командном окне.

5. Все датчики освещенности, неровностей и обрывов могут быть считаны с помощью команд, представленных в 'doc roomba', но способ иметь постоянное аккуратное меню для просмотра данных датчиков можно увидеть с помощью 'r.testSensors '.

6. После тестирования всего этого программное обеспечение робота для сбора изображений можно использовать для чтения и просмотра сделанных снимков. Базовым кодом для этого будет img = r.getImage и imshow (img);.

7. Значения RGB изображения можно найти с помощью кодов red_mean = mean (mean (img (:,:, 1)));

green_mean = среднее (среднее (img (:,:, 2))); и blue_mean = mean (mean (img (:,:, 3)));.

Шаг 4: Пример кода MATLAB

Пример кода MATLAB
Пример кода MATLAB

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

для i = 1:.1: 3 img = r.getImage; изображение (img) red_mean = среднее (среднее (img (:,:, 1))); green_mean = среднее (среднее (img (:,:, 2))); blue_mean = среднее (среднее (img (:,:, 3))); если red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.left> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || cliff.leftFront <10 || cliff.rightFront <10 || cliff.right700 || light.leftFront> 700 || light.leftCenter> 700 || light.rightCenter> 700 || light.rightFront> 700 || light.right> 700 r.beep () r.beep () r.beep () r.beep () r.beep () r.stop else для i = 1: 2 r.moveDistance (0.2, 0.1) r. setDriveVelocity (.3,.2) r.stop end end end end if green_mean <35 && blue_mean <35% отображается цвет кожи (необходимо отрегулировать в зависимости от цвета кожи космонавта) r.beep (); r.beep (); r.beep (); mail = '[email protected]'; % отправляет электронное письмо, подтверждающее, что костюм отключен psswd = 'yeah'; host = 'smtp.gmail.com'; порт = '465'; emailto = '[email protected]'; m_subject = 'тема'; m_text = 'тест'; setpref ('Интернет', 'E_mail', почта); setpref ('Интернет', 'SMTP_Server', хост); setpref ('Интернет', 'SMTP_Username', почта); setpref ('Интернет', 'SMTP_Password', psswd); props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', почта); props.setProperty ('mail.smtp.host', хост); props.setProperty ('mail.smtp.port', порт); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'истина'); props.setProperty ('mail.smtp.auth', 'истина'); props.setProperty ('mail.smtp.socketFactory.port', порт); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'ложь'); sendmail (emailto, «Помогите!», «Снята форма космонавтов!», img); конец, если red_mean 135 || green_mean 135 || blue_mean 135 для j = 1: 2%, если белый цвет не может быть найден роботом r.turnAngle (360) mail = '[email protected]'; psswd = 'да'; host = 'smtp.gmail.com'; порт = '465'; emailto = '[email protected]'; m_subject = 'тема'; m_text = 'тест'; setpref ('Интернет', 'E_mail', почта); setpref ('Интернет', 'SMTP_Server', хост); setpref ('Интернет', 'SMTP_Username', почта); setpref ('Интернет', 'SMTP_Password', psswd); props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', почта); props.setProperty ('mail.smtp.host', хост); props.setProperty ('mail.smtp.port', порт); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'истина'); props.setProperty ('mail.smtp.auth', 'истина'); props.setProperty ('mail.smtp.socketFactory.port', порт); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'ложь'); sendmail (emailto, «Помогите!», «Не удалось найти космонавта!», img); r.stop конец конец конец

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

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

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