Taula de continguts:
- Pas 1: subministraments
- Pas 2: desenvolupeu la codificació per satisfer el resultat desitjat
- Pas 3: proves
- Pas 4: observeu les sortides visuals
![IRobot Create-Mars Expedition Rover Mark I: 4 passos IRobot Create-Mars Expedition Rover Mark I: 4 passos](https://i.howwhatproduce.com/images/002/image-3295-109-j.webp)
Vídeo: IRobot Create-Mars Expedition Rover Mark I: 4 passos
![Vídeo: IRobot Create-Mars Expedition Rover Mark I: 4 passos Vídeo: IRobot Create-Mars Expedition Rover Mark I: 4 passos](https://i.ytimg.com/vi/3Zx7tGtwF5g/hqdefault.jpg)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
![IRobot Create-Mars Expedition Rover Mark I IRobot Create-Mars Expedition Rover Mark I](https://i.howwhatproduce.com/images/002/image-3295-110-j.webp)
Aquesta instrucció us ensenyarà a configurar l’iRobot Create mitjançant la codificació MatLab. El vostre robot tindrà la possibilitat de buscar minerals distingint formes, maniobrant terrenys accidentats mitjançant l'ús de sensors de penya-segats i podrà controlar-se manualment mitjançant una alimentació en viu.
Pas 1: subministraments
![Subministraments Subministraments](https://i.howwhatproduce.com/images/002/image-3295-111-j.webp)
Per a aquest projecte, necessitareu l’iRobot Create, que és una versió programable de l’aspiradora robot Roomba. El robot ve equipat amb tots els sensors necessaris per a aquest projecte, específicament sensors de cops, sensors de penya-segats i sensors "Light Bump". També necessitareu una càmera de vídeo i Raspberry Pi, que s’utilitzen per a la comunicació sense fils, la programació en directe i el canal de vídeo en directe. Per últim, necessitareu un muntatge imprès en 3D per al Raspberry Pi i la càmera.
Pas 2: desenvolupeu la codificació per satisfer el resultat desitjat
![Desenvolupeu la codificació per satisfer el resultat desitjat Desenvolupeu la codificació per satisfer el resultat desitjat](https://i.howwhatproduce.com/images/002/image-3295-112-j.webp)
Un cop hàgiu connectat el Roomba, haureu de crear un codi Matlab que us proporcionarà les sortides desitjades després de les entrades desitjades.
El codi es pot veure aquí:
Projecte% Roomba% Brenten Arnold (barnol15); Julianne Korn (qdp218); Mike Heal (mheal)% 4/11/19% Descripció del problema: creeu un rover per ajudar els humans durant la% exploració / habitació de mars. % Mètode de solució: cerqueu matèria orgànica (verda) mitjançant l'ús de% para-xocs de llum, sensors de penya-segats i càmera per comprovar si hi ha matèria orgànica. Permetre que% rover navegi per terrenys accidentats mitjançant l'ús de para-xocs,% de penya-segats i sensors d'alçada de la roda. Permeteu als humans controlar el motor des de% a una distància segura de distància i cercar minerals manualment. decisions = {'LIFE', 'TERRA ROUGH', 'CONTROL DE L'USUARI'}; % Tres opcions al menú de diàleg Configuració = menú ('', eleccions) si Configuració> 0% Si l'opció escollida demana confirmació de l'usuari decisions2 = {'Sí', 'No'}% Crea una matriu de cel·les per a "sí" o "No" "choice Confirma = menú (['Heu triat"' eleccions {Mode} '"".'], decisions2)% Confirmeu l'opció de configuració de l'usuari si Confirma == 1 si Configura == 1% Comproveu si s'ha seleccionat la configuració "VIDA" i = 0 mentre i == 0 r.setLEDDigits (num2str ('LIFE'))% Mostra 'LIFE' en LED per a i = 1: 100 r.setDriveVelocity (0,05)% Avançar roomba a 0,05 m / sy = r.getCliffSensors % Recuperar i emmagatzemar els valors del sensor de penya-segat a l'estructura de la cel·la "y" l = r.getLightBumpers% Recuperar i emmagatzemar els valors de la protecció de la llum a l'estructura "f" si esquerra> 100% Comproveu si el parachoques de llum esquerre està cobert r.moveDistance (-0,05)% Mou roomba cap enrere 0,05 metres r.turnAngle (20)% Gira roomba 20 graus CCW img = r.getImage% Obtén la imatge de la càmera de pastís de raspberry a roomba rect = [100 0 150 150]; img = imcrop (img, rect)% retalla la imatge per centrar-se en el centre vermell = mitjana (mitjana (img (:,:, 1)))% intensitat vermella mitjana verd = mitjana (mitjana (img (:,:, 2)))% intensitat mitjana blava = mitjana (mitjana (img (:,:, 3)))% intensitat mitjana blava si verd> vermell && verd> blau% Comproveu si la planta és a la imatge d = msgbox (['Life found! ']); % Mostra un quadre de missatge que diu "La vida s'ha trobat!" waitfor (d); end elseif l.leftFront> 100% Check is left / front light para-xocs està cobert r.moveDistance (-0,05)% Mou roomba cap enrere 0,05 metres img = r.getImage% Obtén la imatge de la càmera de pastís de raspberry a roomba i emmagatzema a la variable 'img 'rect = [100 0 150 150]; img = imcrop (img, rect)% retalla la imatge per centrar-se en el centre vermell = mitjana (mitjana (img (:,:, 1)))% intensitat vermella mitjana verd = mitjana (mitjana (img (:,:, 2)))% intensitat mitjana blava = mitjana (mitjana (img (:,:, 3)))% intensitat mitjana blava si verd> vermell && verd> blau% Comproveu si la planta és a la imatge d = msgbox (['Life found! ']); % Mostra un quadre de missatge que diu "La vida s'ha trobat!" waitfor (d); end elseif l.leftCenter> 100% Comproveu si el para-xocs de llum esquerre / central està cobert r.moveDistance (-0,05)% Moveu roomba cap enrere 0,05 metres img = r.getImage% Obteniu imatge de la càmera de pastís de raspberry a roomba i guardeu-la a la variable 'img 'rect = [100 0 150 150]; img = imcrop (img, rect)% retalla la imatge per centrar-se en el centre vermell = mitjana (mitjana (img (:,:, 1)))% intensitat vermella mitjana verd = mitjana (mitjana (img (:,:, 2)))% intensitat mitjana blava = mitjana (mitjana (img (:,:, 3)))% intensitat mitjana blava si verd> vermell && verd> blau% Comproveu si la planta és a la imatge d = msgbox (['Life found! ']); % Mostra un quadre de missatge que diu "La vida s'ha trobat!" waitfor (d); end elseif l.rightCenter> 100% Comproveu si està cobert el para-xocs de llum dret / central r.moveDistance (-0,05)% Moveu roomba cap enrere 0,05 metres img = r.getImage% Obteniu imatge de la càmera de pastís de raspberry a roomba i guardeu-la a la variable 'img 'rect = [100 0 150 150]; img = imcrop (img, rect)% retalla la imatge per centrar-se en el centre vermell = mitjana (mitjana (img (:,:, 1)))% intensitat vermella mitjana verd = mitjana (mitjana (img (:,:, 2)))% intensitat mitjana blava = mitjana (mitjana (img (:,:, 3)))% intensitat mitjana blava si verd> vermell && verd> blau% Comproveu si la planta és a la imatge d = msgbox (['Life found! ']); % Mostra un quadre de missatge que diu "La vida s'ha trobat!" waitfor (d); end elseif l.rightFront> 100% Comproveu si el para-xocs de llum dret / frontal està cobert r.moveDistance (-0,05)% Moveu roomba cap enrere 0,05 metres img = r.getImage% Obteniu imatge de la càmera de pastís de raspberry a roomba i guardeu-la a la variable 'img 'rect = [100 0 150 150]; img = imcrop (img, rect)% retalla la imatge per centrar-se en el centre vermell = mitjana (mitjana (img (:,:, 1)))% intensitat vermella mitjana verd = mitjana (mitjana (img (:,:, 2)))% intensitat mitjana blava = mitjana (mitjana (img (:,:, 3)))% intensitat mitjana blava si verd> vermell && verd> blau% Comproveu si la planta és a la imatge d = msgbox (['Life found! ']); % Mostra un quadre de missatge que diu "La vida s'ha trobat!" waitfor (d); end elseif l.right> 100% Comproveu si el parachoques de llum dret està cobert r.moveDistance (-0,05)% Moveu roomba cap enrere 0,05 metres r.turnAngle (-20)% Gireu roomba 20 graus CW img = r.getImage% Obteniu imatge de càmera de pastís de raspberry a roomba i emmagatzema a la variable 'img' rect = [100 0 150 150]; img = imcrop (img, rect)% retalla la imatge per centrar-se en el centre vermell = mitjana (mitjana (img (:,:, 1)))% intensitat vermella mitjana verd = mitjana (mitjana (img (:,:, 2)))% intensitat mitjana blava = mitjana (mitjana (img (:,:, 3)))% intensitat mitjana blava si verd> vermell && verd> blau% Comproveu si la planta és a la imatge d = msgbox (['Life found! ']); % Mostra un quadre de missatge que diu "La vida s'ha trobat!" waitfor (d); end elseif y.leftFront <1500% Comproveu si la porció esquerra / frontal de roomba està fora del penya-segat r.moveDistance (-0,1, 0,05)% Moveu roomba cap enrere 0,1 metres a 0,05 m / s r.turnAngle (-5)% Gireu roomba 5 graus CW elseif y.rightFront <1500% Comproveu si la porció dreta / frontal de roomba està fora del penya-segat r.moveDistance (-0,1, 0,05)% Moveu roomba cap enrere 0,1 metres a 0,05 m / s r.turnAngle (5)% Gira roomba 5 graus CCW elseif y.ft <1000% Comproveu si el costat esquerre de roomba està fora del penya-segat r.moveDistance (-0,05, 0,05)% Moveu roomba cap enrere 0,05 metres a 0,05 m / s r.turnAngle (-10)% Gireu roomba 10 graus CW elseif y.right0% Executa si es prem el botó si Continua == 1 i = 0% Continua cercant la vida més i = 1% Finalitza el mode LIFE end end end elseif Configuració == 2% Comprova si s'ha seleccionat l'opció "ROUGH TERRAIN" i = 0 mentre i == 0 r.setLEDDigits (num2str ('RGH'))% Mostra 'Rough' a la pantalla LED per a = 1: 1000 r.setDriveVelocity (0,05)% Estableix la velocitat de la unitat roomba a 0,05 m / sx = r.getBumpers% Recupereu i emmagatzemeu els valors del sensor de para-xocs a l'estructura "x" y = r.get CliffSensors% Recupereu i emmagatzemeu els valors del sensor de penya-segat a l'estructura "y" si x.right == 1% Comproveu si es prem el para-xocs dret r.turnAngle (10)% Gireu l'habitació 10 graus CCW elseif x.left == 1% Comproveu si queda el para-xocs es prem r.turnAngle (-10)% Gira la sala de 10 graus CW elseif x.front == 1% Comprova si es prem el para-xocs frontal r.turnAngle (20)% Gira la sala de 20 graus CCW elseif x.rightWheelDrop == 1% Comproveu si la roda dreta ha caigut r.turnAngle (-20)% Gireu la cambra de 20 graus CW elseif x.leftWheelDrop == 1% Comproveu que la roda esquerra hagi caigut r.turnAngle (20)% Gireu la roda de 20 graus CCW elseif y.leftFront < 1500% Comproveu si la porció frontal esquerra de roomba està fora del penya-segat r.moveDistance (-0,05, 0,05)% Moveu roomba cap enrere 0,05 metres a 0,05 m / s r.turnAngle (-5)% Gireu roomba 5 graus CW else si y. RightFront < 1500% Comproveu si la porció frontal dreta de roomba està fora del penya-segat r.moveDistance (-0,05, 0,05)% Moveu roomba cap enrere 0,05 metres a 0,05 m / s r.turnAngle (5)% Gireu roomba 5 graus CCW en cas contrari si es deixa <1000 % Comproveu si queda la porció o f roomba està fora del penya-segat r.moveDistance (-0,05, 0,05)% Mou roomba cap enrere 0,05 metres a 0,05 m / s r.turnAngle (-10)% Gira roomba 10 graus CW elseif y.right0 si Continua == 1 i = 0 % Continuar terreny accidentat else i = 1% Finalitzar terreny accidentat end end end% Mode manual i = 0 r.setLEDDigits (num2str ('USER'))% Mostrar 'USER' a la pantalla LED d = msgbox (['Tecles de fletxa - Mou; S - Stop Rover; ESC - Control de l'usuari final; A - Localitza el recurs ']); waitfor (d); mentre jo == 0 r.showCamera% Obre el feed en viu de la càmera de pastís de raspberry en una finestra independent D = getkey (1)% Recupera la tecla premuda per l'usuari, emmagatzema el valor ASCII com a variable D si D == 30% Comprova si la fletxa "amunt" té s'ha premut r.setDriveVelocity (0,1)% Envia roomba cap endavant a 0,2 m / s en cas contrari si D == 28% Comprova si s'ha premut la fletxa "esquerra" r.setDriveVelocity (0)% Deixa que roomba passi cap endavant o cap enrere r.turnAngle (15, 0,05)% Gira roomba 45 graus CCW a 0,05 m / s elseif D == 31% Comprova si es va prémer la fletxa "avall" r.setDriveVelocity (-0,1)% Mou roomba cap enrere a 0,2 m / s elseif D == 29% Comproveu si es prem la fletxa "dreta" r.setDriveVelocity (0)% Deixeu que roomba avanci o retrocedeixi r.turnAngle (-15, 0,05)% Gireu roomba 45 graus CW a 0,05 m / s altrament si D == 27% Comproveu si es va prémer la tecla "esc" (escapar) i = 1% Canvia el valor de la variable "i" per sortir del bucle d = msgbox ('S'està sortint del "Control d'usuari"')% Feu saber a l'usuari que s'està sortint del mode manual elseif D == 115% Comproveu si s'ha premut la tecla "s" r.setDriveVelocity (0)% Deixa d'habitació de avançar o retrocedir elseif D == 97% Comproveu si s'ha premut "a" image = r.getImage; imwrite (image, 'image.png') W = Classifica (imatge) K = mode (W) si K == 3 d = msgbox ('Recurs trobat')% Visualitza si el recurs rectangular ha estat detectat espera (d); % Espereu que l'usuari tanqui el quadre de missatge "d" elseif K == 0 d = msgbox ('No és un recurs:(')% Visualitzeu si el recurs rectangular no s'ha detectat waitfor (d);% Espereu que l'usuari tanqui el quadre de missatge "d" end else d = msgbox ('No és una entrada de clau vàlida.')% Mostra si l'usuari tanca el menú "trieu configuració" waitfor (d);% Espereu que l'usuari tanqui el quadre de missatge "d" end waitfor (d);% Espereu l'usuari per tancar el quadre de missatge "d" end end end else d = msgbox ('Adéu')% S'acomiada si les opcions estan tancades end waitfor (d);
Pas 3: proves
![Proves Proves](https://i.howwhatproduce.com/images/002/image-3295-113-j.webp)
Un cop escrit el vostre codi, haureu de provar el Roomba. Tot i que el vostre codi pot semblar correcte, caldrà canviar molts dels vostres valors, especialment pel que fa al color o a la forma, per reconèixer adequadament els objectes que voleu que identifiqui el vostre Roomba.
Pas 4: observeu les sortides visuals
![Observeu les sortides visuals Observeu les sortides visuals](https://i.howwhatproduce.com/images/002/image-3295-114-j.webp)
![Observeu les sortides visuals Observeu les sortides visuals](https://i.howwhatproduce.com/images/002/image-3295-115-j.webp)
Serà molt evident si heu programat o no amb èxit el Roomba en funció de les seves sortides visuals.
Les sortides inclouen:
- Detecció de formes: la capacitat de Roomba de distingir adequadament les formes per trobar els minerals correctes
- Maniobres de terreny accidentat: evita penya-segats o zones fosques
- Mode manual: feed en directe i la possibilitat de controlar Roomba
- Imatges: imatges de minerals
- Life Found !: Un quadre de text MatLab que significa que la vostra planta ha identificat la vida orgànica.
Aquest és el final del nostre tutorial, gaudiu del vostre nou Mars Expedition Rover.
Recomanat:
Casc Iron Man Mark II: 4 passos
![Casc Iron Man Mark II: 4 passos Casc Iron Man Mark II: 4 passos](https://i.howwhatproduce.com/images/001/image-2384-j.webp)
Iron Man Mark II Helmet: Casco réplica mark II de 2 parts, casco y pulsera unidos por cadena que condueix el cablejat, alimentat per 4 bateries AA ubicades en la part posterior junt al microcontrolador i el commutador d’encendre.Casco: Servomotores per al cierre y apert
Mark Twain House Haunting: 5 passos
![Mark Twain House Haunting: 5 passos Mark Twain House Haunting: 5 passos](https://i.howwhatproduce.com/images/001/image-482-18-j.webp)
Casa Mark Twain Haunting: es rumoreja que la casa de Mark Twain seria assetjada pel famós autor. En aquest instructiu, he " descobert " una fotografia antiga que demostra, sense cap mena de dubte, que el fantasma de Twain persegueix efectivament aquesta antiga casa històrica
The Ultimate Beer Pong Machine - PongMate CyberCannon Mark III: 6 passos (amb imatges)
![The Ultimate Beer Pong Machine - PongMate CyberCannon Mark III: 6 passos (amb imatges) The Ultimate Beer Pong Machine - PongMate CyberCannon Mark III: 6 passos (amb imatges)](https://i.howwhatproduce.com/images/002/image-5054-25-j.webp)
The Ultimate Beer Pong Machine: PongMate CyberCannon Mark III: Introducció El PongMate CyberCannon Mark III és la peça de tecnologia de pong de cervesa més nova i avançada que s’ha venut mai al públic. Amb el nou CyberCannon, qualsevol persona pot convertir-se en el jugador més temut de la taula de cervesa. Com és això p
Slave Trigger Flash Mark II: 6 passos (amb imatges)
![Slave Trigger Flash Mark II: 6 passos (amb imatges) Slave Trigger Flash Mark II: 6 passos (amb imatges)](https://i.howwhatproduce.com/images/002/image-5936-28-j.webp)
Slave Trigger Flash Mark II: en aquest instructiu, explicaré com fer un flaix esclau real (òptic) amb un mínim de components. Hi ha molts dissenys complexos que podeu trobar a Internet, aquest disseny és molt senzill i funciona bé en entorns il·luminats i poc il·luminats
Ús del mòdul d’ordres d’IRobot Create amb Linux: 4 passos
![Ús del mòdul d’ordres d’IRobot Create amb Linux: 4 passos Ús del mòdul d’ordres d’IRobot Create amb Linux: 4 passos](https://i.howwhatproduce.com/images/003/image-6062-120-j.webp)
Ús del mòdul d’ordres d’IRobot Create amb Linux: atès que iRobot no ha proporcionat als usuaris de Linux la manera d’utilitzar el mòdul d’ordres, he hagut d’esbrinar-ho jo mateix. No us deixeu intimidar, no és gens difícil. Tot el que heu de fer és executar un parell de scripts. Comencem, oi?