18
Robot Robot Bailón Bailón Desarrollado por: Desarrollado por: Jesús López Méndez Jesús López Méndez Valerio Rodríguez Robledo Valerio Rodríguez Robledo

Robot Bailón Desarrollado por: Jesús López Méndez Valerio Rodríguez Robledo

Embed Size (px)

Citation preview

Page 1: Robot Bailón Desarrollado por: Jesús López Méndez Valerio Rodríguez Robledo

Robot Robot BailónBailón

Desarrollado por:Desarrollado por:

Jesús López MéndezJesús López Méndez

Valerio Rodríguez RobledoValerio Rodríguez Robledo

Page 2: Robot Bailón Desarrollado por: Jesús López Méndez Valerio Rodríguez Robledo

ObjetivosObjetivos

• El propósito de esta práctica es El propósito de esta práctica es desarrollar un sistema capaz de desarrollar un sistema capaz de interpretar una melodía y tomar interpretar una melodía y tomar decisiones de acuerdo a sus decisiones de acuerdo a sus características (ritmo, notas, ...).características (ritmo, notas, ...).

• Dicho sistema será desarrollado en Dicho sistema será desarrollado en tres módulos o partes:tres módulos o partes:

Page 3: Robot Bailón Desarrollado por: Jesús López Méndez Valerio Rodríguez Robledo

Primer móduloPrimer módulo

• Un primer módulo que se encarga de Un primer módulo que se encarga de procesar la melodía. Detecta cuándo procesar la melodía. Detecta cuándo comienza la melodía y la muestrea en comienza la melodía y la muestrea en ventanas temporales, decidiendo en ventanas temporales, decidiendo en cada una de ellas de que nota se trata cada una de ellas de que nota se trata mediante una correlación con un seno y mediante una correlación con un seno y coseno de cada frecuencia que se coseno de cada frecuencia que se espera. Esto da lugar a una secuencia de espera. Esto da lugar a una secuencia de notas que serán interpretadas por el notas que serán interpretadas por el siguiente módulo.siguiente módulo.

Page 4: Robot Bailón Desarrollado por: Jesús López Méndez Valerio Rodríguez Robledo

Segundo MóduloSegundo Módulo

• Un segundo módulo que sirve de Un segundo módulo que sirve de interfaz y dará unos parámetros en interfaz y dará unos parámetros en función de dicha melodía. Se trata función de dicha melodía. Se trata de, mediante software, parametrizar de, mediante software, parametrizar la melodía en función del ritmo, nota la melodía en función del ritmo, nota instantánea, conjunto de notas... instantánea, conjunto de notas... (aún por determinar), pasando estos (aún por determinar), pasando estos valores al siguiente módulo.valores al siguiente módulo.

Page 5: Robot Bailón Desarrollado por: Jesús López Méndez Valerio Rodríguez Robledo

Tercer móduloTercer módulo

• Un tercer módulo que comunica con Un tercer módulo que comunica con el robot, indicándole los el robot, indicándole los movimientos que debe hacer en movimientos que debe hacer en función de los parámetros obtenidos. función de los parámetros obtenidos. Este último módulo deberá ser Este último módulo deberá ser diseñado de acuerdo al robot diseñado de acuerdo al robot utilizado, teniendo en cuenta las utilizado, teniendo en cuenta las posibilidades de movimiento de este.posibilidades de movimiento de este.

Page 6: Robot Bailón Desarrollado por: Jesús López Méndez Valerio Rodríguez Robledo

Desarrollo del primer Desarrollo del primer módulomódulo

• Hemos simulado el algoritmo de Hemos simulado el algoritmo de detección de notas mediante detección de notas mediante MATLAB a fin de dimensionar los MATLAB a fin de dimensionar los parámetros necesarios para su parámetros necesarios para su correcta realización (fs, tamaño de correcta realización (fs, tamaño de ventana…)ventana…)

• Posteriormente adaptaremos a Posteriormente adaptaremos a ColdFire dicho algoritmo (en ColdFire dicho algoritmo (en progreso).progreso).

Page 7: Robot Bailón Desarrollado por: Jesús López Méndez Valerio Rodríguez Robledo

Detección: teoríaDetección: teoría

• La detección se basa en correlaciones La detección se basa en correlaciones con senos de las frecuencias que con senos de las frecuencias que queremos detectar (desde Sol3 al Do5 queremos detectar (desde Sol3 al Do5 del violín), obteniendo un conjunto de del violín), obteniendo un conjunto de valores proporcionales a la potencia del valores proporcionales a la potencia del sonido escuchado a dichas frecuencias.sonido escuchado a dichas frecuencias.

• De acuerdo con la teoría de la DFT:De acuerdo con la teoría de la DFT:

Page 8: Robot Bailón Desarrollado por: Jesús López Méndez Valerio Rodríguez Robledo

Detección: teoríaDetección: teoría• Cada muestra debe ser multiplicada por la Cada muestra debe ser multiplicada por la

muestra equivalente de un seno y un coseno a muestra equivalente de un seno y un coseno a cada frecuencia y cada uno de estos valores es cada frecuencia y cada uno de estos valores es sumado al acumulador del seno y del coseno sumado al acumulador del seno y del coseno respectivos de esta respectivos de esta ventana temporalventana temporal y esta y esta frecuencia. Al final de la ventana, se suman los frecuencia. Al final de la ventana, se suman los cuadrados de el acumulador del seno y del cuadrados de el acumulador del seno y del coseno a cada frecuencia, obteniendo una coseno a cada frecuencia, obteniendo una magnitud proporcional a la potenciamagnitud proporcional a la potencia de la de la señal en dicha ventana, a la frecuencia del seno señal en dicha ventana, a la frecuencia del seno y el coseno utilizados.y el coseno utilizados.

Page 9: Robot Bailón Desarrollado por: Jesús López Méndez Valerio Rodríguez Robledo

Detección: ventanas Detección: ventanas temporalestemporales

• En nuestra detección, la forma de determinar la En nuestra detección, la forma de determinar la nota que está sonando, es decidir en cada nota que está sonando, es decidir en cada ventana temporal, cual es la frecuencia ventana temporal, cual es la frecuencia predominante.predominante.

• Las ventanas tendrán un número de muestras Las ventanas tendrán un número de muestras fijo (que determinaremos en la simulación) y fijo (que determinaremos en la simulación) y estarán solapadas con el fin de dar la resolución estarán solapadas con el fin de dar la resolución temporal que necesitemos (el margen de temporal que necesitemos (el margen de solapamiento será determinado en simulación), solapamiento será determinado en simulación), reaprovechando cálculos ya que las ventanas reaprovechando cálculos ya que las ventanas solapadas tienen muestras en común.solapadas tienen muestras en común.

Page 10: Robot Bailón Desarrollado por: Jesús López Méndez Valerio Rodríguez Robledo

Teoría: Frecuencia de Teoría: Frecuencia de muestreomuestreo

y Tamaño de ventanay Tamaño de ventana• Si la máxima frecuencia que detectaremos Si la máxima frecuencia que detectaremos

es fes fmáxmáx, la frecuencia de muestreo de , la frecuencia de muestreo de acuerdo al Criterio de Nyquist será: acuerdo al Criterio de Nyquist será: ffss=2·f=2·fmáxmáx..

• Si la mínima diferencia de frecuencias a Si la mínima diferencia de frecuencias a detectar es fdetectar es fdmíndmín, el tamaño de ventana , el tamaño de ventana deberá tener N muestras de acuerdo a:deberá tener N muestras de acuerdo a:

121212 2

·22

ff

f

ff

fN ss

Page 11: Robot Bailón Desarrollado por: Jesús López Méndez Valerio Rodríguez Robledo

Simulación con MATLABSimulación con MATLAB

• Según la teoría expuestas, hemos Según la teoría expuestas, hemos implementado el algoritmo con MATLAB, implementado el algoritmo con MATLAB, de forma que detecte las notas de un wav de forma que detecte las notas de un wav (grabación del violín).(grabación del violín).

• Tomando sólo determinadas muestras de Tomando sólo determinadas muestras de la grabación simulamos la frecuencia de la grabación simulamos la frecuencia de muestreo que utilizaremos con ColdFire.muestreo que utilizaremos con ColdFire.

• Definiremos dos variables:Definiremos dos variables:• k (fk (fss=44100/k)=44100/k)

• c (nº muestras/ventana)c (nº muestras/ventana)

Page 12: Robot Bailón Desarrollado por: Jesús López Méndez Valerio Rodríguez Robledo

Nos ayudamos de los Nos ayudamos de los armónicosarmónicos

• Para conseguir una precisión espectral mayor, Para conseguir una precisión espectral mayor, tenemos en cuenta los armónicos de cada tenemos en cuenta los armónicos de cada nota, de modo que sumamos la energía de los nota, de modo que sumamos la energía de los armónicos a su nota fundamental.armónicos a su nota fundamental.Los armónicos de una nota siguen el siguiente Los armónicos de una nota siguen el siguiente orden (el más a la izquierda tiene más orden (el más a la izquierda tiene más potencia):potencia):

La imagen corresponde a los armónicos del La2.La imagen corresponde a los armónicos del La2.

• En nuestro caso nos limitamos a considerar En nuestro caso nos limitamos a considerar como la potencia de una nota, la suma de su como la potencia de una nota, la suma de su potencia, la de su octava y la de la quinta de su potencia, la de su octava y la de la quinta de su octava superior (13). octava superior (13).

Page 13: Robot Bailón Desarrollado por: Jesús López Méndez Valerio Rodríguez Robledo

Resultados de la simulación Resultados de la simulación con MATLABcon MATLAB

• A partir de la teoría y la simulación, hemos A partir de la teoría y la simulación, hemos determinado: k=9 (fs=4900baudios) y c=445.determinado: k=9 (fs=4900baudios) y c=445.

• Al introducir una melodía que es una escala Al introducir una melodía que es una escala cromática desde el Sol3 hasta el Do5 con cromática desde el Sol3 hasta el Do5 con 8bits/muestra (mono).8bits/muestra (mono).

• Asignamos el valor 1 a la nota menor (Sol3), 2 a Asignamos el valor 1 a la nota menor (Sol3), 2 a Sol#3… así hasta el 44 que será Re7 (la quinta de Sol#3… así hasta el 44 que será Re7 (la quinta de la octava del Sol5, la máxima nota que la octava del Sol5, la máxima nota que detectamos). El siguiente valor, el 45, detectamos). El siguiente valor, el 45, representará el silencio, que se asignará cuando la representará el silencio, que se asignará cuando la potencia a todas las frecuencias no supera un potencia a todas las frecuencias no supera un cierto umbral.cierto umbral.

Page 14: Robot Bailón Desarrollado por: Jesús López Méndez Valerio Rodríguez Robledo

Representación Notas-Tiempo de una Escala Representación Notas-Tiempo de una Escala CromáticaCromática

Page 15: Robot Bailón Desarrollado por: Jesús López Méndez Valerio Rodríguez Robledo

ProblemaProblema• Como se observa en la figura anterior, se Como se observa en la figura anterior, se

confunden las notas que son la misma pero en confunden las notas que son la misma pero en distinta octava. Esto es debido a la gran cantidad distinta octava. Esto es debido a la gran cantidad de armónicos que presenta el violín, que causa de armónicos que presenta el violín, que causa que tengan más potencia los armónicos de las que tengan más potencia los armónicos de las notas graves que las propias notas, o que tengan notas graves que las propias notas, o que tengan más potencia los subarmónicos de la notas más potencia los subarmónicos de la notas agudas que las propias notas agudas.agudas que las propias notas agudas.

• Solución: Reducimos nuestra detección a una Solución: Reducimos nuestra detección a una escala, considerando solamente qué nota es, sin escala, considerando solamente qué nota es, sin considerar a qué escala pertenece. Así, sólo considerar a qué escala pertenece. Así, sólo diferenciaremos entre 12 posibles notas, lo que diferenciaremos entre 12 posibles notas, lo que es variedad suficiente.es variedad suficiente.

Page 16: Robot Bailón Desarrollado por: Jesús López Méndez Valerio Rodríguez Robledo

Representación Notas-Tiempo de una Escala Representación Notas-Tiempo de una Escala CromáticaCromática

Detectando sólo la escala inferiorDetectando sólo la escala inferior

Page 17: Robot Bailón Desarrollado por: Jesús López Méndez Valerio Rodríguez Robledo

Comienzo de programación Comienzo de programación en C:en C:ADCADC

• Para comenzar, hemos adaptado el programa de Para comenzar, hemos adaptado el programa de manejo del ADC a nuestras necesidades, manejo del ADC a nuestras necesidades, haciendo que al leer la muestra tomada, podamos haciendo que al leer la muestra tomada, podamos encargar la muestra siguiente, y aprovechar el encargar la muestra siguiente, y aprovechar el tiempo de espera hasta la muestra siguiente para tiempo de espera hasta la muestra siguiente para realizar el proceso de la muestra anterior.realizar el proceso de la muestra anterior.

• Debido al error de cuantificación que comete el Debido al error de cuantificación que comete el ADC, reducimos el número de bits por muestra ADC, reducimos el número de bits por muestra de 12 a 8 (eliminando los 4 menos significativos), de 12 a 8 (eliminando los 4 menos significativos), lo que además favorece las operaciones, lo que además favorece las operaciones, pudiendo utilizar tamaños BYTE.pudiendo utilizar tamaños BYTE.

Page 18: Robot Bailón Desarrollado por: Jesús López Méndez Valerio Rodríguez Robledo

Próximos pasosPróximos pasos

Continuar con el desarrollo del algoritmo en C Continuar con el desarrollo del algoritmo en C y mejorar el sistema de detección ya sobre y mejorar el sistema de detección ya sobre

ColdFire.ColdFire.