Мазмұны:

Ғарышкер-көмекші бөлме: 4 қадам
Ғарышкер-көмекші бөлме: 4 қадам

Бейне: Ғарышкер-көмекші бөлме: 4 қадам

Бейне: Ғарышкер-көмекші бөлме: 4 қадам
Бейне: Басқа тышты деген осы 😡 2024, Қараша
Anonim
Ғарышкер-көмекші Roomba
Ғарышкер-көмекші Roomba

Бұл жоба 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 кодының мысалы

Мысал MATLAB коды
Мысал 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

Әлбетте, бұл жерде лас, бірақ көшірілгеннен кейін оны өшіру керек. Бұл үшін парольдер мен электрондық поштаны осы жобаны жасайтындар беруі керек.

Алайда, біздің мысал - бұл роботты барлық адамдарға ұнайтын етіп жасаудың көптеген әдістерінің бірі. Сіз өзіңізге сәйкес келетін көптеген әр түрлі нәрселерді жасай аласыз.

Ұсынылған: