Está en la página 1de 15

ESCUELA SUPERIOR POLITECNICA DEL LITORAL

Facultad de Ingeniera en Electricidad y Computacin

Laberinto

Proyecto Primer Parcial

Fundamentos de Robtica

Profesor: Miguel Realpe

Paralelo: 2

Integrantes:

IVAN ANDRES AGUIRRE GARCIA


ALFOLSO MANUEL ASITIMBAY LLIVICHUZHCA
KEVIN OMAR PALACIOS ALVAREZ
JONATHAN FERNANDO PARRALES NEIRA
ESCUELA SUPERIOR POLITCNICA DEL LITORAL
FACULTAD DE INGENIERA EN ELECTRICIDAD Y COMPUTACIN
FUNDAMENTOS DE ROBTICA

Contenido
Resumen..................................................................................................................................2
Introduccin............................................................................................................................3
Fundamentos Tericos............................................................................................................4
Control de Lego con ev3dev...............................................................................................8
Establecer conexin con ev3...............................................................................................8
Programar ev3 con Python................................................................................................10
Procesamiento de imgenes..............................................................................................10
Descripcin...........................................................................................................................10
Descripcin del Sistema....................................................................................................11
Diagrama de Bloques........................................................................................................11
Descripcin mecnica del robot........................................................................................11
Programacin del robot.....................................................................................................11
Descripcin breve del programa y diagrama de flujo.......................................................11
Conclusiones y Recomendaciones........................................................................................11
Bibliografa...........................................................................................................................11
ANEXOS..............................................................................................................................12
Video.................................................................................................................................12
Cdigo Fuente del Programa.............................................................................................12

GRUPO 3 PAR 2
ESCUELA SUPERIOR POLITCNICA DEL LITORAL
FACULTAD DE INGENIERA EN ELECTRICIDAD Y COMPUTACIN
FUNDAMENTOS DE ROBTICA

Resumen
El robot ev3 es una herramienta utilizada para nuestro caso de estudio en el manejo de los
diferentes dispositivos como sensores que puede acoplar un robot y por medio de estos
manejarse en diferentes entornos, durante el transcurso de este curso en la introduccin a la
robtica se ha utilizado diversos sensores para lograr construir robots mviles capases de
interpretar en medidas especficas el entorno que los rodea.
En base a estos conocimientos desarrollados durante el transcurso de este curso se plantea
para el proyecto del primer parcial armar un robot capaz de utilizar diversos sensores y
poder atravesar un laberinto, la caracterstica peculiar de este laberinto que sus paredes en
ciertas zonas estarn caracterizadas de colores como verde y azul en los cuales el robot
debe saber distinguirlo para poder llegar a la meta.
Para conseguir pasar el laberinto a travs del reconocimiento de los colores azul y verde,
primeramente se har uso de computadores porttiles para grupo de trabajo, stas son las
llamadas Raspberry las cuales son placas que incorporan el funcionamiento de un
computador de una manera simplificada en sus componentes ms bsicos, en ella es donde
se ejecutar toda la logstica del programa desarrollado para que el robot sea capaz de
interpretar el laberinto y poder tomar los caminos correctos para poder cruzarlo, como no se
posee un monitor para poder visualizar la interfaz de la Raspberry se ha decido que de
manera estndar para todos los grupos participantes del paralelo el inicio del recorrido de
cada robot se d mediante el presionado de un sensor tctil y una vez que este es presionado
el robot arrancar y empezara su recorrido de frente censando en tiempo real distancias de
proximidad con un sensor infrarrojo el cual ir tomando las mediciones necesarias hasta
encontrar una pared delante del robot a 5cm y detenerse posteriormente se captar para qu
camino irse y todo esto se da por la incorporacin de una cmara la cual mediante el
procesamiento de imgenes en tiempo real captar la pared que se encuentre delante del
robot y reconocer a qu lado se encuentra el verde o el azul, para nuestro recorrido el
verde tiene la direccin correcta para hallar la salida del laberinto, cuando el laberinto haya
acabado y nuestro robot pase por la meta se detendr gracias al uso de un sensor de color
que estar apuntando hacia el piso en donde desde el inicio buscar colores que lleguen a la
gamma del rojo ya que en la meta se encontrar una cinta puesta en el piso que sealar la

