Taula de continguts:

Roomba amb MATLAB: 4 passos (amb imatges)
Roomba amb MATLAB: 4 passos (amb imatges)

Vídeo: Roomba amb MATLAB: 4 passos (amb imatges)

Vídeo: Roomba amb MATLAB: 4 passos (amb imatges)
Vídeo: How to Calculate Average Monthly Balance in Bank | AMB Balance Charges by Bank 2024, De novembre
Anonim
Roomba Amb MATLAB
Roomba Amb MATLAB

Aquest projecte utilitza MATLAB i un robot programable iRobot Create2. Posant a prova els nostres coneixements de MATLAB, podem programar el Create2 per interpretar imatges i detectar senyals. La funcionalitat del robot depèn principalment de l’aplicació mòbil MATLAB i d’un mòdul de càmera Raspberry Pi.

Pas 1: peces i materials

Peces i materials
Peces i materials
Peces i materials
Peces i materials
Peces i materials
Peces i materials
Peces i materials
Peces i materials

1. Creació d'iRobot, versió 2

- Es tracta d’un robot programable que sembla un Roomba. Tingueu en compte que aquest producte d'iRobot no és un buit. Està pensat per a la programació personalitzada de l'usuari.

2. MATLAB 2017a

- La majoria de versions anteriors seran compatibles amb el codi que hem utilitzat a continuació. MATLAB identificarà una ordre que no és compatible amb la versió que teniu i us suggerirà una ordre d’ajust adequat.

3. Raspberry Pi 3 Model B, versió 1.2

- Comproveu si Raspberry Pi és compatible amb el vostre iRobot. Consulteu aquest enllaç per obtenir més ajuda: https://www.irobotweb.com/~/media/MainSite/PDFs/A…. Aquesta informació suposa que esteu treballant amb un Raspberry Pi preprogramat. Tingueu en compte que haureu de treballar amb un Pi preprogramat perquè funcionin els passos següents. L’ús d’un Pi preprogramat us permetrà realitzar tota la vostra codificació només a MATLAB.

4. Mòdul de càmera V2 (per a Raspberry Pi)

- Potser us sorprendrà; malgrat la seva mida, el mòdul de càmera Raspberry Pi és de molt bona qualitat. És l’opció més barata i compatible per a aquest projecte.

Opcional: suport imprès en 3D. S'utilitza per estabilitzar la càmera. No afecta la funcionalitat del robot, però us ajudarà a codificar si voleu utilitzar dades d’imatge per al reconeixement de colors i / o objectes.

Pas 2: Configuració

Configuració
Configuració
Configuració
Configuració

1. Connexió de Raspberry Pi i mòdul de càmera (maquinari)

- Per alimentar el Raspberry Pi, haureu d'executar un extrem USB micro USB al port d'alimentació femení del microcontrolador. Opcional: es pot utilitzar un regulador de tensió per garantir que la tensió no excedeixi els 5 V. Després d’alimentar el Raspberry Pi, podeu connectar-lo al robot executant USB a masculí de la placa base al port USB A del microcontrolador.

- Després de connectar el Pi al Roomba, la càmera està llesta per instal·lar-se. El mòdul de càmera serà molt més petit del que esperàveu. Tingueu en compte que l'objectiu està muntat en un sensor i que des de la càmera s'estén una cinta blanca. NO traieu ni arrenceu la cinta. Aquest és el cable que necessiteu per connectar-lo al Raspberry Pi. Primer, subjecteu l’extrem de la cinta i busqueu els connectors platejats i el cable blau. Es tracta de costats oposats. A continuació, busqueu la ranura entre els ports Ethernet i HDMI del vostre Raspberry Pi. Fixeu-vos que hi ha un petit pany blanc que el cobreix. Aixequeu lentament el pany, però no el traieu de la ranura, ja que es trencarà i es danyarà permanentment. Quan hàgiu aixecat el pany, agafeu la cinta i encareu els connectors platejats al port HDMI. El costat blau donarà al port Ethernet. Feu lliscar lentament la cinta a la ranura mentre encara estigui desbloquejada. No cal forçar-lo a la ranura. Després de la inserció, torneu a prémer el pany. Si la càmera està ben fixada, hauríeu de poder estirar (suaument) la cinta i sentir tensió. La cinta no ha d’estar solta. Després de connectar la càmera al Pi, és possible que noteu la soltesa que té. Per això, hem utilitzat una muntura impresa en 3D per fixar-la. És la vostra decisió determinar quins materials voleu utilitzar per mantenir la càmera quieta per obtenir imatges d’alta qualitat.

2. Instal·lació de fitxers adequats i connexió de Roomba a l'ordinador Després de configurar tot el maquinari, ara podeu passar a instal·lar MATLAB juntament amb els fitxers m associats que us permeten comunicar-vos amb el robot. Per fer-ho, obriu MATLAB i creeu una nova carpeta per mantenir junts tots els fitxers relacionats. Utilitzeu aquest script per instal·lar / actualitzar els fitxers necessaris:

- Ara tots els fitxers haurien d'aparèixer a la carpeta creada. Feu clic amb el botó dret a la finestra de la carpeta actual i seleccioneu "Afegeix al camí" per afegir aquest camí a la llista de directoris on MATLAB busca fitxers. Assegureu-vos que tots els fitxers estiguin al camí correcte.

3. Un cop instal·lats els fitxers, ja podeu començar a connectar-vos al robot. Comenceu encenent el robot i després restablint-lo directament després de l’arrencada (no oblideu restablir el robot cada cop abans i després de l’ús). En segon lloc, connecteu el robot i el portàtil a la mateixa xarxa wifi. Després d'això, parlarem amb el Raspberry Pi preprogramat a través de MATLAB trucant al Roomba mitjançant el seu nom i la funció roomba. Per exemple, em connectaria al robot 28 mitjançant la línia següent: R = roomba (28).

- Observeu com he assignat l'objecte a una variable R. Ara puc accedir a les funcions de Roomba associades des del fitxer d'instal·lació tractant la variable R com una estructura.

- R.turnAngle (90) Si tot va bé, hauria de tocar un to musical que confirmés la connexió.

Pas 3: MATLAB Logic

El document PDF al final d’aquest pas és un diagrama de flux lògic detallat per al nostre procés de codificació a MATLAB. Vam activar els sensors de penya-segats, llum i cops de llum per tal de permetre al robot comunicar-se amb nosaltres quan detecta un objecte a la seva proximitat. Per exemple, quan el robot avança, els seus sensors de llum busquen objectes en el seu recorregut segons el vector en què viatgi. Vam escollir un llindar de distància per al robot perquè, quan s’acosti a un objecte, invertís en lloc de xocar amb ell. El nostre robot també està configurat amb Twitter, que vam especificar al nostre procés de codificació (es mostrarà a continuació).

Per millorar l’experiència, vam fer servir l’aplicació MATLAB als nostres dispositius mòbils per poder controlar els moviments del robot només inclinant els nostres telèfons. Aquesta és una activitat opcional, ja que segur que podeu moure el robot mitjançant l’ordre moveDistance al segment de codi MATLAB. Recordeu que és preferible utilitzar comandes MATLAB per controlar el robot si el vostre objectiu és ser precís. Si voleu apuntar el robot perquè la càmera faci una foto en un lloc específic, és millor que codifiqueu els moviments del robot a MATLAB. Tot i que sigui divertit, no és desitjable l’ús de l’aplicació MATLAB per controlar el robot.

El codi ordena a Roomba que realitzi una configuració bàsica i continuï mitjançant un bucle continu. Inicialment, el portàtil configurarà un enllaç amb Roomba mitjançant l'ordre Roomba (). També configura la connexió de twitter mitjançant l'ordre webwrite () de MATLAB. El bucle conté cinc fluxos lògics principals en funció de l’entorn que envolta el Roomba. Primer, Roomba comprova si hi ha obstacles i s'ajusta cap enrere si troba que està impedit. Inclòs en aquest bucle hi ha el segon camí que avisa els usuaris si s’està emportant Roomba. Una utilitat important a la dura zona de guerra marciana. Després que Roomba hagi determinat que la seva posició és segura, es fixa en el dispositiu mòbil per determinar el següent moviment. Si el dispositiu mòbil està inclinat cap endavant, calcularà una velocitat base en funció de la gravetat de la mesura del rotlle que ajustar les velocitats de les rodes individuals per girar en funció del grau de pas. El telèfon també pot moure el Roomba a la inversa. Un estat de dispositiu mòbil neutre obre els dos camins finals. Un Roomba en repòs buscarà una bandera alienígena i avisarà l’usuari en conseqüència.

