Мазмуну:
- 1 -кадам: Бөлүктөр жана материалдар
- 2 -кадам: Roomba Database File
- 3 -кадам: Roomba менен туташуу
- 4 -кадам: Код
- 5 -кадам: Жыйынтык
Video: MATLAB көзөмөлдөгөн Roomba: 5 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Бул долбоордун максаты MATLAB, ошондой эле өзгөртүлгөн iRobot программалоочу роботун колдонуу. Биздин топ коддоо жөндөмдүүлүктөрүбүздү бириктирип, iRobotтун көптөгөн функцияларын колдонгон MATLAB сценарийин, анын ичинде аска сенсорлорун, бампер сенсорлорун, жарык сенсорлорун жана камераны түздү. Биз бул сенсор менен камеранын көрсөткүчтөрүн киргизүү катары колдондук, бул бизге MATLAB кодунун функцияларын жана циклдерин колдонуп, каалаган жыйынтыктарды түзүүгө мүмкүнчүлүк берди. Биз дагы iRobotко туташуу жана аны көзөмөлдөө үчүн MATLAB мобилдик аппаратын жана гироскопту колдонобуз.
1 -кадам: Бөлүктөр жана материалдар
MATLAB 2018a
-MATLABнын 2018 версиясы эң жактырылган версия, негизинен ал мобилдик түзмөккө туташкан код менен эң жакшы иштейт. Бирок, биздин коддун көбү MATLAB версияларынын көпчүлүгүндө чечмелениши мүмкүн.
iRobot түзмөк түзүү
-Бул түзмөк программалоо жана коддоо үчүн атайын жасалган атайын түзүлүш. (Бул чыныгы вакуум эмес)
Raspberry Pi (камера менен)
- Бул iRobotтун мээси катары иштеген кымбат эмес компьютердик такта. Бул кичинекей болушу мүмкүн, бирок ал көп нерсеге жөндөмдүү. Камера кошумча кошумча болуп саналат. Ал ошондой эле өзүнүн функцияларын жана буйруктарын алуу үчүн малина пи колдонот. Жогоруда сүрөттөлгөн камера Теннесси Университетинин Инженердик Негиздер бөлүмдөрү тарабынан түзүлгөн 3D басылган стендге орнотулган.
2 -кадам: Roomba Database File
Roomba үчүн тиешелүү функцияларды жана буйруктарды колдонуу үчүн сизге керек болгон негизги файл бар. Бул файл, сиз жазган код, бөлмөнүн иштешин башкарууга ыңгайлуу кылуу үчүн функцияларды өзүнө тартып алат.
Сиз бул шилтемеден же төмөндөгү жүктөлүүчү файлды жүктөп алсаңыз болот
ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php
3 -кадам: Roomba менен туташуу
Биринчиден, сиз роботуңуз малина pi тактасына микро USB сайгыч аркылуу туташканын текшеришиңиз керек. Андан кийин компьютериңиз менен роботту ошол эле WiFiга туура туташтырышыңыз керек. Бул бүткөндөн кийин, роботту күйгүзүп, робот базасынын файлында берилген буйрукту колдонуп ага туташа аласыз. (Роботту колдонуудан мурун жана кийин ар дайым оор абалга келтирүү). Мисалы, биз роботубузга туташуу үчүн "r.roomba (19)" буйругун колдонобуз, r өзгөрмөсүн биздин түзмөккө ыйгарабыз. Бул биздин өзгөрмөнү каалаган убакта шилтеме бере турган структура катары орноткон маалымат базасынын файлына кайрылат.
4 -кадам: Код
Биз толук кодду төмөндө тиркеп койдук, бирок бул жерде биздин скрипттин маанилүү элементтерин чагылдырган кыскача сереп. Биз роботтун потенциалын толук жогорулатуу үчүн бардык сенсорлорду, ошондой эле камераны колдондук. Ошондой эле биз мобилдик түзүлүштү роботубузга туташтырууга жана анын гриоскопун кол менен башкарууга мүмкүндүк берген кодду киргиздик.
Биз "r.setDriveVelocity (.06)" жөнөкөй буйругу менен баштадык, ал роботтун алдыга ылдамдыгын.06 м/с деп белгилейт. Бул роботту алдын ала кыймылга келтирүү үчүн
Андан кийин, биздин негизги сценарийибиз роботтун маалыматын алуучу структураларды түзүү менен, төмөндөгү шарттуу билдирүүлөрдө колдонуп, роботко структура маалыматтарынын негизинде белгилүү бир буйрукту аткарууга мүмкүнчүлүк берүү менен башталат. робот сенсорлору менен окуйт. Биз муну робот анын жаргыч сенсорлорун окуп, кара жолго түшө тургандай кылып орноттук
чыныгы % while цикл "жалган" нерсе пайда болгонго чейин барат (бул учурда ал чексиз уланат) data = r.getCliffSensors; data2 = r.getBumpers; % жардын сенсорунун маанилери жөнүндө маалыматтарды үзгүлтүксүз алат жана аларды % img = r.getImage өзгөрмөсүнө дайындайт; % Орнотулган камерадан % сүрөт алат % image (img); % Алынган сүрөттү көрсөтөт % red_mean = орточо (орточо (img (:,,, 1))); % Жашыл түс үчүн орточо маанини алат data.rightFront <2000 r.turnAngle (-2); % Roomba болжол менен.2 даража CW айланат, оң алдыңкы жардын сенсорлорунун мааниси 2000 r.setDriveVelocity (.05) төмөн түшүп кеткенден кийин; elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % Roombaга болжол менен.2 м/с ылдамдыкта улантууну айтат, эгерде оң алдыңкы жана сол алдыңкы сенсорлордун эки мааниси 2000 % дан төмөн түшсө r.turnAngle (0); % Roombaга жогоруда айтылган шарттар туура болсо бурулбоону айтат
elseif data2.right == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05); elseif data2.left == 1 r.moveDistance (-. 2); r.turnAngle (5); r.setDriveVelocity (.05); elseif data2.front == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05);
Бул циклден кийин, камера аркылуу алынган маалыматтарды иштетүүчү дагы бир циклди киргизебиз. Биз эгерде белгилүү бир программаны (alexnet) колдонуп, сүрөттү тааныган, ал эми if операторун колдонобуз жана ал сүрөттү аныктагандан кийин ал мобилдик түзмөктүн алыстан башкаруусун дароо иштетет
anet = alexnet; % Alexnet терең үйрөнүүсүн чыныгы % Infinite, ал эми цикл img = r.getImage; img = imresize (img, [227, 227]); label = классификациялоо (анет, img); эгер этикет == "кагаз сүлгү" || label == "муздаткыч" label = "суу"; акыркы сүрөт (img); аталышы (char (label)); тартылган;
Убакыттык цикл түзмөктү телефонубуз менен башкарууга мүмкүндүк берет, бул маалыматты телефондун гироскопунан алат жана биз аны матрицага туташтырабыз, ал маалыматты үзгүлтүксүз түрдө кайра MATLABка компьютерге өткөрүп берет. Биз матрицанын маалыматын окуган жана телефондун гироскопунун белгилүү бир маанилерине таянып түзмөктү кыймылга келтирүүчү if операторун колдонобуз. Бул мобилдик түзмөктүн Багыттоо сенсорлорун колдонгонубузду билүү маанилүү. Жогоруда айтылган үчтөн бир матрица азимут, кадам жана каптал болгон телефондун багыттоо сенсорлорунун ар бир элементи боюнча классификацияланган. Эгерде билдирүүлөр тарап 50дөн ашса же -50дөн төмөн түшсө, анда робот белгилүү бир аралыкты алдыга (оң 50) же артка (терс 50) жылдырат. Жана ошол эле кадамдын наркына да тиешелүү. Эгерде чайырдын баасы 25тен төмөн болсо, анда ал робот 1 градуска (оң 25) же терс 1 градуска (терс 25) бурулат
чыныгы пауза (.1) % Пауза.5 секунд ар бир мааниге чейин контролер = iphone. Orientation; % Айфондун багытынын маанилери үчүн матрицаны Azimuthal = Controller (1) дайындайт; % Матрицанын биринчи маанисин Pitch = Controller (2) өзгөрмөсүнө дайындайт; % Матрицанын экинчи маанисин өзгөрмөгө дайындайт (iPhone капталга кармалганда алдыга жана артка кыйшайтуу) Side = Controller (3); % Матрицанын үчүнчү маанисин өзгөрмөгө дайындайт (iPhone капталында кармалып турганда солго жана оңго кыйшайтыңыз) % Телефондун багытына негизделген чыгууну пайда кылат, эгерде Side> 130 || Side 25 r.moveDistance (-. 1) % Roomba'ны болжол менен 1 метр артка жылдырат, эгер iPhone артка эңкейсе, кеминде 25 degress 25 Side r.turnAngle (-1) %, эгер iPhone эгерде Roomba болжол менен 1 градуска CCW айландырса солго эң аз дегенде 25 градуска эңкейет Pitch <-25 r.turnAngle (1) %, эгер iPhone эң аз дегенде 25 градуска эңкейсе, Roombаны болжол менен 1 градуска айландырат
Бул биздин коддун негизги бөлүктөрүнүн урунттуу учурлары, эгер биз сизге бир бөлүмдү бат эле көчүрүү жана чаптоо керек болсо, киргиздик. Бирок, керек болсо биздин коддун баары төмөндө тиркелет
5 -кадам: Жыйынтык
Биз жазган бул код атайын биздин робот үчүн, ошондой эле долбоордун жалпы көз карашы үчүн иштелип чыккан. Биздин максатыбыз роботтун көпчүлүк өзгөчөлүктөрүн колдонгон скважинанын скриптин түзүү үчүн бардык MATLAB коддоо көндүмдөрүн колдонуу болчу. Телефон контроллерин колдонуу сиз ойлогондой кыйын эмес жана биздин код iRobotту коддоо түшүнүгүн жакшыраак түшүнүүгө жардам берет деп үмүттөнөбүз.
Сунушталууда:
DIY Arduino Bluetooth көзөмөлдөгөн унаа: 6 кадам (сүрөттөр менен)
DIY Arduino Bluetooth көзөмөлдөгөн унаа: Салам достор! Менин атым Николас, мен 15 жаштамын, Афинада, Грецияда жашайм. Бүгүн мен сизге Arduino Nano, 3D принтер жана кээ бир жөнөкөй электрондук компоненттерди колдонуп, 2 дөңгөлөктүү Bluetooth башкарылуучу машинаны кантип жасоону көрсөтөм! Мени сөзсүз көрүңүз
Вебсайт көзөмөлдөгөн жаңы жылдык балаты (Ар ким аны башкара алат): 19 кадам (Сүрөттөр менен)
Вебсайт көзөмөлдөгөн Рождество дарагы (Ар ким аны башкара алат): Сиз веб-сайт көзөмөлдөгөн жаңы жылдык балаты кандай экенин билгиңиз келеби? Бул жерде менин балатымдын долбоорун көрсөткөн видео. Түз эфир азыр аяктады, бирок мен эмне болуп жатканын видеого тартып алдым: Быйыл декабрдын ортосунда
Bluetooth көзөмөлдөгөн Stepper Motors менен 3D робот колу: 12 кадам
3D робот колу Bluetooth менен башкарылган тепкич моторлору менен: Бул үйрөткүчтө биз 28byj-48 тепкичтүү кыймылдаткычтары, servo мотору жана 3D басылган бөлүктөрү менен 3D робот колун кантип жасоону көрөбүз. Басылган схема, баштапкы код, электр схемасы, баштапкы код жана көптөгөн маалымат менин веб -сайтымда камтылган
Roomba MATLAB долбоору: 5 кадам
Roomba MATLAB долбоору: NASAнын Марс роверине карата учурдагы планы - бул маалымат чогултуучу жана Марстын айланасында жүрүү, жерге кайра алып келүү үчүн топурактын үлгүлөрүн чогултуу, илимпоздор мурунку жашоо формаларынын бар же жок экенин көрө алышат. планета. Кошумча
Roomba MATLAB менен: 4 кадам (сүрөттөр менен)
Roomba MATLAB менен: Бул долбоор MATLAB жана iRobot Create2 программалуу роботун колдонот. MATLAB боюнча билимибизди сыноо менен, биз Create2ди сүрөттөрдү чечмелөө жана сигналдарды аныктоо үчүн программалай алабыз. Роботтун иштеши негизинен көз каранды