GRUPO 3 PAR 2
ESCUELA SUPERIOR POLITCNICA DEL LITORAL
FACULTAD DE INGENIERA EN ELECTRICIDAD Y COMPUTACIN
FUNDAMENTOS DE ROBTICA

final del laberinto y que nuestros robot al detectar dicha cinta enviar por pantalla el tiempo
que demor en cruzar el laberinto asi como tambin una vez que el sensor de color detecta
la cinta roja luego de unos segundos se detendr y su recorrido habr finalizado.
Durante el desarrollo de este proyecto se est haciendo uso de las diversas clases y
practicas con las que se ha trabajado a lo largo de este curso durante lo que ha sido el
primer parcial en las cuales se ha aprendido el uso de sensores como los mencionados
anteriormente asi como ms que no son tiles a nuestra implementacin en el proyecto pero
en otras prcticas si se han utilizado, tambin cabe destacar el procesamiento de imgenes
como una herramienta muy importante para llevar a cabo este proyecto.

Introduccin
El documento desarrollado a continuacin trata sobre un robot capaz de cruzar un laberinto
por medio de elementos integrado a ello. Trabajo desarrollado para la materia fundamentos
de programacin. El fin principal de este trabajo es aportar una base con la que enfrentarse
al desarrollo de un robot en el laberinto. Para poder desarrollar el tema con la mayor
sencillez y amplitud posible hemos dividido el trabajo en varios aspectos. Obviamente
necesitamos algn mtodo para salir del laberinto, esto lo abordamos en un apartado
dedicado exclusivamente a la algoritmia, y a la descripcin. Para completar el trabajo
desarrollado hemos realizado las respectivas conexiones con elementos necesarios para
resolver el problema y llevando a cabo el proyecto. Finalmente aportamos unas
conclusiones y consejos para que quien lo desee pueda realizar este proyecto sin tener los
mismos problemas que nos ocurrieron a nosotros.

Fundamentos Tericos
El brick

GRUPO 3 PAR 2
ESCUELA SUPERIOR POLITCNICA DEL LITORAL
FACULTAD DE INGENIERA EN ELECTRICIDAD Y COMPUTACIN
FUNDAMENTOS DE ROBTICA

El brick o bloque EV3 es la unidad de control y


alimentacin elctrica de motores y sensores del
robot. Se conecta con el ordenador (va USB,
Bluetooth o WIFI) para recibir y ejecutar los
programas de control.

Esta unidad consta de 2 partes diferenciadas:

Pantalla. Muestra informacin de lo que sucede en el interior del bloque. Tambin


puede mostrar textos, nmeros o grficas si as se programa.

Botones. Permiten explorar la interfaz del bloque EV3, ejecutar el programa


almacenado en el bloque o incluso ejecutar la accin prevista para cada botn del
bloque en el programa implementado.

Las caractersticas tcnicas ms destacadas del bloque EV3 son:

Sistema operativo LINUX

Procesador ARM9 de 300 Mhz

Memoria RAM: 64 MB

Memoria Flash: 16 MB

Resolucin de pantalla: 178x128 en blanco y negro

Comunicacin USB 2.0

Tarjeta microSD hasta 32 GB mx.

Puertos conectores RJ12 de los sensores y motores

Alimentacin de 6 pilas alcalinas AA o batera ionLitio recargable.

GRUPO 3 PAR 2
ESCUELA SUPERIOR POLITCNICA DEL LITORAL
FACULTAD DE INGENIERA EN ELECTRICIDAD Y COMPUTACIN
FUNDAMENTOS DE ROBTICA

Sensor infrarrojo
El sensor digital de infrarrojos LEGO Mindstroms EV3 busca y detecta la proximidad al
robot y lee las seales emitidas por la baliza emisora de infrarrojos LEGO EV3. Los
estudiantes pueden crear robots controlados remotamente, carreras de navegacin entre
obstculos y aprender cmo se utiliza la
tecnologa de control remoto por infrarrojos
para radio control de funciones de televisin,
sistemas de vigilancia e incluso en equipos de
deteccin y adquisicin de seal proveniente de
objetivos.
Medicin de Proximidad (alcance) de
aproximadamente 50 a 70 cm
Alcance desde la baliza de hasta dos
metros
Soporta cuatro canales de seal
Recibe comandos remotos IR
Auto-ID est integrado en el software EV3

Motor grande
Es un motor "inteligente" potente, consta de un
sensor de rotacin incorporado con resolucin de 1
grado para un control preciso. Al utilizar el bloque
de programacin Mover la direccin o Mover
tanque en el Software de EV3, los Motores grandes
coordinarn la accin simultneamente (se debe
detallar los puertos en los que se estn conectados
ambos motores).

Sensor tctil

GRUPO 3 PAR 2
ESCUELA SUPERIOR POLITCNICA DEL LITORAL
FACULTAD DE INGENIERA EN ELECTRICIDAD Y COMPUTACIN
FUNDAMENTOS DE ROBTICA

Es un sensor analgico que puede detectar el momento en el


que se presiona y se suelta el botn rojo del sensor, esto
permite al sensor actuar segn tres condiciones: presionado,
soltando o en contacto (tanto presionado como soltando).
Con la informacin del Sensor tctil, se puede programar un
robot para ver el mundo como lo hara una persona no
vidente, es decir, extendiendo un brazo y respondiendo
cuando toca algo (presionado). Puede construir un robot
con un Sensor tctil presionado contra la superficie. Luego, puede programar el robot para
que responda (se detenga).

Sensor de Color
El Sensor de Color EV3, es un sensor digital que puede
detectar el color o la intensidad de la luz que ingresa por
la pequea ventana de la cara del sensor. El sensor
puede detectar siete colores diferentes: negro, azul,
verde, amarillo, rojo, blanco y marrn. Un objeto que no
sea de ninguno de estos colores se puede detectar como
"Sin color" o como un color similar. Por ejemplo, un
objeto naranja puede detectarse como color rojo o
amarillo, segn cuanto rojo tenga ese naranja, o como
marrn o negro si el naranja es muy oscuro o est muy
lejos del sensor. Este sensor puede utilizarse en tres
modos diferentes: Modo color, Modo intensidad de la luz reflejada y Modo intensidad de la
luz ambiental.

En Modo color, el Sensor de color reconoce siete


colores: negro, azul, verde, amarillo, rojo, blanco y
marrn, adems de Sin color. Esta capacidad de
diferenciar los colores significa que su robot puede
estar programado para clasificar pelotas o bloques de
colores a medida que los detecta o para detenerse
cuando detecta el color rojo.

GRUPO 3 PAR 2
ESCUELA SUPERIOR POLITCNICA DEL LITORAL
FACULTAD DE INGENIERA EN ELECTRICIDAD Y COMPUTACIN
FUNDAMENTOS DE ROBTICA

En Modo intensidad de la luz reflejada, el Sensor de color


mide la intensidad de la luz que se refleja desde una lmpara
emisora de luz color rojo. El sensor utiliza una escala de 0
(muy oscuro) a 100 (muy luminoso). Esto significa que su
robot puede estar programado para moverse sobre una
superficie blanca hasta detectar una lnea negra o para
interpretar una tarjeta de identificacin con cdigo de color.
La razn de muestreo del Sensor de color es 1 kHz/seg. Para
optimizar la exactitud, en Modo intensidad de la luz
reflejada, el sensor debe sostenerse en un ngulo recto, cerca
de la superficie que examina, pero sin tocarla.

En Modo intensidad de la luz ambiental, el Sensor de color


mide la intensidad de la luz que ingresa en la ventana desde su
entorno, como la luz del sol o el haz de una linterna. El sensor
utiliza una escala de 0 (muy oscuro) a 100 (muy luminoso).
Esto significa que su robot puede estar programado para emitir
una alarma al salir el sol por la maana o para detenerse si las
luces se apagan.

GRUPO 3 PAR 2
ESCUELA SUPERIOR POLITCNICA DEL LITORAL
FACULTAD DE INGENIERA EN ELECTRICIDAD Y COMPUTACIN
FUNDAMENTOS DE ROBTICA

Control de Lego con ev3dev


La librera eve3dev de LEGO nos ofrece realizar las conexiones de nuestra PC hacia
nuestro brick o bloque ev3.3
Esta librera es compatible con la plataforma que maneja LEGO ev3 y por ende nos deja la
libre posibilidad de realizar programas utilizando esta librera de fcil uso, a travs de
interfaces propias de nuestra PC utilizando herramientas para la programacin como es el
caso de Python, para uso de nuestro curso se utiliz la programacin por medio de Python
usando la implementacin de la librera ev3dev que mediante sus funcionalidades nos
permite realizar el puente de enlace de los sensores y motores de brick y asi tener las
funcionalidades deseadas para el robot en un esquema mucho ms elaborado, como lo es a
travs de un cdigo fuente el cual permite muchas flexibilidades para la implementacin de
actividades varias que vaya a realizar el robot.
La importacin en muy simple en Python solo se hace el llamado import ev3dev as ev3 y
se establece el enlace a la PC a travs de conexiones de IP utilizando PUTTY que es una
interfaz que permite hacer la conexin con el brick y poderle pasar el cdigo para que ste
lo pueda ejecutar en la versin de Python que tenga instalada. Para nuestro uso lo
realizamos con Python 2.7.

Establecer conexin con ev3


Para nuestro proyecto como vamos a realizar uso de una computadora Raspberry se
establecer una conexin Maestro-Esclavo entre el brick y la Raspberry a fin de aprovechar
con mayor beneficio el procesador que tiene esta computadora ya que para nuestro proyecto
realizaremos el uso de una cmara y para la cual necesitamos procesar imgenes que sean
captadas a travs de dicha cmara adems de realizar algunas otra funciones como
desplazarse; tareas que para el procesador de la brick pueden ser muy pesadas por ende se
GRUPO 3 PAR 2
ESCUELA SUPERIOR POLITCNICA DEL LITORAL
FACULTAD DE INGENIERA EN ELECTRICIDAD Y COMPUTACIN
FUNDAMENTOS DE ROBTICA

recurre el uso de un computador que preste su mayor capacidad de procesamiento y que


enven las ordenes a la brick y sta solo se limite a obedecer lo que se le pide que realice.
En este tipo de conexin ya no se requiere una conexin mediante el PUTTY, sino que se
realizar el uso de una conexin a travs de la librera RPYC.4

Maestr
o Escla
vo

rpyc_classic
.py y utilizar el de la computadora
Esta librera nos permite hacer ese cambio de procesador
como mando principal y que el robot solo obedezca las ordenes que le son enviadas
directamente del programa en el que ejecutemos, para nuestro caso en Python 2.7. El
cdigo que se utiliza para esta conexin es el siguiente:

Y la dems implementacin sigue igual como si se quedara trabajando con la librera de


ev3dev, y como se lo reiteraba ya no es necesario la conexin por PUTTY, solo es necesario
que a travs del brick se haga la conexin a travs de una IP que es la que se utilizar en
Python para realizar la operacin de cambio de cerebro para el robot.

GRUPO 3 PAR 2
ESCUELA SUPERIOR POLITCNICA DEL LITORAL
FACULTAD DE INGENIERA EN ELECTRICIDAD Y COMPUTACIN
FUNDAMENTOS DE ROBTICA

Programar ev3 con Python


Programar en Python resulta sencillo debido a lo amigable que la interaccin de los
comando con el usuario, para llamar cada uno de los mecanismos que posee un robot ev3 se
hace usos de las muchas funciones que guarda la librera de ev3dev y se la implementa en
Python, para el uso de nuestro proyecto y por restricciones de algunas libreras solo se
trabaja con la versin del programa 2.7 que no es la ms actual pero su funcionabilidad es
estable y eficiente para el desarrollo de programas simples como de un poco de ms
complejidad.

Procesamiento de imgenes
El procesamiento de imgenes para nuestro robot en el desarrollo de este proyecto se lo
hace a travs de la librera OpenCV 5 la cual nos da la posibilidad de hacer el procesamiento
de las imgenes ya sean estas fotos o en video real a travs de una cmara.
Para nuestro caso usaremos esta librera con Python 2.7, durante el aprendizaje en este
curso las ultimas practicas correspondientes al primer parcial se trat los temas de
procesamiento de imgenes utilizando la cmara web, en lo que se puede destacar es el
reconocimiento de rostros mediante la utilizacin de una base de datos que mapea las
imgenes procedentes de la cmara o de una imagen en la que estemos trabajando y nos
muestra la identificacin del rostro presente en la imagen.

Con el procesamiento de las imgenes tambin se tiene la posibilidad de alterar los colores
originales de las imgenes sobre las que se trabaja. Asi como reconocer los colores
presentes en ellas y poder identificar donde se encuentran, que para nuestro caso de uso es
la parte ms crucial en la toma de decisiones para recorrer el laberinto por el camino
correcto.

GRUPO 3 PAR 2
ESCUELA SUPERIOR POLITCNICA DEL LITORAL
FACULTAD DE INGENIERA EN ELECTRICIDAD Y COMPUTACIN
FUNDAMENTOS DE ROBTICA

Descripcin
El robot debe estar diseado con ruedas y correctamente conectado a los elementos como:
cmara, sensor infrarrojo, botn de tacto y sensor de color
Este debe iniciar su recorrido al ser accionado el pulsante lo cual tambin da inicio a un
cronometro que finalizara hasta llegar a la meta cuyo resultado ser visualizado en pantalla.
Durante el recorrido en el laberinto el sensor infrarrojo se detendr al detectar un obstculo
a cierta distancia programada, luego la cmara proceder a visualizar y a diferenciar entre
los colores verde y azul tomando como gua el color verde lo cual indica la direccin en
que debe girar el robot.
El recorrido culminara una vez que el sensor de color haya detectado el color verde en el
piso en el lugar de la meta.

Descripcin del Sistema


Diagrama de Bloques
Descripcin mecnica del robot
Programacin del robot

Descripcin breve del programa y diagrama de flujo

Conclusiones y Recomendaciones

Bibliografa
1
http://canaltic.com/rb/legoev3/15_el_bloque_ev3.html
2
http://www.esmindstorms.com/2015/06/sensor-de-color-ev3.html
3
http://www.ev3dev.org/
4
https://www.sidweb.espol.edu.ec/courses/37744/files/2452606/download

GRUPO 3 PAR 2
ESCUELA SUPERIOR POLITCNICA DEL LITORAL
FACULTAD DE INGENIERA EN ELECTRICIDAD Y COMPUTACIN
FUNDAMENTOS DE ROBTICA

5
http://opencv.org/downloads.html

ANEXOS
Video
Cdigo Fuente del Programa
import cv2
import numpy as np
import math
import rpyc
import time
def decidirCamino():
xA,xV = camara()
if(xV > xA):
return 1
return 0
def camara():
inicio = time.time()
xA =0
xV = 0
while (xA != 0 and xV!=0):
booleano, frame = cap.read()
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
azul_bajos = np.array([110, 50, 50])
azul_altos = np.array([130, 255, 255])
mask_azul = cv2.inRange(hsv, azul_bajos, azul_altos)
verde_bajos1 = np.array([49,50,50])
verde_altos1 = np.array([80, 255, 255])
mask_verde1 = cv2.inRange(hsv, verde_bajos1, verde_altos1)
verdes_bajos2 = np.array([170, 50, 50])
verdes_altos2 = np.array([180, 255, 255])
mask_verde2 = cv2.inRange(hsv, verdes_bajos2, verdes_altos2)
mask_verde = mask_verde1 + mask_verde2
momentsA = cv2.moments(mask_azul)
momentsV = cv2.moments(mask_verde)
areaA = momentsA['m00']
areaV = momentsV['m00']
if (areaA > 0 and areaV > 0):
xA = int(momentsA['m10'] / momentsA['m00'])
xV = int(momentsV['m10'] / momentsV['m00'])

return xA, xV

GRUPO 3 PAR 2
ESCUELA SUPERIOR POLITCNICA DEL LITORAL
FACULTAD DE INGENIERA EN ELECTRICIDAD Y COMPUTACIN
FUNDAMENTOS DE ROBTICA

c= rpyc.classic.connect("192.168.0.1")
ev3 = c.modules["ev3dev.ev3"]
m1 = ev3.LargeMotor('outC')
m2 = ev3.LargeMotor('outB')
ir = ev3.InfraredSensor('in3')
cs = ev3.ColorSensor('in1')
tacto = ev3.TouchSebrsnsor('in2')
cap = cv2.VideoCapture(0)
cronometro = 0

while(True):
print(cs.value())

if(tacto.value() ==1):
print("tacto presionad")
cronometro = time.time()
m1.run_forever(speed_sp=200 * -1,duty_cycle_sp = 75 )
m2.run_forever(speed_sp=200 * -1,duty_cycle_sp = 75 )
break
condicion = True
while(condicion):
while (True):
if (cs.value() == 8 or cs.value() == 9):
print("llego a la meta")
condicion=False
break
if (ir.value() <= 15):
m1.run_forever(speed_sp=0 * -1,duty_cycle_sp = 75 )
m2.run_forever(speed_sp=0 * -1,duty_cycle_sp = 75 )
break

if(decidirCamino()==0 and condicion == True):


print("derecha")
inicio2 = time.time()
m1.run_forever(speed_sp=200 * 1,duty_cycle_sp = 75 )
m2.run_forever(speed_sp=200 * -1,duty_cycle_sp = 75 )
while (True):
if (time.time() - inicio2 >= 2.1):
m1.run_forever(speed_sp=200 * -1,duty_cycle_sp = 75 )
m2.run_forever(speed_sp=200 * -1,duty_cycle_sp = 75 )
break
elif(decidirCamino()==1 and condicion == True):
print("izquierda")
inicio = time.time()

GRUPO 3 PAR 2
ESCUELA SUPERIOR POLITCNICA DEL LITORAL
FACULTAD DE INGENIERA EN ELECTRICIDAD Y COMPUTACIN
FUNDAMENTOS DE ROBTICA

m1.run_forever(speed_sp=200 * -1,duty_cycle_sp = 75 )
m2.run_forever(speed_sp=200 * 1,duty_cycle_sp = 75 )
while (True):
if (time.time() - inicio >= 2.1):
m1.run_forever(speed_sp=200 * -1,duty_cycle_sp = 75 )
m2.run_forever(speed_sp=200 * -1,duty_cycle_sp = 75 )
break

m1.run_forever(speed_sp=0 * 1,duty_cycle_sp = 75 )
m2.run_forever(speed_sp=0 * 1,duty_cycle_sp = 75 )
cap.release()
tiempo = str(time.time()-cronometro)
ev3.Sound.speak( tiempo + "segundos" ).wait()

GRUPO 3 PAR 2