Përmbajtje:
Video: Projekti Mars Roomba UTK: 4 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:20
Mohimi: Kjo do të punojë vetëm nëse dhoma është e vendosur në
SHUMY M SPNYREC SPECIFIKE, K INT IN UDHUCTZUESE SHT KRIJUAR DHE MENDUAR T BE P USRDORET NGA UNIVERSITETI I NXUDNSVE DHE FAKULTETIT NEN TENENCE
Ky kod përdoret për të krijuar një Roomba për të ekzekutuar kodin e shkruar dhe ruajtur në vend në MATLAB. Kjo nuk do të funksionojë nëse nuk jeni në gjendje të merrni bibliotekat e nevojshme nga faqja e internetit e Universitetit të Tennessee. Nëse keni biblioteka, atëherë mund t'i përdorni ato për të programuar Roomba -n tuaj duke përdorur funksionet në bibliotekë. Ky Instructable ju mëson se si të instaloni bibliotekat, të krijoni një dosje për të gjithë kodin dhe si të kodoni dhe përdorni programin që kemi dhënë më poshtë.
Materialet e kërkuara:
· Roomba
· MATLAB
· Kamera Raspberry Pi dhe Pi
Hapi 1: Marrja e bibliotekave
Në uebfaqen inxhinierike ofrohet një kuti veglash/bibliotekë, shkarkojeni dhe vendoseni në një dosje të re. Kjo dosje duhet të përmbajë të gjithë skedarët e punës së projektit, pasi çdo funksion i përdorur në një program që bëni do t'i duhet t'i referohet bibliotekës. Pasi ta keni bërë këtë, mund të filloni të punoni në programet tuaja
Hapi 2: Shkrimi i programeve
Ka mjaft funksione që mund të përdoren në program, këto funksione mund të arrihen duke përdorur komandën "doc roomba". Duke përdorur këto funksione, ju mund të kontrolloni Roomba -n tuaj në shumë mënyra të ndryshme. Kodi i dhënë më poshtë përdor sensorët e përplasjes, sensorët e shiritit të dritës, kamerën dhe sensorët e shkëmbinjve në mënyra të ndryshme për të krijuar një rover mars. Ne përdorëm sensorët e përplasjes për të zbuluar kur Roomba godet një objekt, kur kjo ndodh roboti do të kthehet mbrapsht, do të kthehet dhe do të vazhdojë të lëvizë. Para se Roomba të godasë një objekt, drita e dritës do të zbulojë objektin dhe do të ngadalësojë Roomba -n, kështu që kur të përplaset me objektin për të aktivizuar sensorin e goditjes, Roomba do të jetë më pak i dëmtuar/prekur nga ndikimi. Kamera kërkon ujë ose lavë në sipërfaqe, nëse nuk ka lëng të gjetur atëherë roboti do të vazhdojë të kërkojë, nëse gjendet pak ujë atëherë roboti do t’i dërgojë mesazh operatorëve. Sensorët e shkëmbit janë krijuar për të ndaluar robotin nëse i afrohet një shkëmbi. Nëse roboti ndjen një shkëmb ai do të kthehet mbrapsht dhe do të kthehet për të shmangur rënien.
Hapi 3: Kodi
Kopjoni dhe ngjisni këtë në një skedar MATLAB që ndodhet në të njëjtën dosje me bibliotekat
funksionMainRoombaFile (r)
r.setDriveVelocity (0.1, 0.1)
ndërsa e vërtetë % Infinte ndërsa lak për të mbajtur kodin në punë
dontFall = cliffCheck (r) % Cakton ndryshoren 'dontFall' në funksionin 'cliffCheck'
if dontFall % if deklarata për të vazhduar në kod pas përfundimit të 'cliffCheck'
r.setDriveVelocity (0.1, 0.1) % Mban Roomba në lëvizje pasi 'cliffCheck' të ketë përfunduar
fund % përfundon 'dontFall' if statement
bumper = bumpcheck (r) % Cakton variablin 'parakolp' në funksionin 'bumpcheck'
nëse parakolp % if deklarata për të vazhduar në kod pasi të ketë përfunduar 'kontrollimi i bumpcheck'
r.setDriveVelocity (0.1, 0.1) % Mban Roomba në lëvizje pasi të ketë përfunduar 'kontrollimi i gabimeve'
fund % përfundon 'parakolp' nëse deklarata
lëngje = LiquidCheck (r) % Cakton variablin 'lëngje' në funksionin 'LiquidCheck'
nëse lëngjet % nëse deklarata për të vazhduar në kod pasi të ketë përfunduar "LiquidCheck"
r.setDriveVelocity (0.1, 0.1) % Mban Roomba të lëvizë pasi "LiquidCheck" të ketë përfunduar
fund % përfundon 'lëngje' nëse deklarata
lightbumper = lightcheck (r) % Cakton variablin 'lightbumper' në funksionin 'lightcheck'
pauzë (0.1) % Pauzë e shkurtër për të shmangur përsëritjen e vazhdueshme të lakut
fund % përfundon pafund ndërsa lak
fundi % përfundon funksionin
funksion bumper = bumpcheck (r) % Krijon funksionin 'bumpcheck'
bumpdata = r.getBumpers % Cakton të gjitha të dhënat nga parakolpi në ndryshoren 'bumpdata'
parakolp = bumpdata.djathtas || bumpdata.left || bumpdata.front % Krijon një ndryshore të ruajtur, 'bumper', për parakolpët e ndryshëm
nëse bumpdata.right> 0 % Nëse deklarata të shkaktojë funksione të ndryshme të dhomës ndodh nëse Parakolp përplaset
r.ndal % Ndalon Roomba
r.moveDistanca (-0.3, 0.2) % Kthen dhomën Roomba 0.3m
r.turnAngle (90, 0.5) % Rrotullon Roomba 90 gradë sa më shpejt që të jetë e mundur
fund
nëse bumpdata.front> 0
r.ndaloj
r.moveDistanca (-0.3, 0.2)
r.turnAngle (randi (270), 0.5) % Rrotullon Roomba në një interval të rastit midis 0 dhe 270 gradë sa më shpejt që të jetë e mundur
fund
nëse bumpdata.left> 0
r.ndaloj
r.moveDistanca (-0.3, 0.2)
r.turnAngle (-90, 0.5) % Rrotullon Roomba -90 gradë sa më shpejt që të jetë e mundur
fund
fund
funksioni lightbumper = lightcheck (r) % Krijon funksionin 'lightcheck'
lightdata = r.getLightBumpers % Cakton të gjitha të dhënat nga sensori i përplasjes së dritës në 'lightdata' të ndryshueshme
lightbumper = lightdata.left || lightdata.djathtas || lightdata.rightCenter || lightdata.leftCenter % Krijon një ndryshore të ruajtur, 'lightbumper', për parakolpët e ndryshëm të dritës
if lightbumper % If deklarata për të thirrur të dhënat e lightbumper nga lart
nëse lightdata.left> 10 % Nëse deklarata shkakton funksione të ndryshme të dhomës ndodh nëse parakolpi i dritës ndjen më shumë se 10 vlera
r.setDriveVelocity (0.05, 0.05) % Ngadalëson dhomën për t'u përgatitur për përplasje
fund % përfundon deklaratën fillestare if
nëse lightdata.rightCenter> 10
r.setDriveVelocity (0.05, 0.05)
fund
nëse lightdata.djathtas> 10
r.setDriveVelocity (0.05, 0.05)
fund
nëse lightdata.leftCenter> 10
r.setDriveVelocity (0.05, 0.05)
fund
fund % përfundon 'lightbumper' if statement
fund %përfundon funksionin e kontrollit të dritës
funksioni dontFall = cliffCheck (r) % Krijon funksionin 'cliffCheck'
të dhëna = r.getCliffSensorë; % Cakton të gjitha të dhënat nga sensori i shkëmbit në 'të dhëna' të ndryshueshme
dontFall = data.left <1020 || të dhëna.majtas Përpara <1020 || data.djathtas <1020 || data.right <1020 % Krijon një ndryshore të ruajtur, 'dontFall', për sensorët e ndryshëm të shkëmbinjve
if dontFall % If deklarata për të thirrur të dhënat e sensorit të shkëmbit nga lart
nëse të dhënat.majtas <1010 % Nëse deklarata që shkakton funksione të ndryshme të dhomës ndodh nëse sensori i shkëmbit ndjen më pak se 1010 vlera
r.ndaloj
r.moveDistanca (-0.2, 0.2) % Kthen dhomën Roomba 0.2m
r.turnAngle (-90, 0.5) % Rrotullon Roomba -90 gradë sa më shpejt që të jetë e mundur
elseif data.leftP front <1010
r.ndaloj
r.moveDistanca (-0.3, 0.2)
r.turnAngle (90, 0.5) % Rrotullon Roomba 90 gradë sa më shpejt që të jetë e mundur
të dhëna elseif.djathtas <1010
r.ndaloj
r.moveDistanca (-0.3, 0.2)
r.turnAngle (90, 0.5) % Rrotullon Roomba 90 gradë sa më shpejt që të jetë e mundur
të dhëna elseif.drejta <1010
r.ndaloj
r.moveDistanca (-0.3, 0.2)
r.turnAngle (90, 0.5) % Rrotullon Roomba 90 gradë sa më shpejt që të jetë e mundur
fund
fund
fund
funksionin e lëngjeve = LiquidCheck (r) % Krijon funksionin 'LiquidCheck'
ndërsa %e vërtetë fillojnë lak të pafund për kalibrimin
img = r.getImage; % lexon kamerën e fikur të robotit
imazhi (img) % tregon imazhin në një dritare me figura
red_mean = mesatarja (mesatarja (img (200, 150, 1)))% lexon sasinë mesatare të pikselave të kuq
blu_mean = mesatarja (mesatarja (img (200, 150, 3)))% lexon sasinë mesatare të pikselave blu
lëngjet = mjeti i kuq || blue_mean % Krijon një ndryshore të ruajtur, 'lëngje', për ndryshoret e ndryshme të ngjyrave
nëse lëngjet % If statement për të thirrur të dhënat e figurës nga lart
nëse red_mean> 170 % Nëse deklarata që shkakton funksione të ndryshme të dhomës ndodh nëse kamera sheh një ngjyrë të kuqe mesatare më të madhe se 170
r.ndal % ndalon roomba
r.setLEDCenterColor (255) % vendos rrethin në ngjyrë të kuqe
r.setLEDDigjet (); % pastroni ekranin
f = shirit pritjeje (0, '*MESAZH HYR*'); % krijon një shirit pritjeje për një mesazh ngarkimi
r.setLEDDigrit ('Nxehtë'); % vendos ekranin LED në dalje 'HOT'
pauzë (0.5) %Pushim i shkurtër për të lexuar informacionin e shpërndarë
r.setLEDDigrit ('LAVA'); % vendos ekran LED në dalje 'LAVA'
pauzë (0.5)
shirit pritjeje (.33, f, '*MESAZH HYRS*'); %krijon një rritje në shiritin e pritjes
r.setLEDDigrit ('Nxehtë');
pauzë (0.5)
r.setLEDDigrit ('LAVA');
pauzë (0.5)
shirit pritjeje (.67, f, '*MESAZH HYRS*'); % krijon një rritje në shiritin e pritjes
r.setLEDDigrit ('Nxehtë');
pauzë (0.5)
r.setLEDDigrit ('LAVA');
shirit pritjeje (1, f, '*MESAZH HYR*'); %plotëson shiritin e pritjes
pauzë (1)
mbyll (f) %mbyll shiritin e pritjes
r.setLEDDigjet (); % pastron ekranin LED
mbyll të gjitha %Mbyll të gjitha dritaret e mëparshme
akset ("Ngjyra", "asnjë", "XColor", "asnjë", "YColor", "asnjë") % Pastron dritaren e komplotit të akseve dhe tabelës
y = 0.5; % vendos pozicionin y të tekstit në dritaren e vizatimit
x = 0.06; % vendos pozicionin x të tekstit në dritaren e vizatimit
titulli ('NGA MARS ROOMBA', 'fontsize', 32) % Shton një titull në dritaren e vizatimit
quadeqtxt = 'LAVA E RREZIKUT'; % Vendos ndryshoren 'quadeqtxt' në daljen 0
tekst (x, y, quadeqtxt, 'interpretues', 'latex', 'fontsize', 36); % shfaq tekstin katror në dritaren e vizatimit
r.moveDistanca (-0.2, 0.2) %përmbys dhomën 0.2m
r.turnAngle (180, 0.5) %e kthen dhomën 180 gradë sa më shpejt që të jetë e mundur
r.setLEDCenterColor (128, 128); % vendos LED -in e qendrës së dhomës në portokalli
mbyll të gjitha %mbyll dritaret e mbetura të hapura
elseif blue_mean> 175 % Nëse deklarata që shkakton funksione të ndryshme të dhomës ndodh nëse kamera sheh një ngjyrë blu mesatare më të madhe se 175
r.ndal % ndalon roomba
r.setLEDCenterColor (255) % vendos rrethin në ngjyrë të kuqe
r.setLEDDigjet (); % pastroni ekranin
f = shirit pritjeje (0, '*MESAZH HYR*'); % krijon një shirit pritjeje për një mesazh ngarkimi
r.setLEDDigrit ('SHIKO'); % e vendos ekranin LED në dalje "SHIKO"
pauzë (0.5) %Pushim i shkurtër për të lexuar informacionin e shpërndarë
r.setLEDDigits ('WATR'); % vendos ekran LED në dalje 'WATR'
pauzë (0.5)
shirit pritjeje (.33, f, '*MESAZH HYRS*'); %krijon një rritje në shiritin e pritjes
r.setLEDDigrit ('SHIKO');
pauzë (0.5)
r.setLEDDigits ('WATR');
pauzë (0.5)
shirit pritjeje (.67, f, '*MESAZH HYR*'); % krijon një rritje në shiritin e pritjes
r.setLEDDigits ('SHIKO');
pauzë (0.5)
r.setLEDDigits ('WATR');
shirit pritjeje (1, f, '*MESAZH HYR*'); %plotëson shiritin e pritjes
pauzë (1)
mbyll (f) %mbyll shiritin e pritjes
r.setLEDDigjet (); % pastron ekranin LED
mbyll të gjitha %Mbyll të gjitha dritaret e mëparshme
akset ("Ngjyra", "asnjë", "XColor", "asnjë", "YColor", "asnjë") % Pastron dritaren e komplotit të akseve dhe tabelës
y = 0.5; % vendos pozicionin y të tekstit në dritaren e vizatimit
x = 0.06; % vendos pozicionin x të tekstit në dritaren e vizatimit
titulli ('NGA MARS ROOMBA', 'fontsize', 32) % Shton një titull në dritaren e vizatimit
quadeqtxt = 'UJI I GJETUR'; % Vendos ndryshoren 'quadeqtxt' në daljen 0
tekst (x, y, quadeqtxt, 'interpretues', 'latex', 'fontsize', 36); % shfaq tekstin katror në dritaren e vizatimit
r.moveDistanca (-0.2, 0.2) %përmbys dhomën 0.2m
r.turnAngle (180, 0.5) %e kthen dhomën 180 gradë sa më shpejt që të jetë e mundur
r.setLEDCenterColor (128, 128); % vendos LED -in e qendrës së dhomës në portokalli
mbyll të gjitha %mbyll dritaret e mbetura të hapura
fund %përfundon 'red_mean' nëse deklarata
fund %përfundon 'lëngje' nëse deklarata
fund % mbyll pafund ndërsa loop
fundi % përfundon funksionin 'LiquidCheck'
Hapi 4: Drejtimi i Kodit
Pasi të keni kopjuar dhe ngjitur kodin në MATLAB, duhet të lidheni me Roomba. Pasi Roomba është e lidhur ju duhet të emërtoni ndryshoren r. Funksionet përdorin ndryshoren r kur i referohen Roomba, kështu që Roomba duhet të përcaktohet si ndryshorja r. Pas ekzekutimit të kodit Roomba duhet të funksionojë sipas udhëzimeve.
Recommended:
Projekti Robot UTK 2017: 3 Hapa
Projekti Robot UTK 2017: Misioni: Ekipi ynë i inxhinierëve është punësuar nga Froogle, një fondacion jofitimprurës për zhvillimin e teknologjisë me burim të hapur, për të zhvilluar një ekip inovativ Mars Assisting Human Rover.-Out " rover " është një roomba që kemi koduar për të ekzekutuar një seri
Mars Roomba: 6 hapa
Mars Roomba: Ky udhëzues do t'ju udhëzojë në drejtimet e funksionimit të një boti vakumi Roomba të kontrolluar me Raspberry Pi. Sistemi operativ që do të përdorim është përmes MATLAB
Roomba MATLAB Projekti: 5 hapa
Projekti Roomba MATLAB: Plani aktual që ka NASA për roverin Mars është që ai të jetë një mbledhës i të dhënave dhe të bredhë rreth Marsit, duke mbledhur mostra të tokës për t'u sjellë përsëri në Tokë, në mënyrë që shkencëtarët të shohin nëse ka pasur forma të mëparshme të jetës në planeti. Shtesë
Projekti UTK EF 230 MarsRoomba Vjeshtë 2018: 5 hapa
UTK EF 230 MarsRoomba Project Fall 2018: Aktualisht, roverët e Marsit përdoren për të mbledhur të dhëna në sipërfaqen e Marsit përmes metodave të ndryshme, për të përfunduar përfundimisht për të mësuar më shumë rreth potencialit të planetit për jetë mikrobike. Roverët përdorin kryesisht mjete fotografie dhe analiza të tokës për të dhënat
Projekti Roomba: 5 hapa (me fotografi)
Projekti Roomba: Ky udhëzues u krijua në përmbushje të kërkesës së projektit të Makecourse në Universitetin e Floridës së Jugut (www.makecourse.com). Ky udhëzues do të mbulojë të gjitha hapat dhe komponentët e nevojshëm që kërkohen për të mbledhur projektin tim Roomba