Obsah:
Video: Projekt Mars Roomba UTK: 4 kroky
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
ODMIETNUTIE VYHLÁSENIA: TOTO FUNGUJE IBA, AK JE ROOMBA ZARIADENÁ A
VEĽMI ŠPECIFICKÝ ZPÔSOB, TENTO NÁVOD NA POUŽITIE BOL VYTVORENÝ A URČENÝ NA POUŽÍVANIE UNIVERZITOU ŠTUDENTOV A FACULTEN TENNESSEE
Tento kód sa používa na nastavenie robota Roomba na spustenie lokálne zapísaného a uloženého kódu v programe MATLAB. To nebude fungovať, ak nemôžete získať potrebné knižnice z webovej stránky University of Tennessee. Ak máte knižnice, môžete ich použiť na programovanie svojej vlastnej roboty Roomba pomocou funkcií v knižnici. Tento návod vás naučí, ako nainštalovať knižnice, vytvoriť priečinok pre všetok kód a ako kódovať a používať program, ktorý sme poskytli nižšie.
Požadované materiály:
· Roomba
· MATLAB
· Raspberry Pi a Pi kamera
Krok 1: Získanie knižníc
Na webovej stránke inžinierstva je k dispozícii súbor nástrojov/knižnica, stiahnite si ho a umiestnite do nového priečinka. Tento priečinok musí obsahovať všetky pracovné súbory k projektu, pretože všetky funkcie použité v programe, ktorý vytvoríte, budú musieť odkazovať na knižnicu. Potom, čo ste to urobili, môžete začať pracovať na svojich programoch
Krok 2: Písanie programov
V programe je možné použiť niekoľko funkcií, ku ktorým je možné získať prístup pomocou príkazu „doc roomba“. Pomocou týchto funkcií môžete ovládať svoju Roombu mnohými rôznymi spôsobmi. Nasledujúci kód používa na vytvorenie mars roveru senzory nárazu, senzory svetelnej lišty, kamery a útesu rôznymi spôsobmi. Pomocou senzorov nárazu sme zistili, kedy robot Roomba narazí na predmet, keď sa to stane, robot cúvne, otočí sa a pokračuje v pohybe. Predtým, ako robot Roomba narazí na predmet, svetelná lišta detekuje predmet a spomalí robot Roomba, takže keď narazí do objektu, aby aktivoval snímač nárazov, robot Roomba bude menej poškodený/ovplyvnený nárazom. Kamera hľadá vodu alebo lávu na povrchu, ak nie je nájdená žiadna kvapalina, robot bude pokračovať v hľadaní, ak sa tam nájde voda, robot pošle správu operátorom. Senzory útesu sú navrhnuté tak, aby zastavili robota, ak sa priblíži k útesu. Ak robot zaznamená útes, cúvne a otočí sa, aby nespadol.
Krok 3: Kód
Skopírujte to a prilepte do súboru MATLAB, ktorý sa nachádza v rovnakom priečinku ako knižnice
functionMainRoombaFile (r)
r.setDriveVelocity (0,1, 0,1)
while true % Infinte while loop, aby bol kód spustený
dontFall = cliffCheck (r) % Priradí premennú 'dontFall' k funkcii 'cliffCheck'
if dontFall % if vyhlásenie pokračovať v kóde po 'cliffCheck' je dokončený
r.setDriveVelocity (0,1, 0,1) % udržuje robota Roomba v pohybe aj po dokončení „cliffCheck“
end % skončí príkaz 'dontFall' if
bumper = bumpcheck (r) % Priradí premennú 'bumper' k funkcii 'bumpcheck'
if bumper % if statement to continue in code after 'bumpcheck' is complete
r.setDriveVelocity (0,1, 0,1) % udržuje robot Roomba v pohybe aj po dokončení „bumpcheck“
end % skončí príkaz „nárazník“if
liquids = LiquidCheck (r) % Priradí premenné 'liquids' k funkcii 'LiquidCheck'
if liquids % if statement to continue in code after 'LiquidCheck' is complete
r.setDriveVelocity (0,1, 0,1) % udržuje robot Roomba v pohybe aj po dokončení „LiquidCheck“
end % končí príkazom 'liquids' if
lightbumper = lightcheck (r) % Priradí premennú 'lightbumper' k funkcii 'lightcheck'
pauza (0,1) % Krátka pauza, aby sa zabránilo nepretržitej iterácii slučky
koniec % končí nekonečnou slučkou
end % ukončí funkciu
funkcia nárazník = bumpcheck (r) % Vytvorí funkciu 'bumpcheck'
bumpdata = r.getBumpers % Priradí všetky údaje z nárazníka k premennej 'bumpdata'
nárazník = bumpdata.right || bumpdata.left || bumpdata.front % Vytvorí uloženú premennú „nárazník“pre rôzne nárazníky
ak bumpdata.right> 0 % Ak príkaz, ktorý spôsobí rôzne funkcie roomba, ak dôjde k nárazu na nárazník
r.stop % Zastaví Roomba
r.moveDistance (-0,3, 0,2) % obráti Roomba o 0,3 m
r.turnAngle (90, 0,5) % Otočí robota Roomba o 90 stupňov čo najrýchlejšie
koniec
ak bumpdata.front> 0
r.stop
r.moveDistance (-0,3, 0,2)
r.turnAngle (randi (270), 0,5) % Otáča robotom Roomba v náhodnom intervale medzi 0 a 270 stupňami čo najrýchlejšie
koniec
ak bumpdata.left> 0
r.stop
r.moveDistance (-0,3, 0,2)
r.turnAngle (-90, 0,5) % Otočí robota Roomba o 90 stupňov čo najrýchlejšie
koniec
koniec
funkcia lightbumper = lightcheck (r) % Vytvorí funkciu „lightcheck“
lightdata = r.getLightBumpers % Priradí všetky údaje zo senzora svetelných nárazov k premennej „lightdata“
lightbumper = lightdata.left || lightdata.right || lightdata.rightCenter || lightdata.leftCenter % Vytvorí uloženú premennú „lightbumper“pre rôzne svetelné nárazníky
if lightbumper % If príkaz na vyvolanie údajov lightbumper zhora
if lightdata.left> 10 % If statement to cause different functions of the roomba if if the light bumper zmysly more than 10 values
r.setDriveVelocity (0,05, 0,05) % Spomaľuje roomba, aby sa pripravil na náraz
end % skončí počiatočný príkaz if
ak lightdata.rightCenter> 10
r.setDriveVelocity (0,05, 0,05)
koniec
ak lightdata.right> 10
r.setDriveVelocity (0,05, 0,05)
koniec
ak lightdata.leftCenter> 10
r.setDriveVelocity (0,05, 0,05)
koniec
end % ukončí príkaz „lightbumper“if
end %ukončí funkciu lightcheck
function dontFall = cliffCheck (r) % Vytvorí funkciu 'cliffCheck'
data = r.getCliffSensors; % Priradí všetky údaje zo senzora útesu k premennej „údaje“
dontFall = data.left <1020 || data.leftFront <1020 || data.rightFront <1020 || data.right <1020 % Vytvorí uloženú premennú „dontFall“pre rôzne snímače útesu
if dontFall % If príkaz na vyvolanie údajov senzora útesu zhora
if data.left <1010 % If statement to cause different functions of the roomba, if the cliff sensor senses less than 1010 values
r.stop
r.moveDistance (-0,2, 0,2) % obráti Roomba 0,2 m
r.turnAngle (-90, 0,5) % Otočí robota Roomba o 90 stupňov čo najrýchlejšie
elseif data.leftFront <1010
r.stop
r.moveDistance (-0,3, 0,2)
r.turnAngle (90, 0,5) % Otočí robota Roomba o 90 stupňov čo najrýchlejšie
elseif data.rightFront <1010
r.stop
r.moveDistance (-0,3, 0,2)
r.turnAngle (90, 0,5) % Otočí robot Roomba o 90 stupňov čo najrýchlejšie
elseif údaje.vpravo <1010
r.stop
r.moveDistance (-0,3, 0,2)
r.turnAngle (90, 0,5) % Otočí robot Roomba o 90 stupňov čo najrýchlejšie
koniec
koniec
koniec
function liquids = LiquidCheck (r) % Vytvorí funkciu 'LiquidCheck'
zatiaľ čo pravda %, začnite nekonečnú slučku na kalibráciu
img = r.getImage; % číta kameru mimo robota
image (img) % zobrazuje obrázok v okne obrázku
red_mean = priemer (priemer (obrázok (200, 150, 1)))% znamená priemerný počet červených pixelov
blue_mean = priemer (priemer (obrázok (200, 150, 3)))% znamená priemerný počet modrých pixelov
kvapaliny = red_mean || blue_mean % Vytvorí uloženú premennú „kvapaliny“pre rôzne farebné premenné
ak kvapaliny % If vyhlásenie na vyvolanie obrazových údajov zhora
ak red_mean> 170 % Ak vyhlásenie spôsobujúce rôzne funkcie robota roomba, ak kamera vidí priemernú červenú farbu väčšiu ako 170
r.stop % zastaví roomba
r.setLEDCenterColor (255) % nastaví kruh na červenú farbu
r.setLEDDigits (); % vymazať displej
f = čakacia lišta (0, '*PRÍJEMNÁ SPRÁVA*'); % vytvorí čakaciu lištu pre správu o načítaní
r.setLEDDigits ('HORKÉ'); % nastaví LED displej na výstup „HORKÝ“
pauza (0,5) %Krátka prestávka na prečítanie zobrazených informácií
r.setLEDDigits ('LAVA'); % nastaví LED displej na výstup „LAVA“
pauza (0,5)
čakacia lišta (0,33, f, '*PRÍCHODOVÁ SPRÁVA*'); %spôsobí zvýšenie čakacej lišty
r.setLEDDigits ('HORKÉ');
pauza (0,5)
r.setLEDDigits ('LAVA');
pauza (0,5)
čakacia lišta (0,67, f, '*PRÍCHODOVÁ SPRÁVA*'); % spôsobí zvýšenie čakacej lišty
r.setLEDDigits ('HORKÉ');
pauza (0,5)
r.setLEDDigits ('LAVA');
čakacia lišta (1, f, '*PRÍCHODOVÁ SPRÁVA*'); %dokončí čakaciu lištu
pauza (1)
close (f) %zatvorí čakaciu lištu
r.setLEDDigits (); % vymaže LED displej
zavrieť všetky %Zatvorí všetky predchádzajúce okná
osi ('Farba', 'žiadna', 'XColor', 'žiadna', 'YColor', 'žiadna') % Vymaže okno vykresľovania osí a grafu
y = 0,5; % nastaví polohu y textu v okne vykresľovania
x = 0,06; % nastaví pozíciu x textu v okne vykresľovania
title ('FROM MARS ROOMBA', 'fontsize', 32) % Pridá názov do okna vykresľovania
quadeqtxt = 'NEBEZPEČENSTVO LAVA'; % Nastaví premennú 'quadeqtxt' na výstup 0
text (x, y, quadeqtxt, 'interpret', 'latex', 'veľkosť písma', 36); % zobrazuje text quadeq v okne vykresľovania
r.moveDistance (-0,2, 0,2) %obráti roomba o 0,2 m
r.turnAngle (180, 0,5) %otočí robota Roomba o 180 stupňov čo najrýchlejšie
r.setLEDCenterColor (128, 128); % nastaví strednú diódu LED Roomba na oranžovú
zavrieť všetky %zavrie zostávajúce otvorené okná
elseif blue_mean> 175 % Ak vyhlásenie spôsobí rôzne funkcie robota roomba, ak kamera uvidí priemernú modrú farbu väčšiu ako 175
r.stop % zastaví roomba
r.setLEDCenterColor (255) % nastaví kruh na červenú farbu
r.setLEDDigits (); % vymazať displej
f = čakacia lišta (0, '*PRÍJEMNÁ SPRÁVA*'); % vytvorí čakaciu lištu pre správu o načítaní
r.setLEDDigits ('LOOK'); % nastaví LED displej na výstup „LOOK“
pauza (0,5) %Krátka prestávka na prečítanie zobrazených informácií
r.setLEDDigits ('WATR'); % nastaví LED displej na výstup „WATR“
pauza (0,5)
čakacia lišta (0,33, f, '*PRÍCHODOVÁ SPRÁVA*'); %spôsobí zvýšenie čakacej lišty
r.setLEDDigits ('LOOK');
pauza (0,5)
r.setLEDDigits ('WATR');
pauza (0,5)
čakacia lišta (0,67, f, '*PRÍCHODOVÁ SPRÁVA*'); % spôsobí zvýšenie čakacej lišty
r.setLEDDigits ('LOOK');
pauza (0,5)
r.setLEDDigits ('WATR');
čakacia lišta (1, f, '*PRÍCHODOVÁ SPRÁVA*'); %dokončí čakaciu lištu
pauza (1)
close (f) %zatvorí čakaciu lištu
r.setLEDDigits (); % vymaže LED displej
zavrieť všetky %Zatvorí všetky predchádzajúce okná
osi ('Farba', 'žiadna', 'XColor', 'žiadna', 'YColor', 'žiadna') % Vymaže okno vykresľovania osí a grafu
y = 0,5; % nastaví polohu y textu v okne vykresľovania
x = 0,06; % nastaví pozíciu x textu v okne vykresľovania
title ('FROM MARS ROOMBA', 'fontsize', 32) % Pridá názov do okna vykresľovania
quadeqtxt = 'NAJDENÁ VODA'; % Nastaví premennú 'quadeqtxt' na výstup 0
text (x, y, quadeqtxt, 'interpret', 'latex', 'veľkosť písma', 36); % zobrazuje text quadeq v okne vykresľovania
r.moveDistance (-0,2, 0,2) %obráti roomba o 0,2 m
r.turnAngle (180, 0,5) %otočí robota Roomba o 180 stupňov čo najrýchlejšie
r.setLEDCenterColor (128, 128); % nastaví strednú diódu LED Roomba na oranžovú
zavrieť všetky %zavrie zostávajúce otvorené okná
end %skončí príkaz 'red_mean' if
end %končí príkazom 'liquids' if
end % zatvára nekonečnú slučku
end % ends funkciu 'LiquidCheck'
Krok 4: Spustenie kódu
Po skopírovaní a vložení kódu do MATLAB sa musíte pripojiť k Roomba. Po pripojení robota Roomba musíte pomenovať premennú r. Funkcie používajú pri odkazovaní na Roomba premennú r, takže Roomba musí byť definovaná ako premenná r. Po spustení kódu by sa robot Roomba mal spustiť podľa pokynov.
Odporúča:
Premena vašej robota Roomba na vozítko Mars: 5 krokov
Premena vašej robota Roomba na vozítko Mars:
Projekt robota UTK 2017: 3 kroky
Robot Project UTK 2017: Misia: Náš tím inžinierov bol najatý spoločnosťou Froogle, neziskovou nadáciou pre vývoj technológií s otvoreným zdrojovým kódom, s cieľom vyvinúť inovatívny tím „rover“tímu Mars Rover.-Out, ktorý pomáha ľuďom. je roomba, ktorý sme kódovali na spustenie série
Mars Roomba: 6 krokov
Mars Roomba: Tento návod vás prevedie návodom na obsluhu vákuového robota Roomba ovládaného Raspberry Pi. Operačný systém, ktorý budeme používať, je prostredníctvom MATLABu
Projekt Roomba: 5 krokov (s obrázkami)
Projekt Roomba: Tento návod bol vytvorený ako splnenie projektovej požiadavky Makecourse na University of South Florida (www.makecourse.com). Tento návod obsahuje všetky potrebné kroky a komponenty potrebné k zostaveniu môjho projektora Roomba
USB napaľovačka! Tento projekt môže spaľovať plasty / drevo / papier (zábavný projekt musí byť aj veľmi jemné drevo): 3 kroky
USB napaľovačka! Tento projekt môže spaľovať plasty / drevo / papier (zábavný projekt musí byť aj veľmi jemné drevo): NEROBTE TO S POUŽÍVANÍM USB !!!! Zo všetkých komentárov som zistil, že môže poškodiť váš počítač. môj počítač je v poriadku Použite nabíjačku telefónu 5 V 600mA. Použil som to a funguje to dobre a nič sa nemôže poškodiť, ak na vypnutie napájania použijete bezpečnostnú zástrčku