Talaan ng mga Nilalaman:
- Hakbang 1: Mga Bahagi at Materyales
- Hakbang 2: Roomba Database File
- Hakbang 3: Pagkonekta sa Roomba
- Hakbang 4: Ang Code
- Hakbang 5: Konklusyon
Video: Kinokontrol na Roomba ng MATLAB: 5 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:13
Ang layunin ng proyektong ito ay upang magamit ang MATLAB pati na rin ang isang binagong iRobot programmable robot. Pinagsama ng aming pangkat ang aming mga kasanayan sa pag-cod upang lumikha ng isang script ng MATLAB na gumagamit ng maraming mga pag-andar ng iRobot, kabilang ang mga sensor ng bangin, mga sensor ng bumper, light sensor, at camera. Ginamit namin ang mga pagbabasa ng sensor at camera na ito bilang mga input, na pinapayagan kaming lumikha ng ilang mga output na nais naming gamitin ang mga function at MAT loop code at loop. Ginagamit din namin ang MATLAB mobile device at gyroscope bilang isang paraan upang kumonekta sa iRobot at makontrol ito.
Hakbang 1: Mga Bahagi at Materyales
MATLAB 2018a
-Ang 2018 na bersyon ng MATLAB ay ang pinaka ginustong bersyon, karamihan dahil ito ang pinakamahusay na gumagana sa code na kumokonekta sa mobile device. Gayunpaman, ang karamihan sa aming code ay maaaring bigyang kahulugan sa karamihan ng mga bersyon ng MATLAB.
iRobot Lumikha ng Device
-Ang aparatong ito ay isang espesyal na ginawang aparato na nag-iisang layunin ay para sa pag-program at pag-coding. (Hindi ito isang aktwal na vacuum)
Raspberry Pi (may camera)
- Ito ay isang hindi mahal na computer board na gumagana bilang utak ng iRobot. Maaari itong maging maliit, ngunit may kakayahang maraming mga bagay. Ang camera ay isang karagdagang add on. Gumagamit din ito ng raspberry pi upang makuha ang lahat ng mga pag-andar at utos nito. Ang camera na nakalarawan sa itaas ay naka-mount sa isang naka-print na stand ng 3D, nilikha ng mga kagawaran ng Engineering Fundamentals sa University of Tennessee
Hakbang 2: Roomba Database File
Mayroong pangunahing file na kakailanganin mo upang magamit ang tamang mga pag-andar at utos para sa iyong roomba. Ang file na ito ay kung saan ka sumulat ng code ay kumukuha ng mga pagpapaandar upang gawing mas mapamahalaan ang pagpapatakbo ng iyong roomba.
Maaari mong i-download ang file sa link na ito o ang nada-download na file sa ibaba
ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php
Hakbang 3: Pagkonekta sa Roomba
Una, dapat mong tiyakin na nakakonekta ang iyong robot sa iyong board na raspberry pi sa pamamagitan ng paggamit ng isang micro USB plug. Pagkatapos ay kailangan mong ikonekta nang maayos ang iyong computer at robot sa parehong WiFi. Kapag nagawa na ito, maaari mong paganahin ang iyong robot at kumonekta dito gamit ang ibinigay na utos sa file ng database ng robot. (Laging mahirap i-reset ang iyong robot bago at pagkatapos mong gamitin ito). Halimbawa, ginagamit namin ang utos na "r.roomba (19)" upang kumonekta sa aming robot, na nagtatalaga ng variable r sa aming aparato. Tumutukoy ito pabalik sa database file, na nagtatakda ng aming variable bilang isang istraktura na maaari naming sanggunian sa anumang naibigay na sandali.
Hakbang 4: Ang Code
Ikinabit namin ang buong code sa ibaba, ngunit narito ang isang maikling pangkalahatang ideya na nagpapakita ng mga mahahalagang elemento sa aming script. Ginamit namin ang lahat ng mga sensor, pati na rin ang camera upang ganap na ma-maximize ang potensyal ng aming robot. Nagsama rin kami ng code na pinapayagan kaming ikonekta ang isang mobile device sa aming robot at gamitin ang gryoscope nito upang manu-manong kontrolin ito.
Nagsimula kami sa simpleng utos na "r.setDriveVelocity (.06)" na nagtatakda sa pasulong na bilis ng robot sa.06 m / s. Ito ay upang mapalipat muna ang robot
Pagkatapos, ang aming pangunahing iskrip ay sinimulan ng isang habang loop na kumukuha ng data ng ibinigay na robot sa pamamagitan ng paglikha ng mga istraktura na maaari naming sanggunian at gamitin sa mga kondisyong pahayag sa ibaba, kaya pinapayagan kaming sabihin sa robot na magpatupad ng isang tiyak na utos batay sa data ng istraktura nagbabasa ang robot ng mga sensor nito. Na-set up namin ito upang mabasa ng robot ang mga sensor ng talampas nito at sumunod sa isang itim na landas
habang ang tunay na% habang ang loop ay napupunta hanggang sa isang bagay na "maling" nangyayari (sa kasong ito ito ay magpapatuloy nang walang hanggan) data = r.getCliffSensors; data2 = r.getBumpers;% kinukuha ng tuloy-tuloy ang data tungkol sa mga halaga ng cliff sensor at itinalaga ang mga ito sa isang variable% img = r.getImage; % Kumuha ng larawan mula sa naka-mount na camera% na imahe (img); % Ipinapakita ang imahe na nakuha% red_mean = ibig sabihin (ibig sabihin (img (:,:, 1)));% Kinukuha ang average na halaga para sa berdeng kulay kung data.rightFront <2000 r.turnAngle (-2); % lumiliko ang Roomba humigit-kumulang na.2 degree CW sa sandaling ang halaga para sa mga kanang front cliff sensor ay nahuhulog sa ibaba 2000 r.setDriveVelocity (.05); elseif data.leftFront data.leftFront && 2000> data. RightFront r.moveDistance (.1); Sinasabi ni% sa Roomba na magpatuloy na humigit-kumulang na.2 m / s kung ang parehong mga halaga mula sa kanang harap at kaliwang harap na sensor ay nahuhulog sa ibaba 2000% r.turnAngle (0); Sinasabi ni% sa Roomba na huwag lumiko kung ang nabanggit na mga kundisyon ay totoo
kung hindi man data2. kanang == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05); kung hindi man data2.left == 1 r.moveDistance (-. 2); r.turnAngle (5); r.setDriveVelocity (.05); kung hindi man data2.front == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05);
Pagkatapos nito habang loop, nagpasok kami ng isa pang habang loop na nagpapalitaw ng data na nakuha sa pamamagitan ng camera. At gumagamit kami ng isang kung pahayag sa loob nito habang loop na kumikilala sa isang imahe gamit ang isang tukoy na programa (alexnet), at sa sandaling makilala nito ang imahe ay agad nitong pinalitaw ang remote control ng mobile device
anet = alexnet; % Nagtatalaga ng malalim na pag-aaral ng alexnet sa isang variable habang totoo% Walang Hanggan habang loop img = r.getImage; img = imresize (img, [227, 227]); label = uriin (anet, img); kung tatak == "papel na tuwalya" || lagda == "refrigerator" label = "tubig"; pagtatapos ng imahe (img); pamagat (char (label)); drawnow;
Ang loop habang pinapayagan kaming kontrolin ang aparato sa aming telepono ay kukunin ang data na iyon mula sa gyroscope ng telepono at isaksak namin ito sa isang matrix na patuloy na nag-stream ng data pabalik sa MATLAB sa computer. Gumagamit kami ng isang pahayag kung binabasa ang data ng matrix at nagbibigay ng isang output na gumagalaw ng aparato batay sa ilang mga halaga ng gyroscope ng telepono. Mahalagang malaman na ginamit namin ang mga sensor ng Orientation ng mobile device. Ang isa-tatlong matrix na nabanggit sa itaas ay ikinategorya ng bawat elemento ng mga orientation sensor ng telepono, na azimuth, pitch, at panig. Ang kung pahayag ay lumikha ng mga kundisyon na nakasaad kapag ang panig ay lumampas sa mga halagang 50 o bumagsak sa ibaba -50, pagkatapos ang robot ay gumagalaw ng isang tiyak na distansya pasulong (positibong 50) o paatras (negatibong 50). At ang parehong napupunta para sa halaga ng pitch. Kung ang halaga ng pitch ay lumampas sa halaga ng 25 ng pagbagsak sa ibaba -25, ang robot ay lumiliko sa isang anggulo ng 1 degree (positibo 25) o negatibong 1 degree (negatibong 25)
habang ang tunay na pag-pause (.1)% Pag-pause ng.5 segundo bago makuha ang bawat halaga Controller = iphone. Orientation; % Nagtatalaga ng matrix para sa mga halaga ng oryentasyon ng iPhone sa isang variable na Azimuthal = Controller (1); % Nagtatalaga ng unang halaga ng matrix sa isang variable na Pitch = Controller (2); % Nagtatalaga ng pangalawang halaga ng matrix sa isang variable (ikiling pasulong at paatras kapag ang iPhone ay gaganapin patagilid) Side = Controller (3); % Nagtatalaga ng pangatlong halaga ng matrix sa isang variable (ikiling ang kaliwa at kanan kapag ang iPhone ay gaganapin patagilid)% Nagdudulot ng isang output batay sa oryentasyon ng telepono kung Side> 130 || Side 25 r.moveDistance (-. 1)% Inililipat ang Roomba paatras ng tinatayang.1 metro kung ang iPhone ay ikiling paatras ng hindi bababa sa 25 degress elseif sa Side 25 r.turnAngle (-1)% Binabago ang Roomba humigit-kumulang na 1 degree CCW kung ang iPhone ay ikiling kaliwa ng hindi bababa sa 25 degree na iba pa kung Pitch <-25 r.turnAngle (1)% Binabaling ang Roomba humigit-kumulang na 1 degree CW kung ang iPhone ay ikiling ng hindi bababa sa 25 degree end
Narito lamang ang mga highlight ng mga pangunahing piraso ng aming code, na isinama namin kung kailangan mong mabilis na kopyahin at i-paste ang isang seksyon para sa iyong pakinabang. Gayunpaman, ang aming buong code ay nakakabit sa ibaba kung kinakailangan
Hakbang 5: Konklusyon
Ang code na aming isinulat ay partikular na idinisenyo para sa aming robot pati na rin ang aming pangkalahatang paningin sa proyekto. Ang aming layunin ay gamitin ang lahat ng aming mga kasanayan sa pag-coding ng MATLAB upang makagawa ng isang mahusay na disenyo ng script na gumagamit ng karamihan sa mga tampok ng robot. Ang paggamit ng tagokontrol ng telepono ay hindi mahirap tulad ng naisip mo, at inaasahan namin na ang iyong code ay makakatulong sa iyo na mas maunawaan ang konsepto sa likod ng pag-cod ng isang iRobot.
Inirerekumendang:
Kinokontrol ng Word Clock ng 114 na Mga Serbisyo: 14 Mga Hakbang (na may Mga Larawan)
Ang Word Clock na Kinokontrol ng 114 Servos: Ano ang mayroon ng 114 LEDs at palaging tumatakbo? Tulad ng maaari mong malaman ang sagot ay isang salitang orasan. Ano ang mayroon ng 114 LEDs + 114 servos at palaging gumagalaw? Ang sagot ay ang orasan na kinokontrol ng servo para sa proyektong ito Nakipagtulungan ako sa isang kaibigan ko na lumingon
Kinokontrol ng Arduino Robotic Arm W / 6 Mga Degree ng Freedom: 5 Mga Hakbang (na may Mga Larawan)
Kinokontrol ng Arduino Robotic Arm W / 6 Degree of Freedom: Miyembro ako ng isang robotics group at bawat taon ang aming pangkat ay nakikilahok sa isang taunang Mini-Maker Faire. Simula noong 2014, nagpasya akong bumuo ng isang bagong proyekto para sa kaganapan sa bawat taon. Sa oras na iyon, mayroon akong isang buwan bago ang kaganapan upang maglagay ng isang bagay na makakalimutan
Kinokontrol ng Arduino na Dock ng Telepono na May Mga Lampara: 14 Mga Hakbang (na may Mga Larawan)
Arduino Controlled Phone Dock With Lamps: Ang ideya ay sapat na simple; lumikha ng isang dock ng singilin sa telepono na magbubukas lamang ng lampara kapag nagcha-charge ang telepono. Gayunpaman, tulad ng madalas na nangyayari, ang mga bagay na tila simpleng simple ay maaaring magtapos sa pagkuha ng medyo mas kumplikado sa kanilang pagpapatupad. Ito ay
Kinokontrol ng Browser Roomba Robot Gamit ang Raspberry Pi Model 3 A +: 6 Mga Hakbang (na may Mga Larawan)
Kinokontrol ng Browser Roomba Robot Gamit ang Raspberry Pi Model 3 A +: Pangkalahatang-ideyaNagtutuon ang Ituturo na ito sa kung paano bigyan ang isang patay na Roomba ng isang bagong utak (Raspberry Pi), mga mata (Webcam), at isang paraan upang makontrol ang lahat mula sa isang web browser. Mayroong maraming mga Roomba hack na pinapayagan ang kontrol sa pamamagitan ng serial interface. Hindi pa
Kinokontrol ng Arduino Lilypad Mga Nearrings ng NeoPixel: 7 Mga Hakbang (na may Mga Larawan)
Kinokontrol ng Arduino Lilypad Mga Nearrings ng NeoPixel: Kamusta sa lahat, Ayaw mo bang magkaroon ng ganoon kaayos at astig na hikaw kapag lumabas ka sa gabi o para sa mga pagdiriwang? Nais kong magkaroon nito, iyon ang dahilan kung bakit ginawa ko ang Arduino Lilypad Controlled Neopixel Earrings. :) Ang mga hikaw na ito ay hindi lamang nag-iilaw. Mayroon silang