RE-10-LAB-249 ROBOTICA v4
RE-10-LAB-249 ROBOTICA v4
RE-10-LAB-249 ROBOTICA v4
UNIVERSIDAD
PRIVADA DEL VALLE
FACULTAD DE INFORMATICA Y
ELECTRONICA
DPTO: ELECTRONICA
ROBOTICA
Título de la Practica
PRACTICA 01 DESCRIPCION DE LA CELULA DE TRABAJO DEL
ROBOT Y FUNCIONES BASICAS DEL SOFTWARE
PRACTICA 02 COMANDOS DE ORIENTACION DEL ROBOT
PRACTICA 03 PROGRAMAS CONTROL DE PERIFERICOS
PRACTICA 04 CONTROL DE SENSORES
PRACTICA 05 PROGRAMAS DE APLICACION
PRACTICA 06 RECONOCIMIENTO E IDENTIFICACION DE OBJETOS
USANDO EL SOFTWARE OPENCV
PRACTICA 07 MEDICION DE OBJETOS USANDO OPENCV
1
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 1
2. COMPETENCIA (S)
MATERIALES Y EQUIPOS
Item Denominación Cantidad Unidad Observaciones
1 CPU 1 Pza
2 Lego Mindstorms 1 Pza
Los equipos son utilizados por un
3 Monitor 1 Pza grupo de 3 estudiantes y la
4 Mouse 1 Pza capacidad del laboratorio es para
8 grupos
5 Teclado 1 Pza
6 Lego EV3 1 Pza
2
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 1
INSUMOS
Item Denominación Cantidad Unidad Observaciones
1 Baterías LEGO 1 Pza
2 Cable RJ12 para LEGO 7 Pza
3 Cable USB para LEGO 1 Pza
4 Cable de poder 2 Pza Los insumos son utilizados
por un grupo de 3
5 Motores LEGO. 4 Pza estudiantes y la capacidad
del laboratorio es para 8
6 Sensor de ultrasonido 1 Pza
grupos
7 Sensor de luz 1 Pza
8 Sensor de contacto 1 Pza
9 Piezas para armado LEGO 100 Pza
4. TECNICA Ó PROCEDIMIENTO
Se formaran grupos de trabajo para el uso de LEGO, organizados por el docente.
EXPERIENCIA Nº 1:
Investigar con el auxilio del documento guía de programación del lenguaje que se vaya a
usar, las opciones de configuración en LEGO, con ayuda del docente, recuperación de
programas, almacenamiento de programas, acceso a la opción de ayuda, etc.
Realizar las mediciones, cálculos que se requiere para la realización de esta práctica.
7. CUESTIONARIO
1. Explicar la los comandos más importantes de BricxCC para LEGO.
2. Explicar el manejo de comandos avanzados en BricxCC (esto a criterio del docente).
3
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 2
2. COMPETENCIA (S).
MATERIALES Y EQUIPOS
Item Denominación Cantidad Unidad Observaciones
1 CPU 1 Pza
2 Lego Mindstorms 1 Pza
Los equipos son utilizados por un
3 Monitor 1 Pza grupo de 3 estudiantes y la
4 Mouse 1 Pza capacidad del laboratorio es para
8 grupos
5 Teclado 1 Pza
4
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 2
INSUMOS
Item Denominación Cantidad Unidad Observaciones
4. TECNICA Ó PROCEDIMIENTO.
EXPERIENCIA Nº 1:
Usando el programa BricxCC, las funciones del menú usuales y los comandos
apropiados programar el funcionamiento de los elementos impulsores instalados en el
esqueleto, para su control por medio de comandos, compilar el programa y trasferir
dicho programa al controlador de LEGO y ejecutarlo.
EXPERIENCIA Nº2:
Usando las posiciones tomadas en la experiencia #3, implementar el código fuente con
ayuda del docente para que el robot LEGO se mueva en conjunción con un sensor esto
será a elección del docente y los estudiantes durante la realización de esta experiencia.
Realizar las mediciones, cálculos que se requiere para cada parte de esta práctica.
7. CUESTIONARIO.
5
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
1. Explicar cuál es la secuencia de enviado de un programa usando BricxCC.
PRACTICA Nº 3
2. COMPETENCIA (S)
MATERIALES Y EQUIPOS
Item Denominación Cantidad Unidad Observaciones
1 CPU 1 Pza
5 Teclado 1 Pza
6
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 3
INSUMOS
Item Denominación Cantidad Unidad Observaciones
4. TECNICA Ó PROCEDIMIENTO.
EXPERIENCIA Nº 1:
Realizar las mediciones, cálculos que se requiere para cada parte de esta práctica.
7. CUESTIONARIO
7
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 4
CONTROL DE SENSORES
2. COMPETENCIAS.
MATERIALES Y EQUIPOS
Item Denominación Cantidad Unidad Observaciones
1 CPU 1 Pza
5 Teclado 1 Pza
8
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 4
INSUMOS
Item Denominación Cantidad Unidad Observaciones
4. TECNICA Ó PROCEDIMIENTO .
EXPERI ENCIA Nº 1:
Usando la experiencia obtenidas en laboratorios anteriores, realizar la construcción de
una estructura en el programa LEGO DIGITAL DESIGNER y la consecuente
generación de un programa en BricxCC, que permita utilizar el uno o más sensores
básicos previa consulta con el docente, el algoritmo debe ser borrado de la memoria
del controlador LEGO, esto para que no exista copia ilegal del código fuente.
9
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 4
Realizar las mediciones, cálculos que se requiere para cada parte de esta práctica.
7. CUESTIONARIO
10
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 5
PROGRAMAS DE APLICACION
2. COMPETENCIA (S)
MATERIALES Y EQUIPOS
Item Denominación Cantidad Unidad Observaciones
1 CPU 1 Pza
5 Teclado 1 Pza
11
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 5
INSUMOS
Item Denominación Cantidad Unidad Observaciones
4. TECNICA Ó PROCEDIMIENTO.
EXPERIENCIA Nº 1:
Permitir que los grupos de trabajo realicen una variedad de programas para con aplicaciones
diversas, con objeto de que los alumnos den rienda suelta a su imaginación para idear
distintos usos para el robot y permitir al docente la evaluación de sus avances en el
conocimiento de los comandos de programación BricxCC, (todos los programas serán
evaluados por el docente).
12
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 5
7. CUESTIONARIO.
13
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 6
2. COMPETENCIA (S)
MATERIALES Y EQUIPOS
Camara WEB
2 1 Pza
Los equipos son utilizados por un
grupo de 3 estudiantes y la
3 Monitor 1 Pza capacidad del laboratorio es para
1 grupo
4 Mouse 1 Pza
5 Teclado 1 Pza
14
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 6
INSUMOS
Item Denominación Cantidad Unidad Observaciones
1 Camara WEB 3 Pza
4. TECNICA Ó PROCEDIMIENTO
TRABAJO PRELIMINAR
El estudiante debe realizar los siguientes programas antes de realizar las prácticas de
laboratorio, por tal razón debe presentar evidencias de los resultados obtenidos antes de iniciar
la práctica.
15
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 6
Histograma
16
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 6
17
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 6
for i in xrange(4):
plt.subplot(2,2,i+1),plt.imshow(images[i],'gray')
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
plt.show()
cv.waitKey(0)
18
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 6
DESARROLLO EN LABORATORIO
Para este sección se debe tener instalado la cámara web en la Raspberry Pi y un objeto.
img = cv2.imread('sudoku.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 50, 150, apertureSize = 3)
19
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 6
img = cv2.imread('sudoku.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 50, 150, apertureSize = 3)
img = cv2.imread('data/stuff.jpg')
src = cv2.medianBlur(img, 5)
src = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
circles = np.uint16(np.around(circles))
for i in circles[0,:]:
# dibujar circulo
cv2.circle(img, (i[0], i[1]), i[2], (0,255,0), 2)
# dibujar centro
cv2.circle(img, (i[0], i[1]), 2, (0,0,255), 3)
20
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 6
import numpy as np
import cv2
cap = cv2.VideoCapture('area2.avi')
col = int(cap.get(3))
fil = int(cap.get(4))
Objetos = (np.zeros((fil,col),np.uint8))+255
while(cap.isOpened()):
ret, frame1 = cap.read()
gray1 = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)
gauss = cv2.GaussianBlur(gray1,(3,3),0)
bordes = cv2.Canny(gauss,150,255)
kernel = np.ones((10,10),np.uint8)
mask1 = cv2.morphologyEx(bordes,cv2.MORPH_OPEN,kernel)
mask2 = cv2.morphologyEx(mask1,cv2.MORPH_CLOSE,kernel)
mask2 = mask2.astype('uint8')
for c in contornos:
M = cv2.moments(c)
area = cv2.contourArea(c)
perimeter = cv2.arcLength(c,True)
approx = cv2.approxPolyDP(c,0.02*perimeter,True)
if area > 1000 and area < 500000:
cx = int(M['m10']/M['m00'])
cy = int(M['m01']/M['m00'])
21
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
cv2.drawContours(frame1, [c], 0, (0, 255, 0), 1, cv2.LINE_AA)
PRACTICA Nº 6
Ro = 0
Az = 255
Ve = 255
cv2.rectangle(frame1, (cx,cy), (cx+2,cy+2),(Ro,Az,Ve), 2)
cv2.drawContours(Objetos, [c], 0, (0, 255, 0), 1, cv2.LINE_AA)
cap.release()
cv2.destroyAllWindows()
Realizar las verificaciones, cálculos que se requiere para la realización de esta práctica.
22
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 6
7. CUESTIONARIO
23
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 7
2. COMPETENCIA (S)
MATERIALES Y EQUIPOS
Camara WEB
2 1 Pza
Los equipos son utilizados por un
grupo de 3 estudiantes y la
3 Monitor 1 Pza
capacidad del laboratorio es para
1 grupo
4 Mouse 1 Pza
5 Teclado 1 Pza
24
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
PRACTICA Nº 7
INSUMOS
4 Micro sd 16 G 1 Pza
Los insumos son utilizados
por un grupo de 3
estudiantes y la capacidad
5 Lector de micro sd 1 Pza del laboratorio es para 1
grupo
4. TECNICA Ó PROCEDIMIENTO
TRABAJO PRELIMINAR
El estudiante debe realizar los siguientes programas antes de realizar las practicas de
laboratorio, por tal razón debe presentar evidencias de los resultados obtenidos antes de iniciar
la práctica.
import cv2
import numpy as np
25
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
import serial #cargamos la libreria serial
PRACTICA Nº 7
#Iniciamos la camara
captura = cv2.VideoCapture('HZCodD.avi')
while(1):
#Crear una mascara con solo los pixeles dentro del rango de verdes
mask = cv2.inRange(hsv, verde_bajos, verde_altos)
else:
ser.write('n'.encode('utf-8'))
26
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
cv2.destroyAllWindows()
PRACTICA Nº 7
DESARROLLO EN LABORATORIO
def find_marker(image):
# convert the image to grayscale, blur it, and detect edges
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (5, 5), 0)
edged = cv2.Canny(gray, 35, 125)
# find the contours in the edged image and keep the largest one;
# we'll assume that this is our piece of paper in the image
cnts = cv2.findContours(edged.copy(), cv2.RETR_LIST,
cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
c = max(cnts, key = cv2.contourArea)
# compute the bounding box of the of the paper region and return it
return cv2.minAreaRect(c)
# initialize the known distance from the camera to the object, which
# in this case is 24 inches
KNOWN_DISTANCE = 24.0
# initialize the known object width, which in this case, the piece of
# paper is 12 inches wide
KNOWN_WIDTH = 11.0
# load the furst image that contains an object that is KNOWN TO BE 2 feet
# from our camera, then find the paper marker in the image, and initialize
# the focal length
image = cv2.imread("pattern.png")
27
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
marker = find_marker(image)
focalLength = (marker[1][0] * KNOWN_DISTANCE) / KNOWN_WIDTH
PRACTICA Nº 7
Programa 2
import numpy as np
import cv2
import glob
# termination criteria
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
# prepare object points, like (0,0,0), (1,0,0), (2,0,0) ....,(6,5,0)
objp = np.zeros((6*7,3), np.float32)
objp[:,:2] = np.mgrid[0:7,0:6].T.reshape(-1,2)
# Arrays to store object points and image points from all the images.
objpoints = [] # 3d point in real world space
imgpoints = [] # 2d points in image plane.
images = glob.glob('pattern.png')
28
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
# If found, add object points, image points (after refining them)
if ret == True:
objpoints.append(objp)
PRACTICA Nº 7
corners2 = cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria)
imgpoints.append(corners2)
import numpy as np
import cv2
import glob
# termination criterio
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
# preparar puntos de objeto, como (0,0,0,0), (1,0,0,0), (2,0,0,0)...., (6,5,0)
objp = np.zeros((6*7,3), np.float32)
objp[:,:2] = np.mgrid[0:7,0:6].T.reshape(-1,2)
# Arrays para almacenar puntos de objeto y puntos de imagen de todas las imágenes.
objpoints = [] # 3d point in real world space
imgpoints = [] # 2d points in image plane.
images = glob.glob('*.png')
for fname in images:
img = cv2.imread(fname)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# Encuentra las esquinas del tablero de ajedrez
ret, corners = cv2.findChessboardCorners(gray, (7,6),None)
# Si se encuentran, añada puntos de objeto, puntos de imagen (después de refinarlos)
if ret == True:
objpoints.append(objp)
corners2 = cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria)
imgpoints.append(corners2)
# Dibuja y muestra las esquinas
img = cv2.drawChessboardCorners(img, (7,6), corners2,ret)
cv2.imshow('img',img)
cv2.waitKey(1000)
cv2.destroyAllWindows()
29
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
Programa 3
import cv2
PRACTICA Nº 7
import numpy as np
D = []
max_samples = 10000
while(1):
d=0.1
centers=[]
_, img = cap.read()
blue_lower=np.array([95,150,100],np.uint8)
blue_upper=np.array([150,255,255],np.uint8)
kernel = np.ones((5 ,5), uint8) #Crea una matriz de 5x5 la cual recorrera el video,
blue = cv2.morphologyEx(blue,cv2.MORPH_OPEN,kernel)
blue = cv2.morphologyEx(blue,cv2.MORPH_CLOSE,kernel)
(_,contours,hierarchy)=cv2.findContours(blue,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPL
E) #Encuentra los contornos de los objetos que se ven en el filtro
30
GUIAS DE PRÁCTICA DE ELECTRONICA
Código de registro: RE-10-LAB-249 Versión 4.0
UNIVERSIDAD DEL VALLE
LABORATORIO DE ROBOTICA
if(area>2000):
x,y,w,h = cv2.boundingRect(contour) #Encuentra coordenadas de los contornos.
img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
cv2.putText(img,Marcador,(x,y),cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255,0,0))
PRACTICA Nº 7
if len(centers)==2:
D = (np.linalg.norm(cx-cy)) #Se aplica distancia euclidiana para encontrar la
distancia entre los centros de masa.
print(D)
outfile.write({0} \n.format(D))
cv2.imshow(Color Tracking,img)
if cv2.waitKey(10) & 0xFF == ord('q'):
outfile.close()
print('Los datos han sido enviados')
cap.release()
cv2.destroyAllWindows()
break
Realizar las verificaciones, cálculos que se requiere para la realización de esta práctica.
7. CUESTIONARIO
1..- ¿Cuáles son las técnicas que se emplean para la medición de objetos?
2.- ¿Qué aplicaciones se pueden usar en robótica con la técnica de medición de objetos?
31