Taula de continguts:

Roomba Explorer: 4 passos
Roomba Explorer: 4 passos

Vídeo: Roomba Explorer: 4 passos

Vídeo: Roomba Explorer: 4 passos
Vídeo: Is iRobot really superior??? #shorts #short #youtubeshorts 2024, Desembre
Anonim
Roomba Explorer
Roomba Explorer

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

Inicialització i Sensors
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ó

Conclusió
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: