INHOUDSOPGAWE:
Video: Mars Roomba -projek UTK: 4 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
VRYWARING: DIT SAL SLEGS WERK AS DIE ROOMBA IN A opgerig word
BAIE SPESIFIEKE MANIERE, HIERDIE INSTRUKTIESE WORD GESKEP EN VIR DIE BEDOELING GEBRUIK DEUR DIE UNIVERSITEIT VAN TENNESSEE STUDENTE EN FAKULTEIT
Hierdie kode word gebruik om 'n Roomba op te stel om plaaslik geskrewe en gestoorde kode in MATLAB te laat loop. Dit sal nie werk as u nie die nodige biblioteke van die Universiteit van Tennessee se webwerf kan kry nie. As u die biblioteke het, kan u dit gebruik om u eie Roomba te programmeer met behulp van die funksies in die biblioteek. Hierdie instruksie leer u hoe u die biblioteke moet installeer, 'n gids vir al die kode kan skep en hoe u die program wat ons hieronder verskaf het, kan kodeer en gebruik.
Vereiste materiaal:
· Roomba
· MATLAB
· Framboos Pi en Pi kamera
Stap 1: Kry die biblioteke
Op die ingenieurswebwerf is daar 'n gereedskapskas/biblioteek, laai dit af en plaas dit in 'n nuwe gids. Hierdie gids moet alle projekwerklêers bevat, aangesien enige funksie wat in 'n program gebruik word, na die biblioteek moet verwys. Nadat u dit gedoen het, kan u aan u programme begin werk
Stap 2: Skryf van die programme
Daar is 'n hele paar funksies wat in die program gebruik kan word, u kan toegang tot hierdie funksies kry met die opdrag "doc roomba". Deur hierdie funksies te gebruik, kan u u Roomba op baie verskillende maniere beheer. Die onderstaande kode gebruik die stampsensors, ligstaafsensors, kamera- en kransensors op verskillende maniere om 'n mars -rover te skep. Ons het die stampsensors gebruik om op te spoor wanneer die Roomba 'n voorwerp raak, wanneer dit gebeur, sal die robot omdraai, omdraai en aanhou beweeg. Voordat die Roomba 'n voorwerp tref, sal die ligstaaf die voorwerp opspoor en die Roomba vertraag sodat wanneer dit teen die voorwerp stamp om die stampsensor te aktiveer, die Roomba minder beskadig/geraak sal word deur die impak. Die kamera soek na water of lawa op die oppervlak, as daar geen vloeistof gevind word nie, sal die robot voortgaan om te soek; as daar water is, sal die robot 'n boodskap aan die operateurs stuur. Die kransensors is ontwerp om die robot te stop as dit 'n krans nader. As die robot 'n krans waarneem, sal dit omdraai en omdraai om te voorkom dat hy val.
Stap 3: Kodeer
Kopieer en plak dit in 'n MATLAB -lêer wat in dieselfde gids as die biblioteke geleë is
functionMainRoombaFile (r)
r.setDriveVelocity (0.1, 0.1)
terwyl ware % Infinte terwyl lus om kode aan die gang te hou
dontFall = cliffCheck (r) % Ken veranderlike 'dontFall' toe aan die funksie 'cliffCheck'
if dontFall % as verklaring om in kode voort te gaan nadat 'cliffCheck' voltooi is
r.setDriveVelocity (0.1, 0.1) % Hou Roomba aan die gang nadat 'cliffCheck' voltooi is
end % eindig 'dontFall' if verklaring
bumper = bumpcheck (r) % Ken veranderlike 'bumper' toe aan die funksie 'bumpcheck'
as bumper % as die stelling in die kode moet voortgaan nadat 'bumpcheck' voltooi is
r.setDriveVelocity (0.1, 0.1) % Hou Roomba aan die gang nadat 'bumpcheck' voltooi is
eind % eindig 'bumper' as verklaring
liquids = LiquidCheck (r) % Ken veranderlike 'vloeistowwe' toe aan die funksie 'LiquidCheck'
as vloeistowwe % as verklaring om in kode voort te gaan nadat 'LiquidCheck' voltooi is
r.setDriveVelocity (0.1, 0.1) % Hou Roomba aan die gang nadat 'LiquidCheck' voltooi is
eind % eindig 'vloeistowwe' as verklaring
lightbumper = lightcheck (r) % Ken veranderlike 'lightbumper' toe aan die funksie 'lightcheck'
pouse (0.1) % Onderbreek kortliks om deurlopende herhaling van lusse te voorkom
eind % eindig oneindig terwyl lus
eind % eindig funksie
funksie bumper = bumpcheck (r) % Skep 'bumpcheck' -funksie
bumpdata = r.getBumpers % Ken alle data van die buffer toe aan veranderlike 'bumpdata'
bumper = bumpdata.right || bumpdata.links || bumpdata.front % Skep 'n gestoorde veranderlike, 'bumper', vir die verskillende bumpers
as bumpdata.right> 0 % Indien verklaring verskillende funksies van die roomba laat gebeur as Bumper gestamp word
r.stop % Stop Roomba
r.moveDistance (-0.3, 0.2) % keer Roomba 0.3m om
r.turnAngle (90, 0.5) % Draai Roomba 90 grade so vinnig as moontlik
einde
as bumpdata.front> 0
r.stop
r.moveDistance (-0.3, 0.2)
r.turnAngle (randi (270), 0.5) % Draai Roomba so vinnig as moontlik tussen 'n willekeurige interval tussen 0 en 270 grade
einde
as bumpdata.left> 0
r.stop
r.moveDistance (-0.3, 0.2)
r.turnAngle (-90, 0.5) % Draai Roomba -90 grade so vinnig as moontlik
einde
einde
funksie lightbumper = lightcheck (r) % Skep 'lightcheck' -funksie
lightdata = r.getLightBumpers % Ken alle data van die light bump sensor toe aan veranderlike 'lightdata'
lightbumper = lightdata.left || lightdata.right || lightdata.rightCenter || lightdata.leftCenter % Skep 'n gestoorde veranderlike, 'lightbumper', vir die verskillende ligbumpers
if lightbumper % If verklaring om die lightbumper data van bo af te roep
as lightdata.left> 10 % As verklaring verskillende funksies van die roomba laat gebeur as die ligbuffer groter as 10 waardes voel
r.setDriveVelocity (0,05, 0,05) % Vertraag roomba om voor te berei op stamp
eind % eindig aanvanklike as verklaring
as lightdata.rightCenter> 10
r.setDriveVelocity (0,05, 0,05)
einde
as lightdata.right> 10
r.setDriveVelocity (0,05, 0,05)
einde
as lightdata.leftCenter> 10
r.setDriveVelocity (0,05, 0,05)
einde
end % eindig 'lightbumper' as verklaring
end %eindig lightcheck -funksie
function dontFall = cliffCheck (r) % Skep 'cliffCheck' -funksie
data = r.getCliffSensors; Ken alle data van die kransensor toe aan veranderlike 'data'
dontFall = data.links <1020 || data.leftFront <1020 || data.rightFront <1020 || data.right <1020 % Skep 'n gestoorde veranderlike, 'dontFall', vir die verskillende kransensors
if dontFall % If verklaring om die kransensordata van bo af te roep
as data.links <1010 % As verklaring om verskillende funksies van die roomba te laat plaasvind as die kransensor minder as 1010 waardes waarneem
r.stop
r.moveDistance (-0.2, 0.2) % keer Roomba 0.2m om
r.turnAngle (-90, 0.5) % Draai Roomba -90 grade so vinnig as moontlik
elseif data.leftFront <1010
r.stop
r.moveDistance (-0.3, 0.2)
r.turnAngle (90, 0.5) % Draai Roomba 90 grade so vinnig as moontlik
elseif data.rightFront <1010
r.stop
r.moveDistance (-0.3, 0.2)
r.turnAngle (90, 0.5) % Draai Roomba 90 grade so vinnig as moontlik
andersif data.right <1010
r.stop
r.moveDistance (-0.3, 0.2)
r.turnAngle (90, 0.5) % Draai Roomba 90 grade so vinnig as moontlik
einde
einde
einde
funksie vloeistowwe = LiquidCheck (r) % Skep 'LiquidCheck' -funksie
terwyl ware %oneindige lus begin vir kalibrasie
img = r.getImage; % lees die kamera van die robot af
beeld (img) % toon die beeld in 'n figuurvenster
red_mean = gemiddelde (gemiddelde (img (200, 150, 1)))% lees die gemiddelde hoeveelheid rooi pixels
blue_mean = gemiddelde (gemiddelde (img (200, 150, 3))))% lees die gemiddelde hoeveelheid blou pixels
vloeistowwe = rooi_middel || blue_mean % Skep 'n gestoorde veranderlike, 'vloeistowwe', vir die verskillende kleurveranderlikes
as vloeistowwe % If verklaring om die beelddata van bo af te roep
as red_mean> 170 % As verklaring verskillende funksies van die roomba laat gebeur as die kamera 'n gemiddelde rooi kleur van meer as 170 sien
r.stop % stop roomba
r.setLEDCenterColor (255) % stel die sirkel in rooi
r.setLEDDigits (); maak die skerm skoon
f = wagbalk (0, '*INKOMENDE Boodskap*'); % skep 'n wagbalk vir 'n laaiboodskap
r.setLEDDigits ('HOT'); % stel die LED -skerm op 'warm' uit
pouse (0.5) %Kort pouse om inligting te lees wat versprei word
r.setLEDDigits ('LAVA'); % stel LED -skerm op 'LAVA' uit
pouse (0,5)
wagbalk (.33, f, '*INKOMENDE Boodskap*'); %skep 'n toename in die wagbalk
r.setLEDDigits ('HOT');
pouse (0,5)
r.setLEDDigits ('LAVA');
pouse (0,5)
wagbalk (.67, f, '*INKOMENDE Boodskap*'); % skep 'n toename in die wagbalk
r.setLEDDigits ('HOT');
pouse (0,5)
r.setLEDDigits ('LAVA');
wagbalk (1, f, '*INKOMENDE Boodskap*'); %voltooi die wagbalk
pouse (1)
sluit (f) %sluit die wagbalk
r.setLEDDigits (); % maak die LED -skerm skoon
sluit alle %Sluit alle vorige vensters
asse ('Kleur', 'geen', 'XColor', 'geen', 'YColor', 'geen') % Maak die plotvenster van die asse en grafiek skoon
y = 0,5; % stel die y-posisie van die teks in die plotvenster in
x = 0,06; % stel die x-posisie van die teks in die plotvenster in
title ('FROM MARS ROOMBA', 'fontsize', 32) % Voeg 'n titel by die plotvenster
quadeqtxt = 'GEVAAR LAVA'; % Stel die veranderlike 'quadeqtxt' in op 0
teks (x, y, quadeqtxt, 'tolk', 'latex', 'lettergrootte', 36); % vertoon die quadeq -teks in die plotvenster
r.moveDistance (-0.2, 0.2) %keer die roomba 0.2m om
r.turnAngle (180, 0.5) %draai die roomba 180 grade so vinnig as moontlik
r.setLEDCenterColor (128, 128); % stel die roomba sentrum LED op oranje
sluit alle %sluit die oorblywende oop vensters
elseif blue_mean> 175 % As verklaring om verskillende funksies van die roomba te laat plaasvind as die kamera 'n gemiddelde blou kleur van groter as 175 sien
r.stop % stop roomba
r.setLEDCenterColor (255) % stel die sirkel in rooi
r.setLEDDigits (); maak die skerm skoon
f = wagbalk (0, '*INKOMENDE Boodskap*'); % skep 'n wagbalk vir 'n laaiboodskap
r.setLEDDigits ('KYK'); % stel LED -skerm op 'LOOK' uit
pouse (0.5) %Kort pouse om inligting te lees wat versprei word
r.setLEDDigits ('WATR'); % stel LED -skerm op om 'WATR' uit te voer
pouse (0,5)
wagbalk (.33, f, '*INKOMENDE Boodskap*'); %skep 'n toename in die wagbalk
r.setLEDDigits ('KYK');
pouse (0,5)
r.setLEDDigits ('WATR');
pouse (0,5)
wagbalk (.67, f, '*INKOMENDE Boodskap*'); % skep 'n toename in die wagbalk
r.setLEDDigits ('KYK');
pouse (0,5)
r.setLEDDigits ('WATR');
wagbalk (1, f, '*INKOMENDE Boodskap*'); %voltooi die wagbalk
pouse (1)
sluit (f) %sluit die wagbalk
r.setLEDDigits (); % maak die LED -skerm skoon
sluit alle %Sluit alle vorige vensters
asse ('Kleur', 'geen', 'XColor', 'geen', 'YColor', 'geen') % Maak die plotvenster van die asse en grafiek skoon
y = 0,5; % stel die y-posisie van die teks in die plotvenster in
x = 0,06; % stel die x-posisie van die teks in die plotvenster in
title ('FROM MARS ROOMBA', 'fontsize', 32) % Voeg 'n titel by die plotvenster
quadeqtxt = 'VOND WATER'; % Stel die veranderlike 'quadeqtxt' in op 0
teks (x, y, quadeqtxt, 'tolk', 'latex', 'lettergrootte', 36); % vertoon die quadeq -teks in die plotvenster
r.moveDistance (-0.2, 0.2) %keer die roomba 0.2m om
r.turnAngle (180, 0.5) %draai die roomba 180 grade so vinnig as moontlik
r.setLEDCenterColor (128, 128); % stel die roomba sentrum LED op oranje
sluit alle %sluit die oorblywende oop vensters
eind %eindig 'red_mean' if verklaring
eind %eindig 'vloeistowwe' as verklaring
eind % sluit oneindig terwyl lus
eind % eindig funksie 'LiquidCheck'
Stap 4: Gebruik die kode
Nadat u die kode in MATLAB gekopieer en geplak het, moet u aan die Roomba koppel. Sodra die Roomba gekoppel is, moet u die veranderlike r noem. Die funksies gebruik die veranderlike r wanneer daar na die Roomba verwys word, dus die Roomba moet gedefinieer word as die veranderlike r. Nadat die kode uitgevoer is, moet die Roomba werk soos aangedui.
Aanbeveel:
Verander jou Roomba in 'n Mars Rover: 5 stappe
Omskep jou Roomba in 'n Mars Rover:
Robotprojek UTK 2017: 3 stappe
Robotprojek UTK 2017: Missie: Ons span ingenieurs is aangestel deur Froogle, 'n stigting sonder winsbejag vir open source-tegnologie-ontwikkeling, om 'n innoverende Mars Rover te help om mense te help. Out-spanne " rover " is 'n roomba wat ons gekodeer het om 'n reeks
Mars Rover met Raspberry Pi: 5 stappe
Mars Rover met behulp van Raspberry Pi: Beste almal, ek is altyd nuuskierig om te weet oor Mars Rover, met 6 wiele wat die hele oppervlak van Mars kan verken en dinge van die aarde kan verken. Ek wil ook iets verken deur op my skootrekenaar te sit. So ek dink dit is die regte tyd om dit te maak en
Raspberry Pi - Outonome Mars Rover Met OpenCV -voorwerpopsporing: 7 stappe (met foto's)
Raspberry Pi - Outonome Mars Rover Met OpenCV -voorwerpopsporing: Aangedryf deur 'n Raspberry Pi 3, Open CV -objekherkenning, Ultrasoniese sensors en gemotoriseerde GS -motors. Hierdie rover kan enige voorwerp waarvoor hy opgelei is, opspoor en op enige terrein beweeg
Mars Roomba: 6 stappe
Mars Roomba: Hierdie instruksie sal u lei in die aanwysings vir die gebruik van 'n Raspberry Pi -beheerde Roomba -vakuumbot. Die bedryfstelsel wat ons gaan gebruik, is deur MATLAB