Оглавление:

Mars Roomba: 6 шагов
Mars Roomba: 6 шагов

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

Видео: Mars Roomba: 6 шагов
Видео: СТЕП АЭРОБИКА базовый уровень УРОК 0 с Константином Баевым 2024, Ноябрь
Anonim
Марс Roomba
Марс Roomba

Это руководство расскажет вам, как работать с вакуумным ботом Roomba, управляемым Raspberry Pi. Мы будем использовать операционную систему через MATLAB.

Шаг 1. Расходные материалы

Что вам нужно будет собрать для реализации этого проекта:

  • Робот-пылесос Create2 Roomba от iRobot
  • Raspberry Pi
  • Камера Raspberry Pi
  • Последняя версия MATLAB
  • Набор инструментов для установки Roomba для MATLAB
  • Приложение MATLAB для сотового устройства

Шаг 2: Постановка проблемы

Постановка проблемы
Постановка проблемы

Нам было поручено использовать MATLAB для разработки марсохода, который можно было бы использовать на Марсе, чтобы помочь ученым в сборе данных о планете. В нашем проекте мы рассмотрели следующие функции: дистанционное управление, распознавание столкновений с объектами, распознавание воды, распознавание жизни и обработка изображений. Для достижения этих целей мы использовали команды панели инструментов Roomba для управления множеством функций Create2 Roomba от iRobot.

Шаг 3. Пульт дистанционного управления Bluetooth

Пульт дистанционного управления Bluetooth
Пульт дистанционного управления Bluetooth

На этом слайде будет показан код для управления перемещением Roomba с использованием возможностей Bluetooth вашего смартфона. Для начала загрузите приложение MATLAB на свой смартфон и войдите в свою учетную запись Mathworks. После входа в систему перейдите в «Еще», «Настройки» и подключитесь к своему компьютеру, используя его IP-адрес. После подключения вернитесь к «еще» и выберите «датчики». Коснитесь третьего датчика на верхней панели инструментов экрана и коснитесь кнопки «Пуск». Теперь ваш смартфон - это пульт дистанционного управления!

Код выглядит следующим образом:

а 0 == 0

пауза (.5)

PhoneData = M. Orientation;

Ази = PhoneData (1);

Шаг = PhoneData (2);

Сторона = Данные телефона (3);

bumps = r.getBumpers;

если Сторона> 80 || Сторона <-80

r.stop

r.beep ('C, E, G, C ^, G, E, C')

перерыв

elseif Сторона> 20 && Сторона <40

r.turnAngle (-5);

elseif Сторона> 40

r.turnAngle (-25);

elseif Side-40

r.turnAngle (5);

elseif Сторона <-40

r.turnAngle (25);

конец

если Шаг> 10 && Шаг <35

r.moveDistance (.03)

elseif Шаг> -35 && Шаг <-10

r.moveDistance (-. 03)

конец

конец

Шаг 4: Распознавание воздействия

Признание воздействия
Признание воздействия

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

Код показан ниже:

а 0 == 0

bumps = r.getBumpers;

r.setDriveVelocity (.1)

если bumps.left == 1

msgbox ('Уф!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.front == 1

msgbox ('Уф!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (90)

r.setDriveVelocity (.2)

elseif bumps.right == 1

msgbox ('Уф!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

elseif bumps.leftWheelDrop == 1

msgbox ('Уф!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.rightWheelDrop == 1

msgbox ('Уф!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

конец

конец

Шаг 5: признание жизни

Признание жизни
Признание жизни

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

Код выглядит следующим образом:

t = 10;

я = 0;

а t == 10

img = r.getImage; imshow (img)

пауза (0,167)

я = я + 1;

red_mean = среднее (среднее (img (:,:, 1)));

blue_mean = среднее (среднее (img (:,:, 3)));

green_mean = среднее (среднее (img (:,:, 2)));

белое_значение = (синее_значение + зеленое_среднее + красное_значение) / 3; % хочу, чтобы это значение примерно 100

nine_plus_ten = 21;

green_threshold = 125;

blue_threshold = 130;

white_threshold = 124;

red_threshold = 115;

а nine_plus_ten == 21% зеленый - жизнь

if green_mean> green_threshold && blue_mean <blue_threshold && red_mean <красный_threshold

r.moveDistance (-. 1)

a = msgbox ('возможный источник жизни найден, местоположение нанесено на карту');

пауза (2)

удалить (а)

[y2, Fs2] = audioread ('z_speak2.wav');

звук (y2, Fs2)

пауза (2)

% plant = r.getImage; % imshow (завод);

% save ('plant_img.mat', завод ');

% расположение участка зеленым цветом

я = 5;

перерыв

еще

nine_plus_ten = 19;

конец

конец

nine_plus_ten = 21;

в то время как nine_plus_ten == 21% синий - woder

if blue_mean> blue_threshold && green_mean <green_threshold && white_mean <white_threshold && red_mean <красный_threshold

r.moveDistance (-. 1)

a = msgbox ('источник воды обнаружен, местоположение нанесено на карту');

пауза (2)

удалить (а)

[y3, Fs3] = audioread ('z_speak3.wav');

звук (y3, Fs3);

% woder = r.getImage; % imshow (woder)

% save ('water_img.mat', woder)

% расположение участка синим цветом

я = 5;

перерыв

еще

nine_plus_ten = 19;

конец

конец

nine_plus_ten = 21;

в то время как nine_plus_ten == 21% белый - инопланетяне monkaS

если white_mean> white_threshold && blue_mean <blue_threshold && green_mean <green_threshold

[y5, Fs5] = audioread ('z_speak5.wav');

звук (y5, Fs5);

пауза (3)

r.setDriveVelocity (0,.5)

[ys, Fss] = audioread ('z_scream.mp3');

звук (ys, Fss);

пауза (3)

r.stop

% alien = r.getImage; % imshow (чужой);

% save ('alien_img.mat', пришелец);

я = 5;

перерыв

еще

nine_plus_ten = 19;

конец

конец

если я == 5

а = 1; % угол поворота

t = 9; % завершить большой цикл

я = 0;

конец

конец

Шаг 6: Запустите

После того, как весь код написан, объедините все в один файл и вуаля! Теперь ваш робот Roomba будет полностью функциональным и будет работать, как рекламируется! Однако элемент управления Bluetooth должен быть либо в отдельном файле, либо отделен от остальной части кода с помощью %%.

Наслаждайтесь использованием своего робота !!

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