Мазмуну:

Roomba Parking Pal: 6 кадам
Roomba Parking Pal: 6 кадам

Video: Roomba Parking Pal: 6 кадам

Video: Roomba Parking Pal: 6 кадам
Video: S.R 2024, Июль
Anonim
Roomba Parking Pal
Roomba Parking Pal

Бул долбоордо iRobot Create программалуу Roomba, MATLAB r2018a жана MATLAB mobile колдонулат. Бул үч каражатты жана коддоо боюнча билимибизди колдонууда биз iRobot Createти түстөрдү чечмелөө үчүн программалап, тапшырмаларды аткаруу үчүн борттогу сенсорлорду колдондук. Бул долбоорлор бул тапшырмаларды аткаруу үчүн Raspberry Pi жана MATLAB байланышына көз каранды.

1 -кадам: материалдар

Материалдар
Материалдар
Материалдар
Материалдар

1. iRobot Robot түзүү

2. MATLAB r2018a

3. Raspberry Pi

4. Камера модулу

5. 3-D басылган Камера Стабилизатору

6. MATLAB мобилдик телефону орнотулган

7. MATLAB орнотулган ноутбук/компьютер

2 -кадам: Туташуу

Бул кадам Raspberry Pi роботуна, экинчиден роботту сиздин компьютерге жана смартфонду компьютерге туташтыруу жөнүндө.

Бул процесстин эң оңой бөлүгү - Raspberry Pi менен роботту туташтыруу, анткени Raspberry Pi роботтун үстүнө орнотулган. Роботтун шнуру бар, аны Raspberry Pi капталына туташтыруу керек.

Кийинки кадам - роботту компьютериңизге туташтыруу, ошондо сиз роботту аткарууга буйруктарды иштете аласыз. Эң биринчи кылышыңыз керек болгон нерсе - компьютериңизди Roomba түзүп жаткан зымсыз тармакка туташтыруу. Эми, MATLABдан Roomba курал кутусундагы функцияларды колдонуу үчүн, жолду коюу үчүн MATLABтагы Жол белгилөө сөлөкөтүн колдонуу сунушталат. Роботту колдонууну баштаганда жана бүтүргөндө, роботту "эки манжалуу саламдашуу" менен баштапкы абалга келтирүү керек, башкача айтканда, жарык өчкөнүн көрсөткөн жарык өчкөнгө чейин док жана так баскычтарын он секунд кармап туруңуз. Эгерде сиз роботтун кыска масштабда ойногонун уксаңыз, бул оор абалга келтирүү менен ийгиликтүү болдуңуз. Андан кийин сиз "r = roomba (x)" сыяктуу код линиясын колдонуп Roomba менен туташууңуз керек, мында 'x' - бул сизде бар роботко берилген номер.

Акырында, сиз MATLAB мобилдик телефонун бул долбоор үчүн колдоно турган мобилдик түзмөккө жүктөп алышыңыз керек жана бул колдонмо Android жана Apple түзмөктөрүндө жеткиликтүү. Колдонмо орнотулгандан кийин, сизге ишеним грамоталарын колдонуу менен кирүү керек болот. Андан кийин бул түзмөктү компьютериңизге туташтырышыңыз керек, "Дагы" ->, андан кийин "орнотуулар" -> чыкылдатыңыз жана "Компьютер кошуу" баскычын чыкылдатыңыз, бул жогорудагы сүрөттөрдө көрсөтүлгөн экранды алып келиши керек. Муну көргөндөн кийин Кийинки кадам - бул сиз сурап жаткан маалыматты туташтыруу жана текшерүү. Сиз ийгиликтүү туташкандан кийин, сиз роботту башкаруу үчүн телефонуңузда компьютериңизде аныктаган функцияларды чакыра аласыз.

3 -кадам: Логикалык түрдө сенсорлорду колдонуу үчүн MATLAB кодун түзүү

Сенсорлорду колдонуу үчүн логикалык MATLAB кодун түзүү
Сенсорлорду колдонуу үчүн логикалык MATLAB кодун түзүү

Кодду түзүүнүн эң оңой жолу анын көпчүлүгү цикл ичинде болгондо болот, андыктан Roomba карап жаткан жарактуу баалуулуктарды дайыма жаңырта алат. Эгер ката болсо, MATLAB катаны көрсөтөт жана ал коддо көрүнөт, мунун оңолушун салыштырмалуу жөнөкөй кылат.

R2018a MATLABда иштелип чыккан, бул код стандарттык куралдар кутучаларын, iRobot Create toolbox, ошондой эле MATLAB мобилдик куралдар кутусун колдонот. Бул мисалда колдонулган Roomba 26 катары белгиленет жана r = roomba (26) бир гана жолу Roomba менен толук байланышуу үчүн иштетилиши керек.

Код:

паркассист (x) функциясы, эгерде x == 1

r = Roomba (26) % Roomba менен туташат

чын болсо

r.setDriveVelocity (.05,.05) % жай айдоо ылдамдыгына Roomba орнотот

bump = r.getBampers % дөмпөк сенсорлорунан маалыматтарды алат

cliff = r.getCliffSensors % жарды сенсорлордон маалыматтарды алат

light = r.getLightBampers % жарык сокку сенсорлорунан маалыматтарды алат

img = r.getImage;% роботтун камерасын окуйт

red_mean = орточо (орточо (img (:,:, 1))) % кызыл пикселдердин орточо суммасын окуйт

green_mean = орточо (орточо (img (:,:, 2))) % жашыл пикселдердин орточо суммасын окуйт

blue_mean = орточо (орточо (img (:,:, 3)))) % көк пикселдердин орточо суммасын окуйт

if bump.front == 1 %алдыңкы сокку сенсорлорун окуйт

r.stop %Roomba токтойт

msgbox ('Path Unscured!', 'Parking Assistant Message') % жолдун көмүскө экенин билдирүүнү көрсөтөт % үзүлүү циклди аяктайт.

elseif green_mean> 150

r.stop %Roomba токтойт

cont = questdlg ('Улантуу?', 'Жол бүткөн') %улантууну суранган суроо кутучасын көрсөтөт

эгер cont == 'Ооба'

parkassist (1) %кодду кайра баштайт

башка

аяктоо

break % циклди аяктайт

140

r.turnAngle (45) %бөлмө бөлмөсүн 45 градуска бурат

r.timeStart %убакыт эсептегичти баштайт

чын болсо

r.setDriveVelocity (.05,.05) %бөлмө ылдамдыгын орнотот

time = r.timeGet %убакытты өзгөрмөгө дайындайт

bump = r.getBampers % дөмпөк сенсорлорунан маалыматтарды алат

cliff = r.getCliffSensors % жарды сенсорлордон маалыматтарды алат

light = r.getLightBampers % жарык сокку сенсорлорунан маалыматтарды алат

img = r.getImage;% роботтун камерасын окуйт

red_mean = орточо (орточо (img (:,:, 1)))) % кызыл пикселдердин орточо суммасын окуйт

green_mean = орточо (орточо (img (:,,, 2))) % жашыл пикселдердин орточо суммасын окуйт

blue_mean = орточо (орточо (img (:,:, 3)))) % көк пикселдердин орточо суммасын окуйт

эгер blue_mean> 120

r.moveDistance (-0.01) % Roomba артка белгиленген аралыкты ырды жылдырат Play (r, 'T400, C, D, E, F, G, A, B, C^', 'true') % көтөрүлүүчү музыкалык масштабды ойнойт

msgbox ('Суу табылды!', 'Парктын жардамчысынын билдирүүсү') % суу табылды деген билдирүүнү көрсөтөт r.turnAngle (-80) % бөлмө 80 градуска айланат

break % учурдагы циклди аяктайт

elseif light.rightFront> 25 || light.leftFront> 25 %жарык шишик сенсорлорун окуйт

r.moveDistance (-0.01) % Roomba'ны белгиленген аралыкка артка жылдырат

r.turnAngle (-35) % бөлмө 35 градуска айланат

break %учурдагы циклди аяктайт

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %жардын эки сенсорун окуйт

