Мазмұны:
- 1 -қадам: қажетті бөлшектер
- 2 -қадам: Файлдар мен камераның конфигурациясы
- 3 -қадам: Roomba бастапқы сынағы
- 4 -қадам: MATLAB кодының мысалы
Бейне: Ғарышкер-көмекші бөлме: 4 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:26
Бұл жоба iRobot Create Version 2 бортындағы Raspberry Pi 3 көмегімен жасалған, MATLAB роботты сенсорлар мен камераның көмегімен нақты нұсқауларды орындауға бағдарламалау үшін қолданылады. Датчиктер мен камералар ғарышкердің соңынан түсетін және бірдеңе дұрыс болмай қалса, оның үй базасымен байланыс жасау мүмкіндігін беретін нақты тапсырмаларды орындау үшін қолданылады.
1 -қадам: қажетті бөлшектер
1. iRobot 2 нұсқасын жасау
IRobot Create - бұл жобаның ең маңызды бөлігі, өйткені ол бағдарламаланатын және ғарышкерлерді бақылайтын және оларға болашақта көмектесетін нақты ровер үшін тамаша ұсыныс бола алады
2. Таңқурай Pi 3
Бұл жобада Raspberry Pi бағдарламаланатын болды. Код Pi үшін арналған және Pi нұсқасы қоса берілген 3 - (модель B). Басқа бағдарламаланатын тақталар, мысалы arduino, қолдануға болады, алайда arduino және басқа тақталардың көпшілігі басқа қадамда сипатталғандардан басқа кодтауды қажет етеді
3. Raspberry Pi камералық модулі
Raspberry Pi -ге осы жобаға қажет жалғыз қосымша байланыс - бұл камера модулі. Камера модулі бұл жобаның ажырамас бөлігі болып табылады, өйткені Roomba тек камерада көрген нәрсеге негізделген тапсырмаларды орындайды
4. MATLAB 2018a
MATLAB -тың соңғы нұсқасы 2018a осы баптауға қатысатын кодтау үшін қолданылды. MATLAB -тың басқа да көптеген нұсқалары онымен жұмыс істейтін шығар, себебі Roomba бағдарламалау біршама уақытқа созылған
2 -қадам: Файлдар мен камераның конфигурациясы
1. Raspberry Pi мен Camera камерасының қосылымдары
- 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 сияқты Wi -Fi желісіне қосылғаныңызға көз жеткізіңіз. Онсыз сіз ешқашан 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 = орташа (орташа (img (:,,, 1))) кодтарымен табуға болады;
green_mean = орташа (орташа (img (:,,:, 2)))); және blue_mean = орташа (орташа (img (:,,, 3))));.
4 -қадам: MATLAB кодының мысалы
Бұл кезде сіз енді сенсорлар мен суретке түсіру бағдарламалық жасақтамасын Mars Rover-тің адамға көмектесетін прототипін жасау үшін пайдалануға дайынсыз. Біздің мысал - ғарышкерді ақ түсті қадағалап, оған қарай жылжыту. Егер сенсорлар жоғары мәндерді оқып жатса, робот дыбыс шығарады, осылайша астронавт роботты кептеліп қалса, оны қалпына келтіре алады, ал егер ол қияға жабысып қалса, оны алып, қалпына келтіре алады. Алайда, ол тек ақтарды көргенше бұл қателерді оқиды. Ақ түсті көре алмай робот қате режиміне өтеді. Ол көргеніне байланысты үйге екі түрлі электрондық поштаны жіберуге бағдарламаланған. Егер ол астронавттың терісінің түсін көрсе, бұл жақсы емес, сондықтан егер космонавттың костюмінің ақаулығы бар терісі болса, ол үй базасын ескертеді. Басқа хабарлама, егер ғарышкер жай көзден ғайып болса, дайындалады. Егер камераларда ақ немесе тері түсі болмаса, робот айналады және басқа, бірақ басқа электрондық поштаны жібереді. Ғарышкерді көре алмайтын суреттер электронды поштадағы хабарламамен бірге жіберіледі. Біздің жобаның коды төменде көрсетілген:
i = 1 үшін:.1: 3 img = r.getImage; сурет (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.beep () r.stop elseif cliff.left <10 || cliff.leftFront <10 || cliff.rightFront <10 || жартасты.құқық700 || light.leftFront> 700 || light.leftCenter> 700 || light.rightCenter> 700 || жеңіл.оңғаФронт> 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.stone end end end егер 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', 'жалған'); sendmail (emailto, 'Көмек!', 'Ғарышкерлер формасы өшірулі!', img); егер red_mean 135 аяқталса || green_mean 135 || blue_mean 135 үшін j = 1: 2 %, егер ақ робот r.turnAngle (360) mail = '[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', 'жалған'); sendmail (emailto, 'Көмек!', 'Ғарышкерді табу мүмкін емес!', img); r.stop end end end end
Әлбетте, бұл жерде лас, бірақ көшірілгеннен кейін оны өшіру керек. Бұл үшін парольдер мен электрондық поштаны осы жобаны жасайтындар беруі керек.
Алайда, біздің мысал - бұл роботты барлық адамдарға ұнайтын етіп жасаудың көптеген әдістерінің бірі. Сіз өзіңізге сәйкес келетін көптеген әр түрлі нәрселерді жасай аласыз.
Ұсынылған:
Түн ортасында жуынатын бөлме жарығы: 5 қадам (суреттермен)
Түн ортасында жуынатын бөлме жарығы: Кейбіреулеріміз жуынатын бөлмені түн ортасында пайдалану қажеттілігін сезінеміз. Егер сіз шамды қоссаңыз, түнгі көру жоғалуы мүмкін. Ақ немесе көк жарық сізді ұйқы гормоны - мелатониннен айырады, бұл ұйқыға қайта оралуды қиындатады. Сонымен
Бөлме жарығы PIR сенсоры мен Arduino көмегімен басқарылады: 6 қадам
Бөлме жарығы PIR сенсоры мен Arduino көмегімен басқарылады: Бүгін біз сіздің бөлмеміздегі шамдарды Arduino PIR қозғалыс сенсоры арқылы қозғалысты анықтау арқылы басқаратын боламыз. Бұл жобаны жасау өте қызықты және ол сіздің үйіңізде өте практикалық түрде қолданылады және сіз де осы жобаны орындау арқылы ақшаңызды үнемдей аласыз. Джу
BLYNK ESP8266 және DHT11 көмегімен интернеттегі бөлме температурасы: 5 қадам (суреттермен)
BLYNK ESP8266 & DHT11 көмегімен интернеттегі бөлмедегі температура: Сәлеметсіздер ме, балалар, біз бүгін әлемнің кез келген нүктесінен біздің бөлмемізді бақылауға болатын бөлме температурасы мониторын жасаймыз және мұны істеу үшін біз BLYNK IoT тақтайшасын қолданамыз. DHT11 бөлме температурасын оқу үшін біз ESP8266 қолданамыз
Бөлме термостаты - Arduino + Ethernet: 3 қадам
Бөлме термостаты-Arduino + Ethernet: Жабдық тұрғысынан жобада мыналар қолданылады: Arduino Uno / Mega 2560 Ethernet қалқаны Wiznet W5100 / Ethernet модулі Wiznet W5200-W5500 DS18B20 OneWire шинасындағы RRE-5VDC-SL-C рельсіндегі температура сенсоры. ауысу
Cosmo сағаты - ғарышкер ғарышқа кірген сайын түсі өзгереді: 8 қадам (суреттермен)
Cosmo сағаты - ғарышкер ғарышқа шыққан сайын түсі өзгереді: Сәлем! Сіз ғарыштық әуесқойсыз ба? Егер иә болса, онда сәлем! Мен ғарыш пен астрономияны жақсы көремін. Әлбетте, мен бұл жерге көтеріліп, ғаламға жақынырақ қарайтын ғарышкер емеспін. Бірақ жерден адам көкке сапар шеккенін білген сайын менде шабыт пайда болады