Talaan ng mga Nilalaman:

Roomba Parking Pal: 6 na Hakbang
Roomba Parking Pal: 6 na Hakbang

Video: Roomba Parking Pal: 6 na Hakbang

Video: Roomba Parking Pal: 6 na Hakbang
Video: Playful Kiss - Playful Kiss: Full Episode 10 (Official & HD with subtitles) 2024, Nobyembre
Anonim
Roomba Parking Pal
Roomba Parking Pal

Gumagamit ang proyektong ito ng isang iRobot Lumikha ng maipaprograma na roomba, MATLAB r2018a, at MATLAB mobile. Sa paggamit ng tatlong medium na ito at ang aming kaalaman sa pag-coding, pinrograma namin ang Lumikha ng iRobot upang bigyang kahulugan ang mga kulay at gumamit ng mga on-board sensor upang makumpleto ang mga gawain. Ang mga proyektong ito ay nakasalalay sa komunikasyon sa Raspberry Pi at MATLAB upang maisagawa ang mga gawaing ito.

Hakbang 1: Mga Kagamitan

Mga Kagamitan
Mga Kagamitan
Mga Kagamitan
Mga Kagamitan

1. iRobot Lumikha ng Robot

2. MATLAB r2018a

3. Raspberry Pi

4. Modyul ng Camera

5. Naka-print na 3-D na Camera Stabilizer Stand

6. Smartphone na may naka-install na MATLAB mobile

7. Laptop / Computer na may naka-install na MATLAB

Hakbang 2: Koneksyon

Ang hakbang na ito ay tungkol sa pagkonekta sa Raspberry Pi sa robot, pangalawa sa pagkonekta ng robot sa iyong computer, at pagkonekta sa smartphone sa computer.

Ang pinakamadaling bahagi ng prosesong ito ay ang pagkonekta sa Raspberry Pi sa iyong robot, dahil ang Raspberry Pi ay naka-mount sa tuktok ng robot. Mayroong isang kurdon mula sa robot na ang kailangan mo lang gawin ay mag-plug sa gilid ng Raspberry Pi.

Ang susunod na hakbang ay ang pagkonekta sa robot sa iyong computer upang maaari mong patakbuhin ang mga utos para maisagawa ang robot. Ang unang bagay na dapat mong gawin ay ikonekta ang iyong computer sa wireless network na nilikha ng iyong roomba. Ngayon, inirerekumenda na gamitin mo ang icon na Itakda ang Path sa MATLAB upang itakda ang landas upang magamit mo ang mga pag-andar sa Roomba toolbox mula sa MATLAB. Sa tuwing nagsisimula ka at nagtatapos sa paggamit ng robot, dapat kang gumawa ng isang "Two-Finger Salute" na hard reset ang robot, na nangangahulugang pinipigilan mo ang mga pindutan ng dock at spot nang sampung segundo hanggang sa lumabo ang ilaw na nagpapahiwatig na palabasin. Matagumpay ka sa hard reset na ito kung maririnig mo ang robot na naglalaro ng isang maikling sukat. Susunod dapat kang kumonekta sa roomba gamit ang isang linya ng code tulad ng "r = roomba (x)" kung saan ang 'x' ay ang numero na itinalaga sa robot na mayroon ka.

Panghuli, kailangan mong mag-download ng MATLAB mobile sa anumang mobile device na iyong gagamitin para sa proyektong ito, at ang application na ito ay magagamit sa parehong mga Android at Apple device. Kapag na-install na ang application, kakailanganin mong mag-login gamit ang iyong mga kredensyal. Pagkatapos ay dapat mong ikonekta ang aparatong ito sa iyong computer, gamit ang tab na may label na "Higit Pa" -> pagkatapos ay i-click ang "mga setting" -> pagkatapos ay i-click ang "Magdagdag ng isang computer" dapat itong ilabas ang screen na ipinapakita sa mga larawan sa itaas. Matapos mong makita ito susunod na hakbang na dapat mong pagdaanan ay ang pag-plug at pag-chugging lamang ng impormasyong hinihiling nito. Kapag matagumpay kang nakakonekta, makakatawag ka ng mga pagpapaandar na tinukoy mo sa iyong computer sa iyong telepono upang makontrol ang iyong robot.

Hakbang 3: Lohikal na Lumilikha ng isang MATLAB Code upang Gumamit ng Mga Sensor

Lohikal na Lumilikha ng isang MATLAB Code upang Gumamit ng Mga Sensor
Lohikal na Lumilikha ng isang MATLAB Code upang Gumamit ng Mga Sensor

