Académique Documents
Professionnel Documents
Culture Documents
DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
CARLOS FLORES
XAVIER GLVEZ(xaviergal994@hotmail.com)
DAMIAN PINEDA
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
Tabla de Contenido
1. Propsito
2. Alcance
3. Documentos de referencia
4. Definiciones importantes
4.1. Conceptos generales
4.2. Procesos de entrada y salida
5. Diccionario de datos
5.1. Restricciones especiales
5.2. Funciones de usuario, Stored Procedures y paquetes
5.3. Tareas programadas
6. Instalacin y configuracin
6.1. Requisitos generales pre-instalacin
6.2. Detalles del proceso de instalacin
6.3. Detalles de configuracin de la aplicacin
a. Parmetros de aplicaciones
7. Desarrollo del Programa
8. Diseo de la arquitectura fsica
8.1 Diseo de la placa
8.2 Equipos y Componentes
8.3 Construccin Fsica del Proyecto
9. Resultados
10. Limitaciones y Problemas del Programa
11. Posibles Soluciones
12. Trabajo a Futuro
13. Recomendaciones
14. Conclusiones.
Referencias Bibliogrficas
Anexos
3
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
1. Propsito
El propsito del presente proyecto es la aplicacin de los conceptos de DSP
para el control de un brazo robtico, por medio del seguimiento de color. En
identificacin de colores, como en la mayora de los problemas de
procesamiento de imgenes, son extradas ciertas caractersticas de cada
imagen antes de ser clasificadas. Se busca seleccionar aquellas
caractersticas relevantes para poder discriminar o distinguir el espacio sobre
el cul se est evaluando las condiciones de procesamiento. El estudio del
procesamiento de imgenes nos deriva a la eleccin de cul de los mtodos
conocidos es el mejor. Para seleccionarlo se tom en cuenta las facilidades
que presentan los distintos softwares que estn presentes en el medio, as
como la accesibilidad a los mismos y los resultados que se obtenan al
aplicarlos. El software seleccionado es Python que tiene licencia de cdigo
abierto y para la comunicacin serial entre la PC y el brazo robtico se utiliz,
siguiendo la misma toma de decisiones, el software Arduino.
El proyecto realizado se basa principalmente en el procesamiento de imagen
a travs de Python, por medio de descomposicin de colores en HSV, que
incluye el uso de la librera Open.CV y el algoritmo declarado para que tome
valores en rangos mnimos y mximos que se explicaran ms adelante. Como
segunda parte se toma la comunicacin serial para el Control de Brazo robtico
a travs de arduino, siendo este ltimo simplemente un puente entre el
procesamiento y el medio fsico a controlar.
Esta investigacin nos abre un campo de aplicaciones muy amplio ya que
tambin se lo puede aplicar en el control y acceso de personas a un espacio
restringido, bsqueda de objetos, aplicaciones en juguetes como carros
robticos implementando comunicacin bluetooth, entre las ms conocidas.
2. Alcance
El alcance del Proyecto en los sistemas de seguimiento usando imgenes
tienen una amplia aplicacin en el mundo moderno, se usan en sistemas de
seguridad, validacin de acciones en deportes, televisin, etc. En la mayora
de los casos estos sistemas son operados directamente por seres humanos,
lo cual implica que los resultados estn sujetos a la subjetividad de la
percepcin humana, lo cual puede llegar a convertirse en un inconveniente
en temas relacionados con la toma de decisiones (como ocurre en el caso de
decisiones arbitrales), de all que implementar dispositivos de decisin ms
objetivos traen grandes beneficios. El planteamiento del trabajo se basa en
el desarrollo de un sistema de seguimiento de patrones por medio del
procesamiento de imgenes que pueda aplicarse en cualquier mbito,
nicamente variando las caractersticas del objeto que se desea seguir, lo
cual permitira la aplicacin de diversos campos donde se usen cmaras y sea
necesario el seguimiento de alguna caracterstica de un sujeto u objeto. La
aplicacin ms inmediata que planteamos es el control de un brazo robtico
seleccionando un color, lo procesamos y con las variables encontradas
establecimos la comunicacin serial y a la vez el control de los motores DC.
Para seleccionar el motor DC el usuario debe realizarlo a travs de la PC no
4
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
siendo autnomo el movimiento del brazo, pero una vez seleccionado el motor
se logra el control del brazo en todas las caractersticas tcnicas del motor
seleccionado, es decir, giros a la izquierda, derecha, arriba, abajo, abrir y
cerrar pinzas, que ser explicado con detalle en el desarrollo del proyecto,
logrando as el cumplimiento del objetivo planteado para la presente
investigacin.
3. Documentos de referencia
Para el armado del prototipo de brazo robtico es necesario guiarse en el
siguiente documento:
4. Definiciones importantes
4.1 Conceptos generales
Software Python:
Python es un lenguaje de programacin interpretado cuya filosofa hace
hincapi en una sintaxis que favorezca un cdigo legible. Se trata de un
lenguaje de programacin multiparadigma, ya que soporta orientacin a
objetos, programacin imperativa y, en menor medida, programacin
funcional. Es un software de licencia libre y de cdigo abierto lo que
facilita la adquisicin de libreras gratis as mismo un enorme beneficio
en el procesamiento digital de seales y facilita la comunicacin serial
entre dispositivos y la PC.
Puerto serial:
Un puerto serie o puerto serial es una interfaz de comunicaciones de datos
digitales, frecuentemente utilizado por computadoras y perifricos, en
donde la informacin es transmitida bit a bit enviando un solo bit a la vez,
en contraste con el puerto paralelo que enva varios bits simultneamente.
Software Arduino:
Arduino es una plataforma de hardware de cdigo abierto, basada en una
sencilla placa con entradas y salidas, analgicas y digitales, en un entorno
de desarrollo que est basado en el lenguaje de programacin Pressing.
Arduino 1:
Arduino UNO es la versin mejorada de su predecesor Duemilanove.
Incluye funcin de autoreset, proteccin de sobrecargas, conector USB
5
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
5. Diccionario de datos
a. Restricciones especiales
Cdigo del programa.
El programa desarrollo est basado en ejecutar instruccin por instruccin
y no dos o ms instrucciones a la vez, es decir solo podemos controlar el
giro de un motor a la vez.
Se debe tomar en cuenta que al momento de detectar el color los valores
varan debido a la resolucin de la cmara, para este proyecto se utiliz
una camera con resolucin de 600x400 pixeles, con una relacin de
aspecto de 4:3 a 30 fotogramas por segundo (fps).
Tambin influye en el ambiente en el cual se realiza el procesamiento
debido a la luminosidad del ambiente como otros factores pueden incidir
en el color a detectar variando los valores para su descomposicin en HSV
por lo que no podr ser detectado por el programa, para este caso se
realiz el procesamiento en un ambiente con una iluminacin natural y no
muy intensa.
6
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
c.Tareas programadas
El prototipo de brazo robtico est diseado para realizar una sola tarea
la que se basa en trasladar de un lugar a otro, distintos objetos livianos
con una precisin aceptable.
6. Instalacin y configuracin
Python 2
La ms compatible, ya que como ha estado ms tiempo en el mercado
existen una gran de cantidad de libreras que pueden ser usadas con
esta versin y as facilitar el desarrollo de nuestras aplicaciones.
7
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
IDLE GUI - una aplicacin que nos permite escribir scripts ms complejos
para luego ejecutarlos de manera sencilla.
IDLE
Para abrir el IDLE de Python navegamos hasta la carpeta de instalacin
de Python y ejecutamos el archivo denominado IDLE (Para
Mac/Linux/Windows). Una vez abierto, vemos que la aplicacin nos
proporciona el Shell. La funcionalidad ms importante que ofrece es la
capacidad de crear y modificar archivos.
8
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
import numpy
import cv2
y nos deber aparecer las versiones antes menciones para cada una de
las libreras. Lo mismo sucede con la librera Piserial.f. Requisitos del
sistema para la instalacin de Python 2.7.4
9
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
a. Desarrollo de la programacin.
10
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
11
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
.
Fig.8. CODIGO PYTHON.
12
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
Fig 9. TrackBar
Para ello creamos variables de tipo entero y tipo string, las cuales se utilizan
para el control del motor que se requiera y mover el brazo en cierta
direccin, tambin se utilizan para controlar los bucles while los cuales son
bsicamente esenciales para el procesamiento de las imgenes en tiempo
13
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
real, as como las de tipo string se utiliza para indicar al usuario en pantalla
las LETRAS que se estn enviando en la comunicacin serial a la tarjeta
de control Arduino,
14
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
15
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
16
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
Figura 13
17
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
9 RESULTADOS
18
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
19
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
12 TRABAJO A FUTURO
2. Lograr la deteccin de las diferentes formas de objetos por medio del color
y un posible traslado de un lugar a otro en un ambiente controlado
utilizando el brazo robtico.
13. CONCLUSIONES
14. RECOMENDACIONES
20
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
21
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
REFERENCIAS BLIBLIOGRFICAS
22
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
ANEXOS
Programacin en Python
23
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
24
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
int motor=0;
int dy=50;
char var='N';
void setup()
{
Serial.begin(9600);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
}//end setup
25
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
switch (num )
{
case 1:
if(gir == MOV_LEFT){
digitalWrite( 2, HIGH);
digitalWrite( 3, LOW);
delay(dy);
digitalWrite( 2, LOW);
digitalWrite( 3, LOW);
delay(dy);
}
if(gir == MOV_RIGHT){
digitalWrite( 2, LOW);
digitalWrite( 3, HIGH);
delay(dy);
digitalWrite( 2, LOW);
digitalWrite( 3, LOW);
delay(dy);
}
break;
case 2:
if(gir == MOV_DOWN){
digitalWrite( 4, HIGH);
digitalWrite( 5, LOW);
delay(dy);
digitalWrite( 4, LOW);
digitalWrite( 5, LOW);
delay(dy);
}
if(gir == MOV_UP){
digitalWrite( 4, LOW);
digitalWrite( 5, HIGH);
delay(dy);
digitalWrite( 4, LOW);
digitalWrite( 5, LOW);
delay(dy);
}
break;
case 3:
26
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
if(gir == MOV_DOWN){
digitalWrite( 6, HIGH);
digitalWrite( 7, LOW);
delay(dy);
digitalWrite( 6, LOW);
digitalWrite( 7, LOW);
delay(dy);
}
if(gir == MOV_UP){
digitalWrite( 6, LOW);
digitalWrite( 7, HIGH);
delay(dy);
digitalWrite( 6, LOW);
digitalWrite( 7, LOW);
delay(dy);
}
break;
case 4:
if(gir == MOV_DOWN){
digitalWrite( 8, HIGH);
digitalWrite( 9, LOW);
delay(dy);
digitalWrite( 8, LOW);
digitalWrite( 9, LOW);
delay(dy);
}
if(gir == MOV_UP){
digitalWrite( 8, LOW);
digitalWrite( 9, HIGH);
delay(dy);
digitalWrite( 8, LOW);
digitalWrite( 9, LOW);
delay(dy);
}
break;
case 5:
if(gir == MOV_LEFT){
27
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
delay(dy);
digitalWrite( 10, LOW);
digitalWrite( 11, LOW);
delay(dy);
}
if(gir == MOV_RIGHT){
break;
}
}
void loop()
{
if(Serial.available())
{
var = Serial.read();
//Serial.print (comando);
if(var == MOT_1)
{
motor = 1;
}
if(var == MOT_2)
{
motor = 2;
}
if(var == MOT_3)
{
motor = 3;
}
if(var == MOT_4)
{
motor = 4;
28
UNIVERSIDAD NACIONAL DE LOJA
ELECTRONICA Y TELECOMUNICACIONES
}
if(var == MOT_5)
{
motor = 5;
}
if(var == 'L')
{
var = 'L';
}
if(var == 'R')
{
var = 'R';
}
if(var == 'D')
{
var = 'D';
}
if(var == 'U')
{
var = 'U';
}
//if (motor==0 && var=='T')
//{
//}
//else {
//motor=motor;
//var=var;
motorSel(motor, var);
//delay(50);
//}
}
29