r.moveDistance (-0.1) % Roomba'ны белгиленген аралыкка артка жылдырат

r.turnAngle (-80) %бөлмө 80 градуска айланат

break % учурдагы циклди аяктайт

башка убакыт> = 3

r.stop %Roomba токтойт

contin = questdlg ('Бекет бекер, Уланта бересизби?', 'Унаа токтотуучу жардамчынын билдирүүсү') %, эгер Contin == 'Ооба' болсо, Roomba улантууну сурайт.

r.turnAngle (-90) % бөлмө 90 градуска айланат

parkassist (1) %функцияны кайра баштайт

башка

r.stop % бөлмө ишин токтотот

аяктоо

башка

аяктоо

аяктоо

elseif cliff.rightFront <2500 && cliff.leftFront <2500 %жардын эки сенсорун окуйт

r.moveDistance (-0.1) %Roomba'ны белгиленген аралыкка артка жылдырат

r.turnAngle (-90) %бөлмө 90 градуска айланат

elseif cliff.rightFront <2500 %туура жардын сенсорун окуйт

r.turnAngle (-5) %бир аз бөлмөнү жардын сенсорунун карама-каршы жагына бурат

elseif cliff.leftFront <2500 %сол жардын сенсорун окуйт

r.turnAngle (5) %RoomBa'ны жардын сенсорунун карама -каршы жагына бир аз бурат

башка

аяктоо

аяктоо

аяктоо

4 -кадам: Кодду жана роботту тестирлөө

Кодду жана роботту сыноо
Кодду жана роботту сыноо
Кодду жана роботту сыноо
Кодду жана роботту сыноо
Кодду жана роботту сыноо
Кодду жана роботту сыноо

Код иштелип чыккандан кийин, кийинки кадам кодду жана роботту сыноо болду. Роботтун бурулуу бурчу, кыймылынын ылдамдыгы жана ар бир түстүн босогосу сыяктуу коддо ар кандай түзөтүүлөр көп болгондуктан, бул баалуулуктарды робот үчүн аныктоонун эң жакшы жолу - бул тест алар жана сиз барган сайын өзгөрөт. Биз өткөргөн ар бир иш күнү үчүн биз бул баалуулуктарды дайыма өзгөртүп турчубуз, анткени алардын айрымдары сиздин робот иштеп жаткан чөйрөгө таянат. Биз тапкан эң жакшы жол - бул бөлмөнүн бөлмөсүн сиз каалаган жолго салуу жана ээ болуу. камера сиз каалабаган түстөрдү аныктай албашы үчүн жетишерлик бийик тоскоолдук. Кийинки кадам - бул тапшырманы аткарышын каалаганда, аны иштетүүгө жана каалаган түстөрдү көрсөтүүгө уруксат берүү. Барып жатып, эгер сиз кандайдыр бир маселени көрсөңүз, анда эң жакшы нерсе - алдыңкы бамперди токтотуп, ичине түртүп коюу, анда сиз көйгөйгө туш болгон параметрди өзгөртүңүз.

5 -кадам: катаны таануу

Ар бир долбоор аяктаганда, ар дайым ката булактары бар. Биз үчүн, биз роботтун бурулуу бурчу так эмес экени менен ката кетирдик, андыктан 45 градуска бурууну айтсаңыз, ал так болбойт. Биз үчүн дагы бир ката булагы кээде роботтун иштебей калышы жана кайра иштебей туруп, аны кайра баштапкы абалга келтирүү болду. Биз үчүн катанын негизги акыркы булагы ошол эле код ар кандай роботторго бирдей таасирин тийгизбейт, андыктан чыдамдуу болуп, ошого жараша тууралашыңыз керек болот.

6 -кадам: Жыйынтык

Эми сизде Roomba менен ойноо үчүн бардык куралдар бар, демек сиз каалаган максаттарга жетүү үчүн каалаган учурда кодду башкара аласыз. Бул сиздин күнүңүздүн эң сонун бөлүгү болушу керек, андыктан көңүл ачып, коопсуз айдагыла!

Сунушталууда: