Orodha ya maudhui:
- Hatua ya 1: Kupata Maktaba
- Hatua ya 2: Kuandika Programu
- Hatua ya 3: Kanuni
- Hatua ya 4: Kuendesha Msimbo
Video: Mradi wa Mars Roomba UTK: Hatua 4
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:52
KANUSHO: HII ITAFANYA KAZI PEKEE IKIWA ROOMBA INAWEKWA KWENYE A
NJIA MAALUMU SANA, HII INAELEZWA ILIUMBWA KWA AJILI YA KUTUMIWA KUTUMIWA NA CHUO KIKUU CHA WANAFUNZI WA TENNESSEE NA UWEZO.
Nambari hii inatumiwa kuanzisha Roomba ili kuendesha nambari iliyoandikwa na kuhifadhiwa ndani ya MATLAB. Hii haitafanya kazi ikiwa huwezi kupata maktaba muhimu kutoka kwa wavuti ya Chuo Kikuu cha Tennessee. Ikiwa una maktaba basi unaweza kuzitumia kupanga Roomba yako mwenyewe ukitumia kazi kwenye maktaba. Hii ya kufundisha hukufundisha jinsi ya kusanikisha maktaba, tengeneza folda ya nambari yote, na jinsi ya kuweka nambari na kutumia programu ambayo tumetoa hapa chini.
Vifaa vinavyohitajika:
· Roomba
· MATLAB
· Kamera ya Raspberry Pi na Pi
Hatua ya 1: Kupata Maktaba
Kwenye wavuti ya uhandisi kuna kisanduku cha zana / maktaba iliyotolewa, ipakue na uweke kwenye folda mpya. Folda hii lazima iwe na faili zote za kazi ya mradi kama, kazi yoyote inayotumiwa katika programu unayofanya itahitaji kurejelea maktaba. Baada ya kufanya hivyo unaweza kuanza kufanya kazi kwenye programu zako
Hatua ya 2: Kuandika Programu
Kuna kazi kadhaa ambazo zinaweza kutumika katika programu, kazi hizi zinaweza kupatikana kwa kutumia amri "doc roomba". Kutumia kazi hizi, unaweza kudhibiti Roomba yako kwa njia nyingi tofauti. Nambari iliyopewa hapa chini hutumia sensorer za mapema, sensorer za baa nyepesi, kamera, na sensorer za mwamba kwa njia tofauti kuunda rover ya mars. Tulitumia sensorer za mapema kugundua wakati Roomba inapiga kitu, wakati hii itatokea roboti itageuka, kugeuka, na kuendelea kusonga. Kabla ya Roomba kugonga kitu, taa ya taa itagundua kitu na itapunguza Roomba ili itakapogonga kitu ili kuamsha sensorer mapema Roomba isiharibike / kuathiriwa na athari. Kamera inatafuta maji au lava juu ya uso, ikiwa hakuna kioevu kilichopatikana basi roboti itaendelea kutafuta, ikiwa kuna maji yaliyopatikana basi roboti itatuma ujumbe kwa waendeshaji. Sensorer za mwamba zimeundwa kusimamisha roboti ikiwa inakaribia mwamba. Roboti ikihisi mwamba itabadilika na kugeuka kuepusha kuanguka.
Hatua ya 3: Kanuni
Nakili na ubandike hii kwenye faili ya MATLAB ambayo iko kwenye folda sawa na maktaba
kaziMainRoombaFile (r)
r.setDriveVelocity (0.1, 0.1)
wakati kweli% Infinte wakati kitanzi kuweka nambari inayoendesha
dontFall = cliffCheck (r)% Hutoa tofauti 'dontFall' kwa kazi 'cliffCheck'
ikiwa dontFall% ikiwa taarifa ya kuendelea kwa nambari baada ya 'cliffCheck' imekamilika
r.setDriveVelocity (0.1, 0.1)% Inaweka Roomba ikisonga baada ya 'CliffCheck' kukamilika
mwisho% inaisha 'dontFall' ikiwa taarifa
bumper = bumpcheck (r)% Hutoa 'bumper' inayobadilika kwa kazi 'bumpcheck'
ikiwa bumper% ikiwa taarifa ya kuendelea kwa nambari baada ya 'bumpcheck' imekamilika
r.setDriveVelocity (0.1, 0.1)% Inaweka Roomba ikisonga baada ya 'bumpcheck' kukamilika
mwisho% inaisha 'bumper' ikiwa ni taarifa
liquids = LiquidCheck (r)% Inapeana 'vinywaji' tofauti kwa kazi 'LiquidCheck'
ikiwa kimiminika ikiwa taarifa itaendelea kwa kificho baada ya 'LiquidCheck' kukamilika
r.setDriveVelocity (0.1, 0.1)% Inaweka Roomba ikisonga baada ya 'LiquidCheck' kukamilika
mwisho% huisha 'vinywaji' ikiwa ni taarifa
lightbumper = lightcheck (r)% Inachagua 'lightbumper' inayobadilika kwa kazi 'lightcheck'
pause (0.1)% Pumzika kwa muda mfupi ili kuzuia uboreshaji wa kitanzi unaoendelea
mwisho% huisha bila mwisho wakati kitanzi
mwisho% inaisha kazi
kazi bumper = bumpcheck (r)% Inaunda kazi ya 'bumpcheck'
bumpdata = r.getBumpers% Hutoa data zote kutoka kwa bumper kwenda kwa 'bumpdata' inayobadilika
bumper = bumpdata.kulia || bumpdata.kushoto || bumpdata.front% Inaunda kutofautisha kuhifadhiwa, 'bumper', kwa bumpers tofauti
ikiwa bumpdata.right> 0% Ikiwa taarifa ya kusababisha kazi tofauti za roomba kutokea ikiwa Bumper imepigwa
r.stop% Acha Roomba
r.moveDistance (-0.3, 0.2)% Inarudisha Roomba 0.3m
r. TurnAngle (90, 0.5)% Inazunguka Roomba digrii 90 haraka iwezekanavyo
mwisho
ikiwa bumpdata.mbele> 0
r.acha
r.soveDistance (-0.3, 0.2)
r. TurnAngle (randi (270), 0.5)% Anazungusha Roomba kwa muda mfupi kati ya digrii 0 na 270 haraka iwezekanavyo
mwisho
ikiwa bumpdata.kushoto> 0
r.acha
r.soveDistance (-0.3, 0.2)
r. TurnAngle (-90, 0.5)% Inazunguka Roomba -90 digrii haraka iwezekanavyo
mwisho
mwisho
kazi lightbumper = lightcheck (r)% Inaunda kazi ya 'lightcheck'
lightdata = r.getLightBumpers Hutoa data zote kutoka kwa sensorer ya mapema ili kuwa 'lightdata'
lightbumper = taa nyepesi.kushoto || lightdata. sawa || lightdata.rightCenter || Inaunda tofauti iliyohifadhiwa, 'lightbumper', kwa bumpers tofauti za taa
ikiwa nyepesi% Ikiwa taarifa ya kupiga data nyepesi kutoka hapo juu
ikiwa lightdata. kushoto> 10% Ikiwa taarifa ya kusababisha kazi tofauti za roomba kutokea ikiwa taa nyepesi inahisi zaidi ya maadili 10
r.setDriveVelocity (0.05, 0.05)% Inapunguza roomba kujiandaa kwa mapema
mwisho% inaisha mwanzo ikiwa taarifa
ikiwa lightdata.rightCenter> 10
r.setDriveVelocity (0.05, 0.05)
mwisho
ikiwa lightdata. sawa> 10
r.setDriveVelocity (0.05, 0.05)
mwisho
ikiwa lightdata.leftCenter> 10
r.setDriveVelocity (0.05, 0.05)
mwisho
mwisho% inaisha 'lightbumper' ikiwa taarifa
mwisho% inakamilisha kazi ya kukagua taa
function dontFall = cliffCheck (r)% Inaunda kazi ya 'CliffCheck'
data = r.getCliffSensors; Hutoa data zote kutoka kwa sensorer ya mwamba hadi 'data' inayobadilika
dontFall = data. kushoto <1020 || data.leftFront <1020 || data mbele kulia <1020 || data.right <1020% Inaunda tofauti iliyohifadhiwa, 'dontFall', kwa sensorer tofauti za mwamba
ikiwa dontFall% Ikiwa taarifa ya kupiga data ya sensorer kutoka hapo juu
ikiwa data. kushoto <1010% Ikiwa taarifa ya kusababisha kazi tofauti za roomba kutokea ikiwa sensor ya mwamba inahisi chini ya maadili 1010
r.acha
r.moveDistance (-0.2, 0.2)% Inarudisha Roomba 0.2m
r. TurnAngle (-90, 0.5)% Inazunguka Roomba -90 digrii haraka iwezekanavyo
dataif nyingine ikiwa kushotoFront <1010
r.acha
r.soveDistance (-0.3, 0.2)
r. TurnAngle (90, 0.5)% Inazunguka Roomba digrii 90 haraka iwezekanavyo
dataif nyingine ikiwa kulia mbele 1010
r.acha
r.soveDistance (-0.3, 0.2)
r. TurnAngle (90, 0.5)% Inazunguka Roomba digrii 90 haraka iwezekanavyo
dataif nyingine ikiwa ni sawa <1010
r.acha
r.soveDistance (-0.3, 0.2)
r. TurnAngle (90, 0.5)% Inazunguka Roomba digrii 90 haraka iwezekanavyo
mwisho
mwisho
mwisho
kazi liquids = LiquidCheck (r)% Inaunda kazi ya 'LiquidCheck'
wakati kweli% huanza kitanzi kisicho na kipimo cha upimaji
img = r.getImage; inasoma kamera mbali na roboti
picha (img)% inaonyesha picha kwenye dirisha la kielelezo
red_mean = maana (maana (img (200, 150, 1)))% inasoma wastani wa saizi nyekundu
blue_mean = maana (maana (img (200, 150, 3)))% inasoma kiwango cha wastani cha saizi za bluu
vimiminika = maana_ya maana || inaunda tofauti iliyohifadhiwa, 'kimiminika', kwa anuwai ya rangi tofauti
ikiwa vinywaji% Ikiwa taarifa ya kupiga data ya picha kutoka hapo juu
ikiwa red_mean> 170% Ikiwa taarifa ya kusababisha kazi tofauti za roomba kutokea ikiwa kamera itaona rangi nyekundu ya zaidi ya 170
r.stop% inaacha roomba
r.setLEDCenterColor (255)% huweka duara kwa rangi nyekundu
r.setLEDDigits (); Futa onyesho
f = subira ya kusubiri (0, '* UJUMBE UNAOKUWA *)); % huunda upau wa kusubiri ujumbe wa kupakia
r.setLEDDigits ('HOT'); % huweka onyesho la LED kutoa "HOT"
pause (0.5)% Pumzika kwa kifupi kusoma habari iliyotolewa
r.setLEDDigits ('LAVA'); % huweka onyesho la LED kutoa 'LAVA'
pause (0.5)
kusubiri (.33, f, '* UJUMBE UNAOKUWA *); % huunda kuongezeka kwa upau wa kusubiri
r.setLEDDigits ('HOT');
pumzika (0.5)
r.setLEDDigits ('LAVA');
pumzika (0.5)
kusubiri (.67, f, '* UJUMBE UNAOKUWA *'); % huunda kuongezeka kwa upau wa kusubiri
r.setLEDDigits ('HOT');
pumzika (0.5)
r.setLEDDigits ('LAVA');
kusubiri (1, f, '* UJUMBE UNAOKUA *); % inakamilisha upau wa kusubiri
pumzika (1)
karibu (f)% inafunga upau wa kusubiri
r.setLEDDigits (); % inafuta maonyesho ya LED
funga zote% Hufunga madirisha yote ya awali
shoka ('Rangi', 'hakuna', 'XColor', 'hakuna', 'YColor', 'hakuna')% Husafisha dirisha la njama la shoka na chati
y = 0.5; % huweka nafasi ya maandishi kwenye dirisha la kupanga
x = 0.06; % huweka nafasi ya x ya maandishi kwenye dirisha la kupanga
kichwa ('KUTOKA MARS ROOMBA', 'fontsize', 32)% Anaongeza kichwa kwenye dirisha la kupanga njama
quadeqtxt = 'HATARI LAVA'; % Inaweka 'quadeqtxt' inayobadilika hadi pato 0
maandishi (x, y, quadeqtxt, 'mkalimani', 'mpira', 'fontsize', 36); % huonyesha maandishi ya quadeq kwenye dirisha la kupanga
r.moveDistance (-0.2, 0.2)% inabadilisha roomba 0.2m
r. TurnAngle (180, 0.5)% inageuka digrii za roomba 180 haraka iwezekanavyo
r.setLEDCenterColor (128, 128); % huweka kituo cha roomba LED kwa machungwa
funga% zote hufunga windows iliyobaki iliyo wazi
kamaif blue_mean> 175% Ikiwa taarifa ya kusababisha kazi tofauti za roomba kutokea ikiwa kamera itaona rangi ya samawati yenye maana zaidi ya 175
r.stop% huacha roomba
r.setLEDCenterColor (255)% huweka duara kwa rangi nyekundu
r.setLEDDigits (); Futa onyesho
f = subira ya kusubiri (0, '* UJUMBE UNAOKUWA *)); % huunda upau wa kusubiri ujumbe wa kupakia
r.setLEDDigits ('TAZAMA'); % huweka onyesho la LED kutoa "TAZAMA"
pause (0.5)% Pumzika kwa kifupi kusoma habari iliyotolewa
r.setLEDDigits ('WATR'); % huweka onyesho la LED kutoa 'WATR'
pumzika (0.5)
kusubiri (.33, f, '* UJUMBE UNAOKUWA *); % inaunda kuongezeka kwa upau wa kusubiri
r.setLEDDigits ('TAZAMA');
pause (0.5)
r.setLEDDigits ('WATR');
pause (0.5)
kusubiri (.67, f, '* UJUMBE UNAOKUWA *'); % huunda kuongezeka kwa upau wa kusubiri
r.setLEDDigits ('TAZAMA');
pause (0.5)
r.setLEDDigits ('WATR');
kusubiri (1, f, '* UJUMBE UNAOKUA *); % inakamilisha upau wa kusubiri
pumzika (1)
karibu (f)% hufunga upau wa kusubiri
r.setLEDDigits (); % inafuta maonyesho ya LED
funga zote% Hufunga madirisha yote ya awali
shoka ('Rangi', 'hakuna', 'XColor', 'hakuna', 'YColor', 'hakuna')% Hufuta dirisha la njama la shoka na chati
y = 0.5; % huweka nafasi ya maandishi kwenye dirisha la kupanga
x = 0.06; % huweka nafasi ya x ya maandishi kwenye dirisha la kupanga
kichwa ('KUTOKA MARS ROOMBA', 'fontsize', 32)% Anaongeza kichwa kwenye dirisha la kupanga njama
quadeqtxt = 'MAJI YAPATIKANA'; % Inaweka 'quadeqtxt' inayobadilika hadi pato 0
maandishi (x, y, quadeqtxt, 'mkalimani', 'mpira', 'fontsize', 36); % huonyesha maandishi ya quadeq kwenye dirisha la kupanga
r.moveDistance (-0.2, 0.2)% inabadilisha roomba 0.2m
r. TurnAngle (180, 0.5)% inageuka digrii za roomba 180 haraka iwezekanavyo
r.setLEDCenterColor (128, 128); % huweka kituo cha roomba LED kwa machungwa
funga% zote hufunga windows iliyobaki iliyo wazi
mwisho% inaisha 'red_mean' ikiwa ni taarifa
mwisho% huisha 'vinywaji' ikiwa ni taarifa
mwisho% hufunga isiyo na kipimo wakati kitanzi
mwisho% inakamilisha kazi 'LiquidCheck'
Hatua ya 4: Kuendesha Msimbo
Baada ya kunakili na kubandika nambari hiyo kwenye MATLAB lazima uunganishe na Roomba. Mara tu Roomba imeunganishwa lazima utoe jina la ubadilishaji r. Kazi hutumia ubadilishaji r wakati wa kutaja Roomba, kwa hivyo Roomba lazima ifafanuliwe kama variable r. Baada ya kutumia nambari Roomba inapaswa kukimbia kama ilivyoagizwa.
Ilipendekeza:
Mradi wa Robot UTK 2017: Hatua 3
Mradi wa Robot UTK 2017: Ujumbe: Timu yetu ya wahandisi imeajiriwa na Froogle, msingi wa mashirika yasiyo ya faida kwa maendeleo ya teknolojia ya chanzo, kukuza timu za ubunifu za Kusaidia Binadamu ya Mars Rover. ni roomba ambayo tuliandika ili kutekeleza mfululizo o
WIND - Mradi wa kuongeza kasi kwa Mradi wa Adafruit: Hatua 9 (na Picha)
Upepo - Mradi wa kuongeza kasi kwa Manyoya ya Adafruit: Nimekuwa nikikusanya polepole wadhibiti wa manyoya wa Adafruit na bodi za sensorer ambazo zinapatikana kutoka Adafruit. Wanafanya prototyping na upimaji kuwa rahisi sana, na mimi ni shabiki mkubwa wa mpangilio wa bodi. Kwa kuwa nilijikuta tumetumia
Mradi wa Roomba MATLAB: Hatua 5
Mradi wa Roomba MATLAB: Mpango wa sasa ambao NASA inao juu ya rover ya Mars ni kuwa mkusanyaji wa data na kuzunguka karibu na Mars, kukusanya sampuli za mchanga ili kurudisha Duniani ili wanasayansi waweze kuona ikiwa kulikuwa na aina zozote za maisha ya awali kwenye sayari. Ziada
Mradi wa UTK EF 230 MarsRoomba Kuanguka 2018: Hatua 5
Mradi wa UTK EF 230 MarsRoomba Fall 2018: Hivi sasa, rovers za Mars hutumiwa kukusanya data juu ya uso wa Mars kupitia njia anuwai, hadi mwisho wa kujifunza zaidi juu ya uwezekano wa sayari ya maisha ya vijidudu. Rovers kimsingi hutumia zana za upigaji picha na uchambuzi wa mchanga kwa data c
Mchomaji umeme wa USB! Mradi huu unaweza kuchoma kupitia Plastiki / Mbao / Karatasi (Mradi wa kufurahisha Pia Inapaswa Kuwa Kuni Nzuri Sana): Hatua 3
Mchomaji umeme wa USB! Mradi huu unaweza kuchoma kupitia Plastiki / Mbao / Karatasi (Mradi wa kufurahisha Pia Inapaswa Kuwa Mti Mzuri Sana): USIFANYE KUTUMIA USB HII !!!! niligundua kuwa inaweza kuharibu kompyuta yako kutoka kwa maoni yote. kompyuta yangu ni sawa tho. Tumia chaja ya simu ya 600ma 5v. nilitumia hii na inafanya kazi vizuri na hakuna kitu kinachoweza kuharibika ikiwa unatumia kuziba usalama kukomesha nguvu