Está en la página 1de 19

REPUBLICA DEL ECUADOR

UNIVERSIDAD TÉCNICA DEL NORTE


FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
Mecatrónica

FORMATO PARA LA PRESENTACIÓN DEL PROYECTO


1. Título del proyecto
Implementación de un robot móvil con un brazo robótico para el monitoreo de cultivos.

2. Datos generales

Equipo de Trabajo

Participantes Apellidos y Nombres Correo Institucional

Estudiante Coordinador Minango Rojas César Augusto caminangor@utn.edu.ec

Estudiante Coordinador Villa Carcelén Axel Fernando afvillac@utn.edu.ec

Cachiguango Lema Elvis eacachiguangol@utn.edu.ec


Estudiante Participante
Andrés
Estudiante Participante Fonte Paisano Jhon Smith Jsfontep@utn.edu.ec

Ipiales Tuquerez Anthony aiipialest@utn.edu.ec


Estudiante Participante
Israel
Narváez Narváez Byron bsnarvaezn@utn.edu.ec
Estudiante Participante
Stalyn
Paguay Cuaspud Jefferson japaguayc@utn.edu.ec
Estudiante Participante
Alexander
Estudiante Participante Pozo Benavides Marlon Alexis mapozobutn.edu.ec

Pupiales Pupiales Jefferson japupialesp@utn.edu.ec


Estudiante Participante
Andrés
Estudiante Participante Terán Rosales José Isacc jiteranr@utn.edu.ec

3. Problema
El uso de manipuladores cada vez es más común en las industrias sin embargo con el
constante desarrollo de la tecnología se requiere que los procesos a realizar sean
automatizados (Guanín, 2015).
Las características edafoclimáticas (del suelo y clima) son importantes para determinar una
afectación en el crecimiento de los cultivos o también como prevención de enfermedades o
presencia de plagas, por ejemplo, en el cultivo de banano, el Mal de Panamá o Marchitez por
Fusarium se da en condiciones donde no hay buen drenaje del agua y se presenta gran
humedad, suelos arenosos, poco flujo del aire y terreno de pH ácido y bajo en calcio que es
un espacio poco propicio para que las raíces crezcan sanas
La fusión entre un robot móvil y un brazo robótico es algo muy interesante debido a que este
podría llevar a cabo funciones de desplazarse tomando un objeto del punto A y llevándolo
hacia el punto B sin necesidad de la intervención de un humano. Además, se haría uso de
cámaras para la detección de plantas, y empleo de algoritmos de visión por computadora y
aprendizaje profundo para el reconocimiento y análisis de los cultivos.
Adicionalmente, se implementa sistemas de control preciso para el brazo robótico, junto con
algoritmos de planificación de trayectoria para garantizar movimientos precisos y seguros

Página 1 de 19
REPUBLICA DEL ECUADOR

UNIVERSIDAD TÉCNICA DEL NORTE


FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
Mecatrónica

4. Justificación

Los robots móviles pueden efectuar tareas de gran complejidad en ambientes de trabajo poco
estructurados y que representen un peligro para la vida humana (Casper & Murphy, 2003). El
impacto de los robots móviles en la vida cotidiana y en entornos profesionales es innegable, lo
que subraya la necesidad de abordar cuestiones éticas cruciales. Por ejemplo, en el ámbito
médico, la autonomía de los robots para tomar decisiones durante procedimientos quirúrgicos
plantea interrogantes éticos sobre la responsabilidad y la toma de decisiones. La utilización de
brazos acoplados a estos robots permite ampliar el rango de operaciones que se pueda realizar,
entre ellas pueden ser la desactivación de bombas, traslado de cargas, remoción de escombros
y exploración de terrenos difíciles (García, y otros, 2017).
El objetivo de los robots no es sustituir a los operarios sino optimizar el trabajo, además de
garantizar la seguridad e impulsar el rendimiento de cada uno de los procesos. Esta nueva
generación de robots está diseñada para trabajar en la industria convirtiéndose así en una
herramienta adecuada para automatizar procesos propios de un entorno de fabricación
(Robotnik, 2023). Un robot móvil equipado con un brazo robótico puede realizar tareas de
monitoreo con una precisión y constancia difícilmente alcanzables por métodos manuales.
Además, de que dicho robot puede operar las 24 horas del día, lo que permite un monitoreo
constante y en tiempo real de las condiciones del cultivo.
Cabe recalcar que, al emplear robots para el monitoreo de cultivos, se reducen los riesgos
asociados con la exposición de los trabajadores a productos químicos o condiciones climáticas
adversas y así mismo contribuir a prácticas agrícolas más sostenibles y respetuosos con el
medio ambiente
En resumen, la implementación de un robot móvil con brazo robótico para el monitoreo de
cultivos ofrece numerosos beneficios, desde la mejora de la eficiencia y la precisión hasta la
optimización de recursos y la minimización de riesgos. Estas ventajas contribuyen a un enfoque
más sostenible y tecnológicamente avanzado para la gestión agrícola.

