Talaan ng mga Nilalaman:
- Hakbang 1: Mga Kagamitan
- Hakbang 2: Koneksyon
- Hakbang 3: Lohikal na Lumilikha ng isang MATLAB Code upang Gumamit ng Mga Sensor
- Hakbang 4: Pagsubok sa Code at Robot
- Hakbang 5: Pagkilala sa Error
- Hakbang 6: Konklusyon
Video: Roomba Parking Pal: 6 na Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:13
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
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
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
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:
Arduino Car Reverse Parking Alert System - Hakbang sa Hakbang: 4 na Hakbang
Arduino Car Reverse Parking Alert System | Hakbang sa Hakbang: Sa proyektong ito, magdidisenyo ako ng isang simpleng Arduino Car Reverse Parking Sensor Circuit gamit ang Arduino UNO at HC-SR04 Ultrasonic Sensor. Ang Arduino based Car Reverse alert system na ito ay maaaring magamit para sa isang Autonomous Navigation, Robot Ranging at iba pang range r
IoT Batay sa Smart Parking System na Gamit ang NodeMCU ESP8266: 5 Mga Hakbang
Ang IoT Batay sa Smart Parking System Gamit ang NodeMCU ESP8266: Sa kasalukuyan ang paghanap ng paradahan sa mga abalang lugar ay napakahirap at walang sistema upang makuha ang mga detalye ng pagkakaroon ng paradahan sa online. Isipin kung makukuha mo ang impormasyon sa pagkakaroon ng puwang ng paradahan sa iyong telepono at wala kang paggala sa paligid upang suriin ang
Ang Parking ay Tumutulong sa Madaling Pagkumpuni / Pag-diagnose: 4 na Hakbang
Madaling Mag-ayos / Mag-diagnose ng Paradahan: Ok ay magsisimula na, mayroon akong isang 2010 Chevrolet Avalanche at mayroon itong 4 na mga sensor ng tumutulong sa paradahan sa likurang bumper. Ang nakakaakit na ito ay maaaring magamit sa at sasakyan sa abot ng aking pagkakaalam, lagay ng panahon mayroon kang harap o Rea o pareho. Kaya't nagpunta ako sa aking fav
IOT Batay sa Smart Parking: 7 Mga Hakbang
IOT Batay sa Smart Parking: Ni Tanmay Pathak at Utkarsh Mishra. Mga Mag-aaral @ International Institute of Technology Technology, Hyderabad (IIITH) ABSTRACT Matagumpay naming naipatupad ang isang IOT na nakabatay sa matalinong sistema ng paradahan. Sa tulong ng mga indibidwal na node (proximity sensor) kailanman
MIDI Pod-Pal: 4 na Hakbang
MIDI Pod-Pal: *** I-UPDATE 4/22 / '21 *** Nagdagdag ako ng isang buong iskema na ipinapakita ang lahat ng mga kable upang makatulong sa konstruksyon. *** Hindi ako pupunta sa isang katawa-tawa na halaga ng lalim dito sa bahagi ng pagbuo, ang aking hangarin ay upang ipakita ang isa pang halimbawa ng pagbuo ng isang Arduino based MI