Ang code ay magiging pinakamadaling likhain kapag ang karamihan dito ay nasa loob habang loop, upang ang roomba ay maaaring patuloy na mai-update ang wastong mga halagang tinitingnan nito. Kung mayroong isang error, magpapakita ang MATLAB ng isang error at kung saan ito lilitaw sa code, na ginagawang simple ang pag-troubleshoot.

Dinisenyo sa r2018a MATLAB, ginagamit ng code na ito ang mga karaniwang toolbox, ang iRobot Lumikha ng toolbox, pati na rin ang MATLAB mobile toolbox. Ang roomba na ginamit sa halimbawang ito ay itinalaga bilang 26, at ang r = roomba (26) ay kailangan lamang patakbuhin nang isang beses upang ganap na makipag-usap sa roomba.

Code:

pagpapaandar parkassist (x) kung x == 1

r = roomba (26)% kumokonekta sa roomba

habang totoo

r.setDriveVelocity (.05,.05)% nagtatakda ng roomba sa isang mas mabagal na bilis ng pagmamaneho

nakakuha ng data mula sa mga sensor ng paga

cliff = r.getCliffSensors% nakakakuha ng data mula sa mga cliff sensors

Ang ilaw = r.getLightBumpers% ay nakakakuha ng data mula sa mga light sensor ng bump

img = r.getImage;% basahin ang camera off ng robot

