Professional Documents
Culture Documents
Laberinto
Fundamentos de Robtica
Paralelo: 2
Integrantes:
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
Memoria RAM: 64 MB
Memoria Flash: 16 MB
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
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.
GRUPO 3 PAR 2
ESCUELA SUPERIOR POLITCNICA DEL LITORAL
FACULTAD DE INGENIERA EN ELECTRICIDAD Y COMPUTACIN
FUNDAMENTOS DE ROBTICA
GRUPO 3 PAR 2
ESCUELA SUPERIOR POLITCNICA DEL LITORAL
FACULTAD DE INGENIERA EN ELECTRICIDAD Y COMPUTACIN
FUNDAMENTOS DE ROBTICA
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:
GRUPO 3 PAR 2
ESCUELA SUPERIOR POLITCNICA DEL LITORAL
FACULTAD DE INGENIERA EN ELECTRICIDAD Y COMPUTACIN
FUNDAMENTOS DE ROBTICA
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.
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
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