Taula de continguts:
- Pas 1: materials i subministraments:
- Pas 2:
- Pas 3: Muntatge del vostre "jardí"
- Pas 4: escriure el codi
- Pas 5: copieu el codi
Vídeo: Garden Helper Roomba Bot: 8 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
Kiara Myers, Ahmad Alghadeer i Madison Tippet
Propòsit:
Aquest instructiu us ensenyarà a programar un Roomba Bot, mitjançant MATLAB, per navegar a través d’un jardí, detectant fruites / verdures de forma circular prou madures per recollir-les segons la seva mida. Aquest robot també us envia un correu electrònic per avisar-vos de quantes fruites estan a punt per recollir-se i del camí pel qual va recórrer.
Característiques:
- Utilitza sensors de llum per detectar les parets i girar lleugerament per evitar colpejar-les
- Utilitza sensors de cops per trencar el programa quan toca la roca al final del jardí
- Utilitza el processament d’imatges per detectar un cercle al jardí i determinar-ne el radi
- Utilitza sensors de penya-segats per detectar una cinta de colors que indica la presència d’una fruita
Pas 1: materials i subministraments:
- Un portàtil
- MATLAB 2017
- Netejador de buit Roomba
- Raspberry Pi
- Blocs de fusta
- Paper blanc
- Paper negre
- Cinta de colors / tira fina de paper de colors
- Roca gran
Pas 2:
Pas 3: Muntatge del vostre "jardí"
- Agafeu el paper negre i talleu cercles de diverses mides
-
Enganxeu aquests cercles negres sobre un gran paper blanc
Aquest contrast serà necessari a l’hora de detectar una fruita
-
Utilitzeu els blocs de fusta per construir un camí de jardí en forma de laberint perquè el vostre robot pugui navegar
Vam triar un camí en forma d’U tal com es mostra a la imatge superior
- Al final del jardí, afegiu una roca o una porta o un altre objecte perquè el vostre robot sàpiga que està fet
-
Enganxeu el paper blanc amb el cercle a les parets del jardí
Vam fer servir cubs per gravar-los perquè les nostres parets eren massa curtes per a la càmera
- Poseu cinta de colors / tires fines de paper de colors a terra davant de la fruita
Pas 4: escriure el codi
Navegant pel jardí
Ús de Bump Sensors: per executar el programa, col·loquem la codificació en una sentència while que recorre diverses sentències if fins que es trenqui el codi. Si es colpeja algun dels para-xocs, el seu valor serà igual a true (que en booleà és un valor d'1). Una sentència if s’utilitza per trencar el codi quan un dels seus valors és igual a 1.
Ús de sensors de penya-segats: dins de la declaració while, fem servir una declaració if per dir a Roomba quan ha arribat a la ubicació d’una planta. El Roomba detecta la cinta de colors del terra examinant el llindar de vermell que agafen els sensors del penya-segat. Si el sensor de penya-segat esquerre o dret detecta un color amb un llindar més gran que el del terra, detindrà el robot durant 2 segons (mitjançant l'ordre pausa). Durant aquests 2 segons, Roomba agafarà i mostrarà una imatge de la fruita. Utilitzant els comandaments imfindcircles integrats, configureu un interval per als radis dels vostres cercles i el Roomba trobarà els vostres anomenats fruits.
Utilització del processament d’imatges: dins de la sentència if, incorporem una altra sentència if que diu: si el radi detectat, radi3, és superior o igual al nostre requisit mínim de fruita madura, r1 (tu decidiu això), compteu i mostreu a al Roomba quantes fruites estan llestes i giren per continuar pel jardí. Si no, toca continuar pel jardí. Nota: és possible que hagueu d'ajustar l'angle que gireu perquè cada Roomba és diferent
Ús de bumper de llum: en una altra sentència if, els bumper de llum s’analitzen per assegurar-se que cap d’ells sigui superior al nostre llindar determinat. Si el parachoques lleuger esquerre, dret, centre esquerre, centre dret, davant esquerre o dret passa per sobre del llindar, el Roomba girarà lleugerament en l’angle adequat per evitar colpejar una paret. Per tant, navegar pel laberint.
La resta del codi s’utilitza per traçar el camí emprat per Roomba i després enviar els resultats al vostre correu electrònic
Pas 5: copieu el codi
Propòsit: segons les seves mides, roomba passarà per un jardí i distingirà les verdures / fruites que estan a punt per recollir-se. % Entrades: sensors Lightbump, sensors Cliff, sensors Bump, imatge de la càmera% Sortides: Sempre que els sensors de llum superin el llindar, roomba girarà i prendrà una imatge, emetrà un so si el radi de% verdures / fruites està entre un rang específic. El codi es trenca quan roomba xoca amb% un objecte, envia a l'astronauta un correu electrònic sobre quantes fruites estan a punt per ser% recollides i un mapatge del moviment de roomba. % Ús: instruccions If i while, traçat d'ordres, codi de correu electrònic de MATLAB
k = 0
tic
timerVal = tic
tot i que és cert
v =.2; % velocity r.setDriveVelocity (v, v);% roomba go forward L = r.getLightBumpers; LC = L.leftCenter; Rr = L. dret; Lf = L.esquerra; RC = L.rightCenter; LF = L.leftFront; RF = L.rightFront; Q = 75; % llindar. RTH = 30; % Llindar vermell alt RTL = 10; % Llindar vermell baix B = r.getBumpers S = r.getCliffSensors; r1 = 24; r3 = 10; PL1 = 1800; si S.leftFront> PL1 || S.rightFront> PL1% detecta si el color del terra està per sobre del llindar r.stop pause (2) elapsedTime = toc (timerVal-2) tic timerVal = tic% pause durant 2 segons img = r.getImage; % prendre imatge imshow (img)% mostrar imatge [centres3, ràdios3] = imfindcircles (img, [30 50], 'ObjectPolarity', 'dark', 'Sensitivity', 0,9); h = viscercles (centres3, radis3); % cerqueu cercles de radis amb l'interval especificat a la imatge si radi3> = r1 T = 1 k = k + 1 dist1 = 0,2. * transcorregut Temps% Si el radi detectat és superior o igual al requisit mínim de% d'una fruita madura, llavors Roomba compta aquesta fruita si hi ha radis3 <= r3 T = 0 else T = 0 dist2 = 0.2. * elapsedTime% Si no, llavors no compta l'extrem de la fruita
if T == 1 r.setLEDDigits (num2str (k)) r.beep r.beep r.beep r.turnAngle (78)% Si es va detectar una fruita, mostreu el número a Roomba,% feu un soroll i gireu elseif T == 2 r.turnAngle (78)% Si es detecten 2 fruits, gireu per continuar pel% garden else r.turnAngle (78)% Si no es detecta cap fruita, gireu per continuar pel% end final del jardí si LC> Q r.stop r.turnAngle (-7) elseif RC> Q r.stop r.turnAngle (7) elseif LF> Q r.stop r.turnAngle (-7) elseif RF> Q r.stop r. turnAngle (7) elseif Lf> Q r.stop r.turnAngle (-7) elseif Rr> Q r.stop r.turnAngle (7) end% Si algun dels valors dels para-xocs de llum supera el llindar, aleshores% el Roomba girarà lleugerament en la direcció adequada per evitar un cop de paret
si B.right == 1 || B.left == 1 || B.front == 1 dist3 = 0.2. * ElapsedTime r.stop r.beep ('F # * 2, F # * 2, c, F # * 2, F # * 2') r.turnAngle (360)% Si alguna de les es colpeixen els bumbers, llavors el roomba toca so, gira,% i trenca el codi
final de trencament
final scatter (0,533, 0, '^') mantenir en scatter (0,533, dist1, '<') mantenir en scatter (-dist2, dist1, 'v') mantenir en scatter (-dist2, 0, 'd') saveas (mcd, 'Movement.png')
kmsg = num2str (k) mail = '[email protected]' password = 'Srsora123 #' host = 'smtp.gmail.com' port = '465'
setpref ('Internet', 'E-mail', correu); setpref ('Internet', 'SMTP_Server', host) props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', correu); props.setProperty ('mail.smtp.host', amfitrió); props.setProperty ('mail.smtp.port', port); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', port); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (correu, "Hola astronauta! Hi ha tantes fruites al jardí", kmsg, {'movement.png'})
Recomanat:
KS-Garden: Visió general: 9 passos
KS-Garden: Visió general: KS-Garden es pot utilitzar per regar / deshacer. / Il·luminar les plantes del jardí / hivernacle al jardí del darrere o les plantes de caixa de cultiu interior (disseny modular) El sistema KS-Garden consisteix principalment en els mòduls següents: caixa del sistema - Relais i caixa d'alimentació
Ultimate Electronics Helper -- Alimentació variable de banc amb mans auxiliars: 12 passos (amb imatges)
Ultimate Electronics Helper || Alimentador de banc variable amb mans auxiliars: quan es treballa amb electrònica, sempre es necessiten dues eines. Avui crearem aquests dos elements essencials. I també farem un pas més i fusionarem aquests dos conjunts en el millor ajudant electrònic! Estic parlant, per descomptat, de
Bot de dibuix de línies BT construït a la paperera: el meu bot: 13 passos (amb imatges)
Bot de dibuix de línies BT construït a la paperera: el meu robot: Hai amics després d'un llarg buit d'uns 6 mesos aquí, tinc un nou projecte. Fins a la finalització de Cute Drawing Buddy V1, SCARA Robot - Arduino i planejo un altre bot de dibuix, l'objectiu principal és cobrir un gran espai per dibuixar. Braços robòtics tan fixos c
Roomba Bot the Bulider: 5 passos (amb imatges)
Roomba Bot the Bulider: Bot the Builder és un roomba, que amb " agafadors " adherit a la part frontal podrà moure objectes al voltant. El codi amb ell està configurat per enregistrar el primer moviment amb un quadre GUI que podeu controlar amb només fer clic amb el ratolí. Després
Com fer un bot paral·lel BOE-Bot amb el xip bàsic de segell: 7 passos
Com fer un Parallax BOE-Bot amb el xip de segell bàsic: aquest instructiu mostra la construcció i la modificació del robot de segell bàsic Parallax BOE-Bot