Está en la página 1de 20

UNIVERSIDAD AUTÓNOMA DE NUEVO LEÓN

FACULTAD DE INGENIERÍA MECÁNICA Y


ELÉCTRICA

Percepción
c
Actividad Fundamental 4
Construcción 2
Catedrático(a): Susana Viridiana Gutiérrez Martínez

Nombre Matricula Carrera


Marcos Alejandro González Beltrán 1846237 IMTC

Juan José Avilés Tenorio 1854214 IMTC

Ángel Eduardo Salas Rosales 1942670 IMTC

Grupo: 002 Hora: LMV N3 Salón: IMC02


Cd. Universitaria, San Nicolás de los Garza, N.L. a 29 de abril del 2022

Periodo: Enero-Junio 2022


ÍNDICE
INTRODUCCIÓN............................................................................................................................. 3
DESARROLLO ................................................................................................................................. 3
Análisis cinemático del robot móvil ............................................................................................. 3
Explicación de la red neuronal artificial a utilizar ..................................................................... 4
Simulación.................................................................................................................................... 16
Resultado final ............................................................................................................................. 18
CONCLUSIÓN ................................................................................................................................ 20
BIBLIOGRAFÍA ............................................................................................................................. 20
INTRODUCCIÓN

Como se podrá notar en el siguiente escrito elaboramos un reporte en conjunto para poder
desarrollar un sistema de control base para futuros proyectos en el caso correspondiente
trataremos de hacer la función de un círculo por medio de simulación utilizando el software
de Matlab en específico la sección de Simulink, para un segundo plano intentar terminar de
desarrollar dicho proceso y poder aplicarlo en físico utilizando la placa de desarrollo
Arduino.

DESARROLLO

Análisis cinemático del robot móvil

Unidad de control: procesa las variables y señales del sistema, así como el algoritmo de
control, consta de una placa Arduino Uno Genuino.
Sistema de potencia: la etapa de potencia suministra energía al sistema de locomoción y
consta de un modulo de potencia dual de 5 Amperes, eléctricamente aislado de la etapa de
control, ya que de esta forma evitamos ruido generado por los motores hacia la comunicación
en la conmutación de los PWM.
Sistema sensorial: en esta etapa se tiene un sensor de corriente y encoder de efecto hall para
cada motor, asignados para medir posición, velocidad y torque.
Sistema de comunicación: el sistema de comunicación se da desde el momento que
conectamos la placa del Arduino para cargarle el sistema a la tarjeta y así esta envía mediante
protocolos, las señales que harán que las ruedas giren acorde a la programación diseñada en
el diagrama de bloques en Simulink, como se muestra en la figura siguiente.

Figura 1. Cinemática del robot móvil.


Figura 2. Simulación de la cinemática del robot móvil.

Explicación de la red neuronal artificial a utilizar

Como parte de la red primero tenemos la declaración de las variables utilizadas para el
funcionamiento de la cinemática.

Figura 3. Variables de la cinemática.


Procedemos a implementar la red neuronal que previamente fue explicada por la maestra en
clase, la cual es una red que utiliza seguimiento de trayectorias para lograr el objetivo que es
hacer un círculo.
Primero haremos una pequeña modificación al diagrama de bloques de la simulación en
Simulink para poder ejecutar correctamente la RNA. Por lo que el bloque nos queda así.

Figura 4. Cinemática del robot móvil alistada para la RNA.

Para esto abrimos Neuronal Ftting (nftool)

Figura 5. Implementación de Neuronal Ftting.


Una vez que mandamos a llamar las variables de los datos obtenidos en el Simulink, en este
caso los datos del motor de la izquierda. Procedemos a indicarle a la red cuanto entrenamiento
queremos darle.

Figura 6. Validación y testeo de la data.

Por consiguiente, asignamos la cantidad de capas que queremos que tenga nuestro
entrenamiento para la red.

Figura 7. Asignación de capas.


Después seleccionamos el tipo de entrenamiento de red como escalado conjugado de
gradiente para que nos proporcione los datos obtenidos del entrenamiento como se muestra
a continuación en la siguiente imagen.

Figura 8. Resultados del entrenamiento.

Figura 9. Resultados del entrenamiento.


A continuación, mostrare los resultados gráficos del entrenamiento de cada una de las
graficas habilitadas en los resultados.
Esta grafica mostrada es la del performance, como podemos observar la grafica tiene
realizadas 1000 épocas donde el performance es de 0.0070654, un performance muy bueno

Figura 10. Grafica de performance.