5. Objetivos

Objetivo General:

• Construir un robot móvil con un brazo robótico para el monitoreo de cultivos

Objetivos Específicos:

• Rediseñar y remplazar piezas que no sean funcionales tanto del robot móvil como
del brazo robótico.
• Programar el robot móvil para que cumpla una trayectoria.
• Programar y controlar el brazo robótico.
• Acoplar la cámara y los diferentes sensores para el monitoreo del cultivo.
• Validar el funcionamiento mediante un protocolo de prueba

Página 2 de 19
REPUBLICA DEL ECUADOR

UNIVERSIDAD TÉCNICA DEL NORTE


FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
Mecatrónica

6. Metodología
Investigación Documental: Esta investigación se realizó con el propósito de profundizar y
comparar las conceptualizaciones a detalle de los robots móviles, se tomó como base diferentes
fuentes de información tales como libros, revistas y páginas web, las mismas que ayudaron a
comprender sobre un robot móvil y un brazo robótico esto fue aplicado en su rediseño y su
programación.
Simulación: La etapa de simulación del sistema se lo realizó en tinkercad ya que esta
herramienta nos ayuda a crear circuitos antes de su implementación con los cuales pudimos
simular los movimientos de los motores, articulaciones y servomotores.
Ensamblaje: Una vez obtenidas las piezas y los componentes a utilizar se llevó a cabo la
implementación de estos, la programación del microcontrolador permite el movimiento del carro
y el brazo.
Pruebas y Ajustes: Ensamblado el robot y el brazo se procede a realizar pruebas en
condiciones controladas y a ajustar algoritmos y configuraciones según sea necesario para
mejorar el rendimiento.
Implementación en el Campo: Implementamos el robot en el campo para el monitoreo de
cultivos y para supervisar su rendimiento.
Documentación: En este punto de procede a realizar la respectiva documentación sobre el
robot móvil y el brazo robótico

7. Cronograma y Recursos

La construcción de un robot móvil con un brazo robótico para el monitoreo de cultivos implica
varias etapas y el uso de diversos recursos.

Cronograma:
1. Definición del Proyecto:
• Especificaciones del robot (tamaño, capacidad de carga, sensores necesarios).
• Objetivos y requisitos del monitoreo de cultivos.

2. Diseño del Robot y Brazo Robótico:


• Diseño mecánico del robot y brazo robótico.
• Selección de motores y actuadores.
• Diseño de la estructura y chasis.

3. Selección de Componentes:
• Elección de cámara y sensores para el monitoreo.
• Selección de baterías y sistema de energía.
• Elección de la plataforma de hardware (Arduino, Esp 32, etc.)
4. Construcción del Chasis y Brazo Robótico:
Página 3 de 19
REPUBLICA DEL ECUADOR

UNIVERSIDAD TÉCNICA DEL NORTE


FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
Mecatrónica

• Ensamblaje de la estructura mecánica.


• Instalación de motores y actuadores.
• Integración de sensores en el brazo y el chasis.

5. Desarrollo del Software:


• Programación del sistema de control del robot y monitoreo.
• Implementación de algoritmos de movilidad, monitoreo y control del brazo.

6. Pruebas Iniciales:
• Verificación del movimiento y funcionamiento básico.
• Pruebas de los sensores y del sistema de control.

7. Optimización y Ajustes:
• Ajuste de parámetros del sistema.
• Mejoras en el software y hardware según sea necesario.

