Съдържание:

Roomba Explorer: 4 стъпки
Roomba Explorer: 4 стъпки

Видео: Roomba Explorer: 4 стъпки

Видео: Roomba Explorer: 4 стъпки
Видео: Tefal Explorer Serie 60: ТОНКИЙ РОБОТ-ПЫЛЕСОС ДЛЯ УБОРКИ ШЕРСТИ🐶🐱 ОБЗОР и ТЕСТ✅ 2024, Ноември
Anonim
Roomba Explorer
Roomba Explorer

Чрез използване на MATLAB и iRobot Create2 Robot, този проект ще изследва различни области на неизвестно място. Използвахме сензорите на робота, за да помогнем при маневриране на опасен терен. Като получихме снимки и видео емисии от прикачения Raspberry Pi, успяхме да определим препятствията, пред които ще се изправи роботът, и те ще бъдат класифицирани.

Части и материали

За този проект ще ви трябва

-компютър

-най -новата версия на MATLAB (за този проект беше използван MATLAB R2018b)

- roomba Инсталирайте инструментариума

-Robot Create2 Robot

-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 %% Определяне на скоростта от Light Bump Sensors докато true s = r.getLightBumpers; % получават сензори за леки удари

lbumpout_1 = поле за извличане (и, 'ляво'); % приема числовите стойности на сензорите и ги прави по -използваеми lbumpout_2 = extrafield (s, 'leftFront');

lbumpout_3 = поле за извличане (и, 'leftCenter');

lbumpout_4 = поле за извличане (и, 'rightCenter');

lbumpout_5 = поле за извличане (s, 'rightFront');

lbumpout_6 = поле за извличане (и, 'вдясно');

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % преобразува стойности в матрица

sLbump = сортиране (lbout); %сортира матрицата до най -ниската стойност може да бъде извлечена

lowLbump = sLbump (1); скорост =.05+(lowLbump)*. 005 %използвайки най -ниската стойност, която представлява близки препятствия, за определяне на скоростта, по -висока скорост, когато нищо не е открито

r.setDriveVelocity (скорост, скорост)

край

% Физически брони

b = r.getBumpers; %Изход true, false

bsen_1 = поле за извличане (b, 'ляво')

bsen_2 = поле за извличане (b, 'надясно')

bsen_3 = поле за извличане (b, 'фронт')

bsen_4 = поле за извличане (b, 'leftWheelDrop')

bsen_5 = поле за извличане (b, 'rightWheelDrop')

неравности = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = сума (неуспехи)

ако tbump> 0 r.setDriveVelocity (0, 0)

край

% Сензори за скали

c = r.getCliffSensors %% 2800 безопасно, иначе вода

csen_1 = поле за извличане (c, 'ляво')

csen_2 = поле за извличане (c, 'надясно')

csen_3 = поле за извличане (c, 'leftFront')

csen_4 = поле за извличане (c, 'rightFront')

скали = [csen_1, csen_2, csen_3, csen_4]

ordcliff = сортиране (скали)

ако ordcliff (1) <2750

r.setDriveVelocity (0, 0)

ако скала <800

disp 'cliff'

иначе

изпускам "вода"

край

r. TurnAngle (45)

край

Стъпка 2: Получаване на данни

След като се задействат сензорите за физически удар, роботът ще внедри своя борд Raspberry Pi, за да направи снимка на препятствието. След като направи снимка, използва разпознаване на текст, ако има текст в картината, роботът ще определи какво е препятствието и какво казва препятствието.

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

снимка = imread ('imgfromcamera.jpg')

ocr Резултати = ocr (снимка)

priznaText = ocrResults. Text;

фигура;

imshow (снимка) текст (220, 0, разпознатText, 'BackgroundColor', [1 1 1]);

Стъпка 3: Довършителна мисия

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

% Изпращане на имейл

setpref ('Интернет', 'SMTP_Server', 'smtp.gmail.com');

setpref ('Интернет', 'E_mail', '[email protected]'); % имейл акаунт за изпращане от setpref ('Internet', 'SMTP_Username', 'enter sender email'); % потребителско име на изпращачи setpref ('Интернет', 'SMTP_Password', 'въведете парола на изпращача'); % Парола на подателя

реквизит = 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.

Препоръчано: