Оглавление:
- Шаг 1. Расходные материалы
- Шаг 2: Постановка проблемы
- Шаг 3. Пульт дистанционного управления Bluetooth
- Шаг 4: Распознавание воздействия
- Шаг 5: признание жизни
- Шаг 6: Запустите
Видео: Mars Roomba: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
Это руководство расскажет вам, как работать с вакуумным ботом Roomba, управляемым Raspberry Pi. Мы будем использовать операционную систему через MATLAB.
Шаг 1. Расходные материалы
Что вам нужно будет собрать для реализации этого проекта:
- Робот-пылесос Create2 Roomba от iRobot
- Raspberry Pi
- Камера Raspberry Pi
- Последняя версия MATLAB
- Набор инструментов для установки Roomba для MATLAB
- Приложение MATLAB для сотового устройства
Шаг 2: Постановка проблемы
Нам было поручено использовать MATLAB для разработки марсохода, который можно было бы использовать на Марсе, чтобы помочь ученым в сборе данных о планете. В нашем проекте мы рассмотрели следующие функции: дистанционное управление, распознавание столкновений с объектами, распознавание воды, распознавание жизни и обработка изображений. Для достижения этих целей мы использовали команды панели инструментов Roomba для управления множеством функций Create2 Roomba от iRobot.
Шаг 3. Пульт дистанционного управления 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 должен быть либо в отдельном файле, либо отделен от остальной части кода с помощью %%.
Наслаждайтесь использованием своего робота !!
Рекомендуемые:
Превращение Roomba в марсоход: 5 шагов
Превращение вашего Roomba в марсоход:
Roomba Bot the Bulider: 5 шагов (с изображениями)
Roomba Bot the Bulider: Bot the Builder - это румба с «грабберами». прикрепленный к передней части сможет перемещать предметы. Код с ним настроен на запись первого движения с помощью графического интерфейса пользователя, которым вы можете управлять одним щелчком мыши. После
Mars Roomba Project UTK: 4 шага
Mars Roomba Project UTK: ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: ЭТО БУДЕТ РАБОТАТЬ, ТОЛЬКО ЕСЛИ КОМНАТА УСТАНОВЛЕНА ОЧЕНЬ ОПРЕДЕЛЕННЫМ СПОСОБОМ, ЭТА ИНСТРУКЦИЯ СОЗДАНА ДЛЯ УНИВЕРСИТЕТА УЧАЩИХСЯ ТЕННЕССИ И ФАКУЛЬТЕТА И ПРЕДНАЗНАЧЕНА ДЛЯ ИСПОЛЬЗОВАНИЯ. написано и с
IRobot Create-Mars Expedition Rover Mark I: 4 шага
IRobot Create-Mars Expedition Rover Mark I. В этом руководстве вы узнаете, как настроить iRobot Create с использованием кода MatLab. Ваш робот будет иметь возможность искать минералы, различая формы, маневрировать на пересеченной местности с помощью датчиков обрыва, а также может
От Roomba до вездехода всего за 5 шагов !: 5 шагов
От Roomba до Rover всего за 5 шагов! Роботы Roomba - это веселый и простой способ окунуться в мир робототехники. В этом руководстве мы подробно расскажем, как превратить простой Roomba в управляемый ровер, который одновременно анализирует свое окружение. Список деталей1. MATLAB2.) Roomb