Orodha ya maudhui:
- Hatua ya 1: Vifaa
- Hatua ya 2: Endeleza Usimbuaji ili Kutosheleza Matokeo Yanayotamaniwa
- Hatua ya 3: Upimaji
- Hatua ya 4: Angalia Matokeo ya Visual
Video: IRobot Unda-Mars Usafirishaji Rover Alama I: 4 Hatua
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:54
Mafundisho haya yatakufundisha jinsi ya kuanzisha iRobot Unda kwa kutumia uandishi wa MatLab. Roboti yako itakuwa na uwezo wa kutafuta madini kwa kutofautisha maumbo, kuendesha eneo lenye mwinuko kwa kutumia sensorer za mwamba, na ina uwezo wa kudhibitiwa kwa mikono kupitia lishe ya moja kwa moja.
Hatua ya 1: Vifaa
Kwa mradi huu, utahitaji iRobot Unda, ambayo ni toleo linaloweza kupangwa la kusafisha utupu wa roboti ya Roomba. Roboti huja ikiwa na vifaa vya sensorer zote zinazohitajika kwa mradi huu, haswa sensorer za mapema, sensorer za mwamba na sensorer za "Light Bump". Utahitaji pia Raspberry Pi na kamera ya video, inayotumiwa kwa mawasiliano bila waya, programu ya moja kwa moja, na malisho ya video ya moja kwa moja. Mwishowe, utahitaji mlima uliochapishwa wa 3D kwa Raspberry Pi na kamera.
Hatua ya 2: Endeleza Usimbuaji ili Kutosheleza Matokeo Yanayotamaniwa
Mara tu ukiunganisha Roomba yako, utahitaji kuunda nambari ya Matlab ambayo itakupa matokeo unayotaka baada ya pembejeo unazotaka.
Nambari inaweza kuonekana hapa:
Mradi wa Roomba% Brenten Arnold (barnol15); Julianne Korn (qdp218); Mike Heal (mheal)% 4/11/19% Maelezo ya Tatizo: Unda rover kusaidia wanadamu wakati wa% utafutaji / makao ya mars. Njia ya suluhisho: Tafuta vitu hai (kijani kibichi) kwa kutumia bumpers% nyepesi, sensorer za mwamba na kamera kuangalia vitu vya kikaboni. Ruhusu% rover kuvinjari maeneo mabaya kupitia utumiaji wa bumpers, sensorer% ya mwamba, na sensorer za urefu wa gurudumu. Wezesha wanadamu kudhibiti rover kutoka% umbali salama na kutafuta madini kwa mikono. uchaguzi = {'MAISHA', 'ROUGH TERRAIN', 'USER CONTROL'}; % Chaguzi tatu katika menyu ya mazungumzo Kuweka = menyu (", chaguzi) ikiwa Kuweka> 0% Ikiwa chaguo lililochaguliwa uliza chaguo la uthibitisho wa mtumiaji2 = {'Ndio', 'Hapana'}% Unda safu ya seli ya" ndiyo "au" Hapana "choice Confirm = menu (['You chose"' uchaguzi {Setting} '"mode.'], uchaguzi2)% Thibitisha chaguo la kuweka mtumiaji ikiwa Thibitisha == 1 ikiwa Kuweka == 1% Angalia ikiwa mipangilio ya" MAISHA "ilichaguliwa i = 0 wakati mimi Rejesha na uhifadhi maadili ya sensorer ya mwamba katika muundo wa seli "y" l = r.getLightBumpers% Pata na uhifadhi nambari nyepesi za muundo katika muundo "f" ikiwa l.kushoto> 100% Angalia ikiwa bumper nyepesi kushoto imefunikwa r.moveDistance (-0.05)% Sogeza roomba nyuma mita 0.05 r.turnAngle (20)% Zungusha roomba digrii 20 CCW img = r.getImage% Pata picha kutoka kwa kamera ya pie ya rasberry kwenye roomba rect = [100 0 150 150]; img = imcrop (img, rect)% picha ya mazao ili kuzingatia kituo nyekundu = maana (maana (img (:,:, 1)))% wastani wa nyekundu nyekundu kijani = maana (maana (img (:,:, 2)) % wastani ukali wa kijani bluu = maana (maana (img (:,:, 3)))% wastani wa kiwango cha bluu ikiwa kijani> nyekundu && kijani> bluu% Angalia ikiwa mmea uko kwenye picha d = msgbox (['Life found! ']); Onyesha kisanduku cha ujumbe kinachosema "Maisha yamepatikana!" subiri (d); mwisho mwingine ikiwa l. kushotoFront> 100% Angalia iko kushoto / mbele taa ya taa imefunikwa r.moveDistance (-0.05)% Sogeza roomba nyuma mita 0.05 img = r.getImage% Pata picha kutoka kwa kamera ya pie ya rasberry kwenye roomba na uhifadhi katika img ya kutofautisha 'img 'rect = [100 0 150 150]; img = imcrop (img, rect)% picha ya mazao ili kuzingatia kituo nyekundu = maana (maana (img (:,:, 1)))% wastani wa nyekundu nyekundu kijani = maana (maana (img (:,:, 2)) % wastani ukali wa kijani bluu = maana (maana (img (:,:, 3)))% wastani wa kiwango cha bluu ikiwa kijani> nyekundu && kijani> bluu% Angalia ikiwa mmea uko kwenye picha d = msgbox (['Life found! ']); Onyesha kisanduku cha ujumbe kinachosema "Maisha yamepatikana!" subiri (d); end elseif l.leftCenter> 100% Angalia ikiwa bumper ya kushoto / katikati imefunikwa r.moveDistance (-0.05)% Sogeza roomba nyuma mita 0.05 img = r.getImage% Pata picha kutoka kwa kamera ya pie ya rasberry kwenye roomba na uhifadhi katika img ya kutofautisha 'img 'rect = [100 0 150 150]; img = imcrop (img, rect)% picha ya mazao ili kuzingatia kituo nyekundu = maana (maana (img (:,:, 1)))% wastani wa nyekundu nyekundu kijani = maana (maana (img (:,:, 2)) % wastani ukali wa kijani bluu = maana (maana (img (:,:, 3)))% wastani wastani wa bluu ikiwa kijani> nyekundu && kijani> bluu% Angalia ikiwa mmea uko kwenye picha d = msgbox (['Life found! ']); Onyesha kisanduku cha ujumbe kinachosema "Maisha yamepatikana!" subiri (d); end elseif l.rightCenter> 100% Angalia ikiwa bumper ya kulia / katikati imefunikwa r.moveDistance (-0.05)% Sogeza roomba nyuma mita 0.05 img = r.getImage% Pata picha kutoka kwa kamera ya pie ya rasberry kwenye roomba na uhifadhi katika img ya kutofautisha 'img 'rect = [100 0 150 150]; img = imcrop (img, rect)% picha ya mazao ili kuzingatia kituo nyekundu = maana (maana (img (:,:, 1)))% wastani wa nyekundu nyekundu kijani = maana (maana (img (:,:, 2)) % wastani ukali wa kijani bluu = maana (maana (img (:,:, 3)))% wastani wastani wa bluu ikiwa kijani> nyekundu && kijani> bluu% Angalia ikiwa mmea uko kwenye picha d = msgbox (['Life found! ']); Onyesha kisanduku cha ujumbe kinachosema "Maisha yamepatikana!" subiri (d); end elseif l.rightFront> 100% Angalia ikiwa bumper ya kulia / mbele imefunikwa r.moveDistance (-0.05)% Sogeza roomba nyuma mita 0.05 img = r.getImage% Pata picha kutoka kwa kamera ya pie ya rasberry kwenye roomba na uhifadhi katika img ya kutofautisha 'img 'rect = [100 0 150 150]; img = imcrop (img, rect)% picha ya mazao ili kuzingatia kituo nyekundu = maana (maana (img (:,:, 1)))% wastani nyekundu nyekundu kijani = maana (maana (img (:,:, 2)) % wastani ukali wa kijani bluu = maana (maana (img (:,:, 3)))% wastani wastani wa bluu ikiwa kijani> nyekundu && kijani> bluu% Angalia ikiwa mmea uko kwenye picha d = msgbox (['Life found! ']); Onyesha kisanduku cha ujumbe kinachosema "Maisha yamepatikana!" subiri (d); end elseif l.right> 100% Angalia ikiwa bumper nyepesi imefunikwa r.moveDistance (-0.05)% Sogeza roomba nyuma mita 0.05 r.turnAngle (-20)% Zungusha roomba digrii 20 CW img = r.getImage% Pata picha kutoka kamera ya pai ya rasberry kwenye roomba na uhifadhi katika 'img' rect = [100 0 150 150]; img = imcrop (img, rect)% picha ya mazao ili kuzingatia kituo nyekundu = maana (maana (img (:,:, 1)))% wastani nyekundu nyekundu kijani = maana (maana (img (:,:, 2)) % wastani ukali wa kijani bluu = maana (maana (img (:,:, 3)))% wastani wa kiwango cha bluu ikiwa kijani> nyekundu && kijani> bluu% Angalia ikiwa mmea uko kwenye picha d = msgbox (['Life found! ']); Onyesha kisanduku cha ujumbe kinachosema "Maisha yamepatikana!" subiri (d); mwisho mwingine ikiwa y.leftFront <1500% Angalia ikiwa sehemu ya kushoto / mbele ya roomba imezimwa mwamba r.moveDistance (-0.1, 0.05)% Sogeza roomba nyuma mita 0.1 kwa 0.05 m / s r. TurnAngle (-5)% Zungusha roomba 5 digrii CW mwingineif y.rightFront <1500% Angalia ikiwa sehemu ya kulia / mbele ya roomba imezimwa mwamba r.moveDistance (-0.1, 0.05)% Sogeza roomba nyuma mita 0.1 kwa 0.05 m / s r. TurnAngle (5)% Zungusha roomba 5 digrii CCW elseif y.kushoto <1000% Angalia ikiwa upande wa kushoto wa roomba umezimwa mwamba r.moveDistance (-0.05, 0.05)% Sogeza roomba nyuma mita 0.05 kwa 0.05 m / s r. TurnAngle (-10)% Zungusha roomba digrii 10 CW elseif y.right0% Run ikiwa kitufe kinabanwa ikiwa Endelea == 1 i = 0% Endelea kutafuta maisha mengine i = 1% Mwisho wa mode ya MAISHA mwisho mwisho mwingineif Setting == 2% Angalia ikiwa mpangilio wa "ROUGH TERRAIN" ulichaguliwa i = 0 wakati i == 0 r.setLEDDigits (num2str ('RGH'))% Onyesha 'Mbaya' kwenye Uonyesho wa LED kwa i = 1: 1000 r.setDriveVelocity (0.05)% Weka kasi ya kuendesha roomba kuwa 0.05 m / sx = r.getBumpers% Rudisha na uhifadhi maadili ya sensa ya bumper katika muundo "x" y = r.get CliffSensors% Rudisha na uhifadhi viwango vya sensorer ya mwamba katika muundo "y" ikiwa x.right == 1% Angalia ikiwa bumper ya kulia imesisitizwa r.turnAngle (10)% Zungusha roomba digrii 10 CCW elseif x.left == 1% Angalia ikiwa imesalia bumper imesisitizwa r.turnAngle (-10)% Zungusha roomba nyuzi 10 CW elseif x.front == 1% Angalia ikiwa bumper ya mbele imebanwa r.turnAngle (20)% Zungusha roomba digrii 20 CCW elseif x.rightWheelDrop == 1% Angalia ikiwa gurudumu la kulia limeshuka r.turnAngle (-20)% Zungusha roomba digrii 20 CW elseif x.leftWheelDrop == 1% Angalia gurudumu la kushoto limeshuka r.turnAngle (20)% Zungusha roomba digrii 20 CCW elseif y.leftFront < 1500% Angalia ikiwa sehemu ya kushoto ya roomba iko mbali mwamba r.moveDistance (-0.05, 0.05)% Sogeza roomba nyuma mita 0.05 kwa 0.05 m / s r. TurnAngle (-5)% Zungusha roomba digrii 5 CW elseif y.rightFront < 1500% Angalia ikiwa sehemu ya mbele ya roomba imezimwa mwamba r.moveDistance (-0.05, 0.05)% Sogeza roomba nyuma mita 0.05 kwa 0.05 m / s r. TurnAngle (5)% Zungusha roomba digrii 5 CCW elseif y. kushoto <1000 % Angalia ikiwa sehemu ya kushoto o f roomba imezimwa mwamba r.moveDistance (-0.05, 0.05)% Sogeza roomba nyuma mita 0.05 kwa 0.05 m / s r.turnAngle (-10)% Zungusha roomba digrii 10 CW elseif y.right0 ikiwa Endelea == 1 i = 0 % Endelea eneo lenye ukali lingine i = 1% Mwisho wa eneo la mwisho mbaya mwisho mwingine% Njia ya Mwongozo i = 0 r.setLEDDigits (num2str ('USER'))% Onyesha 'USER' kwenye Uonyesho wa LED d = msgbox (['Funguo za Mshale - Hoja; S - Stop Rover; ESC - Udhibiti wa Mtumiaji wa Mwisho; A - Pata Rasilimali ']); subiri (d); wakati i == 0 r.showCamera% Fungua malisho ya moja kwa moja ya kamera ya rasberry kwenye dirisha tofauti D = getkey (1)% Rudisha ufunguo uliobanwa na mtumiaji, duka thamani ya ASCII kama D tofauti ikiwa D == 30% Angalia ikiwa mshale wa "juu" una imesisitizwa r.setDriveVelocity (0.1)% Tuma roomba mbele kwa 0.2 m / s elseif D == 28% Angalia ikiwa mshale wa "kushoto" ulibanwa r.setDriveVelocity (0)% Acha roomba kusonga mbele au nyuma r.turnAngle (15), 0.05)% Zungusha roomba digrii 45 CCW kwa 0.05 m / s mwingineif D == 31% Angalia ikiwa mshale "chini" ulibanwa r.setDriveVelocity (-0.1)% Sogeza roomba nyuma kwa 0.2 m / s elseif D == 29% Angalia ikiwa mshale wa "kulia" umesisitizwa r.setDriveVelocity (0)% Acha roomba kusonga mbele au nyuma r.turnAngle (-15, 0.05)% Zungusha roomba digrii 45 CW kwa 0.05 m / s kwingine ikiwa D == 27% Angalia ikiwa kitufe cha "esc" (kutoroka) kilibonyezwa i = 1% Badilisha thamani ya kutofautisha "i" kutoka kitanzi d = msgbox ('Inatoka "Udhibiti wa Mtumiaji")% Mjulishe mtumiaji kwamba hali ya mwongozo inatoka kwa mwingineif D == 115% Angalia ikiwa kitufe cha "s" kimesisitizwa r.setDriveVelocity (0)% Acha roomba kutoka kwenda mbele au kurudi nyuma vinginevyo D == 97% Angalia ikiwa "a" imesisitizwa image = r.getImage; imwrite (picha, 'image.png') W = Ainisha [picha] K = mode (W) ikiwa K == 3 d = msgbox ('Rasilimali imepatikana')% Onyesha ikiwa rasilimali ya mstatili imegunduliwa (d); Subiri kwa mtumiaji kufunga sanduku la ujumbe "d" elseif K == 0 d = msgbox ('Sio Rasilimali: (')% Onyesha ikiwa rasilimali ya mstatili haikugundulika (d);% Subiri mtumiaji afunge sanduku la ujumbe "d" end else d = msgbox ('Not a key input' mtumiaji kufunga sanduku la ujumbe "d" mwisho mwisho mwingine d = msgbox ('Kwaheri')% Anasema kwaheri ikiwa chaguzi zimefungwa mwisho subiri (d);
Hatua ya 3: Upimaji
Mara tu nambari yako ya maandishi imeandikwa, utahitaji kupima Roomba yako. Ingawa nambari yako inaweza kuonekana kuwa sahihi, maadili yako mengi, haswa kwa rangi au sura, itahitaji kubadilishwa ili kutambua vizuri vitu ambavyo ungetaka Roomba yako itambue.
Hatua ya 4: Angalia Matokeo ya Visual
Itakuwa dhahiri sana ikiwa umefanikiwa kusanidi Roomba yako kulingana na matokeo yake ya kuona.
Matokeo ni pamoja na:
- Kugundua Umbo: Uwezo wa Roomba kutofautisha vizuri maumbo ili kupata madini sahihi
- Njia Mbaya za Ardhi: Huepuka miamba au maeneo yenye giza
- Njia ya Mwongozo: Malisho ya moja kwa moja na uwezo wa kudhibiti Roomba
- Picha: Picha za madini
- Maisha Yapatikana !: Sanduku la maandishi la MatLab linaloashiria kuwa mmea wako umetambua maisha ya kikaboni.
Ndio mwisho wa mafunzo yetu, furahiya Rover yako mpya ya Mars Expedition!
Ilipendekeza:
Kuingiliana na Sensor yenye alama ya alama ya kidole na Arduino UNO: Hatua 7
Kuingiliana na Sura ya alama ya alama ya alama na Arduino UNO: Haya, kuna nini, Jamani! Akarsh hapa kutoka CETech. Leo tutaongeza safu ya kinga kwa miradi yetu. Usijali hatutateua walinzi wowote kwa hiyo hiyo. Itakuwa sensor nzuri nzuri ya kidole inayoonekana nzuri kutoka kwa DFRobot.So
Usafirishaji wa Energia: Hatua 4
Usafirishaji wa Energia: Voc ê vai aprender como construir um aparelho que voc ê pode armazenar energia and levar para onde quiser, este aparelho foito a partir of um " Nobreak Usado ", como do Nobreak ele tem uma bateria interna que na falta of energy
Jinsi ya Kutengeneza Roboti ya Mpira wa Kikapu ya Kujitumia Ukitumia IRobot Unda Kama Msingi: Hatua 7 (na Picha)
Jinsi ya Kutengeneza Roboti ya Mpira wa Kikapu ya Kujitegemea Inayotumia IRobot Unda Kama Msingi: Hii ndio kiingilio changu cha iRobot Unda changamoto. Sehemu ngumu zaidi ya mchakato huu wote kwangu ilikuwa kuamua ni nini roboti itafanya. Nilitaka kuonyesha huduma nzuri za Undaji, wakati pia nikiongeza kwa urembo wa robo. Yangu yote
Kurekebisha IRobot Unda kwa Rangi: Hatua 6 (na Picha)
Kurekebisha Uundaji wa IRobot kwa Rangi: Huu ni mradi wa roboti ambao unaweza kukamilika na mtu ambaye hana uzoefu wowote na roboti. Ninasema hivi kwa sababu, kabla ya kuanza, sikuwa na uzoefu na roboti. Au mipango ya kuandika. Kwa kweli, nilijua kuchora na hiyo ilikuwa
IRobot Unda Roboti ya Nyumba ya Kibinafsi: Hatua 16 (na Picha)
IRobot Unda Robot ya Nyumba ya Kibinafsi: Kuanzisha roboti ya kibinafsi iliyojengwa karibu na jukwaa la iRobot na mfumo wa kompyuta wa mini-itx. Haijawahi kuwa rahisi na nafuu zaidi kubuni na kujenga roboti kwa kutumia uchumi wa kiwango kutoka kwa programu, PC, toy na o