domingo, 1 de junio de 2014

Para las las propuestas solución sin éxito se ha encontrado una solución estable:
Control Fuzzy para piano kinect (2da parte)
Como se ocupo la lógica difusa para solucionar el problema de sensibilidad ¿?

Como hemos mencionado anteriormente, se ha escogido ocupar lógica difusa por lo puntos mencionados en el post anterior.
La lógica difusa trabaja de la siguiente manera
Para esto entonces lo primero que necesitamos es variables de entrada. En una primera instancia se ocuparon solo 2 variables de entrada, sabiendo que se tienen que ocupar 3 por lo que son 3 ejes dimensionales (x,y,z), pero para probar la lógica difusa se ocuparon 2:
·         Eje x (horizontal)
·         Eje z (profundidad)
Para estas variables de entrada, se crearon 3 conjuntos difusos con sus funciones de pertenencia correspondiente:
·         Fuera  1
·         Dentro
·         Fuera 2
Conjuntos difusos.jpeg
El siguiente paso es, el de inferencia, para esto necesitamos reglas, que hay que crear dependiendo de las variables de entrada y de los conjuntos difusos creados:
  1. IF (X IS Fuera1) AND (Z IS Fuera1) THEN Exito IS NoToca
  2. IF (X IS Fuera1) AND (Z IS Dentro) THEN Exito IS NoToca
  3. IF (X IS Fuera1) AND (Z IS Fuera2) THEN Exito IS NoToca
  4. IF (X IS Dentro) AND (Z IS Fuera1) THEN Exito IS NoToca
  5. IF (X IS Dentro) AND (Z IS Dentro) THEN Exito IS Toca
  6. IF (X IS Dentro) AND (Z IS Fuera2) THEN Exito IS NoToca
  7. IF (X IS Fuera2) AND (Z IS Fuera1) THEN Exito IS NoToca
  8. IF (X IS Fuera2) AND (Z IS Dentro) THEN Exito IS NoToca 
  9. IF (X IS Fuera2) AND (Z IS Fuera2) THEN Exito IS NoToca
Cabe destacar que estas reglas hacen un puente entre las variables de entrada y las variables de salida.
Como se puede observar la mayoría de las reglas hace que la tecla no suene,  y por el contrario existe una única regla que hace que la tecla suene y es cuando la variable x perteneciente al eje x y la variable z perteneciente al eje z están dentro del área de la tecla.

La última parte del proceso de lógica difusa es la defuzificacion, donde se generan variables de salida. Este proceso lo hacemos por medio del método mandami, el cual nos entrega un % de pertenencia. Este grado de partencia, nos define si el pie esta dentro de la tecla o fuera.  
Se crearon conjuntos difusos para las salidas:
Diagrama3.jpeg

Después de haber aplicado la lógica difusa para el proyecto, este es el resultado:





Para las las propuestas solución sin éxito se ha encontrado una solución estable:
Control Fuzzy para piano kinect (1ra parte)

A pesar de haber probado 2 posibles soluciones para el problema de la sensibilidad de la kinect, las cuales fueron :
  •          sacando un promedio de los ejes, para no tener el problema de sensibilidad de la kinect.
  •          sacando la diferencia de los ejes, respecto a las áreas en donde se ubicaran las teclas, para verificar si el pies se cambio de una tecla a otra.

se tuvo la necesidad de encontrar una nueva forma de llevar a cabo el proyecto, donde lo mas importante es la reproducción de una nota en un área determinada en el suelo, creada virtualmente por la kinect.
Para esto se pensó en ocupar lógica difusa debido a que:

  •       El pie que está tocando una tecla esta dentro de la tecla o está fuera de la tecla.
  •          Mientras el punto central del pie, determinado por un punto creado por el esqueleto de la kinect, esté más cerca de la frontera de la tecla, menos será su grado de pertenencia a estar pisando esa tecla .
  •          Mientras el punto central del pie, determinado por un punto creado por esqueleto de la kinect, este más cercano al centro de la tecla, mayor será el grado de pertenencia a estar pisando la tecla para así reproducir su sonido sin falla alguna.