red_mean = ibig sabihin (ibig sabihin (mean (img (:,:, 1)))% binabasa ang average na halaga ng mga pulang pixel

green_mean = ibig sabihin (ibig sabihin (mean (img (:,:, 2)))% binabasa ang average na halaga ng mga berdeng pixel

blue_mean = ibig sabihin (ibig sabihin (mean (img (:,:, 3)))% binabasa ang average na halaga ng mga asul na pixel

kung bump.front == 1% binabasa ang mga front bump sensors

ihinto ni r.stop ang roomba

Ang msgbox ('Path obscured!', 'Parking Assistant Message')% ay nagpapakita ng mensahe na sinasabing ang landas ay nakatago break% natatapos ang loop

kung hindi man green_mean> 150

ihinto ni r.stop ang roomba

cont = questdlg ('Magpatuloy?', 'Path Nakumpleto')% ipinapakita ang kahon ng tanong na humihiling na magpatuloy

kung cont == 'Oo'

parkassist (1)% restart ang code

iba pa

magtapos

putulin ang% pagtatapos ng loop

kung hindi man red_mean> 140

r.turnAngle (45)% lumiliko sa roomba 45 degree

r.timeStart% nagsisimula ng isang oras na counter

habang totoo

r.setDriveVelocity (.05,.05)% nagtatakda ng bilis ng roomba

oras = r.timeGet% nagtatalaga ng oras sa isang variable

nakakuha ng data mula sa mga sensor ng paga

cliff = r.getCliffSensors% nakakakuha ng data mula sa mga cliff sensors

Ang ilaw = r.getLightBumpers% ay nakakakuha ng data mula sa mga light sensor ng bump

img = r.getImage;% basahin ang camera off ng robot

red_mean = ibig sabihin (ibig sabihin (mean (img (:,:, 1)))% binabasa ang average na halaga ng mga pulang pixel

green_mean = ibig sabihin (ibig sabihin (mean (img (:,:, 2)))% binabasa ang average na halaga ng mga berdeng pixel

blue_mean = ibig sabihin (ibig sabihin (mean (img (:,:, 3)))% binabasa ang average na halaga ng mga asul na pixel

kung blue_mean> 120

r.moveDistance (-0.01)% gumagalaw ang roomba paatras ng isang itinakdang distansya songPlay (r, 'T400, C, D, E, F, G, A, B, C ^', 'totoo')% ay gumaganap ng isang tumataas na sukat ng musikal

Ang msgbox ('Natagpuan ang Tubig!', 'Mensahe ng Assistant ng Paradahan')% ay nagpapakita ng isang mensahe na sinasabing ang tubig ay natagpuan r.turnAngle (-80)% umiikot sa roomba 80 degree

tinatapos ang% break kasalukuyang loop

kung hindi man ilaw.kunguna> 25 || light.leftFront> 25% nagbabasa ng light bump sensors

r.moveDistance (-0.01)% gumagalaw ang roomba paatras ng isang itinakdang distansya

r.turnAngle (-35)% paikutin ang roomba 35 degree

tinatapos ang% break kasalukuyang loop

kung hindi man cliff. RightFront <2500 && cliff.leftFront <2500% nagbabasa ng parehong cliff sensors

r.moveDistance (-0.1)% gumagalaw pabalik ng roomba ng isang itinakdang distansya

r.turnAngle (-80)% umiikot sa roomba 80 degree

tinatapos ang% break kasalukuyang loop

kung hindi man> = 3

ihinto ni r.stop ang roomba

patuloy = questdlg ('Libre ng Station, Magpatuloy?', 'Mensahe sa Assistant ng Paradahan')% tinanong kung dapat magpatuloy ang roomba kung magpadayon == 'Oo'

r.turnAngle (-90)% paikutin ang roomba 90 degree

parkassist (1)% restart ang pagpapaandar

iba pa

ihihinto ni r.stop ang roomba

magtapos

iba pa

magtapos

magtapos

kung hindi man cliff. RightFront <2500 && cliff.leftFront <2500% nagbabasa ng parehong cliff sensors

r.moveDistance (-0.1)% gumagalaw pabalik ng roomba ng isang itinakdang distansya

r.turnAngle (-90)% umiikot sa roomba 90 degree

kung hindi man cliff. RightFront <2500% binabasa ang tamang sensor ng talampas

r.turnAngle (-5)% bahagyang lumiliko ang roomba sa tapat ng direksyon ng cliff sensor

kung hindi man cliff.leftFront <2500% binabasa ang kaliwang sensor ng talampas

r.turnAngle (5)% bahagyang lumiliko ang roomba sa tapat ng direksyon ng cliff sensor

iba pa

magtapos

magtapos

magtapos

Hakbang 4: Pagsubok sa Code at Robot

Pagsubok sa Code at Robot
Pagsubok sa Code at Robot
Pagsubok sa Code at Robot
Pagsubok sa Code at Robot
Pagsubok sa Code at Robot
Pagsubok sa Code at Robot

Matapos mabuo ang code, ang susunod na hakbang ay upang subukan ang code at ang robot. Dahil maraming iba't ibang mga pagsasaayos na maaaring gawin sa code, tulad ng anggulo na lumiliko ang robot, ang bilis ng paggalaw nito, at ang mga threshold para sa bawat kulay, ang pinakamahusay na paraan upang malaman ang mga halagang ito para sa iyong robot ay upang subukan sila at magbago habang papunta ka. Para sa bawat araw ng trabaho na mayroon kami, patuloy naming binabago ang mga halagang ito dahil ang ilan sa mga ito ay umaasa sa kapaligiran na pinagana ng iyong robot. Ang pinakamahusay na paraan na nahanap namin ay ilagay ang roomba sa landas na nais mong sundin, at magkaroon isang hadlang na sapat na mataas upang ang camera ay hindi makakita ng mga kulay na hindi mo nais na ito. Ang susunod na hakbang ay hayaan itong tumakbo at ipakita ito sa mga kulay na gusto mo, kung nais mo itong kumpletuhin ang gawaing iyon. Habang nagpupunta ka, kung nakakita ka ng isang isyu ng pinakamahusay na bagay na dapat gawin ay itulak sa harap ng bumper, na pinapahinto, pagkatapos ay baguhin ang parameter na pinagkaguluhan mo.

Hakbang 5: Pagkilala sa Error

Sa bawat proyekto na tapos na nakumpleto, palaging may mga mapagkukunan ng error. Para sa amin, naranasan namin ang error sa simpleng katotohanan na ang robot ay hindi tumpak sa angulo kung saan ito lumiliko, kaya't kung sasabihin mo ito na i-on ang 45 degree na hindi ito magiging eksakto. Ang isa pang mapagkukunan ng error para sa amin ay kung minsan ang mga malfunction ng robot, at mahirap mong i-reset ito bago ito gumana muli. Ang pangunahing huling mapagkukunan ng error para sa amin ay ang parehong code ay hindi magkakaroon ng parehong epekto sa iba't ibang mga robot, kaya maaari kang maging mapagpasensya dito at ayusin nang naaayon.

Hakbang 6: Konklusyon

Ngayon ay mayroon ka ng lahat ng mga tool upang maglaro sa iyong roomba, na nangangahulugang maaari mong manipulahin ang code sa gayon nais mong makamit ang mga hangarin na nais mo. Ito dapat ang pinakamagandang bahagi ng iyong araw, kaya't magsaya at magmaneho ng ligtas!

Inirerekumendang: