Мазмуну:

Космонавтка жардам берүүчү Roomba: 4 кадам
Космонавтка жардам берүүчү Roomba: 4 кадам

Video: Космонавтка жардам берүүчү Roomba: 4 кадам

Video: Космонавтка жардам берүүчү Roomba: 4 кадам
Video: Самые Креативные Костюмы на Хэллоуин, Которые Находятся на Другом Уровне 2024, Ноябрь
Anonim
Космонавтка жардам берүүчү Roomba
Космонавтка жардам берүүчү Roomba

Бул долбоор iRobot Create Version 2 бортундагы Raspberry Pi 3 аркылуу жасалат. MATLAB роботту анын сенсорлорун жана камерасын колдонуу менен белгилүү бир көрсөтмөлөрдү аткарууга программалоо үчүн колдонулат. Сенсорлор жана камералар астронавттын артынан конкреттүү тапшырмаларды аткаруу үчүн колдонулат жана бир нерсе туура эмес болуп калса, анын үй базасы менен байланышуу мүмкүнчүлүгүн камсыз кылат.

1 -кадам: керектүү бөлүктөр

Керектүү тетиктер
Керектүү тетиктер
Керектүү тетиктер
Керектүү тетиктер
Керектүү тетиктер
Керектүү тетиктер
Керектүү тетиктер
Керектүү тетиктер

1. iRobot 2 версиясын түзүү

IRobot Create бул долбоордун эң маанилүү бөлүгү, анткени ал программаланат жана космонавттарды ээрчип, келечекте аларга жардам берген чыныгы ровер үчүн эң сонун өкүлчүлүк боло алат

2. Raspberry Pi 3

Raspberry Pi бул долбоор үчүн колдонулган программалоочу болчу. Код Pi үчүн иштелип чыккан жана Pi тиркелген версиясы 3 (модель B). Ардуино сыяктуу башка программалоочу такталар колдонууга жарактуу, бирок arduino жана башка көптөгөн такталар башка кадамда айтылгандан башкача коддоону талап кылат

3. Raspberry Pi камера модулу

Бул долбоор үчүн керек болгон Raspberry Pi менен бир гана тышкы байланыш Камера модулу. Камера модулу бул долбоордун ажырагыс бөлүгү, анткени Roomba камерада көргөн нерселеринин негизинде гана милдеттерди аткарат

4. MATLAB 2018a

MATLABдын экинчи эң акыркы версиясы, 2018a, бул орнотууга катышкан коддоо үчүн колдонулган. MATLABтын башка көптөгөн версиялары муну менен иштеши мүмкүн, анткени Roomba программалоо бир аз убакыттан бери болуп келген

2 -кадам: Файлдар жана Камеранын Конфигурациясы

Файлдар жана камеранын конфигурациясы
Файлдар жана камеранын конфигурациясы

1. Raspberry Pi жана Камеранын Roomba менен байланышы

  • Pi iRobotко микро USB менен түз туташа алат. Бул колдонууга даяр болушу керек болгон нерсенин баары. Бирок, аны ушул убакка чейин презентация боюнча сүрөттөрдө көрсөтүлгөндөй, бөлмөнүн үстүнө коопсуз жайгаштыруу сунушталат.
  • Камера Raspberry Pi менен түз байланышта жана камераны түз кармоо үчүн бир нерсе сатып алуу же жасоо сунушталат. Камеранын камерада көргөнүн көрсөтүү үчүн аны кармоо мүмкүн болбосо, анда эч кандай мааниси жок.

2. Файлдар

  • Баарын орнотуп, туташтыргандан кийин, "Spot" жана "Dock" баскычтарын 10 секунд бирге кармап, роботтун баштапкы абалга келтирилгенин жана барууга даяр экенин текшериңиз.
  • Бул жерде биринчи кезекте MATLAB керек. Roomba файлдары биринчи орнотулушу керек жана бул файлдар үчүн керектүү нерсенин баары бул шилтемеде берилген код:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

3 -кадам: Алгачкы Roomba тестирлөө

Анын иштешине ынануу үчүн бөлмөдө көптөгөн алгачкы текшерүүлөр жүргүзүлүшү керек.

1. Roomba сыяктуу эле WiFi тармагына туташканыңызды текшериңиз. Бул болбосо, сиз эч качан MATLAB аркылуу туташпайсыз.

2. Сиздин бөлмөңүзгө кайсы номер берилгенин билип алыңыз, андыктан сиз тандаган бөлмөңүзгө атайын туташа аласыз. Мисалы, сиздин бөлмөңүздүн номери 30 болсо, сиз аны MATLABдагы командалык терезеге Roomba (30) терүү менен туташтырасыз.

3. Roomba MATLABдагы структуралар аркылуу башкарылышы мүмкүн. Мисалы, эгер сиз Roomba кодун (30) 'r' өзгөрмөсүнө койсоңуз, робот r.moveDistance (0.2, 0.1) буйругу менен алдыга жылдырылышы мүмкүн.

4. Roomba менен байланышууга мүмкүн болгон көптөгөн командалар бар жана аларды буйрук терезесине 'doc roomba' терүү аркылуу көрүүгө болот.

5. Жарык, сокку жана аскалардын окуулары үчүн сенсорлордун бардыгы "doc roomba" ичиндеги буйруктарды колдонуу менен окулушу мүмкүн, бирок сенсордун маалыматын көрүү үчүн туруктуу, тыкан менюга ээ болуу ыкмасын "r.testSensors" аркылуу көрүүгө болот '.

6. Мунун баарын текшергенден кийин, роботтун сүрөт чогултуучу программасы, тартылган сүрөттөрдү окуу жана көрүү үчүн колдонулушу мүмкүн. Бул үчүн негизги код img = r.getImage жана imshow (img) болмок;.

7. Сүрөттүн RGB маанилерин red_mean = mean (орточо (img (:,,, 1))) коддору менен табууга болот;

green_mean = орточо (орточо (img (:,,: 2)))); жана blue_mean = орточо (орточо (img (:,,, 3))));.

4 -кадам: Мисал MATLAB коду

Мисал MATLAB коду
Мисал MATLAB коду

Бул учурда, сиз азыр сенсорлорду жана сүрөт тартуучу программаны колдонуп, Mars Roverтин адамга жардам берүүчү прототипинде өз айланууңузду түзүүгө даярсыз. Биздин мисал - астронавттын артынан ак түстү көзөмөлдөө жана ага карай жылуу. Эгерде сенсорлор жогорку баалуулуктарды окуп жатса, робот сигнал берет, ошондо астронавт тыгылып калса, баштапкы абалга келтире алат, же барып, аскага тыгылып калса, кайра алып кетет. Бирок, бул каталарды ак көрүп турганда гана окуйт. Ак түстү көрө албай туруп, робот ката режимине өтөт. Ал көргөн нерсесине жараша үй базасына эки түрдүү электрондук кат жөнөтүү үчүн программаланган. Эгерде ал астронавттын терисинин түсүн көрсө, бул жакшы эмес, андыктан космонавт костюмунун иштебей калгандыгын көрсөтсө, үй базасына эскертүү берет. Башка билдирүү эгерде космонавт жөн эле көрүнбөй калса даярдалат. Эгерде камералар үчүн ак же теринин түсү көрсөтүлбөсө, робот айланып, башка, бирок башка электрондук кат жөнөтөт. Roomba астронавтты көрө албаган сүрөттөр электрондук каттар менен бирге жөнөтүлөт. Биздин долбоордун коду төмөндө көрсөтүлгөн:

for i = 1:.1: 3 img = r.getImage; image (img) red_mean = орточо (орточо (img (:,,, 1)))); green_mean = орточо (орточо (img (:,,: 2)))); blue_mean = орточо (орточо (img (:,,, 3)))); if red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.left> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || cliff.leftFront <10 || cliff.rightFront <10 || cliff.right700 || light.leftFront> 700 || light.leftCenter> 700 || light.rightCenter> 700 || light.rightFront> 700 || light.right> 700 r.beep () r.beep () r.beep () r.beep () r.beep () r.st stop else for i = 1: 2 r.moveDistance (0.2, 0.1) r. setDriveVelocity (.3,.2) r.stop end end end if green_mean <35 && blue_mean <35 %теринин түсүн көрсөтүү (астронавттын терисинин түсүнө карап тууралоо керек) r.beep (); r.beep (); r.beep (); почта = '[email protected]'; %костюм көрсөткөн электрондук кат жөнөтөт psswd = 'ооба'; хост = 'smtp.gmail.com'; порт = '465'; emailto = '[email protected]'; m_subject = 'субъект'; m_text = 'тест'; setpref ('Интернет', 'E_mail', почта); setpref ('Интернет', 'SMTP_Server', хост); setpref ('Интернет', 'SMTP_Username', почта); setpref ('Интернет', 'SMTP_Password', psswd); реквизиттер = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', почта); props.setProperty ('mail.smtp.host', хост); props.setProperty ('mail.smtp.port', порт); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', порт); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Жардам!', 'Космонавттардын формасы өчүк!', img); эгерде red_mean 135 || green_mean 135 || blue_mean 135 үчүн j = 1: 2 %, эгерде робот r.turnAngle (360) почтасын таба албаса, почта = '[email protected]'; psswd = 'ооба'; хост = 'smtp.gmail.com'; порт = '465'; emailto = '[email protected]'; m_subject = 'субъект'; m_text = 'тест'; setpref ('Интернет', 'E_mail', почта); setpref ('Интернет', 'SMTP_Server', хост); setpref ('Интернет', 'SMTP_Username', почта); setpref ('Интернет', 'SMTP_Password', psswd); реквизиттер = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', почта); props.setProperty ('mail.smtp.host', хост); props.setProperty ('mail.smtp.port', порт); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', порт); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Жардам!', 'Космонавт табылбайт!', img); r.stop end end end end

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

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

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