8. Integración de Sistema:
• Integración final de todos los componentes.
• Pruebas de sistema completas.

9. Documentación:
• Documentación del proyecto (informe, esquemas, código).

10. Implementación en el Campo:


• Despliegue del robot en entornos de cultivo.
Recursos Necesarios:
1. Materiales:
• Chasis y estructuras de metal o PLA.
• Motores y actuadores.
• Sensores para monitoreo y control (cámaras, sensores de proximidad, etc.).
• Cables, conectores, ruedas.
• Placas Esp 32, puente H, baterías.

2. Hardware y software:
• Computador.
• Entornos de desarrollo (Arduino IDE, Python, etc.).
• Herramientas de diseño CAD.
• Software de simulación (Tinkercad).
3. Herramientas:
• Soldadores y equipo de soldadura.
• Herramientas de mano (destornilladores, alicates, etc.).
• Impresora 3D.

Página 4 de 19
REPUBLICA DEL ECUADOR

UNIVERSIDAD TÉCNICA DEL NORTE


FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
Mecatrónica

4. Documentación:
• Libros, tutoriales y recursos en línea sobre robótica.
• Cuaderno de apuntes sobre la materia de robótica.

5. Recursos Humanos:
• Grupo de estudiantes con conocimientos en robótica y programación.

8. Resultados

A través del desarrollo de este proyecto, se adquirió un entendimiento práctico y didáctico del
funcionamiento integral de un brazo robótico integrado en un robot móvil. La ejecución de esta
iniciativa permitió el fortalecimiento significativo de destrezas, habilidades técnicas y
conocimientos en el ámbito de la robótica industrial. El prototipo resultante, habilitado con
capacidades de reconocimiento y seguimiento de marcas o de colores, presenta una gama
diversa de posibles aplicaciones, la implementación de algoritmos de reconocimiento y
seguimiento de marcas o colores ha ampliado las capacidades del prototipo, ofreciendo un
potencial considerable para diversas aplicaciones en el ámbito agrícola.
La capacidad del robot para identificar y seguir marcas específicamente en el entorno de cultivo
permite la realización de tareas personalizadas, como la aplicación precisa de tratamientos
fitosanitarios en áreas específicas, la detección de plagas focalizadas, o incluso la clasificación
automática de productos cosechados. Este nivel de versatilidad posiciona al robot como una
herramienta valiosa en la optimización de procesos agrícolas, contribuyendo a la eficiencia y
sostenibilidad de la producción. Además, la experiencia adquirida durante el desarrollo de este
proyecto sienta las bases para futuras investigaciones y mejoras, abriendo nuevas posibilidades
para la integración de tecnologías emergentes en el campo de la robótica aplicada a la
agricultura.
Robot Móvil Diferencial
Un robot diferencial es un tipo de robot que se caracteriza por su capacidad para moverse y
maniobrar mediante la variación de la velocidad y dirección de sus ruedas, maneja un principio
de diferenciales similar a los vehículos de tracción trasera. Un robot diferencial consta
típicamente de dos ruedas colocadas en ejes paralelos y un tercer soporte como una rueda de
apoyo.
Se obtuvo mediante el docente el robot móvil diferencial a modificar, la cual se puede observar
en la figura 1. La misma que cuenta con los siguientes elementos:
• 2 llantas
• 2 motores 150 rpm a 9v
• 1 rueda loca
• ESP32
• Puente HL298N
• Alimentación

Figura 1. Robot móvil diferencial Otorgado por el docente

Página 5 de 19
REPUBLICA DEL ECUADOR

UNIVERSIDAD TÉCNICA DEL NORTE


FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
Mecatrónica

Tomando en cuenta el objetivo principal del proyecto el cual es la integración del brazo robótico
al robot móvil, se realiza modificaciones al diseño del robot móvil inicial, ya que no contaba con
una base ni diseño adecuado para la integración del brazo robótico, por lo cual en la figura 2 se
observa el diseño seleccionado por el grupo de trabajo.

Figura 2. Modificación del robot Móvil con la implementación del brazo Robótico

Configuración de robot móvil

Con los materiales obtenidos se procede a realizar el ensamble y a establecer la resolución de


cada uno de los motores encoder de 150rpm utilizando la tarjeta ESP32, con el programa en
Arduino desarrollado en clase se señala el inicio del motor para comprobar la resolución que se
da al girar una vuelta completa en cada uno de los motores.

Figura 3. Definición de variables para recepción de resolución del enconder

En el código mostrado en la figura 3 se definen las señales de entradas de los enconder tanto
derecho como izquierdo. Además, se nombran variables que determina el estado actual de los
enconder, obteniendo:
Rueda derecha (RR)= 298
Página 6 de 19
REPUBLICA DEL ECUADOR

UNIVERSIDAD TÉCNICA DEL NORTE


FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
Mecatrónica

Rueda izquierda (RL)= 300.


Una vez obtenidas las resoluciones se procede a implementar el código en el software de Arduino
el cual está configurado para mostrar los grados rotados por la rueda, para ello se ha usado la
siguiente fórmula:

Con esta fórmula se transforma los valores obtenidos a grados. En la figura 4 se observa
la incorporación de los valores de la resolución de cada uno de los encoder anteriormente
obtenidos. Además, se utiliza la función void computePosicionInDegrees, la cual se encarga de
transformar los valores a grados.

Figura 4. Código para imprimir grados rotados por los encoder derecha e
izquierda.

Una vez ejecutado el programa, se comprueba que el valor mostrado en el monitor serial al
momento de dar un giro completo de la rueda sea de +-360° según su sentido de giro.

Velocidad en RPM
Dentro de la programación del robot móvil se puede imprimir los valores que arroja cada uno de
los encoder, como en este caso las RPM. Los enconder permiten controlar la velocidad angular
en base a la detección de la posición y dirección de giro, con estas variables es posible controlar
el movimiento del robot móvil.
para el uso de los encoder se hace el uso de los pines que permitan PWM, que mediante la
modificación del ciclo de trabajo se consigue controlar cantidad de la energía que se envía todo
esto en un motor DC, la alimentación variara de manera proporcional con respecto a la parte alta
y baja.

Página 7 de 19
REPUBLICA DEL ECUADOR

UNIVERSIDAD TÉCNICA DEL NORTE


FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
Mecatrónica

Figura 5. Código para determinar las RPM

En la figura 5 se observa el código con el cual se determina el movimiento de las ruedas,


dependiendo al valor ingresado al serial.
Un punto elemental para obtener una buena recepción de datos es determinar la velocidad
angular que está dada por la siguiente formula:

Donde:
R = Resolución
n = cuentas- encoder t = tiempo
Por lo cual la constante a determinar es la siguiente (constValue), de cada uno de
los encoder, valores reflejados en la figura 6.

Figura 6.Valores constValue derecho e izquierdo

Página 8 de 19
REPUBLICA DEL ECUADOR

UNIVERSIDAD TÉCNICA DEL NORTE


FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
Mecatrónica

Una vez obtenidos los valores necesarios para determinar la velocidad angular tanto en la rueda
derecha como en la izquierda, se colocan estos datos en el archivo de Arduino lazo abierto, con
el cual se procede a realizar las determinadas pruebas de funcionamiento.
Controlador PID
Control de lazo abierto
En la representación del sistema y seguimiento de referencia que se presenta en el plano, es
posible identificar las señales apreciadas en la figura 7.

Figura 7. Respuesta de lazo abierto.

Como se observa en la figura 7 las señales tienen un cierto ruido de interferencia, esto se debe
a que el sistema aún no se encuentra optimizado, pero la reacción de estas corresponde al
desplazamiento original.

Corrección de giro con controlador PID


Se procede a colocar valores obtenidos de Python en la programación de Arduino con la
finalidad de realizar un control de lazo cerrado. Se realizan cambios de valores con lo que la
señal se estabilice como se observa en la figura 8.

Figura 8. Modificación de datos en Arduino.

Página 9 de 19
REPUBLICA DEL ECUADOR

UNIVERSIDAD TÉCNICA DEL NORTE


FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
Mecatrónica

Optimización de datos generados


Se procede a importar el documento PSO, donde se regulan los datos con la finalidad de corregir
los ruidos presentados anteriormente. Una vez finalizada las correcciones se ejecuta el
programa firstOrderSystem donde se procede a llamar a RSO, dando así la siguiente gráfica
(Figura 9).

Figura 9. Control en lazo abierto optimizado por PSO.

Página 10 de 19
REPUBLICA DEL ECUADOR

UNIVERSIDAD TÉCNICA DEL NORTE


FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
Mecatrónica

Brazo Robótico

Figura 10. Brazo Modificado

Cinemática directa
En el problema cinemático directo se conocen los valores de sus coordenadas articulares y
busca determinar la posición del efector final, esto se refiere que la solución encontrada será
única. En generar, un robot de n grados de libertad está formado por n eslabones unidos a n
articulaciones, a cada eslabón se le puede asociar un sistema de referencia y utilizando las
transformaciones homogéneas es posible representar las rotaciones y traslaciones relativas
entre los distintos eslabones que componen el brazo robot (García, y otros, 2017).

Estas 4 transformaciones básicas consisten en una sucesión de rotaciones y traslaciones que


permiten relacionar el sistema de referencia del elemento i-1 con el sistema del elemento i.
1. Rotación sobre el eje 𝑧𝑖−1 un ángulo 𝜃𝑖.
2. Traslación a lo largo de 𝑧𝑖−1 una distancia 𝑑𝑖.
3. Traslación a lo largo de 𝑥𝑖 una distancia 𝑎𝑖.
4. Rotación sobre el eje 𝑥𝑖 un ángulo 𝛼𝑖.

Se debe tener en cuenta que el producto de las matrices no es conmutativo, por lo tanto, se
deben ejecutar en el siguiente orden:

i-1Ai =𝑅𝑜𝑡𝑧(𝜃𝑖) ∗ 𝑇(0,0, 𝑑𝑖) ∗ 𝑇(𝑎𝑖, 0,0) ∗ 𝑅𝑜𝑡𝑥(𝖺𝑖)

Debido a que un robot es considerado como una cadena cinemática que se encuentra
conformado por eslabones unidos entre si mediante articulaciones, se puede establecer un
sistema de referencia fijo en la base del robot y de esta manera poder describir de una mejor
manera la localización de cada uno de los eslabones, tomando como referencia dicho sistema
de origen (R. Kryscia, 2021).
Página 11 de 19
REPUBLICA DEL ECUADOR

UNIVERSIDAD TÉCNICA DEL NORTE


FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
Mecatrónica

En la figura 11 se puede observar la estructura final que debe contener la matriz de


transformación homogénea

Figura 11. Matriz de Transformación Homogénea.

Cinemática inversa
Según (R. María). En el caso de la cinemática inversa se conoce la posición y orientación del
efector final, pero se desconocen las variables articulares. Por lo tanto, es necesario resolver un
conjunto de ecuaciones no lineales, de manera que se implementan diferentes métodos
numéricos para obtener el resultado correcto.
Al momento de utilizar cinemática directa permite tomar el problema de una manera sistemática
tomando las matrices de transformación homogénea, e independiente de la configuración del
robot. Sin embargo, esto no es posible en la cinemática inversa, siendo el procedimiento para las
ecuaciones fuertemente dependiente de la configuración establecida del robot. Sin embargo,
contrastando con la cinemática inversa, se advierte que el procedimiento para las ecuaciones
está fuertemente influenciado por la configuración especifica previamente establecida del robot
La resolución para el problema llega a proporcionar múltiples soluciones, esto debido a que
genera diferentes configuraciones articular con las que obtener la misma configuración del efector
final, de otra forma también pueden generarse soluciones que no existan debido q posiciones
que el brazo no alcance a llegar, o puede dar lugar a diferentes singularidades. De esta forma,
hace más difícil la resolución de problema que tomando un enfoque directo.

Figura 12. Problema cinemático inverso. a) Solución múltiple, b) codo abajo.

En la figura 12 se puede visualizar de una manera sencilla la existencia de diversas soluciones


para el problema cinemático inverso en un brazo robótico que contas de 2 GDL. Las soluciones
1 y 2 son comúnmente conocidas como codo arriba y codo abajo respectivamente. De esta
Página 12 de 19
REPUBLICA DEL ECUADOR

UNIVERSIDAD TÉCNICA DEL NORTE


FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
Mecatrónica

manera, la búsqueda de solución se suele utilizar el uso de técnicas numéricas iterativas como
por ejemplo Método de Newton. Sin embargo, el uso de este proceso resulta en cálculos lentos,
por lo que habitualmente en una implementación real sería demasiado tardío.

Robot móvil con brazo robótico

El robot móvil con brazo robótico ha demostrado ser una solución innovadora y eficaz para la
aplicación de tecnologías avanzadas en el ámbito agrícola. Al ser equipado con una cámara de
alta resolución y sistemas de procesamiento de imágenes, el robot podría realizar un monitoreo
exhaustivo de las condiciones del cultivo. La capacidad de la cámara para capturar imágenes
detalladas del follaje, la salud de las plantas y la presencia de posibles plagas permite una
evaluación precisa del estado del cultivo. Además, el brazo robótico integrado facilita la
aplicación focalizada de tratamientos fitosanitarios o nutrientes, adaptándose a las necesidades
específicas de cada área. Esta combinación de visión computarizada y manipulación robótica
no solo mejora la eficiencia en la aplicación de insumos, sino que también proporciona datos
valiosos para la toma de decisiones agronómicas, contribuyendo así a la maximización de
rendimientos y a la sostenibilidad del proceso agrícola.

Figura 13. Prototipo de robot móvil con brazo Robótico

Página 13 de 19
REPUBLICA DEL ECUADOR

UNIVERSIDAD TÉCNICA DEL NORTE


FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
Mecatrónica

9. Bibliografía

Bibliografía
Casper, J., & Murphy, R. (2003). Robot interactions during the robot-assited urban
search and rescue response at the World Trade Center. IEEE
TRANSACTIONS ON SYSTEMS.
García, J., Medina, I., Martínez, J., García, A., Linares, A., & Porras, C. (2017).
Robót móvil dotado de brazo para contacto con el suelo. Revista
iberoamericana de automática e informática industrial, 174-183.
Guanín, E. (2015). Sistema de control electrónico mediante comandos de voz para
un robot secuencial.
Robotnik. (31 de Marzo de 2023). Robornik:Usos y ventajas de los cobots en la
industria manufacturera. Obtenido de https://robotnik.eu/es/usos-y-
ventajas-de- los-cobots-en-la-industria-manufacturera/
Guanín Eduardo. (2015). Sistema de control electrónico mediante comandos de
voz para un robot secuencial.

Hernández Víctor. (2011). Manufactura de un brazo robótico SCARA.

Elaboración de un prototipo de brazo robótico industrial didáctico automatizado


para proceso de soldadura GMAW. Rigoberto Minda-Valverde, I. I., & Fernando
RicaurteSegovia, A. I. (2021).

Diseño e Implementación de un Brazo Robotico Industrial con 5 Grados de


Libertad Guiado por Kinect Design and Implementation of an Industrial Robot Arm
with 5 Degrees of Freedom Guided by Kinect Projeto e implementação de um
braço robótico industrial com 5 graus de liberdade

María, G. (2014, octubre). Modelación y Análisis de la Cinemática Directa e


Inversa del Manipulador Stanford de Seis Grados de Libertad.
Kryscia, R. (2021, mayo). Cinemática Directa del Robot.

María, G. (2014, octubre). Modelación y Análisis de la Cinemática Directa e


Inversa del Manipulador Stanford de Seis Grados de Libertad.

10. Anexos

Página 14 de 19
REPUBLICA DEL ECUADOR

UNIVERSIDAD TÉCNICA DEL NORTE


FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
Mecatrónica

Figura 14. Prototipo del brazo robótico con el robot móvil

Código en Python
import cv2
import serial
import mediapipe as mp
import math

def vision():
marca = 0
centrox = 0
centroy = 0

detector = mp.solutions.face_detection
dibujo = mp.solutions.drawing_utils

recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.read('ModeloFaceFrontalData2022.xml')
cascadePath = "haarcascade_frontalface_default.xml"
faceCascade = cv2.CascadeClassifier(cascadePath)

id = 0

names = ['Jhenny','Liz']

cap = cv2.VideoCapture(1, cv2.CAP_DSHOW)

minW = 0.1 * cap.get(3)


minH = 0.1 * cap.get(4)

while True:
Página 15 de 19
REPUBLICA DEL ECUADOR

UNIVERSIDAD TÉCNICA DEL NORTE


FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
Mecatrónica

ret, frame = cap.read()


frame = cv2.flip(frame, 1)
rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

faces = faceCascade.detectMultiScale(gray,
scaleFactor=1.2,
minNeighbors=5,
minSize=(int(minW),
int(minH)))

al, an, c = frame.shape


centrox = int(an / 2)
centroy = int(al / 2)

if len(faces) > 0:
marca = 1
x, y, w, h = faces[0]

id, result = recognizer.predict(gray[y:y+h, x:x+w])

if result < 75:


if id < len(names):
name = names[id]
xf, yf = x + w, y + h
cx = int(x + (w / 2))
cy = int(y + (h / 2))

xmo = cx
ymo = cy

cv2.circle(frame, (cx, cy), 3, (0, 0, 255),


cv2.FILLED)
cv2.line(frame, (cx, 0), (cx, 480), (0, 0, 255), 2)

cv2.namedWindow('Camara')
print('Nombre:', name)
print('Confianza:', result)

if marca == 1:
if x < xmo < xf and y < ymo < yf:

Página 16 de 19
REPUBLICA DEL ECUADOR

UNIVERSIDAD TÉCNICA DEL NORTE


FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
Mecatrónica

cv2.circle(frame, (xmo, ymo), 20, (255, 255, 0),


2)
cv2.rectangle(frame, (x, y), (xf, yf), (0, 255,
0), 3)

if xmo < centrox - 60:


com.write(b'i')
elif xmo > centrox + 60:
com.write(b'd')
elif xmo == centrox:
com.write(b'p')

if ymo < centroy - 60:


com.write(b'u')
elif ymo > centroy + 60:
com.write(b'v')
elif ymo == centroy:
com.write(b's')
else:
print('Desconocido')

cv2.imshow('Camara', frame)

t = cv2.waitKey(1)
if t == 27:
break

cap.release()
cv2.destroyAllWindows()

def cinematica():

l1 = 10
l2 = 15
l3 = 10

print("")
theta1 = (int(input("Ingrese angulo 1: ")) * math.pi) / 180
theta2 = (int(input("Ingrese angulo 2: ")) * math.pi) / 180
theta3 = (int(input("Ingrese angulo 3: ")) * math.pi) / 180
print("")

Página 17 de 19
REPUBLICA DEL ECUADOR

UNIVERSIDAD TÉCNICA DEL NORTE


FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
Mecatrónica

eq1 = (l2 * math.cos(theta1) * math.cos(theta2) + l3 *


math.cos(theta1) * math.cos(theta2) * math.cos(theta3) - l3 *
math.cos(theta1) * math.sin(theta2) * math.sin(theta3))
eq2 = (l2 * math.cos(theta2) * math.sin(theta1) + l3 *
math.cos(theta2) * math.cos(theta3) * math.sin(theta1) - l3 *
math.sin(theta1) * math.sin(theta2) * math.sin(theta3))
eq3 = (l1 + l2 * math.sin(theta2) + l2 * math.cos(theta3) *
math.sin(theta2) + l2 * math.cos(theta2) * math.sin(theta3))

coordenada1 = eq1
coordenada2 = eq2
coordenada3 = eq3

print("")
print("Coordenada 1:", coordenada1)
print("Coordenada 2:", coordenada2)
print("Coordenada 3:", coordenada3)
print("")

#puerto serial configuracion

com = serial.Serial("COM3", 9600, write_timeout=10)


ciclo = True
option = ''

while ciclo:
print("")
print('v: visión\nc: cinemática\ns: salir')
print("")
option = input('Escoga una opción: ')

if option == 'v':
vision()
elif option == 'c':
cinematica()
elif option == 's':
ciclo = False

com.close()

Página 18 de 19
REPUBLICA DEL ECUADOR

UNIVERSIDAD TÉCNICA DEL NORTE


FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
Mecatrónica

Página 19 de 19

También podría gustarte