Мазмұны:

Roomba Explorer: 4 қадам
Roomba Explorer: 4 қадам

Бейне: Roomba Explorer: 4 қадам

Бейне: Roomba Explorer: 4 қадам
Бейне: Что с ними случилось? ~ Невероятный заброшенный особняк знатной семьи 2024, Шілде
Anonim
Roomba Explorer
Roomba Explorer

MATLAB және iRobot -тың Create2 роботын қолдану арқылы бұл жоба белгісіз жердің әр түрлі аймақтарын зерттейді. Біз қауіпті рельефте маневр жасау үшін роботтағы сенсорларды қолдандық. Raspberry Pi -ден фотосуреттер мен бейнематериалдарды алу арқылы біз робот кездесетін кедергілерді анықтай алдық және олар жіктеледі.

Бөлшектер мен материалдар

Бұл жоба үшін сізге қажет болады

-компьютер

-MATLAB -тың жаңа нұсқасы (бұл жоба үшін MATLAB R2018b қолданылған)

- roombaInstall құралдар тақтасы

-iRobot -тың Create2 роботы

-Камерасы бар таңқурай Pi

1 -қадам: инициализация және сенсорлар

Инициализация және сенсорлар
Инициализация және сенсорлар

Кез келген бағдарламалауды бастамас бұрын біз роботтың әр түрлі компоненттеріне қол жеткізуге мүмкіндік беретін roombaInstall құралдар тақтасын жүктедік.

Бастапқыда біз кез келген роботты инициализациялау үшін GUI құрдық. Ол үшін кіріс ретінде роботтың нөмірін теру қажет. Бұл роботқа біздің бағдарламаны іске қосуға мүмкіндік береді. Біз роботты көптеген жолдар арқылы маневр жасау үшін жұмыс жасадық. Біз Cliff датчиктерін, жарық соққылары мен физикалық соққылардың сенсорларын енгіздік, олардың жылдамдығын және бағытын өзгерту үшін роботты айналдыру үшін. Жарық соққысының алты сенсорының кез келгені объектіні анықтаған кезде, олардың шығатын мәні төмендейді, бұл толық жылдамдықпен соқтығыспау үшін роботтың жылдамдығын төмендетеді. Робот ақырында кедергімен соқтығысқанда, Физикалық соққы сенсорлары нөлден үлкен мән туралы хабарлайды; осы себепті робот тоқтайды, сондықтан ешқандай соқтығысулар болмайды және басқа функцияларды іске қосуға болады. Cliff датчиктері үшін олар айналадағы аймақтың жарықтығын оқиды. Егер мән 2800 -ден жоғары болса, біз робот тұрақты жерде және қауіпсіз болатынын анықтадық. Бірақ, егер мән 800 -ден төмен болса, Cliff сенсорлары құлап кетпес үшін бірден тоқтап, жартасты табады. Арасындағы кез келген мән суды бейнелейді және роботтың әрекетін тоқтатуына әкеледі. Жоғарыда көрсетілген сенсорларды қолдану арқылы роботтың жылдамдығы өзгереді, бұл бізге қауіптің бар -жоғын жақсы анықтауға мүмкіндік береді.

Төменде код бар (MATLAB R2018b)

%% Инициализация

dlgPrompts = {'Roomba нөмірі'};

dlgTitle = 'Өз бөлмеңізді таңдаңыз';

dlgDefaults = {''};

opts. Resize = «қосулы»;

dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Пайдаланушыға Roomba нөмірін енгізуді ұсынатын терезе жасаңыз

n = str2double (dlgout {1});

r = Roomba (n); % Пайдаланушы көрсеткен Roomba %% іске қосады Light Bump датчиктерінен жылдамдықты анықтау кезінде s = r.getLightBampers; % жеңіл соққы сенсорларын алады

lbumpout_1 = extractfield (s, 'left'); % сенсорлардың сандық мәндерін қабылдайды және оларды неғұрлым қолайлы етеді 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 = сұрыптау (lbout); %матрицаны ең төменгі мәнге сұрыптайды

lowLbump = sLbump (1); жылдамдық =.05+(lowLbump)*. 005 %ештеңені анықтамаған кезде жылдамдықты, жоғары жылдамдықты анықтау үшін жақын кедергілерді білдіретін ең төменгі мәнді қолданады.

r.setDriveVelocity (жылдамдық, жылдамдық)

Соңы

% Физикалық бамперлер

b = r.getBampers; %Шығу ақиқат, жалған

bsen_1 = экстракт өрісі (b, 'солға')

bsen_2 = шығару өрісі (b, 'оңға')

bsen_3 = шығару өрісі (b, 'алдыңғы')

bsen_4 = extractfield (b, 'leftWheelDrop')

bsen_5 = extractfield (b, 'rightWheelDrop')

соққылар = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = қосынды (бум)

егер tbump> 0 r.setDriveVelocity (0, 0)

Соңы

% Cliff датчиктері

c = r.getCliffSensors %% 2800 қауіпсіз, басқа су

csen_1 = экстракт өрісі (c, 'солға')

csen_2 = экстракт өрісі (c, «оң»)

csen_3 = шығару өрісі (c, 'leftFront')

csen_4 = extractfield (c, 'rightFront')

жартастар = [csen_1, csen_2, csen_3, csen_4]

ordcliff = сұрыптау (жартастар)

егер ordcliff (1) <2750

r.setDriveVelocity (0, 0)

егер жарта <800

дисп «жартасты»

басқа

дисплейлік «су»

Соңы

бұрылыс бұрышы (45)

Соңы

2 -қадам: Деректерді алу

Физикалық соққы сенсорлары өшірілгеннен кейін, робот кедергінің суретін түсіру үшін Raspberry Pi бортында іске қосады. Фотосуретке түсіргеннен кейін, егер суретте мәтін болса, мәтінді тануды қолдана отырып, робот кедергі не екенін және не айтатынын анықтайды.

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

фото = оқылған ('imgfromcamera.jpg')

ocrResults = ocr (сурет)

мойындалғанText = ocrResults. Text;

фигура;

imshow (фото) мәтіні (220, 0, мойындалған Мәтін, 'BackgroundColor', [1 1 1]);

3 -қадам: миссияны аяқтау

Робот кедергі ҮЙде екенін анықтаған кезде, ол өз миссиясын аяқтап, үйде қалады. Миссия аяқталғаннан кейін робот үйге қайтқаны туралы электронды поштаға ескерту жібереді және саяхат кезінде түсірілген суреттерді жібереді.

% Электрондық поштаны жіберу

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

setpref ('Интернет', 'E_mail', '[email protected]'); setpref жіберілетін % пошта тіркелгісі ('Интернет', 'SMTP_Username', 'жіберуші электрондық поштасын енгізу'); % жіберушілердің пайдаланушы аты setpref ('Интернет', 'SMTP_Password', 'жіберушінің құпия сөзін енгізу'); % Жіберушілер құпия сөзі

реквизиттер = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');

sendmail ('Алушы электрондық поштаны енгізіңіз', 'Roomba', 'Roomba үйге оралды !!', 'imgfromcamera.jpg') жіберілетін % пошта тіркелгісі

Содан кейін робот аяқталды.

4 -қадам: Қорытынды

Қорытынды
Қорытынды

MATLAB бағдарламасы роботпен бірге қолданылған сценарийден бөлінген. Соңғы жобада бамперлер үнемі жұмыс істейтініне көз жеткізу үшін инициализация қадамынан басқа барлық кодты уақытша циклге енгізгеніңізге көз жеткізіңіз. Бұл бағдарлама пайдаланушының қажеттіліктеріне сәйкес өңделуі мүмкін. Біздің роботтың конфигурациясы көрсетілген.

*Еске салғыш: MATLAB роботпен және Raspberry Pi бортында өзара әрекеттесу үшін roombaInstall құралдар жинағы қажет екенін ұмытпаңыз.

Ұсынылған: