Оглавление:
Видео: Roomba Explorer: 4 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
Используя MATLAB и Create2 Robot от iRobot, этот проект будет исследовать различные области неизвестного местоположения. Мы использовали датчики робота, чтобы помочь маневрировать на опасной местности. Получив фотографии и видеопоток с подключенного Raspberry Pi, мы смогли определить препятствия, с которыми столкнется робот, и они будут классифицированы.
Детали и материалы
Для этого проекта вам понадобится
-компьютер
-новейшая версия MATLAB (для этого проекта использовался MATLAB R2018b)
- набор инструментов roombaInstall
-iRobot's Create2 Робот
-Raspberry Pi с камерой
Шаг 1: Инициализация и датчики
Перед началом любого программирования мы загрузили набор инструментов roombaInstall, который позволял получить доступ к различным компонентам робота.
Изначально мы создали графический интерфейс для инициализации любого робота. Для этого вам нужно ввести номер Робота в качестве входных данных. Это предоставит доступ для запуска нашей программы роботу. Мы работали над тем, чтобы заставить робота маневрировать через множество ландшафтов, с которыми он может столкнуться. Мы внедрили датчики обрыва, датчики световых ударов и датчики физических столкновений, используя их выходы для отключения робота с целью изменения его скорости и / или направления. Когда какой-либо из шести датчиков светового удара обнаруживает объект, значение, которое они выводят, будет уменьшаться, в результате чего скорость робота уменьшится, чтобы избежать столкновения на полной скорости. Когда робот наконец сталкивается с препятствием, датчики физического удара сообщат значение больше нуля; из-за этого робот остановится, поэтому больше не будет столкновений, и можно будет задействовать больше функций. Для датчиков обрыва они будут считывать яркость окружающей среды. Если значение больше 2800, мы определили, что робот находится на устойчивой земле и в безопасности. Но, если значение меньше 800, датчики обрыва будут обнаруживать обрыв, немедленно останавливаясь, чтобы не упасть. Было определено, что любое промежуточное значение представляет воду и заставит робота прекратить свое действие. Используя вышеуказанные датчики, скорость робота изменяется, что позволяет нам лучше определять, существует ли какая-либо опасность.
Ниже приведен код (из MATLAB R2018b)
%% Инициализация
dlgPrompts = {'Номер Roomba'};
dlgTitle = 'Выберите Roomba';
dlgDefaults = {''};
opts. Resize = 'вкл';
dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts)% Создать окно, в котором пользователю предлагается ввести свой номер Roomba
n = str2double (dlgout {1});
r = roomba (n); % Инициализирует указанную пользователем Roomba %% Определение скорости с помощью датчиков светового удара при истинном s = r.getLightBumpers; % получить датчики светового удара
lbumpout_1 = extractfield (s, 'влево'); % принимает числовые значения датчиков и делает их более удобными для использования lbumpout_2 = extractfield (s, 'leftFront');
lbumpout_3 = extractfield (s, 'leftCenter');
lbumpout_4 = extractfield (s, 'rightCenter');
lbumpout_5 = extractfield (s, "rightFront");
lbumpout_6 = extractfield (s, 'право');
lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6]% преобразует значения в матрицу
sLbump = сортировка (фунты); % сортирует матрицу к наименьшему значению, может быть извлечен
lowLbump = sLbump (1); скорость = 0,05 + (lowLbump) *. 005% с использованием самого низкого значения, которое представляет близкие препятствия, для определения скорости, более высокая скорость, когда ничего не обнаружено
r.setDriveVelocity (скорость, скорость)
конец
% Физических бамперов
b = r.getBumpers; % Вывод истина, ложь
bsen_1 = extractfield (b, 'слева')
bsen_2 = extractfield (b, 'право')
bsen_3 = extractfield (b, 'перед')
bsen_4 = extractfield (b, 'leftWheelDrop')
bsen_5 = extractfield (b, 'rightWheelDrop')
bumps = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = sum (бездельники)
если tbump> 0 r.setDriveVelocity (0, 0)
конец
% Датчики обрыва
c = r.getCliffSensors %% 2800 безопасно, иначе вода
csen_1 = extractfield (c, 'слева')
csen_2 = extractfield (c, 'право')
csen_3 = extractfield (c, 'leftFront')
csen_4 = extractfield (c, 'rightFront')
скалы = [csen_1, csen_2, csen_3, csen_4]
ordcliff = сортировка (скалы)
если ordcliff (1) <2750
r.setDriveVelocity (0, 0)
если обрыв <800
disp 'обрыв'
еще
disp 'вода'
конец
r. TurnAngle (45)
конец
Шаг 2: Получение данных
После срабатывания датчиков физического удара робот внедрит свой на борту Raspberry Pi, чтобы сфотографировать препятствие. После фотографирования, используя распознавание текста, если на изображении есть текст, робот определит, что это за препятствие и что оно говорит.
img = r.getImage; imshow (img);
imwrite (img, 'imgfromcamera.jpg')
photo = imread ('imgfromcamera.jpg')
ocrResults = ocr (фото)
признанныйТекст = ocrResults. Text;
фигура;
imshow (фото) текст (220, 0, распознанный текст, 'BackgroundColor', [1 1 1]);
Шаг 3: Завершение миссии
Когда робот определяет, что препятствие - ДОМ, он завершит свою миссию и останется дома. После завершения миссии робот отправит по электронной почте уведомление о том, что он вернулся домой, и отправит изображения, которые он сделал во время своего путешествия.
% Отправка электронной почты
setpref ('Интернет', 'SMTP_Server', 'smtp.gmail.com');
setpref ('Интернет', 'Электронная почта', '[email protected]'); % почтовый аккаунт для отправки из setpref ('Интернет', 'SMTP_Username', 'введите адрес электронной почты отправителя'); % senders username setpref ('Интернет', 'SMTP_Password', 'введите пароль отправителя'); % Отправителя пароль
props = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'истина'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');
sendmail ('Введите адрес электронной почты для получения', 'Roomba', 'Roomba вернулся домой !!', 'imgfromcamera.jpg')% почтовый аккаунт для отправки
На этом робот готов.
Шаг 4: Заключение
Включенная программа MATLAB отделена от всего сценария, который использовался с роботом. В окончательном варианте обязательно поместите весь код, за исключением этапа инициализации, в цикл while, чтобы убедиться, что бамперы постоянно работают. Эту программу можно редактировать в соответствии с потребностями пользователя. Показана конфигурация нашего робота.
* Напоминание: не забывайте, что набор инструментов roombaInstall необходим для взаимодействия MATLAB с роботом и бортовым Raspberry Pi.
Рекомендуемые:
Mars Roomba Project UTK: 4 шага
Mars Roomba Project UTK: ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: ЭТО БУДЕТ РАБОТАТЬ, ТОЛЬКО ЕСЛИ КОМНАТА УСТАНОВЛЕНА ОЧЕНЬ ОПРЕДЕЛЕННЫМ СПОСОБОМ, ЭТА ИНСТРУКЦИЯ СОЗДАНА ДЛЯ УНИВЕРСИТЕТА УЧАЩИХСЯ ТЕННЕССИ И ФАКУЛЬТЕТА И ПРЕДНАЗНАЧЕНА ДЛЯ ИСПОЛЬЗОВАНИЯ. написано и с
Сочетания клавиш для Internet Explorer !!: 4 шага
Сочетания клавиш для Internet Explorer !!: Это руководство покажет вам несколько полезных сочетаний клавиш для Internet Explorer. Пожалуйста, подпишитесь на мой канал Спасибо
Roomba, помогающий космонавту: 4 шага
Roomba, помогающий астронавту: в этом проекте используется Raspberry Pi 3 на борту iRobot Create Version 2. MATLAB используется для программирования робота, чтобы он следовал определенным инструкциям, используя его датчики и камеру. Датчики и камеры используются для выполнения определенных задач
Roomba Scout Explorer: 8 шагов
Roomba Scout Explorer: как один из самых ожидаемых и тщательно исследуемых американских проектов, проекты марсоходов стали человеческими достижениями в постоянно развивающемся производстве высокотехнологичных автономных систем с единственной целью исследования и взаимодействия
Localino отслеживает робот Roomba IRobot, отображает окружающую среду и позволяет контролировать: 4 шага
Localino отслеживает Roomba IRobot, наносит на карту среду и позволяет контролировать: в этом руководстве объясняется процедура отслеживания и управления Roomba iRobot в помещении с помощью системы локализации Localino для помещений, моста WiFi-UART и приложения для ПК. Подробное объяснение этой инструкции, объясняющее HIL-control