Esta siguiente grafica mostrada es la del estado de entrenamiento, si bien como se puede
observar, el gradiente es dinámico y validación es directa, resulta que para lo que la
necesitamos, es mas que suficiente el resultado.

Figura 11. Grafica de entrenamiento.


Después tenemos a la grafica de histograma de error, done podemos observar como el error
0 se empata con el pico de entrenamiento más alto del histograma.

Figura 12. Histograma de error.

Por último, tenemos a la grafica de regresión, donde como podemos ver como la red
neuronal sigue la trayectoria diseñada en el Simulink, como vemos, la rna todo el tiempo
esta pegada a la trayectoria dando pues un error casi nulo.

Figura 13. Grafica de regresión


A continuación, se mostrarán los pasos para la obtención del bloque de la RNA obtenida
con el entrenamiento previamente mostrado.
Paso 1: en la figura que se muestra a continuación, picamos al botón que dice Simulink
Diagram

Figura 14. Menú para obtención del bloque de RNA


Paso 2: se nos abrirá una venta la cual esperaremos a que termine de cargar y cuando esta
termine, nos arrojara estos 3 bloques donde el bloque del medio es la RNA entrenada.

Figura 15. Bloque RNA


Todo lo mostrado con anterioridad es aplicado también para obtener la RNA para el motor
derecho, a continuación, se mostrarán los mismos pasos, pero para la RNA del motor
derecho.
Primeramente, dentro de Neural Fitting (nftool) seleccionamos los datos del motor derecho,
que son la entrada y la salida derechas.

Figura 16. Implementación de Neuronal Ftting.


Una vez que mandamos a llamar las variables de los datos obtenidos en el Simulink, en este
caso los datos del motor de la derecho. Procedemos a indicarle a la red cuanto entrenamiento
queremos darle.

Figura 17. Validación y testeo de la data.


Por consiguiente, asignamos la cantidad de capas que queremos que tenga nuestro
entrenamiento para la red.

Figura 18. Asignación de capas.


Después seleccionamos el tipo de entrenamiento de red como escalado conjugado de
gradiente para que nos proporcione los datos obtenidos del entrenamiento como se muestra
a continuación en la siguiente imagen.

Figura 19. Resultados del entrenamiento.


Figura 20. Resultados del entrenamiento.
A continuación, mostrare los resultados gráficos del entrenamiento de cada una de las
gráficas habilitadas en los resultados.
Esta grafica mostrada es la del performance, como podemos observar la gráfica tiene
realizadas 1000 épocas donde el performance es de 0.03399, un performance muy bueno

Figura 21. Grafica de performance.


Esta siguiente grafica mostrada es la del estado de entrenamiento, si bien cómo se puede
observar, el gradiente tiende a caer en picada y validación es directa, resulta que para lo que
la necesitamos, es más que suficiente el resultado.

Figura 22. Grafica de entrenamiento.


Después tenemos a la gráfica de histograma de error, done podemos observar como el error
0 se empata con el pico de entrenamiento más alto del histograma.

Figura 23. Histograma de error.


Por último, tenemos a la gráfica de regresión, donde cómo podemos ver como la red
neuronal sigue la trayectoria diseñada en el Simulink, como vemos, la rna todo el tiempo
esta pegada a la trayectoria dando pues un error casi nulo.

Figura 24. Grafica de regresión


A continuación, se mostrarán los pasos para la obtención del bloque de la RNA obtenida
con el entrenamiento previamente mostrado.
Paso 1: en la figura que se muestra a continuación, picamos al botón que dice Simulink
Diagram

Figura 25. Menú para obtención del bloque de RNA


Paso 2: se nos abrirá una venta la cual esperaremos a que termine de cargar y cuando esta
termine, nos arrojara estos 3 bloques donde el bloque del medio es la RNA entrenada.

Figura 26. Bloque RNA

Simulación
Como ya teníamos el sistema de bloques hecho, simplemente sustituimos los bloques de PID
por los nuevos obtenidos mediante el entrenamiento de la RNA y entonces el nuevo bloque
de simulación nos quedo de la siguiente manera.

Figura 27. Programa final de la simulación de la cinemática mediante el uso de RNA en


Simulink Matlab.
Para ayuda de la obtención de estos bloques se necesito de las variables de cada uno de los
bloques que ya teníamos previamente realizados, como son los bloques de los motores
izquierdo y derecho, ya que dentro de ellos se encuentran las variables como R, L, J, B, Kt,
Ke.
Figura 28. Programación en bloques en Simulink Matlab del control del motor.
Y también con la ayuda de las variables que se encuentran dentro del bloque de la
cinemática directa inversa, las cuales son las variables r y b.

