Sie sind auf Seite 1von 6

FACULTAD DE I NGENIER IA

D EPARTAMENTO DE M EC ANICA Y M ECATR ONICA


ROB OTICA
PAGE 1 OF 6

AVANCE DE PROYECTO PHANTOM X


Replicacion de numeros
Jhon Christian Rodriguez Ardila, jhcrodriguezar@unal.edu.co
Juan Sebastian Monroy Valbuena, jsmonroyv@unal.edu.co
Haizan Cordoba Gallardo, hcordobaga@unal.edu.co
16 de Octubre de 2017

ResumenPalabras clave: Robotica, tratamiento imagenes II. CONTEXTUALIZACI ON


, Matlab, vision de maquina, OCR . El proyecto que se busca desarrollar consiste en la iden-
tificacion y replica de numeros utilizando el robot Phantom
I. INTRODUCCI ON X. Para esto se contemplan varias tareas que se han ido
La vision de maquina en el campo de la robotica es abordando, Es necesario tener:
un elemento muy importante, ya que la finalidad de un La parametrizacion de los numeros que el robot Phan-
robot es interactuar de algun modo con el ambiente, este tom X escribira.
ambiente al ser dinamico es muy difcil de controlar, lo que La cinematica inversa para poder enviar esas trayec-
siempre ha obligado a que los entornos en donde se utilizan torias al robot Phantom X.
robots sean entornos totalmente cerrados y controlados, en La adquisicion de la imagen de los numeros e identi-
donde todo tiene su posicion y su tiempo absolutamente ficacion de los mismos.
establecido y en donde si algo esta fuera de su sitio o de su Todos estos pasos se veran reflejados en nuestra propues-
momento todo el proceso falla, es decir tiene que existir un ta.
reglaje muy especifico y restrictivo para cada elemento que
III. PROPUESTA
interactue con el robot para que no haya inconvenientes en
los procesos. A continuacion se presentan los elementos principales de
Es debido a esto que la vision de maquina es muy la propuesta.
importante ya que las maquinas estan al tanto solo de s
mismas, son por as decirlo ciegas a su entorno. Esto III-A. Numeros
se puede solucionar por medio de comunicacion entre los Se desarrollo una funcion para la obtencion de los
robots y sensores o otros robots, por ejemplo recibiendo numeros, al llamarla retorna la nube de puntos que se deben
informacion sobre sensores de presencia que avisen que hay alcanzar para dibujarlos con la longitud del arreglo.
un objeto listo para interactuar con el, sin embargo esto es
poco robusto y no es muy flexible ante distintos escenarios.
100
Es por esto que la informacion de un sensor que otorgue
90
un mayor rango de informacion como una camara es de
80
mucha utilidad. ya que una camara que nos suministre
70
informacion en tiempo real sobre el tipo de objeto, ubica- 60
cion y orientacion de un objeto en un instante determinado 50

le permite al programa del robot considerar una gama 40

amplia de decisiones que no se podran siquiera considerar 30

de no tener esta informacion. Claramente esto supone un 20

esfuerzo a nivel de vision de maquina para poder extraer 10

esta informacion a partir de la informacion que nos entrega 0

0 10 20 30 40 50 60 70 80 90 100
la camara, y las tecnicas de vision y de inteligencia artificial
nos pueden apoyar en esta tarea. Esto es lo que se plantea
explorar en este trabajo. Figura 1. Numero 0

AVANCE DE PROYECTO
FACULTAD DE I NGENIER IA
D EPARTAMENTO DE M EC ANICA Y M ECATR ONICA
ROB OTICA
PAGE 2 OF 6

100
th1 = linspace(pi,0,40);
R1 = 25; 90

80
th2 = linspace(0,-pi,40);
70
R2 = 25;
60
nx=horzcat(R1*cos(th1)+25, 50
linspace(50,50,20),
40
R2*cos(th2)+25,
linspace(0,0,20)) 30

20
ny=horzcat(R1*sin(th1)+75,
10
linspace(75,50,20),
R2*sin(th2)+25, 0
linspace(25,75,20)) 0 10 20 30 40 50 60 70 80 90 100

[rolls,length]=size(nx)
plot(nx,ny,r)
axis([-5 100 -5 105]) Figura 3. Numero 2

th = linspace(pi,0,20);
R = 25;

nx=horzcat(R*cos(th)+25,
linspace(50,0,20),
linspace(0,50,20))

ny=horzcat(R*sin(th)+74,
linspace(74,0,20),
linspace(0,0,20))
100
[rolls,length]=size(nx)
90
plot(nx,ny,r)
80 axis([-5 100 -5 105])
70

60

50

40
100
30
90
20
80
10
70
0
60
0 10 20 30 40 50 60 70 80 90 100
50

40

Figura 2. Numero 1 30

20

10

0 10 20 30 40 50 60 70 80 90 100

Figura 4. Numero 3

nx=horzcat(linspace(0,25,20),
linspace(25,25,20)) th1 = linspace(pi/2,0,20);
R1 = 25;
ny=horzcat(linspace(67,100,20),
linspace(100,0,20)) th2 = linspace(0,-pi/2,20);
R2 = 25;
[rolls,length]=size(nx)
plot(nx,ny,r) nx=horzcat(linspace(0,50,20),
axis([-5 100 -5 105]) linspace(50,0,20),
linspace(0,25,20),
R1*cos(th1)+25,R2*cos(th2)+25,

AVANCE DE PROYECTO
FACULTAD DE I NGENIER IA
D EPARTAMENTO DE M EC ANICA Y M ECATR ONICA
ROB OTICA
PAGE 3 OF 6

linspace(25,0,20))
th1 = linspace(pi/2,0,20);
ny=horzcat(linspace(100,100,20), R1 = 25;
linspace(100,50,20),
linspace(50,50,20), th2 = linspace(0,-pi/2,20);
R1*sin(th1)+25, R2*sin(th2)+25, R2 = 25;
linspace(0,0,20))
nx = horzcat(linspace(50,0,20),
[rolls,length]=size(nx) linspace(0,0,20),
plot(nx,ny,r) linspace(0,25,20),
axis([-5 100 -5 105]) R1*cos(th1)+25,R2*cos(th2)+25,
linspace(25,0,20))

ny = horzcat(linspace(100,100,20),
linspace(100,50,20),
linspace(50,50,20),...
100 R1*sin(th1)+25,
90 R2*sin(th2)+25,
linspace(0,0,20))
80

70

60 [rolls,length]=size(nx)
plot(nx,ny,r)
50
axis([-5 100 -5 105])
40

30

20

10

0 10 20 30 40 50 60 70 80 90 100
100

90

80
Figura 5. Numero 4
70

60

50
nx = horzcat(linspace(50,50,40),
40
linspace(50,0,20),
linspace(0,50,20)); 30
ny = horzcat(linspace(0,100,40), 20
linspace(100,50,20),
10
linspace(50,50,20));
0
[rolls,length]=size(nx) 0 10 20 30 40 50 60 70 80 90 100
plot(nx,ny,r)
axis([-5 100 -5 105])
Figura 7. Numero 6

100

90
th1 = linspace(pi/2,pi,20);
80 R1 = 50;
70
th2 = linspace(pi,3*pi,40);
60
R2 = 25;
50

40 nx = horzcat(R1*cos(th1)+50,
linspace(0,0,20),
30
R2*cos(th2)+25)
20

10 ny = horzcat(R1*sin(th1)+50,
linspace(50,25,20),
0
R2*sin(th2)+25)
0 10 20 30 40 50 60 70 80 90 100

[rolls,length]=size(nx)
plot(nx,ny,r)
Figura 6. Numero 5 axis([-5 100 -5 105])

AVANCE DE PROYECTO
FACULTAD DE I NGENIER IA
D EPARTAMENTO DE M EC ANICA Y M ECATR ONICA
ROB OTICA
PAGE 4 OF 6

100 100

90 90

80 80

70 70

60 60

50 50

40 40

30 30

20 20

10 10

0 0

0 10 20 30 40 50 60 70 80 90 100 0 10 20 30 40 50 60 70 80 90 100

Figura 8. Numero 7 Figura 10. Numero 9

nx = horzcat(linspace(0,50,20),
linspace(50,0,20)) th1 = linspace(0,2*pi,40);
ny = horzcat(linspace(100,100,20), R1 = 25;
linspace(100,0,20))
th2 = linspace(0,-pi/2,40);
[rolls,length]=size(nx) R2 = 50;
plot(nx,ny,r)
axis([-5 100 -5 105]) nx = horzcat(R1*cos(th1)+25,
linspace(50,50,20),
R2*cos(th2))
ny = horzcat(R1*sin(th1)+75,
linspace(75,50,20),
R2*sin(th2)+50)
100

90
[rolls,length]=size(nx)
plot(nx,ny,r)
80 axis([-5 100 -5 105])
70

60

50

40
III-B. Cinematica inversa
30 La cinematica inversa se obtuvo para el Laboratorio 4
20 en el cual se realizo el trazado de los numeros 4 y 8 con
10
exito. a traves de la funcion cinematicaInversa que pide
0
como parametros las coordenadas x y y z y el angulo theta
0 10 20 30 40 50 60 70 80 90 100
con respecto al sistema de referencia 0 del Phantom X se
obtienen los valores articulares que luego se le envan al
Figura 9. Numero 8 robot por medio de otra funcion de asignacion para que
se mueva, luego de que alcanza aproximadamente el punto
th1 = linspace(3*pi/2,7*pi/2,40); (se sabe esto por medio de los mismo encoders del robot)
R1 = 25; se manda el siguiente unto de la nube de puntos y as
th2 = linspace(pi/2,5*pi/2,40); sucesivamente.
R2 = 25;
function [ q1,q2,q3,q4 ] =
nx = horzcat(R1*cos(th1)+25, cinematicaInversa(px,py,pz,theta)
R2*cos(th2)+25)
ny = horzcat(R1*sin(th1)+75, % angulos en radianes q1 q2 q3 q4
R2*sin(th2)+25) q1=0;
q2=0;
[rolls,length]=size(nx) q3=0;
plot(nx,ny,r) q4=0;
axis([-5 100 -5 105]) L1=10.5;
L2=10.5;
L3=11.5;

AVANCE DE PROYECTO
FACULTAD DE I NGENIER IA
D EPARTAMENTO DE M EC ANICA Y M ECATR ONICA
ROB OTICA
PAGE 5 OF 6

q1=atan2(py,px); racion en las imagenes a evaluar y decidir si la imagen


wz=pz-(L3)*cos(theta)-10
wx=px-(L3)*sin(theta)*cos(q1)
que esta tomando la camara es una de las previamente
wy=py-(L3)*sin(theta)*sin(q1) aprendidas (numeros del 0 al 9).
D=(wz2 + wx2 + wy2 - L12 - L22)/
Para tomar las imagenes y reducir al maximo el ruido
(2*L1*L2) que venga con ellas en primer lugar se procedera a pasar
% cos(q3) la imagen a escala de grises para enseguida umbralizar la
if(abs(D)<=1)
% codo arriba imagen.
q1=atan2(wy,wx);
q3=atan2(sqrt(1-D2),D); imagen = imread(numero.PNG);
q2=(pi/2 - atan2(wz,sqrt(wx2+wy2))- %imshow(imagen);
atan2(L2*sin(q3),L1+L2*cos(q3))) ; % La erramienta imtool permite por medio de una
q4=theta-q2-q3; interfaz interactuar con la imagen y permite saber
else que tratamientos conviene aplicarle
disp(no es posible) %imtool(imagen);
imagengrises = rgb2gray(imagen);
end %imshow(i1g);
umbral = 0.4;
imagenumb = imbinarize(imagengrises,adaptthresh);
%imagenumb = im2bw(i1g,umbral);
%imshow(imagenumb);
III-C. Adquisicion e identificacion de numeros %para contrastar los resultados
imshowpair(imagen, imagenumb, montage )
Para la adquisicion de imagenes inicialmente se planea
utilizar la camara del computador portatil desde el cual El umbralizado se puede realizar con un umbral elegido
se este ejecutando el codigo aunque existe la posibilidad por uno mismo o utilizando metodos mas elaborados de
de migrar a una camara externa por medio de conexion umbralizacion como metodos adaptativos, se tiene contem-
usb para tener mayor versatilidad en posicionamiento y plado posibilemente usar la aplicacion de Matlab image-
orientacion de la camara. Segmenter que nos permite generar una funcion generica
Los datos se obtendran por medio de un Hardware con distintos metodos para segmentar y delimitar regiones
support package para Matlab (MATLAB Support Package dentro de una imagen. Luego de Segmentar se busca extraer
for USB Webcams) que nos permite por medio del puerto la seccion de nuestro interes para poder llevar a cabo un
usb recibir los datos de una camara web directamente en el analisis mas a fondo (identificacion). Llevando a cabo un
programa en tiempo real. recorte.
Para obtener imagenes a partir de una camara se usa lo Luego de esto se busca normalizar la imagen para poder
siguiente, luego de haber instalado el package de soporte estandarizar el proceso y no restringirnos a identificar letras
para webcams usb: de un solo tamano.
% Para ver que camaras estan disponibles Luego comparando la imagen tomada con la librera de
camList = webcamlist; imagenes por medio de factores de diferenciamiento como
% Se elige una y se le nombre en el Workspace
cam = webcam(1); correlaciones entre sus dimensiones o factores obtenidos
% Para visualizar lo que se recibe de la camara por Hough clasificar la imagen como alguna de los nume-
preview(cam);
% Para capturar un frame de los datos recibidos ros.
img = snapshot(cam);
% Mostrar el fram guardado. III-D. Logica general
image(img);
% Tomar varios frames Se considera lo posibilidad de implementar una pequena
% for idx = 1:5
% img = snapshot(cam); interfaz desde la cual se pueda comandar al robot a dibujar
% image(img); directamente cualquiera de los numeros posibles, cada uno
% end
% terminar de recibir datos identificado por un boton en la interfaz. Desde la misma
clear cam interfaz se busca darle inicio a la adquisicion e identifica-
cion de imagen para que luego desde la misma plataforma
El objetivo a partir de esta imagen es identificar el nume- se valide la identificacion y se enve la orden al Phantom
ro que aparece para luego replicarlo por lo cual tendra que x para redibujarlo.
efectuarse un trabajo previo de aprendizaje supervisado, en
donde al programa se le daran varios ejemplos de imagenes IV. REFERENCIAS
para cada numero del cual extraera sus caractersticas mas Image Processing Made Easy - MATLAB Vi-
dominante para luego utilizarlas como elemento de compa- deo por MATLABhttps://www.youtube.com/watch?v=

AVANCE DE PROYECTO
FACULTAD DE I NGENIER IA
D EPARTAMENTO DE M EC ANICA Y M ECATR ONICA
ROB OTICA
PAGE 6 OF 6

1-jURfDzP1s&t=
CHARACTER RECOGNITION FROM AN IMAGE
USING MATLAB por Sharath P https://www.youtube.
com/watch?v=ioKppFhRssM
RECONOCIMIENTO DE CARACTERES OPTICOS
(OCR) USANDO MATLAB por Diego Orlando Ba-
rragan Guerrero diegokillemall@yahoo.com http://
www.matpic.com/esp/matlab/ocr.html

AVANCE DE PROYECTO

Das könnte Ihnen auch gefallen