Мазмұны:
- 1 -қадам: инициализация және сенсорлар
- 2 -қадам: Деректерді алу
- 3 -қадам: миссияны аяқтау
- 4 -қадам: Қорытынды
Бейне: Roomba Explorer: 4 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:25
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 құралдар жинағы қажет екенін ұмытпаңыз.
Ұсынылған:
Roomba Bot Bulider: 5 қадам (суреттермен)
Roomba Bot Bulider: Bot Builder - бұл бөлме бөлмесі, ол " ұстаушылармен " алдыңғы жағына бекітілген заттар заттарды айналдыра алады. Ондағы код GUI терезесімен бірінші қозғалысты жазуға арналған, оны тінтуірдің бір рет басуымен басқаруға болады. Кейін
MATLAB басқарылатын Roomba: 5 қадам
MATLAB басқарылатын Roomba: Бұл жобаның мақсаты - MATLAB, сонымен қатар өзгертілген iRobot бағдарламаланатын роботы. Біздің топ iRobot -тың көптеген функцияларын қолданатын MATLAB сценарийін құру үшін кодтау дағдыларымызды біріктірді, соның ішінде жартасты сенсорлар, бампер сенсоры
Internet Explorer үшін пернелер тіркесімі !!: 4 қадам
Internet Explorer шолғышының пернелер тіркесімі !!: Бұл нұсқаулықта сізге Internet explorer үшін пайдалы бірнеше пернелер тіркесімі көрсетіледі, менің каналыма жазылыңыз, рахмет
Roomba Scout Explorer: 8 қадам
Roomba Scout Explorer: көптен күткен және мұқият зерттелген американдық жобалардың бірі ретінде Марс роверінің жобалары жоғары технологиялық автономды жүйелердің үнемі дамып келе жатқан өндірісінде адамның жетістіктеріне айналды
Bus Pirate 3EEPROM Explorer тақтасы: 5 қадам
Bus Pirate 3EEPROM Explorer тақтасы: Егер сізде бір күндік автобус қарақшыларының бірі болса, онымен не істейсіз? 3EEPROM зерттеуші тақтасының көмегімен 1 сымды, I2C және SPI EEPROM туралы біліңіз (біз оны THR-EE-PROM деп атаймыз) .EEPROM-бұл деректерді үздіксіз қуатсыз сақтайтын жад микросхемасының түрі