Taula de continguts:
- Pas 1: inicialització i sensors
- Pas 2: obtenció de dades
- Pas 3: Finalització de la missió
- Pas 4: Conclusió
Vídeo: Roomba Explorer: 4 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
En utilitzar MATLAB i el robot Create2 d’iRobot, aquest projecte explorarà diverses àrees d’una ubicació desconeguda. Hem utilitzat els sensors del robot per ajudar a maniobrar un terreny perillós. En obtenir fotografies i vídeos de vídeo d’un Raspberry Pi adjunt, vam poder determinar els obstacles que s’enfrontaran al robot i es classificaran.
Peces i materials
Per a aquest projecte, necessitareu
-un ordinador
-Nouwest version de MATLAB (MATLAB R2018b es va utilitzar per a aquest projecte)
- roombaInstall toolbox
El robot Create2 de -iRobot
-Raspberry Pi amb càmera
Pas 1: inicialització i sensors
Abans de començar qualsevol programació, hem descarregat la caixa d’eines roombaInstall, que permetia l’accés a diferents components del robot.
Inicialment, vam crear una GUI per inicialitzar qualsevol robot. Per fer-ho, heu d’escriure el número del robot com a entrada. Això permetrà l'accés per executar el nostre programa al robot. Hem treballat per aconseguir que el robot maniobrés a través dels nombrosos terrenys que trobaria. Hem implementat els Sensors de Penya-segat, els Sensors de Llum i els Sensors Físics, fent servir les seves sortides per disparar el robot per canviar-ne la velocitat o la direcció. Quan algun dels sis sensors Light Bump detecta un objecte, el valor que produeixen disminuirà, provocant una disminució de la velocitat del robot per evitar una col·lisió a tota velocitat. Quan finalment el robot xoca amb un obstacle, els sensors Physical Bump informaran d'un valor superior a zero; per això, el robot s'aturarà, de manera que no hi haurà més col·lisions i es podran posar en funcionament més funcions. Per als sensors de penya-segats, llegiran la brillantor de la zona que els envolta. Si el valor és superior a 2800, vam determinar que el robot estaria en un terreny estable i segur. Però, si el valor és inferior a 800, els Sensors del Penya-segat detectaran un penya-segat i s’aturaran immediatament per no caure. S'ha determinat que qualsevol valor intermedi representa l'aigua i farà que el robot deixi la seva acció. Mitjançant l’ús dels sensors anteriors, es canvia la velocitat del robot, cosa que ens permet determinar millor si hi ha algun perill.
A continuació es mostra el codi (de MATLAB R2018b)
%% Inicialització
dlgPrompts = {'Número Roomba'};
dlgTitle = 'Seleccioneu el vostre Roomba';
dlgDefaults = {''};
opts. Resize = 'activat';
dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts)% Crea una finestra que demana a l'usuari que introdueixi el seu número roomba
n = str2double (dlgout {1});
r = roomba (n); % Inicialitza Roomba especificat per l'usuari %% Determinació de la velocitat a partir de Light Bump Sensors mentre que true s = r.getLightBumpers; % d'obtenir sensors de cops de llum
lbumpout_1 = extractfield (s, 'left'); % pren els valors numèrics dels sensors i els fa més utilitzables lbumpout_2 = extractfield (s, 'leftFront');
lbumpout_3 = extractfield (s, 'leftCenter');
lbumpout_4 = extractfield (s, 'rightCenter');
lbumpout_5 = extractfield (s, 'RightFront');
lbumpout_6 = extractfield (s, 'dreta');
lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6]% converteix els valors en matriu
sLbump = ordenar (lbout); Es pot extreure la matriu% ordena al valor més baix
lowLbump = sLbump (1); speed =.05 + (lowLbump) *. 005% utilitzant el valor més baix, que representa obstacles propers, per determinar la velocitat, velocitat més alta quan no es detecta res
r.setDriveVelocity (velocitat, velocitat)
final
% Bumpers físics
b = r.getBumpers; % Sortida veritable, falsa
bsen_1 = extracte (b, 'esquerra')
bsen_2 = extractfield (b, 'dreta')
bsen_3 = extractfield (b, 'frontal')
bsen_4 = extractfield (b, 'leftWheelDrop')
bsen_5 = extractfield (b, 'RightWheelDrop')
bonys = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = suma (bums)
si tbump> 0 r.setDriveVelocity (0, 0)
final
% Sensors de penya-segats
c = r.getCliffSensors %% 2800 segur, en cas contrari, aigua
csen_1 = extracte (c, 'esquerra')
csen_2 = extractfield (c, 'right')
csen_3 = extractfield (c, 'leftFront')
csen_4 = extractfield (c, 'RightFront')
penya-segats = [csen_1, csen_2, csen_3, csen_4]
ordcliff = ordenar (penya-segats)
si ordcliff (1) <2750
r.setDriveVelocity (0, 0)
si penya-segat <800
disp 'penya-segat'
en cas contrari
disp 'aigua'
final
r. TurnAngle (45)
final
Pas 2: obtenció de dades
Després que es disparen els sensors físics de cops, el robot implementarà el Raspberry Pi a bord per fer una fotografia de l’obstacle. Després de fer una fotografia, utilitzant el reconeixement de text si hi ha text a la imatge, el robot determinarà quin és l'obstacle i què diu l'obstacle.
img = r.getImage; imshow (img);
imwrite (img, 'imgfromcamera.jpg')
foto = imread ('imgfromcamera.jpg')
Resultats ocr = ocr (foto)
text reconegut = ocrResults. Text;
figura;
imshow text (foto) (220, 0, Text reconegut, "Color de fons", [1 1 1]);
Pas 3: Finalització de la missió
Quan el robot determini que l'obstacle és HOME, completarà la seva missió i es quedarà a casa. Després de completar la missió, el robot enviarà un avís per correu electrònic que ha tornat a casa i enviarà les imatges que va prendre al llarg del seu viatge.
% Enviament de correu electrònic
setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com');
setpref ('Internet', 'E_mail', '[email protected]'); % compte de correu per enviar des de setpref ('Internet', 'SMTP_Username', 'introdueix el correu electrònic del remitent'); % senders username setpref ('Internet', 'SMTP_Password', 'introduïu la contrasenya del remitent'); % Contrasenya dels remitents
atrezzo = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');
sendmail ('Introduïu el correu electrònic de recepció', 'Roomba', 'Roomba ha tornat a casa !!', 'imgfromcamera.jpg')% compte de correu electrònic per enviar a
El robot s'ha acabat.
Pas 4: Conclusió
El programa MATLAB inclòs està separat de tot el guió utilitzat amb el robot. A l'esborrany final, assegureu-vos de posar tot el codi, excepte el pas d'inicialització, en un bucle while per assegurar-vos que els para-xocs funcionin constantment. Aquest programa es pot editar per adaptar-se a les necessitats de l'usuari. Es mostra la configuració del nostre robot.
* Recordatori: no oblideu que la caixa d'eines roombaInstall és necessària perquè MATLAB pugui interactuar amb el robot i el Raspberry Pi incorporat.
Recomanat:
Convertint Roomba en un Mars Rover: 5 passos
Convertint Roomba en un Mars Rover:
Dreceres de teclat per a Internet Explorer !!: 4 passos
Dreceres de teclat per a Internet Explorer !!: aquest instructiu us mostrarà algunes dreceres de teclat útils per a Internet Explorer Si us plau subscriviu-vos al meu canal Gràcies
Roomba Scout Explorer: 8 passos
Roomba Scout Explorer: com un dels projectes nord-americans més esperats i molt investigats, els projectes de Mars Rover s’han convertit en èxits humans en la producció de sistemes autònoms d’alta tecnologia, amb l’únic propòsit d’investigar i integrar
De Roomba a Rover en només 5 passos: 5 passos
De Roomba a Rover en només 5 passos: els robots Roomba són una manera fàcil i divertida de submergir els peus en el món de la robòtica. En aquest instructiu, detallarem com convertir un Roomba simple en un rover controlable que analitzi simultàniament el seu entorn. Llista de parts1.) MATLAB2.) Roomb
Bus Pirate 3EEPROM Explorer Board: 5 passos
Bus Pirate 3EEPROM Explorer Board: si teniu un dels pirates de Hack a Day's Bus, què en feu? Obteniu més informació sobre les EEPROM d’1 fil, I2C i SPI amb la placa exploradora 3EEPROM (l’anomenem THR-EE-PROM). L’EEPROM és un tipus de xip de memòria que emmagatzema dades sense una alimentació contínua