Sisukord:
- Samm: raamatukogude hankimine
- 2. samm: programmide kirjutamine
- 3. samm: kood
- Samm: koodi käivitamine
Video: Mars Roomba projekt UTK: 4 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
LAHTIÜTLUS: See toimib ainult siis, kui ROOMBA on seadistatud asukohta A.
VÄGA KONKREETSELT LOODI SEE JUHEND TENNESSE ÕPILASTE ÜLIKOOLI JA TEADUSKONNA KASUTAMISEKS
Seda koodi kasutatakse Roomba seadistamiseks kohalikult kirjutatud ja salvestatud koodi käivitamiseks MATLABis. See ei toimi, kui te ei saa vajalikke raamatukogusid Tennessee ülikooli veebisaidilt hankida. Kui teil on raamatukogud, saate neid kasutada oma Roomba programmeerimiseks, kasutades raamatukogu funktsioone. See juhend juhendab teid, kuidas raamatukogusid installida, kogu kausta jaoks kausta luua ning allpool pakutud programmi kodeerida ja kasutada.
Nõutavad materjalid:
· Roomba
· MATLAB
· Vaarika Pi ja Pi kaamera
Samm: raamatukogude hankimine
Inseneri veebisaidil on tööriistakast/raamatukogu, laadige see alla ja asetage see uude kausta. See kaust peab sisaldama kõiki projektitöö faile, kuna kõik teie loodud programmis kasutatavad funktsioonid peavad viitama kogule. Kui olete seda teinud, võite hakata oma programmidega töötama
2. samm: programmide kirjutamine
Programmis saab kasutada üsna palju funktsioone, nendele funktsioonidele pääseb juurde käsu "doc roomba" abil. Neid funktsioone kasutades saate oma Roomba juhtida mitmel erineval viisil. Allpool toodud kood kasutab põrkumisandureid, valgusriba andureid, kaamera- ja kaljuandureid marsruuteri loomiseks erineval viisil. Kasutasime põrkeandureid, et tuvastada, kui Roomba tabab objekti, kui see juhtub, pöörab robot tagurdama, pöörab ümber ja jätkab liikumist. Enne kui Roomba tabab objekti, tuvastab valgusriba objekti ja aeglustab Roomba kiirust, nii et kui see põrkub vastu objekti põrkeanduri aktiveerimiseks, on Roomba löök vähem kahjustatud/mõjutatud. Kaamera otsib pinnalt vett või laavat, kui vedelikku ei leita, jätkab robot otsimist, kui vett on leitud, saadab robot operaatoritele sõnumi. Kaljuandurid on mõeldud roboti peatamiseks, kui see läheneb kaljule. Kui robot tunneb kaljut, pöörab ta tagurpidi ja pöörab ümber, et vältida kukkumist.
3. samm: kood
Kopeerige ja kleepige see MATLAB -faili, mis asub teekidega samas kaustas
functionMainRoombaFile (r)
r.setDriveVelocity (0,1, 0,1)
samas tõsi % Infinte while loop, et kood töötaks
dontFall = cliffCheck (r) % Määrab muutuja 'dontFall' funktsioonile 'cliffCheck'
if dontFall % if avaldus koodiga jätkamiseks pärast 'cliffCheck' lõpetamist
r.setDriveVelocity (0,1, 0,1) % Hoiab Roomba pärast „cliffCheck” lõpetamist liikumas
end % lõpetab 'dontFall' if avalduse
kaitseraud = bumpcheck (r) % Määrab muutuja 'kaitseraud' funktsioonile 'bumpcheck'
kui kaitseraud %, kui avaldus koodiga jätkamiseks pärast „bumpcheck” lõpetamist
r.setDriveVelocity (0,1, 0,1) % Hoiab Roomba pärast „bumpcheck” lõpetamist liikumas
end % lõpetab avalduse 'kaitseraud'
vedelikud = LiquidCheck (r) % Määrab muutuja „vedelikud” funktsioonile „LiquidCheck”
kui vedelikud % kui avaldus jätkata koodiga pärast 'LiquidCheck' lõpetamist
r.setDriveVelocity (0,1, 0,1) % Hoiab Roomba pärast „LiquidCheck” lõpetamist liikumas
end % lõpetab 'vedelikud' if
lightbumper = lightcheck (r) % Määrab muutuja 'lightbumper' funktsioonile 'lightcheck'
paus (0,1) % Paus, et vältida pidevat tsükli kordamist
lõpp % lõpeb lõpmatu ajal
end % lõpeb funktsioon
function bumper = bumpcheck (r) % Loob 'bumpcheck' funktsiooni
bumpdata = r.getBumpers % Määrab kõik kaitseraua andmed muutujale "bumpdata"
kaitseraud = bumpdata.right || bumpdata.left || bumpdata.front % Loob erinevate kaitseraudade jaoks salvestatud muutuja „kaitseraud”
if bumpdata.right> 0 % Kui lause põhjustab kaitseraua põrkumise korral toa erinevaid funktsioone
r.stop % Peatab Roomba
r.moveDistance (-0,3, 0,2) % Tagurdab Roomba 0,3 m
r.turnAngle (90, 0,5) % Pöörab Roomba 90 kraadi nii kiiresti kui võimalik
lõpp
kui bumpdata.front> 0
r.peatus
r.moveDistance (-0,3, 0,2)
r.turnAngle (randi (270), 0,5) % Pöörab Roomba nii kiiresti kui võimalik juhusliku intervalliga vahemikus 0 kuni 270 kraadi
lõpp
kui bumpdata.left> 0
r.peatus
r.moveDistance (-0,3, 0,2)
r.turnAngle (-90, 0,5) % Pöörab Roomba -90 kraadi nii kiiresti kui võimalik
lõpp
lõpp
funktsioon lightbumper = lightcheck (r) % Loob 'lightcheck' funktsiooni
lightdata = r.getLightBumpers % Määrab kõik valgustugevuse anduri andmed muutujale 'lightdata'
kerge kaitseraud = lightdata.left || lightdata.right || lightdata.rightCenter || lightdata.leftCenter % Loob erinevatele põrkeraudadele salvestatud muutuja „lightbumper”
kui välklamp % Kui avaldus, et helistada välklambi andmetele ülalt
kui lightdata.left> 10 % Kui lause põhjustab toa erinevate funktsioonide toimumist, kui valgus kaitseraud tunneb rohkem kui 10 väärtust
r.setDriveVelocity (0,05, 0,05) % Aeglustab Roomba liikumist, et valmistuda löögiks
end % lõpeb kui if lause
kui lightdata.rightCenter> 10
r.setDriveVelocity (0,05, 0,05)
lõpp
kui lightdata.right> 10
r.setDriveVelocity (0,05, 0,05)
lõpp
kui lightdata.leftCenter> 10
r.setDriveVelocity (0,05, 0,05)
lõpp
end % lõpetab 'lightbumper' if lause
end %lõpetab lightcheck funktsiooni
funktsioon dontFall = cliffCheck (r) % Loob funktsiooni "cliffCheck"
andmed = r.getCliffSensors; % Määrab kõik andmed kaljuandurilt muutujale 'data'
dontFall = andmed.vasak <1020 || data.leftFront <1020 || data.rightFront <1020 || data.right <1020 % Loob erinevate kaljuandurite jaoks salvestatud muutuja „dontFall“
if dontFall % If avaldus, et helistada kaljuanduri andmetele ülalt
kui andmed. vasakule <1010 % Kui lause põhjustab ruumi erinevate funktsioonide toimumist, kui kaljuandur tuvastab vähem kui 1010 väärtust
r.peatus
r.moveDistance (-0,2, 0,2) % Tagurdab Roomba 0,2 m
r.turnAngle (-90, 0,5) % Pöörab Roomba -90 kraadi nii kiiresti kui võimalik
elseif data.leftFront <1010
r.peatus
r.moveDistance (-0,3, 0,2)
r.turnAngle (90, 0,5) % Pöörab Roomba 90 kraadi nii kiiresti kui võimalik
elseif data.rightFront <1010
r.peatus
r.moveDistance (-0,3, 0,2)
r.turnAngle (90, 0,5) % Pöörab Roomba 90 kraadi nii kiiresti kui võimalik
elseif andmed.õigus <1010
r.peatus
r.moveDistance (-0,3, 0,2)
r.turnAngle (90, 0,5) % Pöörab Roomba 90 kraadi nii kiiresti kui võimalik
lõpp
lõpp
lõpp
funktsiooni vedelikud = LiquidCheck (r) % Loob funktsiooni "LiquidCheck"
tõene %käivitab kalibreerimiseks lõpmatu tsükli
img = r.getImage; % loeb kaamera robotilt välja
image (img) % näitab pilti akna joonisel
red_mean = keskmine (keskmine (img (200, 150, 1)))% loeb punaste pikslite keskmist kogust
blue_mean = keskmine (keskmine (img (200, 150, 3))))% loeb siniste pikslite keskmist kogust
vedelikud = punane_mean || blue_mean % Loob erinevatele värvimuutujatele salvestatud muutuja vedelikud
kui vedelikud % If avaldus, et helistada pildiandmetele ülalt
kui red_mean> 170 % Kui väide põhjustab toa erinevaid funktsioone, kui kaamera näeb keskmist punast värvi üle 170
r.stop % peatab roomba
r.setLEDCenterColor (255) % määrab ringi punaseks
r.setLEDDigits (); % tühjendage ekraan
f = ooteriba (0, '*Sissetulev teade*'); % loob laadimissõnumi jaoks ooteriba
r.setLEDDigits ('KUUM'); % seab LED -ekraani väljundisse „HOT”
paus (0,5) %Lühike paus hajutatud teabe lugemiseks
r.setLEDDigits ('LAVA'); % määrab LED -ekraani väljundiks „LAVA”
paus (0,5)
ooteriba (.33, f, '*Sissetulev sõnum*'); %suurendab ooteaega
r.setLEDDigits ('KUUM');
paus (0,5)
r.setLEDDigits ('LAVA');
paus (0,5)
ooteriba (.67, f, '*Sissetulev sõnum*'); % suurendab ooteaega
r.setLEDDigits ('KUUM');
paus (0,5)
r.setLEDDigits ('LAVA');
ooteriba (1, f, '*Sissetulev sõnum*'); %täidab ooterežiimi
paus (1)
close (f) %sulgeb ooteriba
r.setLEDDigits (); % kustutab LED -ekraani
sulge kõik %Sulgeb kõik eelmised aknad
teljed ('Color', 'none', 'XColor', 'none', 'YColor', 'none') % Puhastab telgede ja diagrammi graafikuakna
y = 0,5; % määrab joonistamisaknas teksti y-positsiooni
x = 0,06; % määrab joonistamisaknas teksti x-positsiooni
title ('FROM MARS ROOMBA', 'fontsize', 32) % Lisab joonistusaknale pealkirja
quadeqtxt = 'OHTLAVA'; % Määrab muutuja 'quadeqtxt' väljundiks 0
tekst (x, y, quadeqtxt, 'interpreter', 'latex', 'fontsize', 36); % kuvab joonistusaknas quadeq teksti
r.moveDistance (-0,2, 0,2) %muudab toa 0,2 m
r.turnAngle (180, 0,5) %pöörab toa nii kiiresti kui võimalik 180 kraadi
r.setLEDCenterColor (128, 128); % määrab roomba keskuse LED -i oranžiks
sulge kõik %sulgeb ülejäänud avatud aknad
elseif blue_mean> 175 % Kui väide põhjustab ruumi erinevaid funktsioone, kui kaamera näeb keskmist sinist värvi üle 175
r.stop % peatab roomba
r.setLEDCenterColor (255) % määrab ringi punaseks
r.setLEDDigits (); % tühjendage ekraan
f = ooteriba (0, '*Sissetulev teade*'); % loob laadimissõnumi jaoks ooteriba
r.setLEDDigits ('LOOK'); % määrab LED -ekraani väljundiks „LOOK”
paus (0,5) %Lühike paus hajutatud teabe lugemiseks
r.setLEDDigits ('WATR'); % määrab LED -ekraani väljundiks „WATR”
paus (0,5)
ooteriba (.33, f, '*Sissetulev sõnum*'); %suurendab ooteaega
r.setLEDDigits ('LOOK');
paus (0,5)
r.setLEDDigits ('WATR');
paus (0,5)
ooteriba (.67, f, '*Sissetulev sõnum*'); % suurendab ooteaega
r.setLEDDigits ('LOOK');
paus (0,5)
r.setLEDDigits ('WATR');
ooteriba (1, f, '*Sissetulev sõnum*'); %täidab ooterežiimi
paus (1)
close (f) %sulgeb ooteriba
r.setLEDDigits (); % kustutab LED -ekraani
sulge kõik %Sulgeb kõik eelmised aknad
teljed ('Color', 'none', 'XColor', 'none', 'YColor', 'none') % Puhastab telgede ja diagrammi graafikuakna
y = 0,5; % määrab joonistamisaknas teksti y-positsiooni
x = 0,06; % määrab joonistamisaknas teksti x-positsiooni
title ('FROM MARS ROOMBA', 'fontsize', 32) % Lisab joonistusaknale pealkirja
quadeqtxt = 'LEITUD VESI'; % Määrab muutuja 'quadeqtxt' väljundiks 0
tekst (x, y, quadeqtxt, 'interpreter', 'latex', 'fontsize', 36); % kuvab joonistusaknas quadeq teksti
r.moveDistance (-0,2, 0,2) %muudab toa 0,2 m
r.turnAngle (180, 0,5) %pöörab toa nii kiiresti kui võimalik 180 kraadi
r.setLEDCenterColor (128, 128); % määrab roomba keskuse LED -i oranžiks
sulge kõik %sulgeb ülejäänud avatud aknad
end %lõpetab 'red_mean' kui lause
end %lõpetab 'vedelikud' if
lõpp % sulgub lõpmatu ajal
end % end funktsioon "LiquidCheck"
Samm: koodi käivitamine
Pärast koodi kopeerimist ja kleepimist MATLAB -i peate Roombaga ühenduse looma. Kui Roomba on ühendatud, peate nimetama muutuja r. Funktsioonid kasutavad Roombale viidates muutujat r, seega tuleb Roomba määratleda muutujana r. Pärast koodi käivitamist peaks Roomba töötama vastavalt juhistele.
Soovitan:
Roomba muutmine Mars Roveriks: 5 sammu
Oma Roomba muutmine Mars Roveriks:
Mars Roomba: 6 sammu
Mars Roomba: see juhend juhendab teid Raspberry Pi juhitava Roomba vaakumpotti käitamise suunas. Kasutatav operatsioonisüsteem on MATLABi kaudu
Roomba MATLAB projekt: 5 sammu
Roomba MATLAB projekt: NASA praegune plaan Marsi roveri jaoks on see, et see oleks andmekoguja ja rändaks ümber Marsi, kogudes mullaproove, et need Maale tagasi tuua, et teadlased näeksid, kas sellel on varasemaid eluvorme planeet. Lisaks
Roomba projekt: 5 sammu (piltidega)
Roomba projekt: see juhend on loodud Lõuna -Florida ülikooli Makecourse'i projektinõude täitmiseks (www.makecourse.com). See juhend sisaldab kõiki vajalikke samme ja komponente, mis on vajalikud minu Roomba projekti kokkupanekuks
USB -toitega põleti! See projekt võib põleda läbi plasti / puidu / paberi (lõbus projekt peab olema ka väga peen puit): 3 sammu
USB -toitega põleti! See projekt võib põleda läbi plasti / puidu / paberi (lõbus projekt peab olema ka väga peen puit): ÄRGE TEE SEDA USB -KASUTAMISEGA !!!! avastasin kõikidest kommentaaridest, et see võib teie arvutit kahjustada. mu arvutiga on kõik korras. Kasutage 600m 5v telefonilaadijat. Ma kasutasin seda ja see töötab hästi ning midagi ei saa kahjustada, kui kasutate toite peatamiseks turvakork