Figura 29. Bloque de la cinemática inversa directa de los motores en Simulink Matlab.
Donde en nuestro caso dichos valores fueron los siguientes:
r 0.03
b 0.11
R 5.6
L 1
J 0.1
Ke 0.01
Kt 0.01
B 0.1
Ahora bien, mostraremos nuestra imagen donde se llevó a cabo la simulación de nuestros
sistemas y viendo el resultado final donde ya sale el círculo que se planteó desde el inicio
este puede cambiar de tamaño al modificar variables como la distancia entre las llantas que
pusimos o el de estas mismas.

Figura 30. Simulación en equipo.

Resultado final

Figura 31. Programa final de la simulación de la cinemática utilizando RNA en Simulink


Matlab para implementación en el robot móvil a través de Arduino.
Se buscó la misma implementación, pero ahora para lograr pasarlo a la placa se tuvieron que
hacer algunas modificaciones puesto que los bloques son distintos entre la simulación y la
aplicación de salidas de estos mismos.
Para aplicarlo en físico se llevó a cabo las siguientes observaciones como que componente
será el que controla la velocidad de los motores en la salida el cual será un puente H, ahora
cuáles serán los que monitorean la velocidad para poder ajustarla para este apartado usaremos
encoder como sensores de velocidad, usando motorreductores para mover las llantas usar un
Arduino uno como placa de desarrollo. al juntar todo esto con un chasis podemos obtener lo
siguiente.

Figura 32. Armado del robot móvil con Arduino.


Como nota, haremos uso de un video como material de apoyo donde se vea su
funcionamiento de la actividad 2.
LINK: https://youtu.be/F6dOqS6QX1E
Una vez realizado el ensamble usando todo el material visto en el documento pasaremos el
código al Arduino Atmega 2560 ya que este es el que nos soporta este tipo de red.
LINK: https://youtu.be/EgTMDbeZf8Q
CONCLUSIÓN

Esta actividad al principio tuvimos problemas para obtener las variables que necesita la RNA
para poder ser entrenada, puesto que al momento de simular en Simulink, las variables
declaradas se guardaban en una variable global donde adentro de ella venían todas (que eran
4, entradaIZQ, entradaDER, salidaIZQ, salidaDER), esta variable creada se llama out por
default, entonces investigando en internet encontramos la manera de obtener los datos de las
variables y declararlos en el workspace para que se grabaran en la memoria, una vez realizado
esto, ya no tuvimos problemas, como se puede observar en la simulación el carro no hace un
circulo perfecto, primero avanza y ya hace el circulo, y pues cumple con el requisito. En
físico el carro hace lo mismo a lo planteado como mostramos en el video. Por otro lado, como
comentario, nos queda la duda de porque de las 5 posibles graficas a mostrar por parte de la
RNA solo nos mostraba 4, supusimos que fue por falta de datos y por eso no nos mostraba la
tabla, esperamos que la maestra pueda respondernos nuestra duda algún día que tenga la
oportunidad, de ante mano, muchas gracias.

BIBLIOGRAFÍA

U. Cortés*,A. Castañeda*,A. Benítez**, A. Díaz**, (2015), Control de Movimiento de un


Robot Móvil Tipo Diferencial Robot ůβot-32b, Centro Nacional de Investigación y
Desarrollo Tecnológico, (17/02/22), https://bit.ly/3HqqDqD
Jesus Correa (7 mayo 2020) Encoder con Simulink (MATLAB SIMULINK - ARDUINO)
https://www.youtube.com/watch?v=FCUNFx7_Z3E
Jesus Correa (2 junio 2020) Control PID con Simulink (Motor DC con Encoder, MATLAB
- SIMULINK) https://www.youtube.com/watch?v=DCJx4Gsj3DU
Khalid Al-mutib, Adamali Shah. (2013). Performance Analysis of Fuzzy Logic And PID
Controller for PM DC Motor Driv. 26/02/2022, de Research Gate Sitio web:
https://www.researchgate.net/publication/282945296_Performance_Analysis_of_Fuzzy_Lo
gic_And_PID_Controller_for_PM_DC_Motor_Drive
Hernández Millán, G., Ríos Gonzales, L. H., & Bueno López, M. (2016).
Implementación de un controlador de posición y movimiento de un robot móvil
diferencial. Revista Tecnura, 20(48), 123-136. doi:
10.14483/udistrial.jpur.tecnura.2016.2.a09

También podría gustarte