A continuació es mostra el nostre codi (completat a MATLAB 2017a)

% d'entrades: dades d'orientació des d'un dispositiu connectat a wifi, càmera

% d'informació, dades del sensor

% de sortides: el moviment està controlat pel dispositiu connectat al wifi i el moviment

% es comprova la seguretat llegint les dades del sensor. Si la càmera es detecta

% una bandera extraterrestre, el roomba respon tuitant la bandera enemiga

% s'ha vist.

% purpose: el nostre dispositiu no té cap propòsit, excepte protegir aquells que

% el va crear, serveix al seu creador i ho fa

% exactament el que es diu.

% Ús: bàsicament el programa s'executarà tot sol.

netejar-ho tot, tancar-ho tot, clc

% Inicialització d'objectes i variables

r = roomba (28);

m = mobiledev;

% use response = webwrite (nom d'amfitrió, dades)

hostname = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop és operatiu … S'està esperant l'ordre';

data = strcat ('api_key =', API, '& status =', tweet);

resposta = webwrite (nom d'amfitrió, dades);

% bucle en execució constant

mentre que 1 == 1

% Estructures que contenen dades relavents

o = m.orientació; % d'orientació del dispositiu mòbil

light = r.getLightBumpers (); % De valors de para-xocs lleugers

a = r.getCliffSensors (); % Valors del sensor de penya-segat

bump = r.getBumpers (); % Sensors de para-xocs

% comprovar els para-xocs

si bump.right == 1 || bump.left == 1 || bump.front == 1

r.moveDistance (-. 2,.2);

% comproveu els sensors de llum

elseif light.left> 60 || light.leftFront> 60 || light.leftCenter> 60 || llum.dreta> 60 || light.rightFront> 60 || light.rightCenter> 60

r.moveDistance (-. 2,.2);

% comproveu els sensors de penya-segats

% De senyal antirobatori i notificació

elseif a.left <300 && a.right <300 && a.leftFront <300 && a.rightFront <300

r.stop ();

r.beep ();

tweet = 'RoboCop s'ha aixecat!'

data = strcat ('api_key =', API, '& status =', tweet);

resposta = webwrite (nom d’amfitrió, dades);

% Operació normal d'evitació de penya-segats

elseif a.left <300 || a.dreta <300 || a.leftFront <300 || a.rightFront <300

r.moveDistance (-. 2,.2);

% Roomba va passar les comprovacions i ara s'executarà amb un funcionament normal.

% Inicialment es mesura el rotllo del dispositiu i es converteix en una base

% velocitat que s'utilitza per calcular la velocitat de la roda

% Moviment cap endavant

elseif o (3)> = 0 && o (3) <= 60

baseVel = (-. 5/60) * (o (3) -60);

si o (2)> = - 70 && o (2) <0

r.setDriveVelocity (baseVel + (. 3/50) * abs (o (2)), baseVel - (. 3/50) * abs (o (2)));

elseif o (2) = 0

r.setDriveVelocity (baseVel - (. 3/50) * abs (o (2)), baseVel + (. 3/50) * abs (o (2)));

sinó r.stop

final

% Moviment cap enrere

elseif o (3)> 100 && o (3) <150

r.setDriveVelocity (-. 2, -.2)

r.beep ();

r.beep ();

% resting roomba cercarà la bandera alienígena marcada com a fluorescent

% verd Peça de paper

en cas contrari

r. aturar-se

img = r.getImage (); % prendre imatge

llindar = graythresh (img (200: 383,:, 2)) +. 1; % de nivell de verd calc

si llindar>.42

tweet = 'Enemic vist!'

data = strcat ('api_key =', API, '& status =', tweet);

resposta = webwrite (nom d'amfitrió, dades);

en cas contrari

r.stop

final

final

final

Pas 4: Conclusió

Recordeu, podeu utilitzar l’escriptura que hem escrit anteriorment, però sempre podeu modificar-lo perquè s’adapti a les vostres necessitats. No ha de ser controlat pel vostre telèfon. (Tot i això, ho fa més divertit.) Escolliu quin mètode preferiu utilitzar per controlar el robot. Condueix amb el teu robot i gaudeix!

Recomanat: