Desarrollo de un algoritmo de procesamiento de seijales con arreglos de hidrófonos para la
ubicación de fuentes subacuáticas
Sebastián Builes Suárez, [email protected]
Trabajo de Grado presentado para optar al título de
Ingeniero de Sonido.
Asesor: Ramiro Esteban Franco Bedoya, Magister (MSc) en Geofísica y sismología.
Universidad de San Buenaventura Colombia
Facultad de Ingenierías
Ingeniería de Sonido
Medellín, Colombia
2017
Citar/How to cite [1]
Referencia/Reference
Estilo/Style:
IEEE (2014)
[1] S. Builes Suárez, “Desarrollo de un algoritmo de procesamiento de señales con
arreglos de hidrófonos para la ubicación de fuentes subacuáticas”, Trabajo de
grado Ingeniería de Sonido, Universidad de San Buenaventura Medellín,
Facultad de Ingenierías, 2017.
Grupo de Investigación: Modelamiento y Simulación Computacional (GIMSC).
Línea de investigación en acústica y procesamiento de señales.
Bibliotecas Universidad de San Buenaventura
• Biblioteca Fray Alberto Montealegre OFM - Bogotá.
• Biblioteca Fray Arturo Calle Restrepo OFM - Medellín, Bello, Armenia, Ibagué.
• Departamento de Biblioteca - Cali.
• Biblioteca Central Fray Antonio de Marchena – Cartagena.
Universidad de San Buenaventura Colombia
Universidad de San Buenaventura Colombia - http://www.usb.edu.co/
Bogotá - http://www.usbbog.edu.co
Medellín - http://www.usbmed.edu.co
Cali - http://www.usbcali.edu.co
Cartagena - http://www.usbctg.edu.co
Editorial Bonaventuriana - http://www.editorialbonaventuriana.usb.edu.co/
Revistas - http://revistas.usb.edu.co/
Biblioteca Digital (Repositorio)
http://bibliotecadigital.usb.edu.co
A mis padres, apoyo incondicional.
Tutores y compaijeros, cómplices y guías.
Desafíos, forjadores de templanza.
Agradecimientos
Quisiera agradecer a todas las personas que han inĆuido en mi y que me han ayudado en
la culminación de esta etapa, de manera especial a mi madre, por estar siempre ahí incluso
anteponiendo mi bienestar al propio, a mi tío John por su constante ayuda y preocupación, y
recordarme siempre la importancia de luchar por lo que te hace feliz, a mi familia en general
por su paciencia, empeijo y comprensión. Además creo que debo reconocer a toda la gente que
doy por sentada, aquellos que con solo estar ahí en el momento justo me ayudan a continuar.
A los buscadores de la verdad e inconformes que han guiado mi proceso académico y personal,
solo me queda gratitud hacia los MSc Héctor García y Oscar Acósta por el conocimiento
entregado y su ejémplo, a los invisibles y a los siempre presentes, gracias.
TABLA DE CONTENIDO
RESUMEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii
ABSTRACT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
INTRODUCCIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv
I PLANTEAMIENTO DEL PROBLEMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
A Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
II JUSTIFICACIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
III OBJETIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
A Objetivo General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
B Objetivos EspecíĄcos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
IV MARCO TEÓRICO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
A Conceptos sobre la propagación sonora en el agua . . . . . . . . . . . . . . . . 7
1) Ondas sonoras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2) Características acústicas del medio . . . . . . . . . . . . . . . . . . . . 8
B Conceptos de procesamiento de seijales de arreglos . . . . . . . . . . . . . . . . 10
1) Localización de fuentes . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2) Correlación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3) Beamforming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4) Muestreo espacial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5) Algoritmos de Conformación de Haz . . . . . . . . . . . . . . . . . . . 16
C Teoría de Métodos numéricos para la simulación del entorno real . . . . . . . . 18
1) Criterio de estabilidad de Courant-Friedrichs-Lewy . . . . . . . . . . . 18
2) Método del espacio-k . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
V DESARROLLO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
A Evaluación preliminar del método de multilateración . . . . . . . . . . . . . . 20
B Desarrollo y evaluación de algoritmos por conformación de haz . . . . . . . . . 23
1) Simulación de ondas planas . . . . . . . . . . . . . . . . . . . . . . . . 23
C Simulación por métodos numéricos . . . . . . . . . . . . . . . . . . . . . . . . 26
1) Análisis de dispersión númerica en el tiempo evaluando distancias . . . 28
D Diseijo de arreglos y aĄnación . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
E Implementación práctica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1) Protocolo de medición . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2) Montaje y medición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3) Procesamiento de las seijales . . . . . . . . . . . . . . . . . . . . . . . . 39
TABLA DE CONTENIDO vi
4) Causas de error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5) Análisis del comportamiento de los algoritmos de conformación de haz 41
6) Trabajo Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
VI CONCLUSIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
REFERENCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
ANEXOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
LISTA DE TABLAS
TABLA I . TIEMPO DE RETRASOS CALCULADOS PARA VERIFICAR EL
FUNCIONAMIENTO DE LA ECUACIÓN DE LA PARÁBOLA . . . . . . . . . 22
TABLA II . TIEMPOS DE EJECUCIÓN DE CADA ALGORITMO CON 5 AUDIOS
DIFERENTES, RESULTADO PROMEDIADO ENTRE 3 EJECUCIONES OBTE-
NIENDO UN COMPORTAMIENTO TÍPICO . . . . . . . . . . . . . . . . . 41
LISTA DE FIGURAS
Fig. 1. PerĄl de velocidad del sonido de un solo canal. . . . . . . . . . . . . . 9
Fig. 2. PerĄl de velocidad del sonido medido típico. . . . . . . . . . . . . . . 10
Fig. 3. Diagrama del principio de la multilateración. . . . . . . . . . . . . . . 12
Fig. 4. Diagrama básico de la trilateración. . . . . . . . . . . . . . . . . . . 13
Fig. 5. Patrón de haz de un arreglo lineal mostrando ambigüedad izquierda-derecha
con dos lóbulos idénticos equidistantes de la dirección central. . . . . . . . . . . 14
Fig. 6. Diagrama de bloques de una estructura básica de beamforming de suma y
retraso no adaptativa. . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Fig. 7. Notación y esquema de uso del algoritmo de multilateración usado inicialmente,
donde en rojo se ve el centro geométrico del arreglo como origen coordenado para dar el
ángulo de procedencia de la fuente S, además de un punto BŠ que marca una distancia
igual SB que SBŠ separando la diferencia de tiempos en ABŠ. . . . . . . . . . . . 21
Fig. 8. Patrones polares para los 3 diferentes algoritmos con una seijal arribando a 60°,
sintetizada a partir de funciones de Green para monopolos. . . . . . . . . . . . . 25
Fig. 9. Ilustración del campo sonoro en el momento Ąnal de una simulación por
espacio-k y con una duración de 0.1 segundos, (en rojo una fuente puntual y en azul
una serie de receptores). . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Fig. 10. Patrones polares para los diferentes algoritmos con una seijal arribando a -30°,
adquirida desde una simulación de espacio-k en campo libre. . . . . . . . . . . . 27
Fig. 11. Seijales en el tiempo recibidas por cada receptor a distancias dadas del emisor,
truncadas en 5000 muestras con la intención de observar el rizado al principio de cada una29
Fig. 12. Patrón polar de una fuente sonora arribando desde al frente emitiendo ruido
blanco y analizado para 1 y 9 kHz en el algoritmo de CB demostrando lóbulos laterales
o alias espaciales para 9kHz donde la separación entre hidrófonos no cumple con la
ecuación básica de diseijo. . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Fig. 13. Respuesta en frecuencia del arreglo de 28 elementos mostrando su resolución
angular y obviando la ambigüedad delante-trasera acotando de -90° a 90°. En esta se
ve la aparición de exactamente 9 lóbulos secundarios como los observados en el patrón
de haz polar en 9kHz debido a su longitud de onda. . . . . . . . . . . . . . . . 32
Fig. 14. Funciones de respuesta del arreglo lineal de 10 elementos probados en 2
frecuencias predominantes diferentes donde se anticipa que solo puede discriminar el
ángulo azimutal, ya que es una línea vertical a lo largo del número de onda k horizontal
y las posiciones relativas de los alias en (b).. . . . . . . . . . . . . . . . . . . 33
LISTA DE FIGURAS ix
Fig. 15. ARF de un arreglo esférico aĄnado en 4000 Hz, mostrado como comportamiento
ideal para la localización de fuentes. . . . . . . . . . . . . . . . . . . . . . 33
Fig. 16. Esquema de la ubicación de elementos propuestas en el protocolo de medición,
mostrando el ULA en posición junto con el UCA y el arreglo volumétrico en posiciones
aleatorias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Fig. 17. Diagrama de Ćujo de seijal para el montaje experimental del sistema elec-
troacústico cerrado (azul: transmisión acústica, negro: conexión eléctrica) . . . . . 36
Fig. 18. Contenido frecuencial de las dos seijales de prueba con un tamaijo de FFT de
16384 con ventana Blackman-Harris . . . . . . . . . . . . . . . . . . . . . . 36
Fig. 19. Conexiones físicas a la interfaz de audio, nótese el tipo de terminales a los que
debe llegar cada elemento. . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Fig. 20. Arreglos de hidrófonos acoplados a estructuras de PVC con sistema de boyas
armados en seco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Fig. 21. Proyector unido al dispositivo de anclaje y a un brazo de PVC pensado para
direccionarlo hacia el arreglo. . . . . . . . . . . . . . . . . . . . . . . . . . 38
Fig. 22. Estructura de hidrófonos en el agua a Ćote y estáticos, ubicados cerca al centro
de la piscina buscando condición de campo libre. . . . . . . . . . . . . . . . . 38
Fig. 23. Espectro de la primer prueba con el hidrófono 3 donde sus malos contactos
para la conexión provoca una bajísima seijal grabada y procesada con cancelación de
ruido y ecualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Fig. 24. Resultado del procesamiento de las seijales correspondientes al arreglo lineal
para el ángulo de arribo de -75° en los 3 algoritmos de estimación de procedencia (a,b y
c), el ángulo esperado se ve en rojo punteado. . . . . . . . . . . . . . . . . . . 40
Fig. 25. Resultado del procesamiento de las seijales correspondientes al arreglo
rectangular para el ángulo de arribo de -75° en los 3 algoritmos de estimación de
procedencia (a,b y c), el ángulo esperado se ve en rojo punteado. . . . . . . . . . 40
LISTA DE ABREVIACIONES
AOA Angle Of Arrival
DOA Diference Of Arrival
TDOA Time Diference Of Arrival
LTI Linear Time-Invariant
FDTD Finite Difference Time Domain
CB Classical Beamforming
MVDR Minimum Variance Distortionless Response
MUSIC MUltiple SIgnal ClassiĄcation
FFT Fourier Fast Transform
DFT Discrete Fourier Transform
ULA Uniform Lineal Array
UCA Uniform Circular Array
URA Uniform Rectangular Array
SNR Signal-Noise Ratio
CFL Criterio de Courant-Friedrichs-Lewy
ARF Array Response Function
LISTA DE SÍMBOLOS
Funciones
F,F−1 transformada directa e inversa de Fourier
Cantidades físicas
ρ densidad del Ćuido [kg m−3]
c velocidad del sonido [m s−1]
k número de onda [rad m−1]
p(x) presión acústica en un punto [Pa]
t tiempo [s]
Símbolos matemáticos
∗ complejo conjugado
∇ derivada espacial
∇2 operador laplaciano
⊗ convolución
H operador Hermitanio, transpuesta conjugada
T transpuesta matricial
j unidad imaginaria (j =√
-1)
RESUMEN
La localización de fuentes es un aspecto importante de la defensa y el monitoreo en diferentes
áreas del conocimiento, ante la necesidad de desarrollar una herramienta capaz de llevar a
cabo esta tarea, el presente trabajo propone la implementación de algoritmos de estimación
de diferencias de llegadas (DOA) pensados para su aplicación subacúatica en el proyecto
de investigación de detección acústica de fuentes, enfatizando en métodos avanzados de
conformación de haz.
Se implementaron y se validaron los algoritmos por medio del método numérico pseudo-
espectral del espacio k, encontrando una alta coherencia en sus respuestas con el modelo de
campo lejano teórico.
En la etapa de diseijo se proponen tres tipos de arreglos y son puestos a prueba en condiciones
controladas sin resultados satisfactorios, encontrando falencias y realizando un análisis de los
métodos y los arreglos por medio de herramientas de la teoría de procesamiento de seijales de
arreglos.
Palabras clave: Localización de fuentes, Beamforming, Procesamiento de arreglos, DOA.
ABSTRACT
Source location is an important aspect in defense and monitoring in different knowledge
areas, in response to the need of developing a tool able to execute this task, the present work
proposes the implementation of direction of arrival (DOA) algorithm designed for underwater
aplications under the research project of acoustic detection of targets, focusing in advanced
methods of beamforming.
The algorithms were implemented and validated by the numerical method of pseudo-spectral
k-space, Ąnding a high coherency in their responses compared with the theoretical far-Ąeld
model.
In the design stage three kind of arrays are proposed and tested in controled conditions with
no satisfactory results, Ąnding failures and performing an analysis of the methods and arrays
by means of array signal processing theory tools.
Keywords: Source localization, Bemforming, Array signal processng, DOA (Direction of
arrival).
INTRODUCCIÓN
Overhead the albatross hangs motionless upon the air and deep beneath the rolling waves in
labyrinths of coral caves. The echo of a distant time comes willowing across the sand and
everything is green and submarine.
Pink Floyd, Echoes (1971)
La transmisión de ondas sonoras a través del océano y otros cuerpos de agua ha sido un tema
extensivamente abordado, entre estos la ubicación de la dirección de un emisor acústico es un
asunto vital tanto en la naturaleza como en el ámbito militar e investigativo. Los diversos
sensores disponibles actualmente abren diversas posibilidades de monitoreo, instrumentación,
vigilancia y control. Independientemente del campo de estudio, una de las informaciones
de mayor importancia es la localización de un objeto de interés. Los sensores de presión
acústica permiten reconocer objetos por su huella acústica característica, no dependen de una
visibilidad despejada y tienen un amplio rango de alcance, estas condiciones son aún más
importantes en el agua densa y turbia donde las ondas electromagnéticas pierden alcance.
Las aplicaciones de vigilancia con sensores acústicos han tenido cabida en la guerra moderna
por su capacidad de reconocer, identiĄcar y localizar eventos. Un mayor conocimiento del
entorno reduce la cantidad de bajas en escenarios de guerra y optimiza recursos. Además, la
localización acústica se implementa en sectores diversos como la seguridad doméstica, estudios
de impacto ambiental, procesos industriales, monitoreo sísmico, entre otras. [1]
A pesar de que los sistemas activos pueden mapear áreas enteras de objetos que no son
emisores acústicos y los sistemas pasivos usualmente solo brindan la posición angular de un
objeto relativo a la posición de un arreglo de sensores, estos últimos facilitan la vigilancia
silenciosa y evita llamar la atención generando sonidos de grandes amplitudes en ambientes
particularmente ruidosos, convirtiéndolos el sistema ideal para tareas de defensa. [2]
Este estudio abarca se centra en los arreglos de hidrófonos pasivos, el diseijo físico y de los
algoritmos relacionados para obtener los mejores resultados en términos de precisión.
I. PLANTEAMIENTO DEL PROBLEMA
El procesamiento de seijales de arreglos es una herramienta poderosa que permite la extracción
de información de seijales recolectadas por un arreglo de sensores. La localización de blancos
es una de las aplicaciones del procesamiento de arreglos en el campo subacuático que permite
obtener información sobre las fuentes sonoras del entorno. Dentro de los campos de investi-
gación del desarrollo militar y la biología marina es de especial importancia la caracterización
espacial de emisores de ruido. Aplicaciones para el uso de diferentes arreglos de receptores
pasivos con los propósitos de mejorar la captura y conocer parámetros de la fuente registrada,
han sido llevados a cabo y sido objeto de diversas investigaciones desde la segunda guerra
mundial [3].
En Colombia, un país con dos océanos y por tanto una gran extensión de línea de costa,
maneras de monitorear y vigilar las aguas dentro de las fronteras nacionales es de particular
interés para la defensa nacional, en termino de fronteras y lucha contra el contrabando
marítimo.
Si bien este no es un problema nuevo dentro de las telecomunicaciones, la búsqueda de su
eĄciencia y precisión es un reto que ataije a la ingeniería. Con este trabajo se pretende
analizar y evaluar diferentes arreglos de hidrófonos y metodologías con el Ąn de localizar
fuentes submarinas con ayuda de simulaciones, para desarrollar un algoritmo que tenga como
parámetros de entrada la distribución del arreglo y propiedades del medio. Así, desde el grupo
de investigación en acústica subacuática y como adición al proyecto ŞSistema de Detección
Acústica y ClasiĄcación Autónoma de Blancos en el MarŤ (SIDACAM) nace la pregunta:
¿Cómo obtener el ángulo de procedencia de fuentes subacuáticas a partir de arreglos de
hidrófonos?
A. Antecedentes
El estudio del uso de arreglos de sensores para mejorar la calidad de la seijal y para obtener
la localización espacial de una fuente sonora ha sido estudiado especialmente en los últimos
aijos. Desde el periodo de entre-guerras se han desarrollado avances técnicos que usan los
principios de la estimación de diferencias de tiempo de llegada (TDOA) con diferentes enfoques
resultando en la creación de sistemas de radar, antenas, sonar, entre otros.
A Antecedentes 2
Los enfoques más reduccionistas del problema recurren a una aproximación puramente
geométrica, donde suponiendo una fuente plana, es decir, condiciones de campo libre lejano,
se encuentran las diferencias en tiempo y por tanto una ubicación. En el campo del audio, las
diferencias interaurales de tiempo representan este principio para 2 receptores (análogos a los
oídos humanos), Scola y Ortega [4] encuentran el ángulo de dirección a partir de relaciones
trigonométricas e implementan un hardware con un algoritmo adaptativo de mínima media
cuadrática (LMS). En el sector militar aéreo estimaciones de distancia y ángulo han sido
adquiridas con arreglos planos [5] a través de un análisis de la geometría.
En las últimas décadas, la tecnología de conformación de haz ha sido investigada con un
interés creciente para aplicaciones de telecomunicaciones desarrolladas paralelamente a la
telefonía celular, especíĄcamente en el campo del speech enhacement. El diseijo de Ąltros
espacio temporales para optimizar una seijal recibida por un arreglo de sensores de presión
comenzó a ser estudiado con el propósito de extraer una seijal deseada de un ambiente
ruidoso [6], el término beamformer se reĄere a estos Ąltros, la estructura más simple es
la del delay-and-sum, el cual compensa los tiempos de retraso esperados de cada sensor y
luego se suman para obtener una sola salida. [7] Mizumachi y Origuchi introdujeron una
optimización de los Ąltros del formador de haces por medio de redes neuronales obteniendo
mayor directividad en el lóbulo principal. La directividad de un arreglo, es decir, el patrón
de haz de un arreglo puede ser diseijado para tener un determinado comportamiento, esto
se puede lograr modiĄcando propiamente los valores de los Ąltros multicanal por medio de
estimaciones estadísticas y criterios de diseijo tales como la limitación lineal de varianza
mínima (LCMV), máxima relación seijal a ruido (MSNR), mínimo error cuadrático medio
(MMSE), respuesta sin distorsión de mínima varianza (MVDR), entre otras que se han
aĄanzado como algoritmos propios en el diseijo de beamformers [8].
Los diferentes algoritmos hoy usados para la localización de fuentes a partir de la estimación
de diferencias de tiempo más complejos y precisos realizan un análisis en el dominio de
la frecuencia, a diferencia del delay-and-sum que se utiliza en el dominio temporal. El
conformador de haz espectral más básico es el diseijado por Bartlett [9] el cual presenta
poca resolución, es decir un ancho de haz amplio. Cuando hay fuentes diferentes dentro del
lóbulo principal a distancias inferiores a su resolución este algoritmo falla. Capon propuso
el método de máxima similitud para resolver el criterio de MVDR [10], este método ha sido
ampliamente usado en conjunto con otros algoritmos adaptativos como el cancelador de
sidelobes generalizado (GSC), Gazor et al. [11] proponen un algoritmo capaz de evitar la
interferencia fuente-receptor corrigiendo el vector de dirección. Partiendo del principio de
DOAs, el método de clasiĄcación de seijal múltiple (MUSIC) es una generalización del método
A Antecedentes 3
de Pizharenko [12], en el cual usa el criterio de MMSE logrando determinar el ángulo de
procedencia de la fuente sonora y rastrearla. [13]
Una comparación de algunos de los algoritmos previamente mencionados ha sido estudiada,
Khmou et al. [14] concluyen que para ambientes ruidosos el algoritmo de la norma mínima
es el que mejor se comporta mientras en condiciones de bajo ruido MUSIC brinda mejores
resultados. El uso de métodos espacio-temporales no ha sido tan extensivo en el campo
marino como en las comunicaciones, sin embargo, se han usado en la acústica subacuática
especialmente para optimizar la seijal recibida por un grupo de hidrófonos en sistemas de
sonar pasivo [15], [16], [17], [18]. Existen planteamientos sencillos de arreglos de 2 elementos
los cuales a partir de relaciones trigonométricas se consigue un patrón de directividad poco
deseable [19], [20], también desde la aproximación geométrica, Valente [21] consiguió un
sistema que puede ubicar fuentes en tiempo real. Recientemente se han realizado análisis de
procesamiento de arreglos con métodos de conformación de haz como Capon y MUSIC donde
se logra dar la ubicación en términos de elevación y ángulo azimutal de ballenas [22], [23].
Sin embargo, el entorno oceánico es un ambiente especialmente cambiante y caótico por su
comportamiento altamente estocástico se suelen usar estimaciones de máxima verosimilitud,
Minasian [24] presenta un algoritmo basado en métodos para encontrar DOA de alta resolución
más robusto para modelos estocásticos de guías de onda oceánica.
Otras alternativas para encontrar la ubicación de una fuente son las de encontrar por diferentes
métodos la velocidad de partícula y por ende el vector de procedencia de la fuente, las dos
usadas normalmente son; el método presión-velocidad y la de presión-presión. Hoy en día
existen desarrollos como el HydroĆown [25], arreglos de sensores vectorizados capaces de
estimar el vector de intensidad de la fuente sonora a través de la medición directa de la presión
y la velocidad de partícula [26]. Por otro lado, la medición de presión-presión se puede llevar
a cabo con arreglos de sensores distribuidos y calcular la velocidad de partícula, la eĄciencia
de estos métodos debe ser evaluada en relación al ancho del espectro de la fuente y el número
de las mismas [27].
La geometría de los tipos de arreglos usados para la estimación de diferencias de tiempos
de llegadas es también vasta, la teoría, como es de esperar, empezó con arreglos lineales
uniformemente espaciados (ULA) por ser la distribución más simple para modelar matemáti-
camente, aún hoy el arreglo más común para aplicaciones en movimiento y algunas estáticas
de monitoreo y vigilancia es el llamado towed array o arreglo remolcado, un arreglo de
distribución unidimensional usualmente remolcado por embarcaciones, en la literatura se
identiĄcan grandes grupos de arreglos destacando: Lineales, rectangulares, continuos (super-
Ącies irregulares), volumétricos [28]. Mirando hacia campos con mayor desarrollo en esta
materia se puede encontrar arreglos en espirales, esféricos, ad hoc o de diseijo especiĄco, entre
A Antecedentes 4
otros. Gracias a los avances de la estimación de TDOAS, en el estudio de Wong et al. [29]
se encuentra un método basado en el algoritmo de estimación de parámetros de seijales vía
técnicas de invarianza rotacional (ESPRIT) donde la ubicación de los receptores es arbitraria,
pero estos han de ser pareados, lo que implica el uso del doble de sensores que en otros
algoritmos similares como MUSIC.
II. JUSTIFICACIÓN
Estimar de manera precisa la dirección de origen de un blanco acústico es necesario a la hora
de monitorear un área de interés. Dado el caso de que un objeto de interés sea detectado,
conocer su dirección y emprender una persecución o seguimiento, no solo discriminar entre
un lado izquierdo y derecho. Se plantea un algoritmo capaz de decodiĄcar las seijales en el
tiempo que captura cada elemento del arreglo y entregar la dirección de llegada del sonido
emitido por la fuente. Este proyecto se articula al macro-proyecto ŞSistema de Detección
Acústica y ClasiĄcación Autónoma de Blancos en el MarŤ (SIDACAM) como una herramienta
que brinde información espacial de una fuente de la cual se espera conocer sus características
espectrales. De este desarrollo se espera que a partir de los arreglos obtenidos, sea posible
recolectar data en tiempo real para crear un sistema de vigilancia marítima robusto.
III. OBJETIVOS
A. Objetivo General
Desarrollar un algoritmo en el lenguaje de programación Python, capaz de proporcionar el
ángulo de procedencia de una fuente acuática dado un arreglo de receptores por medio del
procesamiento de seijales.
B. Objetivos Específicos
• Realizar un modelo de propagación subacuática, teniendo en cuenta las propiedades
físicas del medio para llevar a cabo simulaciones con hidrófonos virtuales.
• Implementar algoritmos de estimación de ángulos de llegada (DOAs) para las condiciones
especíĄcas de diferentes arreglos.
• Realizar un análisis comparativo entre los resultados obtenidos con diferentes arreglos
en función de su resolución espacial.
IV. MARCO TEÓRICO
En esta sección se abarcan los conceptos de la ubicación de fuentes y de los modelos de la
propagación del sonido en el agua.
Notación matemática
En el presente trabajo se utiliza la siguiente notación:
• Los vectores son representados con minúsculas en negrilla “x”.
• Las matrices son representadas con letras mayúsculas en negrilla “A”
• Variables de tipo escalar y funciones en el dominio del tiempo son representados con
minúscula p(x, y, z) = y(t)
• Las seijales en el dominio de la frecuencia se representan con mayúsculas Y (ω)
A. Conceptos sobre la propagación sonora en el agua
1). Ondas sonoras
a) Ondas planas
Una solución para la ecuación de onda de Helmholtz es la de una onda plana propagándose
en el espacio con una amplitud A y una frecuencia determinada por el número de onda k
p(x) = Aejkx, (1)
donde p es presión, e es el número de Euler y x es un vector espacial.
Esta solución da un modelo donde el frente de onda siempre está perpendicular al vector
de dirección y no presenta atenuación. Aunque no es una onda que se produzca realmente,
su estudio es importante para la simpliĄcación de problemas, cuando una fuente esferica se
encuentra a una gran distancia su frente de onda puede ser aproximado al de una onda plana.
[30]
A Conceptos sobre la propagación sonora en el agua 8
b) Ondas cilíndricas
La solución de la ecuación de onda para coordenadas cilíndricas en el tiempo t presenta
dependencia de su amplitud inversamente proporcional a la raíz de la distancia a un punto ρ.
p(ρ, t) =A√ρ
ej(kρ±ωt), (2)
donde omega es la frecuencia de oscilación de la onda.
Son de especial interés en usos de acústica submarina marina de aguas profundas y gran
alcance, pues se realiza una aproximación a ondas cilíndricas teniendo en cuenta la reĆexión
por la superĄcie y el suelo marino.
c) Ondas esféricas
La onda esférica se propaga de igual manera en todas las direcciones, es la forma más próxima
a la radiación de las fuentes físicas. Está representada por la ecuación
p(r, t) =A
rej(kr±ωt), (3)
donde r es el radio de la esfera.
En acústica subacuática de aguas poco profundas se usa este tipo de fuente para la creación
de modelos.
2). Características acústicas del medio
La impedancia acústica del medio y las pérdidas por transmisión son características impor-
tantes a saber en el agua, la estratiĄcación horizontal, dada por cambios en temperatura,
salinidad, entre otros, crean lo que se conoce como perĄles de velocidad del sonido. La
expresión adiabática para la velocidad de propagación del sonido, no es de mucha utilidad en
condiciones que dependen constantemente de la temperatura y la presión [31].
Ante su difícil cálculo analítico se han creado relaciones empíricas que han sido corregidas o
ratiĄcadas con el tiempo [32]. Uno de los modelos más simpliĄcados y a su vez difundidos es
el perĄl de Munk, el cual solo depende de la profundidad.
A Conceptos sobre la propagación sonora en el agua 9
c(z) = 1500[1 + ϵ(z − 1 + ez)]. (4)
donde ϵ es una constante hallada experimentalmente de 0.00737 y c es la velocidad de
propagación dependiente de la profundidad z. Las ondas acústicas se encausan en la zona de
menor velocidad del sonido, denominado canal, a través de este la seijal acústica puede viajar
largas distancias con mínima perdida. El canal SOFAR se encuentra entre los 1000 y 1500
metros de profundidad, acorde al modelo de Munk en la Ągura 1
1500 1510 1520 1530 1540 1550 1560
Velocidad de propagacion (m/s)
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
Pro
fun
did
ad
Perfil de Munk
Fig. 1. Perfil de velocidad del sonido de un solo canal.
Lo habitual es realizar pruebas en entornos controlados aislando características del medio
para hallar relaciones empíricas, una expresión para calcular la velocidad del sonido para el
agua destilada se da en la ecuación 5
c(P, t) = 1402.7 + 488t − 482t2 + 135t3 + (15.9 + 2.8t + 2.4t4)(P
100). (5)
Donde P es la presión de Gauge en bars, t es una centésima parte de la temperatura del
medio en grados Celsius.
El medio más usado en la acústica subacuática es el mar, y por sus condiciones especiales de
salinidad y temperatura, tiene expresiones diferentes para calcular la velocidad del sonido.
Una de las más conocidas es la de Del Grosso dependiente de la temperatura (T), la salinidad
(S) y la presión (P) por medio de coeĄcientes ∆Ci.
B Conceptos de procesamiento de seijales de arreglos 10
c(S, T, P ) = 1402.392 + ∆CS + ∆CT + ∆CP + ∆CST P (6)
En general es una ecuación lineal con respecto a la temperatura. Sin embargo, los perĄles son
frecuentemente medidos in situ y usados para cálculos más realistas. Un perĄl típico, como el
de la Ągura 2, muestra un canal en la capa isotérmica profunda (SOFAR) y cambios menores
en la velocidad del sonido en la capa conocida como termoclina, estrato donde la temperatura
cambia rápidamente con la profundidad.
Fig. 2. Perfil de velocidad del sonido medido típico.
B. Conceptos de procesamiento de señales de arreglos
1). Localización de fuentes
La estimación de la ubicación de objetos, en el contexto del procesamiento de seijales de
arreglos, se reĄere a conocer las direcciones o ángulos de llegada (AOA) de los frentes de onda
de un emisor que alcanza un arreglo de sensores, para determinar la dirección y sentido del
vector de dirección asociado a la fuente. Las metodologías para dar con alta resolución la
posición en el espacio de una fuente pasan por el análisis espacio-temporal, es decir, convertir
las diferencias de tiempos en los elementos del arreglo en distancias y direcciones certeras.
B Conceptos de procesamiento de seijales de arreglos 11
2). Correlación
La función de correlación entre dos seijales x y y, es la suma (discreta o continua) de sus
productos como una función de la posición de muestras en y con respecto a x, como se muestra
en la ecuación (7). Por lo tanto, la posición del valor máximo de esta función es equivalente al
dato del tiempo de diferencia de llegada entre x y y (TDOA). Esta operación está íntimamente
relacionada con la convolución de modo que se puede encontrar la correlación cruzada por
medio de esta. La ecuación 8 permite hallar la correlación cruzada por medio de la convolución
invirtiendo temporalmente la seijal de referencia.
Rxy(n) =∞
∑
n=−∞
x(n)y∗(n + m), (7)
donde n es la posición de las muestras y m es la diferencia de tiempo entre x y y, también
conocido como retardo [33].
Rxy = x∗(−t) ⊗ y(t). (8)
Un caso especial de la correlación es cuando se ejecuta con una versión retrasada en el tiempo
de si misma, esto es denominado autocorrelación
a) Planteamientos Geométricos
Las direcciones de llegada (DOA) pueden ser calculadas desde el enfoque geométrico a través
de dos técnicas principales, ampliamente usadas en la localización por arreglos de sensores
pasivos: Multilateración y Trilateración.
En estos métodos se calcula la distancia punto a punto en el eje cartesiano para establecer
relaciones geométricas y encontrar propiedades de la procedencia de la fuente. Se pueden
asumir condiciones de campo lejano (propagación de onda plana) o campo cercano (onda
esférica).
Multilateración (MLAT) Es una técnica basada en hipérbolas trazadas con foco en los
receptores, para determinar posiciones probables de la fuente, si el vector de dirección de la
fuente es asintótico a la hipérbola, entonces la pendiente de esta será el ángulo de procedencia
de la fuente. En la Ągura 3 se muestra un arreglo típico de 2 sensores, donde el vector de
dirección de la fuente p es la recta tangente a la curva de la hipérbole más cercana. [34]
B Conceptos de procesamiento de seijales de arreglos 12
Fig. 3. Diagrama del principio de la multilateración.
Para resolver este método se debe encontrar la ecuación de la hipérbola a partir de las
relaciones trigonométricas de las distancias emisor-receptor.
y(x) = x
√
4d2r2
r. (9)
Donde d es la distancia entre receptores y r es la distancia equivalente al tiempo de retraso
entre las 2 seijales de A y B. Una vez conocida la ecuación de la hipérbola, el ángulo Φ de
la línea recta con origen (0,0) hasta la fuente con coordenadas (x,y) se puede determinar
fácilmente por .
Φ = arctan ±√
4d2r2
r, (10)
de la ecuación 10 se puede observar que la raíz cuadrada arrojará dos resultados, esto es en la
práctica la ambigüedad izquierda-derecha de un arreglo lineal.
Trilateración La trilateración determina la posición estimada de la fuente generadora de
ruido al encontrar el punto en el que se interceptan 3 o más círculos (rangos de los receptores)
[35]. Cada receptor k se encuentra en unas coordenadas conocidas (xk, yk, zk) y se conocen los
B Conceptos de procesamiento de seijales de arreglos 13
tiempos relativos tk que multiplicados por la velocidad del sonido igualan la distancia relativa
rk, se puede hacer un sistema de N ecuaciones y resolverlo para las coordenadas de la fuente
(x, y, z). En la Ągura 4 tres receptores con rangos diferentes se interceptan en la ubicación de
un emisor.
Fig. 4. Diagrama básico de la trilateración.
La solución analítica de la trilateración consiste en encontrar las distancias R en términos de
x, y y z de modo que al resolver el sistema de ecuaciones se encuentren las coordenadas de la
fuente que satisfacen tales condiciones.
√
(xk − x)2 + (yk − y)2 + (zk − z)2 = ctk = rk. (11)
b) Ambigüedad izquierda-derecha
La ambigüedad izquierda-derecha o lado-lado se reĄere al problema que se tiene clásicamente
en arreglos lineales, pero que también ocurre en planos, que no permiten dar certeza sobre la
dirección de la que proviene una onda acústica, pues la diferencia de tiempo absoluta entre
sensores es el mismo en ambos ángulos. Este fenómeno se observa en la Ągura 5 por medio de
una gráĄca de patrón de haz con dos lóbulos principales de igual magnitud y simétricos con
respecto al ángulo central.
Las posibles resoluciones de la ambigüedad han sido estudiadas por métodos estocásticos,
donde, si algunos de los elementos de un arreglo lineal se salen de su eje, se puede diferenciar
entre lóbulo principal y lateral [36]. Sin embargo, una solución más directa es aumentar
el orden espacial del arreglo para cubrir la ambigüedad en cada dimensión i.e. arreglos
volumétricos de al menos 4 receptores.
B Conceptos de procesamiento de seijales de arreglos 14
Fig. 5. Patrón de haz de un arreglo lineal mostrando ambigüedad izquierda-derecha con dos lóbulosidénticos equidistantes de la dirección central.
3). Beamforming
El beamforming en el procesamiento de arreglos, es una herramienta que a través de una
suma de seijales no correlacionadas que recibe un arreglo puede obtener información mejorada
de una fuente, el beamformer escanea los posibles ángulos y mide la potencia en cada posición
[37]. El diagrama de bloques de un beamformer convencional, donde una cantidad de L
sensores en diferentes posiciones, captan un evento sonoro x(t) que al ser ponderado con
Ąltros wi y sumados, dan como resultado una seijal con ciertas características e información
deseables. Este se muestra en la Ągura 6.
Fig. 6. Diagrama de bloques de una estructura básica de beamforming de suma y retraso no adaptativa.
B Conceptos de procesamiento de seijales de arreglos 15
Esta conĄguración está dada por la ecuación:
y(t) =L
∑
l=1
w∗
l xl(t), (12)
donde * simboliza el complejo conjugado. Los Ąltros del beamformer se encuentran en el
vector
w = [w1, w2, . . . , wL]T ,
mientras que las seijales en cada sensor se representarán como
x = [x1(t), x2(t), . . . , xL(t)]T ,
Así entonces, la salida del arreglo es la multiplicación de las seijales por la hermitiana del
vector de Ąltros,
y(t) = wHx,
donde T y H son la transpuesta y la transpuesta conjugada compuesta respectivamente. La
potencia a la salida del proceso está dada por
P (w) = E[y(t)y∗(t)] = wHRxxw. (13)
E[·] es el operador del valor esperado y Rxx es la matriz de auto-correlación deĄnida como la
multiplicación entre la seijal y sí misma conjugada.
Rxx = E[x(t)x∗(t)]. (14)
La dirección de la fuente se puede expresar en términos de fase por medio de funciones de
Green para cada ángulo a evaluar, en cada posición i y dependiente de la frecuencia. Se crea
entonces un vector de posibles posiciones para cada elemento del arreglo L.
a(Θi) = [ej2πf0τ1(φi,Θi) . . . ej2πf0τL(φi,Θi)]T , (15)
donde τi son los diferentes retrasos temporales de la seijal a cada punto i. La matriz de
correlación cruzada, si se descompone la seijal x(t) en seijal s(t) y un ruido n(t), se puede
reescribir como la suma de sus correlaciones.
B Conceptos de procesamiento de seijales de arreglos 16
Rxx = E[a(Θ)s(t)sH(t)aH(Θ)] + E[n(t)nH(t)], (16)
tras operarse y llevar el caso vector a(Θ) a una matriz A(Θ) de dimensiones M (número de
ángulos a escanear) x L (cantidad de elementos del arreglo) se obtiene
Rxx = ASAH + σ2
nI (17)
donde A contiene los vectores de dirección y la matriz S es una matriz diagonal que contiene
la correlación de la seijal de la fuente s(t), σ2n es la varianza del ruido n(t) e I es la matriz
identidad.
4). Muestreo espacial
De manera análoga a los sistemas digitales donde para recrear un seijal continua se debe
muestrear el fenómeno al menos al doble de la frecuencia más alta que se quiere reproducir
(Teorema de Nyquist), ocurre del mismo modo en el dominio del espacio, la distancia entre
elementos de un arreglo d debe ser menor que λ2
donde λ es la longitud de onda de la frecuencia
más alta a ubicar. Al igual que en el aliasing temporal, frecuencias más altas pueden aparecer
como lóbulos laterales en gráĄcos de direccionalidad sin que realmente exista una fuente
donde esta indica.
5). Algoritmos de Conformación de Haz
Los algoritmos aquí presentados han sido especialmente relevantes en la localización de fuentes
a lo largo de la historia y diferentes aplicaciones [14] y por su importancia se desarrollan en el
presente trabajo.
a) Sum and Delay
El algoritmo de Sum-and-delay o conformador de haz convencional (CB) asume que la
ponderación del Ąltro w es igual para cada receptor a lo largo del vector de dirección a(Θ)
La potencia de salida del arreglo, de 13 se puede escribir en término de muestras temporales
N como
P (w) =1N
N∑
n=1
♣y(tn)2♣ = wHRxxw (18)
B Conceptos de procesamiento de seijales de arreglos 17
por tanto, la potencia de salida dependiente del ángulo de escaneo Θ es
P (Θ) = a(Θ)Rxxa(Θ)H (19)
b) MVDR (Respuesta de Varianza Mínima sin Distorsión)
El método de Capon es una solución del conformador de haz convencional para satisfacer la
condición de mínima varianza sin distorsionar la potencia, es decir:
PMV DR = arg min(wHRxxw) (20)
Con la condición que wHa(Θ) = 1, la solución para los Ąltros con las restricciones anteriores
es
w =a(Θ)Rxx
a(Θ)Rxxa(Θ)H(21)
P (Θ) =1
a(Θ)Rxxa(Φ)H(22)
c) MUSIC (Clasificación de Múltiple Señal)
MUSIC es un algoritmo basado en el análisis en frecuencia que aprovecha la ortogonalidad
del subespacio de ruido con el de la seijal.
Su planteamiento teórico empieza con la matriz de correlación esperada partiendo desde la
ecuación 17 con la siguiente distribución
E[Rxx] = a(Θ)Rssa(Θ)H + σ2nI (23)
Por la ortogonalidad entre subespacios UnH
a(Θ) = 0 la potencia del algoritmo MUSIC es
P (Θ) =1
a(Θ)UnH
Una(Θ)H(24)
C Teoría de Métodos numéricos para la simulación del entorno real 18
C. Teoría de Métodos numéricos para la simulación del entorno real
Para la validación del procesamiento se requiere de un fundamento teórico que permita tener
los elementos mínimos necesarios de un sistema acústico cerrado completo, es decir, emisor,
receptor y medio de propagación que satisfaga la ecuación de onda.
1). Criterio de estabilidad de Courant-Friedrichs-Lewy
El criterio CFL describe la estabilidad condicional de un modelo computacional como una
función de la velocidad de propagación c y la velocidad propia dada por la resolución de la
rejilla espacial y temporal de la simulación. Este valor debe estar entre 0 y 1, entre más
cercano sea a cero, la solución tendrá un comportamiento más convergente, si por el contrario
es superior a 1 la solución será inestable y la simulación divergirá sin dar resultado conciso
[38].
ϵ = cdt
dx≤ 1, (25)
donde dt y dx son los valores de la resolución temporal y espacial, respectivamente. Esta
ecuación relaciona la velocidad del fenómeno con la velocidad posible en términos computa-
cionales (dx/dt), ¿cuantas posiciones en la rejilla debería viajar un valor en cierto tiempo
discretizado, para ser correctamente simulado?. Así, si la velocidad del fenómeno sobrepasa la
relación tiempo-espacio, la solución de la simulación con esos parámetros será incongruente,
si por el contrario es menor (asumiendo que el fenómeno es el mismo), signiĄca una rejilla de
espacio y tiempo con mayor resolución, implicando una simulación estable.
2). Método del espacio-k
El método del espacio-k pseudoespectral resuelve la ecuación de onda en medios heterogéneos
y homogéneos a través de las ecuaciones acopladas de primer orden en el dominio temporal:
conservación de momentum 26, conservación de masa 27 y la ecuación de estado termodinámica
28.
∂u
∂t= − 1
ρ0
∇p (26)
C Teoría de Métodos numéricos para la simulación del entorno real 19
∂ρ
∂t= −ρ0∇u − u∇ρ0 (27)
p = c02(ρ + d∇ρ0) (28)
aquí u y d son la velocidad de partícula y el desplazamiento respectivamente. En el dominio
espacial resuelve la derivada por el método pseudoespectral donde aprovechando la propiedad
de la transformada de Fourier
F¶∂nf(x)∂xn
♦ = (iω)nF (ω), (29)
se resuelve el lado derecho de la ecuación de onda homogénea de segundo orden
∂2p
∂t2= c2 ∂2p
∂x2(30)
V. DESARROLLO
En este capítulo se relata la implementación de la teoría de ubicación de fuentes a algoritmos
funcionales en Python, primero se da un preámbulo, el uso de la teoría sencilla de multilat-
eración donde se tienen solo relaciones geométricas de rayos rectos, luego se evidencia el paso
a los algoritmos de beamforming y con estos la necesidad de probarlos con una simulación
ondulatoria y en condiciones ideales. Teniendo los algoritmos probados con las seijales del
k-espacio se deben optimizar frecuencial y espacialmente en 3 diferentes arreglos, para esta
labor se muestran herramientas propias del procesamiento de arreglos tales como la respuesta
en frecuencia de arreglo o la función de respuesta del arreglo. Se muestra la medición en
campo realizada con los arreglos diseijados y los algoritmos hechos y por último se procesan y
analizan estos resultados
A. Evaluación preliminar del método de multilateración
Se realizaron pruebas previas con un algoritmo de multilateración usando las ecuaciones (9)
y (10) con audios hechos idénticos desfasados manualmente con respecto a una distancia
entre receptores deĄnida y comprobando que el ángulo dado por este fuese el correspondiente.
Usando la conĄguración y notación de la Ągura 7 se produjeron archivos de audio correspondi-
entes a diferentes ángulos. Este ejercicio permitió establecer un conocimiento empírico sobre
la resolución espacial y la relación de la frecuencia de muestreo en la seijal. Este método
es muy sensible con pequeijas distancias entre sensores y bajas frecuencias de muestreo con
respecto a la longitud de onda.
A Evaluación preliminar del método de multilateración 21
Fig. 7. Notación y esquema de uso del algoritmo de multilateración usado inicialmente, donde en rojose ve el centro geométrico del arreglo como origen coordenado para dar el ángulo de procedencia de lafuente S, además de un punto B’ que marca una distancia igual SB que SB’ separando la diferencia de
tiempos en AB’.
Con este esquema se encontró Θ (ángulo desde la horizontal 0 hasta el emisor) hallando la
pendiente que parte del punto (0,0) hasta S, ya que no se conoce la distancia, se encuentra un
valor de y unitario el cual permite calcular la pendiente m que a su vez contiene el valor de Θ
(ecuación 31). En la tabla I . se consignan los pasos para calcular el tiempo de retraso en
muestras necesario para tener un ángulo Θ dado con una distancia entre sensores de 1 metro,
velocidad del medio homogénea de 1500 m/s y con una frecuencia de muestreo de 12000 Hz.
Esto con la intención de analizar el comportamiento entre dichas variables teniendo presente
la discretización digital.
Se quiere realizar un análisis inverso del problema, esto es, conociendo el ángulo de llegada
calcular el retraso entre las seijales capturadas por dos elementos. Para esto se encuentran
las distancias entre cada hidrófono y la fuente, la resta de estos valores es la diferencia de
trayectos, este valor dividido entre la velocidad del sonido será el tiempo en el cual deberían
estar desfasados dos archivos de audio que al analizarlos con el algoritmo de multilateración
se obtenga el ángulo esperado.
En la tabla I . se evidencia que a pesar que el número resultante de la operación de encontrar
el tiempo en muestras es un decimal, un número de muestras racionales carece de sentido,
A Evaluación preliminar del método de multilateración 22
TABLA I . TIEMPO DE RETRASOS CALCULADOS PARA VERIFICAR EL FUNCIONAMIENTO DELA ECUACIÓN DE LA PARÁBOLA
Ángulo(°) Pendiente SA(m) SB(m) Diferencia(m) t(ms) t(muestras)0 0,00 1,50 0,50 1,00 0,66 8,00
10 0,18 1,51 0,53 0,98 0,65 7,8420 0,36 1,54 0,62 0,93 0,62 7,4030 0,58 1,61 0,76 0,84 0,56 6,7540 0,84 1,72 0,98 0,74 0,49 5,9450 1,19 1,92 1,29 0,62 0,41 4,9960 1,73 2,29 1,80 0,49 0,33 3,9170 2,75 3,13 2,79 0,34 0,23 2,7080 5,67 5,87 5,69 0,17 0,11 1,3890 Inf Inf Inf Inf Inf Inf
100 -5,67 5,87 5,69 0,17 0,11 1,38110 -2,75 3,13 2,79 0,34 0,23 2,70120 -1,73 2,29 1,80 0,49 0,33 3,91130 -1,19 1,92 1,29 0,62 0,41 4,99140 -0,84 1,72 0,98 0,74 0,49 5,94150 -0,58 1,61 0,76 0,84 0,56 6,75160 -0,36 1,54 0,62 0,93 0,62 7,40170 -0,18 1,51 0,53 0,98 0,65 7,84180 0,00 1,50 0,50 1,00 0,66 8,00190 0,18 1,51 0,53 0,98 0,65 7,84200 0,36 1,54 0,62 0,93 0,62 7,40210 0,58 1,61 0,76 0,84 0,56 6,75220 0,84 1,72 0,98 0,74 0,49 5,94230 1,19 1,92 1,29 0,62 0,41 4,99240 1,73 2,29 1,80 0,49 0,33 3,91250 2,75 3,13 2,79 0,34 0,23 2,70260 5,67 5,87 5,69 0,17 0,11 1,38270 -Inf -Inf -Inf -Inf -Inf -Inf280 -5,67 5,87 5,69 0,17 0,11 1,38290 -2,75 3,13 2,79 0,34 0,23 2,70300 -1,73 2,29 1,80 0,49 0,33 3,91310 -1,19 1,92 1,29 0,62 0,41 4,99320 -0,84 1,72 0,98 0,74 0,49 5,94330 -0,58 1,61 0,76 0,84 0,56 6,75340 -0,36 1,54 0,62 0,93 0,62 7,40350 -0,18 1,51 0,53 0,98 0,65 7,84360 0,00 1,50 0,50 1,00 0,66 8,00
B Desarrollo y evaluación de algoritmos por conformación de haz 23
por esta razón el algoritmo de multilateración es mucho más sensible a los tiempos, ya que
un tiempo corto en lo que tarda el frente de onda en alcanzar los 2 sensores signiĄca un
mismo valor entero (en este caso 10 y 20 grados equivaldrán a 7 muestras) y por lo tanto
una incapacidad de encontrar esa diferencia de ángulos, al menos a buenas resoluciones. La
ecuación base del algoritmo es entonces
y =
√
AB′2
4− x2
B + x2(4x2
B
AB′2− 1) (31)
La validación de este método se realizó procesando 2 seijales obtenidas desde el método de
espacio k con una fuente de 1000 Hz a 60° azimutal, la salida del algoritmo dio como resultado
68.9° es decir casi 10 grados de error. Su implementación se encuentra expuesta en el anexo 1.
B. Desarrollo y evaluación de algoritmos por conformación de haz
El problema de la conformación de haz en su forma básica está desarrollado bajo las premisas
de tener fuentes en condición de campo libre, es decir, libre de reĆexiones, que sean emisoras
de ondas planas que no se atenúen con la distancia, y que tanto la seijal como el ruido
gaussiano sea estacionario.
Con estas condiciones en mente se prueban los algoritmos con funciones de Green donde
la información de fase se encuentra en el vector de propagación de onda (15). En una
primera simulación se pretende observar el comportamiento de los conformadores de haz en
las condiciones ideales.
Se crearon los algoritmos de retraso-y-suma, mínima varianza y de seijal múltiple con lo
establecido en las ecuaciones del marco teórico (19), (22), (24), en el lenguaje de programación
Python (Anexo 1).
1). Simulación de ondas planas
Se crea entonces dentro del mismo algoritmo unas seijales de prueba de la forma ejkx+σ donde
en el vector de onda k se asigna una dirección de llegada en coordenadas esféricas.
La localización de una fuente a 60° azimutal y a 0° de elevación se pretende estimar con
un arreglo uniformemente lineal (ULA) de 11 elementos con el cero del arreglo en su centro
geométrico y cada elemento distanciados por 50 cm. Con este método de propagación, como
se observa en la Ągura 8 por medio de una gráĄca de patrón de haz (en la que un máximo
B Desarrollo y evaluación de algoritmos por conformación de haz 24
representa una alta potencia en la frecuencia de análisis en la dirección evaluada) se evidencia
el comportamiento típico de los 3 métodos: Retraso-y-suma 8(a), MVDR 8(b) y MUSIC
8(c), donde se evidencia una menor resolución en el clásico, mayor deĄnición en el método de
Capon y resolución absoluta en MUSIC. Se debe recordar que en su planteamiento teórico
tanto MVDR como MUSIC son algoritmos adaptativos en la medida en que sus Ąltros w
deben ser calculados a partir de su salida, dándoles mayor precisión y a su vez volviéndolos
más sensibles al ruido externo.
B Desarrollo y evaluación de algoritmos por conformación de haz 25
(a) Retraso y suma.0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
0
Potencia [dB]
��� �������������������������������
(b) Mínima Varianza.0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−160
−130
−100
−70
−40
−10
Potencia [dB]
������������� ��������
(c) MUSIC.
Fig. 8. Patrones polares para los 3 diferentes algoritmos con una señal arribando a 60°, sintetizada apartir de funciones de Green para monopolos.
C Simulación por métodos numéricos 26
C. Simulación por métodos numéricos
Para aproximar la situación del medio acuático y de las condiciones reales con fuentes esféricas
a las pruebas de los algoritmos, se usó el método pseudoespectral del espacio k por medio del
toolbox gratuito para MATLAB k-wave (ver licencia Anexo 3). En este se genera una rejilla
con resolución espacial de 0.1 metros y temporal de 13 µs, en la Ągura 10a se observa una
presencia de lóbulos secundarios de mayor tamaijo y una menor resolución en los conformadores
de haz adaptativos.
-10 -5 0 5 10
y [m]
-25
-20
-15
-10
-5
0
5
10
15
20
x [
m]
Fig. 9. Ilustración del campo sonoro en el momento final de una simulación por espacio-k y con unaduración de 0.1 segundos, (en rojo una fuente puntual y en azul una serie de receptores).
El campo sonoro en la simulación con una fuente a 10 metros del centro de un arreglo tipo ULA
de 11 elementos producida por el paquete de k-wave se puede apreciar en la Ągura 9. Debido
al frente de onda esférico, el cual para el vector de dirección no es completamente coherente,
las respuestas direccionales en coordenadas polares de las Ąguras 8 y 10 son ligeramente
distintas en su resolución pero validan que el ángulo de arribo es el mismo, en este caso 60°.
C Simulación por métodos numéricos 27
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
0
Potencia [dB]
������������ ����������� ���������
(a) Retraso y suma.0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
0
Potencia [dB]
��� �������������������������������
(b) Mínima Varianza.0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
Potencia [dB]
������������� ��������
(c) MUSIC.
Fig. 10. Patrones polares para los diferentes algoritmos con una señal arribando a -30°, adquirida desdeuna simulación de espacio-k en campo libre
Las seijales resultantes de la simulación numérica, así como las resultantes de una medición,
son seijales reales y ya que los algoritmos funcionan con seijales complejas se debe implementar
C Simulación por métodos numéricos 28
una transformada de Hilbert para obtener la seijal analítica (por deĄnición compleja) de la
real conocida.
1). Análisis de dispersión númerica en el tiempo evaluando distancias
En métodos pseudespectrales se soluciona la dispersividad del método de las diferencias Ąnitas
aplicando la propiedad de la derivación de la transformada de Fourier en el termino espacial
de la ecuación diferencial de Helmholtz [39], la solución de las ecuaciones acopladas de primer
orden del método del espacio-k permiten, en teoría, tener amplios tiempos de simulación sin
dispersión numérica, para veriĄcar que fuese útil en el rango de las distancias a probar en
campo se realizó la siguiente prueba. Se envió una seijal desde un extremo de la rejilla a lo
largo de un espacio de simulación de 150 por 50 metros a resolución de 0.1 metros y CFL de
0.2, sin cambio de interfaz en la frontera, de allí se capturo la seijal en diferentes puntos de
su viaje temporal (5,15,45 y 100 metros) (Ągura 11). En caso de existir dispersión numérica
importante se debe evidenciar como un rizado al principio de la onda que aumente a un
tamaijo comparable a la amplitud de la onda con aumentar el tiempo, cosa que no ocurrió en
este lapso (no se descarta que pueda estar ocurriendo, pero no es preocupante a la escala de
trabajo de 100 metros).
D Diseijo de arreglos y aĄnación 29
0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000
Tiempo (muestras)
-0.06
-0.04
-0.02
0
0.02
0.04
0.06A
mplit
ud
Receptor a 5 m
(a) 5 metros.
0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000
Tiempo (muestras)
-0.04
-0.03
-0.02
-0.01
0
0.01
0.02
0.03
0.04
Am
plit
ud
Receptor a 15 m
(b) 15 metros.
0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000
Tiempo (muestras)
-0.02
-0.015
-0.01
-0.005
0
0.005
0.01
0.015
0.02
Am
plit
ud
Receptor a 45 m
(c) 45 metros.
0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000
Tiempo (muestras)
-0.015
-0.01
-0.005
0
0.005
0.01
0.015
Am
plit
ud
Receptor a 100 m
(d) 100 metros.
Fig. 11. Señales en el tiempo recibidas por cada receptor a distancias dadas del emisor, truncadas en5000 muestras con la intención de observar el rizado al principio de cada una
D. Diseño de arreglos y afinación
La conformación de haz es un método de estimación espacial en el dominio de la frecuencia,
por este motivo se debe tener una frecuencia de interés, que en el caso del presente trabajo es
de 1000 Hz. Para el diseijo de cualquier arreglo se mantiene la regla básica de que la distancia
D Diseijo de arreglos y aĄnación 30
mínima entre receptores sea de al menos media longitud de onda de la frecuencia de interés
más alta.
d ≤ λ
2, (32)
donde d es la distancia entre hidrófonos y λ la longitud de onda de la frecuencia estudiada,
para el caso de una velocidad del sonido homogénea de aproximadamente 1500 m/s la distancia
buscada para el arreglo es de 0.75 m. La resolución espacial de un arreglo en función con
la frecuencia de la fuente se puede evidenciar si se evalúa la matriz de dirección para cada
frecuencia y cada ángulo relativo (siendo cero el AOA de la aplicación) en una gráĄca llamada:
respuesta frecuencial del arreglo. (Este proceso se encuentra en el Anexo 1).
Para visualizar este comportamiento dependiente de la frecuencia se ha usado en la bibliografía
también gráĄcos de función de respuesta de arreglo [40], el cual es un análisis de energía en
función del número de onda k, esto es en últimas, una forma de ver la resolución espacial
para la frecuencia a la que se acote. A manera de ejemplo se observan ambas gráĄcas para
un ULA de 28 elementos aĄnado a 1kHz, se prueba corriendo simulaciones donde arribaran
dos seijales diferentes, una por vez, de 1000 y de 9000 Hz respectivamente desde el frente
del arreglo, en la referencia de este trabajo 0°, en la Ągura 12 se muestra su patrón polar de
recepción. Se puede observar como a pesar de ambas seijales provenir de la misma fuente, en
el momento de procesar una frecuencia superior a la de su rango útil se presentan lóbulos
laterales de magnitud similar al principal.
D Diseijo de arreglos y aĄnación 31
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
0
Potencia [dB]
������������ ����������� ���������
(a) análisis para 1kHz. (b) análisis para 9kHz.
Fig. 12. Patrón polar de una fuente sonora arribando desde al frente emitiendo ruido blanco y analizadopara 1 y 9 kHz en el algoritmo de CB demostrando lóbulos laterales o alias espaciales para 9kHz donde
la separación entre hidrófonos no cumple con la ecuación básica de diseño.
La Respuesta en frecuencia del arreglo permite ver la resolución del arreglo por frecuencias,
con esto podemos inferir para qué frecuencias es útil, es decir, para cuales está aĄnado, en
la Ągura 13 vemos que para frecuencias bajas la potencia es alta alrededor de todos los
ángulos, esto imposibilita la estimación de fuentes, esto se debe a que en longitudes de
onda lo suĄcientemente grandes el arreglo actúa como un solo receptor, de estas frecuencias
hacia arriba, el comportamiento del arreglo tiene un cierto rango con buena resolución y sin
ambigüedad hasta que aparecen lóbulos de la misma potencia que el principal, lo que impide
conocer con certeza cuál es la dirección correspondiente a la fuente y cuál es un alias. (El
código con el que se obtienen estas gráĄcas se muestra en el anexo 1).
D Diseijo de arreglos y aĄnación 32
Fig. 13. Respuesta en frecuencia del arreglo de 28 elementos mostrando su resolución angular y obviandola ambigüedad delante-trasera acotando de -90° a 90°. En esta se ve la aparición de exactamente 9 lóbulos
secundarios como los observados en el patrón de haz polar en 9kHz debido a su longitud de onda.
La ARF (Función de respuesta del arreglo) está deĄnida como:
A(k) = ♣ 1N
N∑
i=1
ej2π(k)ri♣2, (33)
donde la función A depende del vector de onda de la energía que arriba y de las posiciones de
los hidrófonos rj, Para el ejemplo anterior las ARFŠs en 1 y 9 kHz se ven en la siguiente.
D Diseijo de arreglos y aĄnación 33
−4000 −3000 −2000 −1000 0 1000 2000 3000 4000k [rads/m]
−4000
−3000
−2000
−1000
0
1000
2000
3000
4000
k [r
ads/
m]
�����������������������������
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
� �����
(a) Respuesta para 1kHz.
−30000 −20000 −10000 0 10000 20000 30000k [rads/m]
−30000
−20000
−10000
0
10000
20000
30000
k [r
ads/
m]
�����������������������������
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
� �����
(b) Respuesta para 9kHz.
Fig. 14. Funciones de respuesta del arreglo lineal de 10 elementos probados en 2 frecuencias predominantesdiferentes donde se anticipa que solo puede discriminar el ángulo azimutal, ya que es una línea vertical a
lo largo del número de onda k horizontal y las posiciones relativas de los alias en (b).
Las gráĄcas de este tipo son correspondientes entre sí, como ya se ha visto, y son altamente
útiles a la hora del diseijo de un arreglo, idealmente un arreglo con buena resolución espacial
tanto en elevación como azimut debe lucir como un punto de máxima potencia en el centro
del ARF, una función de Dirac (15), en un caso de un arreglo esférico de 36 elementos con un
radio de 0.5 m, estas condiciones se satisfacen.
−15000 −10000 −5000 0 5000 10000 15000k [rads/m]
−15000
−10000
−5000
0
5000
10000
15000
k [r
ads/
m]
�����������������������������
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
� �����
Fig. 15. ARF de un arreglo esférico afinado en 4000 Hz, mostrado como comportamiento ideal para lalocalización de fuentes.
Los arreglos a implementar son de 3 tipos de geometrías básicas, lineales o de una dimensión,
planos o de 2 dimensiones y volumétrico o de 3 dimensiones. Se busca una apertura no muy
superior a la inter-separación entre elementos de 0.75 metros el cual aĄnando con la gráĄca
E Implementación práctica 34
de respuesta frecuencial se usó distancia entre elementos de 0.8 metros en el ULA, de 1 metro
en el rectangular y el volumétrico. Sus respuestas se encuentran consignadas en el anexo 2.
E. Implementación práctica
1). Protocolo de medición
Para realizar las pruebas se elige la piscina de la Universidad de San Buenaventura sede
Bello, por sus amplias dimensiones y sus condiciones como campo experimental subacuático
disponible. Se propone una distribución del punto de medición lo más controlada posible, sin
ruidos externos como el de la motobomba o el de nadadores esporádicos. Se sabe de antemano
que la piscina no proporcionará un campo acústico libre y que por el contrario el baldosín en
sus superĄcies creará importantes reĆexiones, razón por la que se decide ubicar el arreglo en
el centro de la piscina y no cerca al fondo o a la superĄcie, se busca evaluar el resultado de
los algoritmos implementados en diferentes arreglos y diferentes ubicaciones de fuente. Las
propuestas son las siguientes
• Mantener el centro geométrico del arreglo en el centro de la piscina.
• Realizar mediciones por arreglo a una distancia de 2 metros así;
– 2 en ángulos simétricos de 120° y -120° con elevación constante para evaluar la
ambigüedad frente-trasera.
– 1 en un ángulo cerrado de 15° en azimutal y de -30° de elevación
– 1 en un ángulo de 45° donde debería ser óptimo.
Se elige una distancia aproximada a 2 metros para evitar perder la seijal por la absorción
del medio y optimizar el SNR, dejando una conĄguración como la mostrada en la Ągura 16
donde el arreglo bajo prueba es un ULA y los otros 2 se muestran en puntos aleatorios para
propósitos de visualización de sus dimensiones.
E Implementación práctica 35
Fig. 16. Esquema de la ubicación de elementos propuestas en el protocolo de medición, mostrando elULA en posición junto con el UCA y el arreglo volumétrico en posiciones aleatorias.
La fuente acústica a usar es un proyector resultado de trabajos de grado anteriores en la
universidad, un emisor piezoeléctrico encapsulado en silicona con una resonancia de 25kHz que
ha demostrado tener una sensibilidad aceptable para frecuencias más bajas en aplicaciones
subacuáticas (frecuencias audibles, como en este caso). Dado que los análisis de densidades
espectrales de embarcaciones tipo Go-fast en el proyecto SIDACAM evidencian frecuencias
fundamentales alrededor de 1000 Hz, se propone mantener un tono puro constante en esta
frecuencia a una amplitud máxima.
2). Montaje y medición
La medición se llevó a cabo el día viernes 3 de noviembre del aijo en curso desde las 7:00 AM
hasta las 11:00 PM en las instalaciones de la piscina Fray Pablo Castillo Nova en la sede de
Bello de la universidad de San Buenaventura, se logra obtener el espacio sin nadadores y se
puede apagar el motor de la piscina, el clima es seco y caluroso en la mayor parte del tiempo.
El Ćujo de seijal planeado se puede ver en la Ągura 17, donde se lleva una seijal desde
el ordenador hasta el proyector piezoeléctrico por medio de la interfaz de audio Focusrite
Scarlett 18i8, esta misma seijal se recibe en los hidrófonos Atlas P-200 y nuevamente adquirido
digitalmente en el computador, para su posterior procesamiento.
E Implementación práctica 36
Fig. 17. Diagrama de flujo de señal para el montaje experimental del sistema electroacústico cerrado(azul: transmisión acústica, negro: conexión eléctrica)
En el software REAPER (licencia de prueba Anexo 3) se creó una seijal de prueba sinusoidal
de 1000 Hz y un ruido blanco de 12 segundos de duración a una tasa de muestreo de 44100
Hz, su contenido frecuencial se muestra en la Ągura 18 desde un analizador nativo del DAW.
En la parte estructural se proponen estructuras fácilmente armables y resistentes, ante estas
necesidades se buscan tubos de PVC con uniones móviles para con una cantidad reducida de
estos hacer las distribuciones necesarias.
(a) Espectro 1kHz. (b) Espectro ruido blanco
Fig. 18. Contenido frecuencial de las dos señales de prueba con un tamaño de FFT de 16384 con ventanaBlackman-Harris
Se ensambló una estación de trabajo teniendo los elementos del Ćujo de seijal, los cables de
los hidrófonos llegan a los 4 canales preampliĄcados de la interfaz, por medio de extensiones y
conversores a terminales XLR cubriendo con cinta y papel wrap en cada juntura para evitar
Ąltraciones y mal funcionamiento, y el cable las terminales descubiertas del emisor se unen a
conversores XLR-TRS para salir del DAW por una salida monitor (Ągura 19)
E Implementación práctica 37
Fig. 19. Conexiones físicas a la interfaz de audio, nótese el tipo de terminales a los que debe llegar cadaelemento.
Se disponen los hidrófonos y el emisor con conexiones aisladas de hasta 25 metros para cada
uno y estructuras de anclaje estilo boya compuesta de masas de 2kg y Ćotadores para niijos.
Cada arreglo armado en seco se observa en las Ąguras 20 y 21
(a) Arreglo Lineal. (b) Romboide (c) Piramidal
Fig. 20. Arreglos de hidrófonos acoplados a estructuras de PVC con sistema de boyas armados en seco
E Implementación práctica 38
Fig. 21. Proyector unido al dispositivo de anclaje y a un brazo de PVC pensado para direccionarlo haciael arreglo.
Una vez en el agua, se ubicó el emisor a una distancia aproximada de 2 metros y se registraron
las salidas del arreglo para las 2 seijales de excitación para cada ángulo de prueba en REAPER.
El posicionamiento, en términos de profundidad, manteniendo la dirección de la fuente se
diĄculta debido al manejo de su estructura y su poca estabilidad. Cada arreglo Ćotando y en
quietud se observa en la Ągura 22, se encuentra resaltada la forma del arreglo pues su imagen
desde la superĄcie no es muy clara.
(a) Arreglo Lineal. (b) Romboide (c) Piramidal
Fig. 22. Estructura de hidrófonos en el agua a flote y estáticos, ubicados cerca al centro de la piscinabuscando condición de campo libre.
E Implementación práctica 39
La conexión en los hidrófonos P200 ha sido un punto crítico, fallas en esta conllevan a un
incremento de su ruido microfónico propio y así evitando su correcto funcionamiento. En el
caso del hidrófono 3 la conexión falló durante toda la prueba del arreglo lineal, sin embargo, al
realizar el cambio de arreglo su conexión mejoro notablemente. A pesar de tener un nivel de
seijal lo suĄcientemente bajo como para sospechar de su desconexión los hidrófonos siguieron
adquiriendo data pero a un nivel comparable con el ruido de piso eléctrico por esto se le
realizó un tratamiento restaurativo a estas seijales (hidrófono 4 en todas las mediciones e
hidrófono 3 en la primera), basado en substracción de ruido y ecualización de fase lineal. La
seijal en el dominio de la frecuencia para una de estas capturas insuĄcientes y su restauración
se observan en la Ągura 23 donde sus espectrogramas se ciijen a las seijales originales de una
mejor manera.
(a) Captura insuficiente (b) Audio restaurado
Fig. 23. Espectro de la primer prueba con el hidrófono 3 donde sus malos contactos para la conexiónprovoca una bajísima señal grabada y procesada con cancelación de ruido y ecualización
3). Procesamiento de las señales
Usando los audios restaurados se implementaron las grabaciones en el algoritmo, los resultados
obtenidos son comparados con los esperados por simulación, del primer arreglo donde se
tenían prácticamente solo 2 hidrófonos no hubo conformación de haz coherente, la Ągura 24
muestra este comportamiento que fue repetitivo en cada ángulo de la primera prueba (Anexo
2).
E Implementación práctica 40
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
0
Potencia [dB]
������������ ����������� ���������
(a) Retraso y suma.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
0
Potencia [dB]
��� �������������������������������
(b) Capon
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
Potencia [dB]
������������� ��������
(c) MUSIC
Fig. 24. Resultado del procesamiento de las señales correspondientes al arreglo lineal para el ángulo dearribo de -75° en los 3 algoritmos de estimación de procedencia (a,b y c), el ángulo esperado se ve en
rojo punteado.
En el URA el resultado fue aproximado al esperado para ángulos abiertos, sin embargo, su
resolución es baja y presenta ambigüedad lateral.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−10
−5
0
Potencia [dB]
������������ ����������� ���������
(a) Retraso y suma.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−10
−5
0
Potencia [dB]
��� �������������������������������
(b) Capon
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−10
−5Potencia [dB]
������������� ��������
(c) MUSIC
Fig. 25. Resultado del procesamiento de las señales correspondientes al arreglo rectangular para el ángulode arribo de -75° en los 3 algoritmos de estimación de procedencia (a,b y c), el ángulo esperado se ve en
rojo punteado.
4). Causas de error
Se deben describir posibles causantes de error en los resultados obtenidos de la medición
basado en su inĆuencia teórica en la propagación sonora, entre las más evidentes: brisa sobre
E Implementación práctica 41
la superĄcie como fuente de ruido incoherente importante, ReĆexiones en la frontera del
cambio de medio agua-aire y las conexiones de los hidrófonos.
Se debe recordar que en la teoría del beamformer ideal propone receptores idénticos que
solo dependan del Ąltro w si un Ąltro externo (procesamiento con Ąltros no lineales o una
respuesta en sensibilidad y frecuencial atípicas como en este caso) es aplicado a solo algunos
de los sensores, el algoritmo funcionará incorrectamente.
5). Análisis del comportamiento de los algoritmos de conformación de haz
Es claro que el algoritmo clásico de retraso y suma tiene la mayor cantidad de lóbulos
secundarios y a su vez la resolución espacial más baja, además de un rendimiento menor en
las pruebas de tiempo de ejecución (Tabla II .). En condiciones controladas con las seijales
obtenidas por simulación por el método del espacio k este es el menos deseable. Capon y
MUSIC son métodos adaptativos los cuales dependen de su salida para procesar por tanto
su resolución aumenta, sin embargo, en entornos de bajo SNR esta ventaja juega en contra
volviéndolos más sensibles frente a los cambios aleatorios de las condiciones externas, que por
el carácter adaptativo del algoritmo afectan su salida negativamente, de los dos métodos el
MUSIC se ve más afectado con respecto a su resolución ideal con la simulación por ondas
planas donde su ubicación era casi puntual, el algoritmo de Capon demuestra ser más robusto
conĄrmando lo estipulado en la literatura.
TABLA II . TIEMPOS DE EJECUCIÓN DE CADA ALGORITMO CON 5 AUDIOS DIFERENTES,RESULTADO PROMEDIADO ENTRE 3 EJECUCIONES OBTENIENDO UN COMPORTAMIENTO
TÍPICO
Duración del audio (muestras)Tiempo de ejecución del algoritmo (ms)
Retraso y suma MVDR MUSIC1554160 53.2 42.2 46.51554160 44.8 36.5 36.51554160 60.1 33.8 33,71903856 62.6 38.4 39.6815850 52.6 35.4 35.3
6). Trabajo Futuro
Los algoritmos entregables cuentan con adaptación para elevación y azimut cuyas combi-
naciones no fueron examinadas en la prueba experimental del presente trabajo, además un
prototipo de software con análisis de la estimación de dirección de llegada de fuentes acústicas
E Implementación práctica 42
subacuáticas en tiempo real, es el siguiente paso lógico para concretar una aplicación naval
tangible. Dentro del estudio del procesamiento de seijales con arreglos es recomendable que
se oriente el método de conformación de haz con campo emparejado (Matched Field)
VI. CONCLUSIONES
• El comportamiento del algoritmo en Python es coherente con los principios teóricos
del procesamiento de arreglos para la aplicación especiĄca de conformación de haz, en
simulación de monopolos y a la hora de usar seijales adquiridas por métodos numéricos
obtiene la ubicación de la fuente simulada, el hecho de realizar pruebas bajo diferentes
maneras de obtener seijales y algoritmos, prueba que bajo condiciones mínimas de
receptores similares el método será lo suĄcientemente robusto para trabajar bien en
campo.
• A pesar que MUSIC demostró siempre tener mayor resolución en la simulación por
mono-polos a la hora de tener fuentes y entornos más reales es el que peor se comporta
a causa de su misma sensibilidad y su carácter adaptativo.
• A partir del montaje experimental se puede evidenciar que los resultados obtenidos
no son los esperados, esto puede deberse a múltiples condiciones adversas; desde ruido
microfónico, cables en mal estado, condiciones ambientales en la superĄcie de la piscina,
el aparentemente bajo coeĄciente de absorción del baldosín que puede aumentar el
número de fuentes aparentes y sobre excitar el arreglo.
• Desde el procesamiento dado a los datos se puede concluir que se modiĄca la posición
de la fuente encontrada especialmente si se cambia la respuesta en fase de las seijales
arribando, se debe ser cuidadoso a la hora de modiĄcar la respuesta frecuencial o o
aplicar efector externos antes del procesamiento del arreglo.
• Se evidencia que entre algoritmos, los resultados de la medición son coherentes, es decir,
muestran la misma ubicación de la fuente, con las ventajas y desventajas propias de
cada método. En las Ąguras 24 y 25 los algoritmos solucionan la ubicación a la misma
dirección, en el los arreglos lineales no muestra la posición real, aunque todos apuntan
a -10°.
REFERENCIAS
[1] M. S. Brandstein, ŞMicrophone Arrays: Signal Processing Techniques and Applications,Ť
IEEE Signal Processing Magazine, vol. 17, no. 2, pp. 18, 398, 2000.
[2] T. Alhmiedat, A. A. Taleb, and M. Bsoul, ŞA Study on Threats Detection and Tracking
Systems for Military Applications using WSNs,Ť International Journal of Computer
Applications, vol. 40, no. 15, pp. 975Ű1087, 2012.
[3] H. Krim and M. Viberg, ŞTwo Decades of Array Signal Processing Research,Ť IEEE
Trans. Signal Processing Magazine, pp. 67Ű94, 1996.
[4] C. F. Scola and M. D. B. Ortega, ŞDirection of arrival estimation Ű A two microphones
approach,Ť MasterŠs thesis, Blekinge Institute of Technology, Department of Signal
Processing, Blekinge, 2010.
[5] H. Chen and J. Zhao, ŞOn locating low altitude moving targets using a planar acoustic
sensor array,Ť Applied Acoustics, vol. 64, no. 11, pp. 1087Ű1101, 2003.
[6] B. D. Van Veen and K. M. Buckley, ŞBeamforming: a versatile approach to spatial
Ąltering,Ť ASSP Magazine, IEEE, vol. 5, no. 2, pp. 4Ű24, 1988.
[7] M. Mizumachi and M. Origuchi, ŞAdvanced delay-and-sum beamformer with deep neural
network,Ť in 22nd International Congress on Acoustics (ICA), (Buenos Aires), 2016.
[8] S. Gannot and I. Cohen, ŞAdaptive Beamforming and PostĄtering,Ť in Springer Handbook
of Speech Processing (J. Benesty and Y. Huang, eds.), ch. 47, pp. 945Ű975, Springer-Verlag
Berlin Heidelberg, 2007.
[9] M. S. Bartlett, ŞPeriodogram Analysis and Continuous Spectra,Ť Biometrika, vol. 37,
no. 1, pp. 1Ű16, 1950.
[10] J. Capon, ŞHigh-resolution frequency-wavenumber spectrum analysis,Ť vol. 57, no. 8,
pp. 1408Ű1418, 1969.
[11] S. Affes, S. Gazor, and Y. Grenier, ŞRobust adaptive beamforming via target tracking,Ť
IEEE Trans. Signal Processing, vol. 44, no. 6, pp. 1589Ű1593, 1996.
[12] V. F. Pisarenko, ŞThe Retrieval of Harmonics from a Covariance Function,Ť Geophysical
Journal of the Royal Astronomical Society, vol. 33, no. 3, pp. 347Ű366, 1973.
REFERENCIAS 45
[13] R. Schmidt, ŞMultiple emitter location and signal parameter estimation,Ť IEEE Trans-
actions on Antennas and Propagation, vol. 34, no. 3, pp. 276Ű280, 1986.
[14] Y. Khmou, S. SaĄ, and M. Frikel, ŞComparative Study between Several Direction of
Arrival Estimation Methods,Ť Journal of Telecommunication and Information Technology,
National Institute of Telecommunications, Warsaw, no. 1, pp. 41Ű48, 2014.
[15] B. Xerri, J. F. Cavassilas, and B. Borloz, ŞPassive tracking in underwater acoustic,Ť
Signal Processing, vol. 82, no. 8, pp. 1067Ű1085, 2002.
[16] X. Wang, S. Khazaie, L. Margheri, and P. Sagaut, ŞShallow water sound source localization
using the iterative beamforming method in an image framework,Ť Journal of Sound and
Vibration, vol. 395, 2017.
[17] L. An and L. Chen, ŞUnderwater acoustic passive localization base on multipath arrival
structure,Ť in Internoise 2014, (Melbourne), pp. 1Ű9, 2014.
[18] R. P. Morrissey, J. Ward, N. DiMarzio, S. Jarvis, and D. J. Moretti, ŞPassive acoustic
detection and localization of sperm whales (Physeter macrocephalus) in the tongue of
the ocean,Ť Applied Acoustics, vol. 67, no. 11-12, pp. 1091Ű1105, 2006.
[19] E. J. Tucholski, ŞBeam Pattern Function for Two Element Array.Ť https://www.usna.edu/
Users/physics/ejtuchol/documents/SP411/Chapter13.pdf, United States Naval Academy
(USNA), 2006.
[20] E. K. Skarsoulis, A. Frantzis, and M. Kalogerakis, ŞPassive localization of pulsed sound
sources with a 2-hydrophone array,Ť in Proceedings of the Seventh European Conference
on Underwater Acoustics, (Delft), pp. 1Ű6, 2004.
[21] J. Valente, Real-Time Passive Acoustic Tracking of Underwater Vehicles. Dissertation
thesis, Universidade do Porto, 2016.
[22] L. Houégnigan, S. Zaugg, M. Van Der Schaar, and M. André, ŞA 3-D real-time algorithm
based on array processing fo the localization of cetaceans,Ť tech. rep., Universitat
Politècnica de Catalunya, Laboratori dŠAplicacions Bioacústiques, Vilanova i la Geltrú,
2010.
[23] P. Giraudet and H. Glotin, ŞReal-time 3D tracking of whales by echo-robust precise
TDOA estimates with a widely-spaced hydrophone array,Ť Applied Acoustics, vol. 67,
no. 11-12, pp. 1106Ű1117, 2006.
REFERENCIAS 46
[24] G. R. Minassian, ŞApplication ot high resolution methods to underwater data processing,Ť
in International Symposium on Hydroacustics and Ultrasonics, vol. 13, (Gdańsk-Jurata),
pp. 209Ű212, 1997.
[25] H.-E. de Bree, E. Tijs, and T. Akal, ŞThe HydroĆown : MEMS-Based Underwater
Acoustical Particle Velocity Sensor Results of lab tests and sea trials,Ť Ecua 2010,
pp. 1Ű6, 2010.
[26] P. Felisberto, P. Santos, and Ś. M. Jesus, ŞTracking source azimuth using a single
vector sensor,Ť Proceedings - 4th International Conference on Sensor Technologies and
Applications, SENSORCOMM 2010, pp. 416Ű421, 2010.
[27] D. M. M. Gomez, F. M. Fazi, and M. Shin, ŞEvaluation of ambisonics decoding meth-
ods with experimental measurements,Ť EAA Joint Symposium on Auralization and
Ambisonics, no. April, pp. 3Ű5, 2014.
[28] R. P. Hodges, Underwater Acoustics, Analysis, design and performance of SONAR. New
Delhi: John Wiley and Sons, Ltd., 1st ed., 2010.
[29] K. T. Wong and M. D. Zoltowski, ŞClosed-form underwater acoustic direction-Ąnding
with arbitrarily spaced vector hydrophones at unknown locations,Ť IEEE Journal of
Oceanic Engineering, vol. 22, no. 4, pp. 649Ű658, 1997.
[30] L. L. Beranek, Acoustics. Cambridge: Acoustical Socieety of America, 1993 ed., 1954.
[31] L. E. Kinsler, A. R. Frey, A. B. Coppens, and J. V. Sanders, Fundamentals of Acoustics.
John Wiley and Sons, Ltd., 4th ed., 2000.
[32] J. Aparicio, E. García, A. Jiménez, and F. Álvarez, ŞModelos de Propagación de Seijales
Acústicas en Entornos Subacuáticos (I),Ť tech. rep., Universidad de Alcalá, Departamento
de Electrónica, Madrid, 2010.
[33] J. G. Proakis and D. G. Monolakis, Digital signal processing: Principles, algorithms, and
applications. New Jersey: Prentice-Hall, Inc, 3rd ed., 1996.
[34] D. Dalskov, Locating acoustic sources with multilateration applied to stationary and
moving sources. PhD thesis, Aalborg University, Acoustics and audio technology, Aalborg,
2014.
[35] C. Klungmontri, I. Nilkhamhang, W. Covanich, and T. Isshiki, ŞUnderwater positioning
systems for underwater robots using trilateration algorithm,Ť in 2015 6th International
Conference on Information and Communication Technology for Embedded Systems, IC-
ICTES 2015, 2015.
REFERENCIAS 47
[36] K. Kaouri, ŞLeft-right ambiguity resolution of a towed array sonar,Ť MasterŠs thesis,
University of Oxford, Somerville College, Oxford, 2010.
[37] L. C. Godara, ŞApplication of antenna arrays to mobile communications, part II: Beam-
forming and direction-of-arrival considerations,Ť Proceedings of the IEEE, vol. 85, no. 8,
pp. 1195Ű1245, 1997.
[38] H. Igel, ŞComputational seismology: A practical introduction,Ť ch. 5, München: Oxford
University Press, 2016.
[39] B. Treeby, B. Cox, and J. Jaros, Şk-Wave A MATLAB toolbox for the time domain
simulation of acoustic wave Ąeld, User Manual.Ť 2012. [Online]. Disponible: http://www.
k-wave.org/manual/.
[40] S. Rost and C. Thomas, ŞImproving seismic resolution through array processing tech-
niques,Ť Surveys in Geophysics, vol. 30, no. 4-5, pp. 271Ű299, 2009.
Anexo 1
Algoritmo para la estimación de dirección de arribo de fuentes
#%%
#Este script realiza la estimación de angulo de llegada para un arreglo
#determinado en coordenadas cartesianas en metros y entrega gráficas de patrón
#de haz con los algoritmos basados en frecuencia de Barlett, Capon y MUSIC
#
#ENTRADAS
#
#xPos = vector que contiene la posición en x de cada punto del arreglo
#yPos = vector que contiene la posición en y de cada punto del arreglo
#zPos = vector que contiene la posición en z de cada punto del arreglo
#c = velocidad del sonido homogénea en el medio
#f = frecuencia de análisis de las fuentes
#SALIDAS
#
#Dirección de llegada (gráficas polares y de patrón de haz)
#Patrón de arreglo
#
#%% Cargar librerías
import numpy as np
import scipy as sp
import matplotlib.pyplot as plt
import time
from scipy.signal import hilbert
from scipy.io import wavfile
from obspy.imaging.cm import obspy_sequential
from obspy.signal.array_analysis import array_transff_wavenumber
#%% Cargar señales y propiedades del arreglo
# Posiciones del arreglo
49
#varios arreglos son brindados comentados
#xPos = np.arange(-10,10+0.75,0.75) # x [m] separación de 0.2m
#yPos = np.zeros(len(xPos)) # y [m]
#zPos = np.zeros(len(xPos)) # z [m]
#lineal de 4 elementos
xPos = np.arange(-1.2,1.2+0.8,0.8)
yPos = np.zeros(len(xPos));
zPos = np.zeros(len(xPos));
#Rombo
#nElements = 4
#radius = 0.8
#
#xPos = np.zeros(nElements)
#yPos = np.zeros(nElements)
#for x in range(0,nElements):
# xPos[x] = np.cos(2*np.pi/nElements*x)*radius
# yPos[x] = np.sin(2*np.pi/nElements*x)*radius
#zPos = np.zeros(len(xPos))
#%Tetraedro
#d = 1.1; #% lado del tetraedro [m]
#h = round(np.sqrt(3)*d/2,1); #% altura triangulo [m]
#H = round(np.sqrt(6)*d/3,1); #% altura del tetraedro [m]
#xPos = [ 0, 0, -h, -h/3];
#yPos = [-d/2, d/2, 0, 0 ];
#zPos = [ 0, 0, 0, H ];
##circular
#nElements = 9
#radius = 1.2
#xPos = np.zeros(nElements)
#yPos = np.zeros(nElements)
#for x in range(0,nElements):
50
# xPos[x] = np.cos(2*np.pi/nElements*x)*radius
# yPos[x] = np.sin(2*np.pi/nElements*x)*radius
#zPos = np.zeros(len(xPos))
#esfera discretizada a 5 columnas (creada con la función sphere(5) de Matlab)
#xPos = np.array([0, -2.938926e-01, -4.755283e-01, -4.755283e-01, -2.938926e-01,
# 0, 0, -9.081782e-02, -1.469463e-01, -1.469463e-01, -9.081782e-02,
# 0, 0, 2.377641e-01, 3.847104e-01, 3.847104e-01, 2.377641e-01,
# 0, 0, 2.377641e-01, 3.847104e-01, 3.847104e-01, 2.377641e-01,
# 0, 0, -9.081782e-02, -1.469463e-01, -1.469463e-01, -9.081782e-02,
# 0, 0, -2.938926e-01, -4.755283e-01, -4.755283e-01, -2.938926e-01,
# 0])
#
#yPos = np.array([0, 0, 0, 0, 0, 0, 0, -2.795085e-01, -4.522542e-01, -4.522542e-01,
# -2.795085e-01, 0, 0, -1.727458e-01, -2.795085e-01, -2.795085e-01,
# -1.727458e-01, 0, 0, 1.727458e-01, 2.795085e-01, 2.795085e-01,
# 1.727458e-01, 0, 0, 2.795085e-01, 4.522542e-01, 4.522542e-01,
# 2.795085e-01, 0, 0, 0, 0, 0, 0, 0])
#
#zPos = np.array([-5.000000e-01, -4.045085e-01, -1.545085e-01, 1.545085e-01,
# 4.045085e-01, 5.000000e-01, -5.000000e-01, -4.045085e-01,
# -1.545085e-01, 1.545085e-01, 4.045085e-01, 5.000000e-01,
# -5.000000e-01, -4.045085e-01, -1.545085e-01, 1.545085e-01,
# 4.045085e-01, 5.000000e-01, -5.000000e-01, -4.045085e-01,
# -1.545085e-01, 1.545085e-01, 4.045085e-01, 5.000000e-01,
# -5.000000e-01, -4.045085e-01, -1.545085e-01, 1.545085e-01,
# 4.045085e-01, 5.000000e-01, -5.000000e-01, -4.045085e-01,
# -1.545085e-01, 1.545085e-01, 4.045085e-01, 5.000000e-01])
#
N=len(xPos) #Número de elementos en el arreglo
# ponderación (w); 1/número de receptores
w = np.ones(len(xPos))/len(xPos)
#ángulos de llegada
thetaLlegada = np.array([-45])
51
phiLlegada = np.array([0])
c=1500 #velocidad de propagación del sonido en el agua [m/s]
f=1000 #frecuencia predominante del beamformer
#rango de ángulos a analizar
thetaScan=np.arange(-180,180+0.1,0.1)
phiScan=0
# Crear la matriz de direcciones
A = steeringmtx(xPos,yPos,zPos,f,c,thetaScan,phiScan)
#%% Crear Señales llegando a cada posición del arreglo
#se usa para la simulación de ondas planas
#fs=44100 #frecuencia de muestreo de las señales a crear
#nSamples=1000 #número de samples de duración
#amplitudes=np.array([1, 1]) #amplitud de cada señal
#
#T = nSamples/fs
#t = np.arange(0,T,1/fs)
#
#signalTotal = 0
#
#for i in range(0, (len(np.atleast_1d(thetaLlegada)))):
#
# #diferencias de llegada a cada punto del arreglo
# doa = np.squeeze(steeringmtx(xPos, yPos, zPos, f, c, thetaLlegada[i],
# phiLlegada[i]))
#
# #señales p=20log(A*e^(jwt + (ruido) + j(k))
# #10^
# signal = 10**(amplitudes[i]/20)*np.outer(doa,np.exp(1j*2*np.pi*((f*t)+
# np.random.rand(nSamples))))
#
52
#
# #Total signal equals sum of individual signals
# signalTotal = signalTotal + signal;
#
#%% Cargar las señales de cada hidrófono
##leer los audios
#######################################################################
#tetraedro
#fs,s1=wavfile.read(ŠH2Tetra45.wavŠ)
#fs,s2=wavfile.read(ŠH1Tetra45.wavŠ)
#fs,s3=wavfile.read(ŠH3Tetra45.wavŠ)
#fs,s4=wavfile.read(ŠH4Tetra45.wavŠ)
#rectangular
#fs,s1=wavfile.read(ŠH3Rombo45.wavŠ)
#fs,s2=wavfile.read(ŠH4Rombo45.wavŠ)
#fs,s3=wavfile.read(ŠH1Rombo45.wavŠ)
#fs,s4=wavfile.read(ŠH2Rombo45.wavŠ)
#lineal
fs,s1=wavfile.read(ŠH1Line-60f.wavŠ)
fs,s2=wavfile.read(ŠH2Line-60f.wavŠ)
fs,s3=wavfile.read(ŠH3Line-60f.wavŠ)
fs,s4=wavfile.read(ŠH4Line-60f.wavŠ)
#realizar la transformada de Hilbert para obtener una señal compleja
s1=hilbert(s1)
s2=hilbert(s2)
s3=hilbert(s3)
s4=hilbert(s4)
signalTotal = np.array([s1,s2,s3,s4])
53
nSamples=len(s1)
#%% matriz de autocorrelación
R = signalTotal.dot(signalTotal.conj().T)
R = R/nSamples #Rxx = (1/N)*x(t)*x(t)^H
#%% Potencia DAS
startdas = time.clock()
#las dimensiones de la matriz de dirección; Y=Ángulos en Theta
# X=Ángulos en Phi
# N=numero de hidrófonos
[Y,X,N] = A.shape
#Potencia
P = np.zeros((Y,X))
for puntostheta in range(0,Y):
for puntosphi in range(0,X):
Aa = np.reshape(A[puntostheta,puntosphi,:], N, 1)
P[puntostheta,puntosphi] = (w*Aa.conj().T).dot(R).dot((w*Aa)) # A*R*A^H
enddas = time.clock()
print(enddas - startdas)
#%% Graficar
Espectro = 10* np.log10(abs(P)/max(abs(P))) #Espectro en dB y normalizado
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
major_ticks = np.arange(-180, 180, 20)
minor_ticks = np.arange(-180, 180, 5)
startdas = time.clock()
major_ticksy = np.arange(-180, 180, 10)
minor_ticksy = np.arange(-180, 180, 5)
54
ax.set_xticks(major_ticks)
ax.set_xticks(minor_ticks, minor=True)
ax.set_yticks(major_ticksy)
ax.set_yticks(minor_ticksy, minor=True)
ax.set_ylim([-30,0])
ax.grid(which=ŠminorŠ, alpha=0.2)
ax.grid(which=ŠmajorŠ, alpha=0.5)
csfont = {ŠfontnameŠ:ŠComic Sans MSŠ}
hfont = {ŠfontnameŠ:ŠHelveticaŠ}
rfont = {ŠfontnameŠ : ŠTimes New RomanŠ}
#plt.axvline(x=thetaLlegada[0,1], color=ŠredŠ, linestyle=ŠdashedŠ)
for vl in thetaLlegada:
plt.axvline(x=vl, color=ŠredŠ, linestyle=ŠdashedŠ)
#for i in [i for i,x in enumerate(Espectro) if x >= -0.0001]:
# maximos=i
plt.plot(thetaScan, Espectro)
plt.title(ŠRespuesta Direccional Retraso y SumaŠ, fontsize=20, **rfont)
plt.xlabel(ŠÁngulo Š rŠ$\theta$ŠŠ [ °]Š)
plt.ylabel(ŠPotencia [dB]Š)
#plt.grid(True)
plt.show()
#%% Polar
fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8],polar=True)
ax.set_yticks(np.arange(-30,10,5))
ax.set_xticks(np.arange(0,(360+10)*np.pi/180,(10*np.pi/180)))
55
ax.set_theta_zero_location("N")
#ax.set_xticklabels([Š0Š, Š45Š, Š90Š, Š135Š, Š180Š, Š-135Š, Š-90Š, Š-45Š, Š-10Š])
ax.set_xticklabels([Š0°Š,ŠŠ,ŠŠ,Š30°Š,ŠŠ,ŠŠ,Š60°Š,ŠŠ,ŠŠ,Š90°Š,ŠŠ,ŠŠ,Š120°Š,ŠŠ,ŠŠ,
Š150°Š,ŠŠ,ŠŠ,Š180°Š,ŠŠ,ŠŠ,Š-150°Š,ŠŠ,ŠŠ,Š-120°Š,ŠŠ,ŠŠ,Š-90°Š,
ŠŠ,ŠŠ,Š-60°Š,ŠŠ,ŠŠ,Š-30°Š,ŠŠ,ŠŠ])
ax.set_ylim(-30,0)
ax.plot(thetaScan*np.pi/180,Espectro)
thetazeros = np.zeros(3601)
thetazeros[3600/2 + -45*10] = -30
#thetazeros[3600/2 + -(180-15)*10] = -30
ax.plot(thetaScan*np.pi/180,thetazeros, color=ŠrŠ, linestyle=ŠdashedŠ)
plt.title(ŠRespuesta Direccional Retraso y SumaŠ, fontsize=20, **rfont, y=1.08)
plt.xlabel(ŠÁngulo Š rŠ$\theta$ŠŠ [ °]Š)
#plt.ylabel("Potencia [dB]")
plt.text(1, .6, "Potencia [dB]", transform=ax.transAxes)
ax.set_rlabel_position(290)
ax.grid(True)
plt.show()
#%%
##############################################################################
#%%
#%% MVDR
startmvdr = time.clock()
#Carga diagonal
# R = R + Y*I
Rdl = R + np.sum(np.diag(R))/(N**2)*np.eye(N, N) #Diagonal Load
56
Rn = Rdl/N #covarianza normalizada
Ri = np.linalg.inv(Rn) #matriz inversa
#Potencia minimizada de la varianza
Pmvdr = np.zeros((Y,X))
for puntostheta in range(0,Y):
for puntosphi in range(0,X):
Aa = np.reshape(A[puntostheta,puntosphi,:], N, 1)
Pmvdr[puntostheta,puntosphi] = 1/(((Aa).conj().T).dot(Ri).dot(Aa)) # 1
# A^H*R*A^H
endmvdr = time.clock()
print(endmvdr - startmvdr)
#%% Grafica MVDR
Espectromvdr = 10* np.log10(abs(Pmvdr)/max(abs(Pmvdr))) #Espectro en dB y normalizado
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
major_ticks = np.arange(-180, 180, 20)
minor_ticks = np.arange(-180, 180, 5)
ax.set_xticks(major_ticks)
ax.set_xticks(minor_ticks, minor=True)
ax.set_yticks(major_ticksy)
ax.set_yticks(minor_ticksy, minor=True)
ax.set_ylim([-30,0])
ax.grid(which=ŠminorŠ, alpha=0.2)
ax.grid(which=ŠmajorŠ, alpha=0.5)
csfont = {ŠfontnameŠ:ŠComic Sans MSŠ}
hfont = {ŠfontnameŠ:ŠHelveticaŠ}
rfont = {ŠfontnameŠ : ŠTimes New RomanŠ}
for vl in thetaLlegada:
plt.axvline(x=vl, color=ŠredŠ, linestyle=ŠdashedŠ)
#for i in [i for i,x in enumerate(Espectro) if x >= -0.0001]:
57
# maximos=i
plt.plot(thetaScan, Espectromvdr)
plt.title(ŠRespuesta Direccional Varianza MinimaŠ, fontsize=20, **rfont)
plt.xlabel(ŠÁngulo Š rŠ$\theta$ŠŠ [ °]Š)
plt.ylabel(ŠPotencia [dB]Š)
#plt.grid(True)
plt.show()
#%% Polar MVDR
fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8], polar=True)
ax.set_yticks(np.arange(-30,10,5))
ax.set_xticks(np.arange(0,(360+10)*np.pi/180,(10*np.pi/180)))
ax.set_theta_zero_location("N")
#ax.set_xticklabels([Š0Š, Š45Š, Š90Š, Š135Š, Š180Š, Š-135Š, Š-90Š, Š-45Š, Š-10Š])
ax.set_xticklabels([Š0°Š,ŠŠ,ŠŠ,Š30°Š,ŠŠ,ŠŠ,Š60°Š,ŠŠ,ŠŠ,Š90°Š,ŠŠ,ŠŠ,Š120°Š,ŠŠ,ŠŠ,
Š150°Š,ŠŠ,ŠŠ,Š180°Š,ŠŠ,ŠŠ,Š-150°Š,ŠŠ,ŠŠ,Š-120°Š,ŠŠ,ŠŠ,Š-90°Š,
ŠŠ,ŠŠ,Š-60°Š,ŠŠ,ŠŠ,Š-30°Š,ŠŠ,ŠŠ])
ax.set_ylim(-30,0)
ax.plot(thetaScan*np.pi/180,Espectromvdr)
thetazeros = np.zeros(3601)
thetazeros[3600/2 + -45*10] = -30
#thetazeros[3600/2 + -(180-15)*10] = -30
ax.plot(thetaScan*np.pi/180,thetazeros, color=ŠrŠ, linestyle=ŠdashedŠ)
plt.title(ŠRespuesta Direccional Varianza MinimaŠ, fontsize=20, **rfont, y=1.08)
plt.xlabel(ŠÁngulo Š rŠ$\theta$ŠŠ [ °]Š)
#plt.ylabel("Potencia [dB]")
58
plt.text(1, .6, "Potencia [dB]", transform=ax.transAxes)
ax.set_rlabel_position(290)
ax.grid(True)
plt.show()
#%%
###############################################################################
#%%
#%% MUSIC
startmusic = time.clock()
_,U = np.linalg.eigh(Rn)
Un = U[:,0:len(U)-len(thetaLlegada)]
UnUn = np.dot(Un, Un.T.conj())
#Potencia clasificacion multiples seales
#a1 = np.squeeze(A).T
#a1 = np.exp(-1j*2*np.pi*0.2*np.outer(np.arange(0,N).T,
np.sin((thetaScan*np.pi/180).T)))
Pmusic = np.zeros((Y,X))
for puntostheta in range(0,Y):
for puntosphi in range(0,X):
Aa = np.reshape(A[puntostheta,puntosphi,:], N, 1)
# Pmusic[puntostheta,puntosphi] = (Aa).dot(Aa.conj().T)/
(((Aa).conj().T).dot(UnUn).dot(Aa))
Pmusic[puntostheta,puntosphi] = 1.0 /(((Aa).conj().T).dot(UnUn).dot(Aa))
endmusic = time.clock()
print(endmusic - startmusic)
59
#%% Grafica MUSIC
Espectromusic = 10* np.log10(abs(Pmusic)/np.amax(abs(Pmusic))) #Espectro en dB
y normalizado
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
major_ticks = np.arange(-180, 180, 20)
minor_ticks = np.arange(-180, 180, 5)
ax.set_xticks(major_ticks)
ax.set_xticks(minor_ticks, minor=True)
ax.set_yticks(major_ticksy)
ax.set_yticks(minor_ticksy, minor=True)
ax.set_ylim([-30,0])
ax.grid(which=ŠminorŠ, alpha=0.2)
ax.grid(which=ŠmajorŠ, alpha=0.5)
csfont = {ŠfontnameŠ:ŠComic Sans MSŠ}
hfont = {ŠfontnameŠ:ŠHelveticaŠ}
rfont = {ŠfontnameŠ : ŠTimes New RomanŠ}
for vl in thetaLlegada:
plt.axvline(x=vl, color=ŠredŠ, linestyle=ŠdashedŠ)
#for i in [i for i,x in enumerate(Espectro) if x >= -0.0001]:
# maximos=i
plt.plot(thetaScan, Espectromusic)
plt.title(ŠRespuesta Direccional MUSICŠ, fontsize=20, **rfont)
plt.xlabel(ŠÁngulo Š rŠ$\theta$ŠŠ [ °]Š)
plt.ylabel(ŠPotencia [dB]Š)
#plt.grid(True)
plt.show()
60
#%% Polar
fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8],polar=True)
ax.set_yticks(np.arange(-160,0,5))
ax.set_xticks(np.arange(0,(360+10)*np.pi/180,(10*np.pi/180)))
ax.set_theta_zero_location("N")
#ax.set_xticklabels([Š0Š, Š45Š, Š90Š, Š135Š, Š180Š, Š-135Š, Š-90Š, Š-45Š, Š-10Š])
ax.set_xticklabels([Š0°Š,ŠŠ,ŠŠ,Š30°Š,ŠŠ,ŠŠ,Š60°Š,ŠŠ,ŠŠ,Š90°Š,ŠŠ,ŠŠ,Š120°Š,ŠŠ,ŠŠ,
Š150°Š,ŠŠ,ŠŠ,Š180°Š,ŠŠ,ŠŠ,Š-150°Š,ŠŠ,ŠŠ,Š-120°Š,ŠŠ,ŠŠ,Š-90°Š,
ŠŠ,ŠŠ,Š-60°Š,ŠŠ,ŠŠ,Š-30°Š,ŠŠ,ŠŠ])
ax.set_ylim(-30 ,0)
ax.plot(thetaScan*np.pi/180,Espectromusic)
plt.title(ŠRespuesta Direccional MUSICŠ, fontsize=20, **rfont, y=1.08)
plt.xlabel(ŠÁngulo Š rŠ$\theta$ŠŠ [ °]Š)
#plt.ylabel("Potencia [dB]")
thetazeros = np.zeros(3601)
thetazeros[3600/2 + -45*10] = -30
ax.plot(thetaScan*np.pi/180,thetazeros, color=ŠrŠ, linestyle=ŠdashedŠ)
plt.text(1, .6, "Potencia [dB]", transform=ax.transAxes)
ax.set_rlabel_position(290)
ax.grid(True)
plt.show()
#%%
#%% ARF
plt.figure()
61
coords = np.array((xPos, yPos, zPos)).T #coordenadas en km
coords /= 1000
flim = 1000.
#klim = 4200.
klim = 2*np.pi*flim*1000/c
kxmin = -klim
kxmax = klim
kymin = -klim
kymax = klim
kstep = klim / 100.
# realiza la función de transferencia del arreglo
transff = array_transff_wavenumber(coords, klim, kstep, coordsys=ŠxyŠ)
# gráfica
plt.pcolor(np.arange(kxmin, kxmax + kstep * 1.1, kstep) - kstep / 2.,
np.arange(kymin, kymax + kstep * 1.1, kstep) - kstep / 2.,
transff.T, cmap=obspy_sequential)
plt.title(ŠFunción de Respuesta del ArregloŠ, fontsize=20, **rfont, y = 1.08)
plt.xlabel(Šk [rads/m]Š)
plt.ylabel(Šk [rads/m]Š)
clb = plt.colorbar()
clb.ax.set_title(ŠPotenciaŠ, **rfont,y=1.05)
#plt.colorbar()
plt.clim(vmin=0., vmax=1.)
plt.xlim(kxmin, kxmax)
plt.ylim(kymin, kymax)
plt.show()
Matriz de direcciones
#%% vector/matriz de dirección
def steeringmtx(x,y,z,f,c,theta,phi):
62
"""
Crea la matriz de direcciones A, i.e. función oscilatoria (e^i)
dependiente del vector de onda, usada para obtener las diferencias en fase
de una onda plana en diferentes puntos dados en x,y,z.
ENTRADAS
x = vector que contiene la posición en x de cada punto del arreglo
y = vector que contiene la posición en y de cada punto del arreglo
z = vector que contiene la posición en z de cada punto del arreglo
f = frecuencia de análisis de las fuentes
c = velocidad del sonido homogénea en el medio
theta = vector compuesto de los ángulos azimutales a evaluar
phi = vector compuesto de los ángulos de elevación a evaluar
SALIDAS
A = Matriz de direcciones [número de ángulos theta, numero de ángulos phi,
numero de elementos en arreglo]
"""
#conversión a radianes
theta = theta*np.pi/180;
phi = phi*np.pi/180;
#número de onda
k = 2*np.pi*f/c
#xyz=uvw en coordenadas esfericas
u = np.sin(theta)*np.cos(phi)
v = np.sin(theta)*np.sin(phi)
w = np.cos(theta)
#producto exterior por cada sensor
uu = np.outer(u,xPos)
vv = np.outer(v,yPos)
ww = np.outer(w,zPos)
#darle forma de hipermatriz
uu = np.reshape(uu, (len(uu),1,len(x)))
63
vv = np.reshape(vv, (len(uu),1,len(x)))
ww = np.reshape(ww, (len(uu),1,len(x)))
#matriz de direcciones (steering matrix/vector)
A = np.exp(1j*k*(uu + vv + ww));
return A
Respuesta en frecuencia del arreglo
def arrfac(x,y,z,f,c,theta,phi):
"""
Crea el factor del arreglo A, i.e. función oscilatoria (e^i)
dependiente del vector de onda, usada para obtener las diferencias en fase
de una onda plana en diferentes puntos dados en x,y,z.
ENTRADAS
x = vector que contiene la posición en x de cada punto del arreglo
y = vector que contiene la posición en y de cada punto del arreglo
z = vector que contiene la posición en z de cada punto del arreglo
f = frecuencia de análisis de las fuentes
c = velocidad del sonido homogénea en el medio
theta = vector compuesto de los ángulos azimutales a evaluar
phi = vector compuesto de los ángulos de elevación a evaluar
SALIDAS
A = Factor del arreglo [número de ángulos theta, numero de ángulos phi,
numero de elementos en arreglo]
"""
#conversion a radianes
theta = theta*np.pi/180;
phi = phi*np.pi/180;
#número de onda
k = 2*np.pi*f/c
64
if isinstance(theta, float) == True:
#xyz=uvw en coordenadas esféricas
u = np.sin(theta)*np.cos(phi)
v = np.sin(theta)*np.sin(phi)
w = np.cos(theta)
#producto exterior por cada sensor
uu = np.outer(u,x)
vv = np.outer(v,y)
ww = np.outer(w,z)
#darle forma de hipermatriz
uu = np.reshape(uu, (len(uu),1,len(x)))
vv = np.reshape(vv, (len(uu),1,len(x)))
ww = np.reshape(ww, (len(uu),1,len(x)))
A = np.exp(1j*k*(uu + vv + ww));
return A
elif isinstance(theta, float) == False:
u = np.outer(np.sin(theta).T,(np.cos(phi)))
v = np.outer(np.sin(theta).T,(np.sin(phi)))
#w = np.matlib.repmat(np.cos(theta).T,len(phi),1).T
w = np.matlib.repmat(np.cos(theta).T,len(np.atleast_1d(phi)),1).T
#producto Kronecker (matricial) de cada dimensión
uu = np.kron(u,x).reshape(len(theta),len(np.atleast_1d(phi)),len(x))
vv = np.kron(v,y).reshape(len(theta),len(np.atleast_1d(phi)),len(x))
ww = np.kron(w,z).reshape(len(theta),len(np.atleast_1d(phi)),len(x))
#array factor
A = np.sum(np.exp(1j*k*(uu + vv + ww)),2)
A=A.reshape(len(v))
65
A=abs(A)/(np.amax(abs(A)))
return u,v,w,A
#%%
#preparación de gráfica
dimz=(len(freqs),len(thetaScan))
wall=np.zeros(dimz)
for i in range(0,len(freqs)):
u,v,z,A = arrfac(xPos,yPos,zPos,freqs[i],c,thetaScan,phiScan)
wall[i,:] = 20*np.log10(A)
#evita que se muestren colores para amplitudes menores a -30dB
wall[wall<-30] = -29
#%%
fig = plt.figure()
#ax = fig.gca(projection=Š3dŠ)
#Grafica
X,Y = np.meshgrid(freqs, thetaScan)
X=X*10**-3
#
#plt.pcolor(X,Y, wall.conj().T, cmap=ŠRdBuŠ, vmin=0, vmax=1)
#
rfont = {ŠfontnameŠ : ŠTimes New RomanŠ}
plt.title(ŠRespuesta en frecuenciaŠ, fontsize=30, **rfont, y=1.08)
plt.xlabel(ŠFrecuencia [kHz]Š)
plt.ylabel(ŠÁngulo (ŠrŠ$\theta$ŠŠ)Š)
plt.xticks(np.arange(min(freqs), max(freqs)+1, 1))
plt.yticks(np.arange(min(thetaScan), max(thetaScan)+20, 20))
#
#plt.colorbar()
#plt.show()
plt.imshow(wall.conj().T,aspect=ŠautoŠ,origin=ŠlowerŠ,
66
extent=(X.min(),X.max(),Y.min(),Y.max()))
#plt.imshow(wall.conj().T);
clb = plt.colorbar()
clb.ax.set_title(ŠPotencia [dB]Š, **rfont,y=1.05)
plt.show()
Espacio esférico y proyecciones del patrón de haz
def steeringmtx(x,y,z,f,c,theta,phi):
"""
Crea la matriz de direcciones A, i.e. función oscilatoria (e^i)
dependiente del vector de onda, usada para obtener las diferencias en fase
de una onda plana en diferentes puntos dados en x,y,z.
ENTRADAS
x = vector que contiene la posición en x de cada punto del arreglo
y = vector que contiene la posición en y de cada punto del arreglo
z = vector que contiene la posición en z de cada punto del arreglo
f = frecuencia de análisis de las fuentes
c = velocidad del sonido homogénea en el medio
theta = vector compuesto de los ángulos azimutales a evaluar
phi = vector compuesto de los ángulos de elevación a evaluar
SALIDAS
A = Matriz de direcciones [número de ángulos theta, numero de ángulos phi,
numero de elementos en arreglo]
"""
#conversión a radianes
theta = theta*np.pi/180;
phi = phi*np.pi/180;
#número de onda
k = 2*np.pi*f/c
67
if isinstance(theta, float) == True:
#xyz=uvw en coordenadas esféricas
u = np.sin(theta)*np.cos(phi)
v = np.sin(theta)*np.sin(phi)
w = np.cos(theta)
#producto exterior por cada sensor
uu = np.outer(u,xPos)
vv = np.outer(v,yPos)
ww = np.outer(w,zPos)
#darle forma de hipermatriz
uu = np.reshape(uu, (len(uu),1,len(xPos)))
vv = np.reshape(vv, (len(uu),1,len(xPos)))
ww = np.reshape(ww, (len(uu),1,len(xPos)))
A = np.exp(1j*k*(uu + vv + ww));
return A
elif isinstance(theta, float) == False:
u = np.outer(np.sin(theta).T,(np.cos(phi)))
v = np.outer(np.sin(theta).T,(np.sin(phi)))
w = np.matlib.repmat(np.cos(theta).T,len(phi),1).T
uu = np.kron(u,x).reshape(len(theta),len(phi),len(x))
vv = np.kron(v,y).reshape(len(theta),len(phi),len(x))
ww = np.kron(w,z).reshape(len(theta),len(phi),len(x))
#matriz de direcciones (steering matrix/vector)
A = np.exp(1j*k*(uu + vv + ww));
return u,v,w,A
68
#%%
#rango de ángulos a analizar
thetaScan=np.arange(-90,90+0.5,0.5)
phiScan=np.arange(0,180+1,1)
u,v,z,A = steeringmtx(xPos,yPos,zPos,f,c,thetaScan,phiScan)
#%% Crear Señales llegando a cada arreglo
nSamples=1000 #número de samples de duración
amplitudes=np.array([1, 1, 1])
T = nSamples/fs
t = np.arange(0,T,1/fs)
signalTotal = 0
for i in range(0, (len(np.atleast_1d(thetaLlegada)))):
#diferencias de llegada a cada punto del arreglo
doa = np.squeeze(steeringmtx(xPos, yPos, zPos, f, c, thetaLlegada[i],
phiLlegada[i]))
#señales p=20log(A*e^(jwt + (ruido) + j(k))
#signal = 10^(amplitudes(k)/20)*doa*exp(1j*2*pi*f*t);
signal = 10**(amplitudes[i]/20)*np.outer(doa,np.exp(1j*2*np.pi*((f*t)+
np.random.rand(nSamples))))
#Total signal equals sum of individual signals
signalTotal = signalTotal + signal;
#%% matriz de autocorrelación
69
R = signalTotal.dot(signalTotal.conj().T)
R = R/nSamples
#%% Potencia DAS delay & sum
#las dimensiones de la matriz de dirección; Y=Ángulos en theta
# X=Ángulos en Phi
# N=numero de hidrófonos
[Y,X,N] = A.shape
Rdl = R + np.sum(np.diag(R))/(N**2)*np.eye(N, N) #Diagonal Load
Rn = Rdl/N
Ri = np.linalg.inv(Rn)
_,U = np.linalg.eigh(Rn)
Un = U[:,0:len(U)-len(thetaLlegada)]
UnUn = np.dot(Un, Un.T.conj())
#Potencia
#P = np.zeros((Y,X))
#for puntostheta in range(0,Y):
# for puntosphi in range(0,X):
# Aa = np.reshape(A[puntostheta,puntosphi,:], N, 1)
## P[puntostheta,puntosphi] = (w*Aa).dot(R).dot((Aa*w).conj().T) # A*R*A^H
# P[puntostheta,puntosphi] = (w*Aa.conj().T).dot(R).dot((w*Aa)) # A^H*R*A
#
#Espectro = abs(P)/(np.amax(abs(P)))
Pmvdr = np.zeros((Y,X))
for puntostheta in range(0,Y):
for puntosphi in range(0,X):
Aa = np.reshape(A[puntostheta,puntosphi,:], N, 1)
Pmvdr[puntostheta,puntosphi] = 1/(((Aa).conj().T).dot(Ri).dot(Aa))
Espectro = abs(Pmvdr)/(np.amax(abs(Pmvdr))) #Espectro normalizado
#Pmusic = np.zeros((Y,X))
70
#for puntostheta in range(0,Y):
# for puntosphi in range(0,X):
# Aa = np.reshape(A[puntostheta,puntosphi,:], N, 1)
# Pmusic[puntostheta,puntosphi] = 1.0 /(((Aa).conj().T).dot(UnUn).dot(Aa))
#
#
#Espectro = abs(Pmusic)/np.amax(abs(Pmusic)) #Espectro en dB y normalizado
#%% 1D
fig = plt.figure()
ax = fig.gca(projection=Š3dŠ)
# Graficar la superficie.
surf = ax.plot_surface(u, v, Espectro, cmap=cm.coolwarm, linewidth=0,
antialiased=False)
ax.view_init(azim=0, elev=90)
#surf = plt.pcolor(u, v, Espectro)
#surf = ax.plot_surface(u, v, Espectro)
#
#
## Eje z.
#ax.set_zlim(-1.01, 1.01)
#ax.zaxis.set_major_locator(LinearLocator(10))
#ax.zaxis.set_major_formatter(FormatStrFormatter(Š%.02fŠ))
#
## barra de color.
#fig.colorbar(surf, shrink=0.5, aspect=5)
#
plt.show()
#%% 2D
fig2 = plt.figure()
71
plt.subplot()
plt.pcolor(u, v, Espectro, cmap=ŠRdBuŠ, vmin=0, vmax=1)
rfont = {ŠfontnameŠ : ŠTimes New RomanŠ}
plt.title(ŠRespuesta Direccional 2DŠ, fontsize=20, **rfont)
plt.xlabel(Šu = sen(ŠrŠ$\theta$ŠŠ)cos(ŠrŠ$\phi$ŠŠ)Š)
plt.ylabel(Šv = sen(ŠrŠ$\theta$ŠŠ)sen(ŠrŠ$\phi$ŠŠ)Š)
plt.axis([u.min(), u.max(), v.min(), v.max()])
plt.colorbar()
plt.show()
#%% Arreglo
fig3 = plt.figure()
plt.subplot()
ax= Axes3D(fig3)
#for i in range(0,len(xPos)-1):
ax.scatter(list(xPos),list(yPos), list(zPos))
ax.set_xlabel(Šx [m]Š)
ax.set_ylabel(Šy [m]Š)
ax.set_zlabel(Šz [m]Š)
plt.show()
#%%
fig = plt.figure()
ax = fig.gca(projection=Š3dŠ)
# Grafica la superficie.
surf = ax.plot_surface(u, v, z, facecolors=cm.Blues(Espectro),
cmap=cm.coolwarm, linewidth=0, antialiased=False)
ax.set_xlabel(Šu = sen(ŠrŠ$\theta$ŠŠ)cos(ŠrŠ$\phi$ŠŠ)Š)
ax.set_ylabel(Šv = sen(ŠrŠ$\theta$ŠŠ)sen(ŠrŠ$\phi$ŠŠ)Š)
72
ax.set_zlabel(Šz = cos(ŠrŠ$\theta$ŠŠ)Š)
plt.show()
Algoritmo de multilateración
#%%
#Este script realiza la estimación de angulo de llegada para un arreglo
#determinado en coordenadas cartesianas en metros y entrega gráficas de patrón
#de haz con el método geométrico de multilateración.
#
#ENTRADAS
#
#d = distancia entre hidrófonos [m]
#c = velocidad del sonido [m/s]
#s1,s2,s3... = archivos de audio de los receptores (aquí llamados mlat1,mlat2,...)
#
#SALIDAS
#
#angle = Dirección de llegada de la fuente
import scipy as sp
import numpy as np
import matplotlib.pyplot as plt
import math
import cmath as cm
from numpy.lib.scimath import sqrt as csqrt
#from scipy.signal import correlate
#%% Definir Propiedades
d=1 #Distancia entre hidrófonos [m]
c=1500 #Velocidad del sonido [m/s]
d=d/2 #Distancia entre el punto 0 del arreglo y cada sensor
#k=6.58 #Constante de calibración interna del algoritmo
#%% Cargar audios
73
from scipy.io import wavfile
fs,rcvL=wavfile.read(Šmlat1.wavŠ) #Base 1
fs,rcvR=wavfile.read(Šmlat2.wavŠ) #Base 2
#fs,rcv3=wavfile.read(Šmlat3.wavŠ) #Ayuda L-R
#fs,rcv4=wavfile.read(Šmlat4.wavŠ) #Ayuda Arriba-abajo
s1=rcvL/(2**16);
s2=rcvR/(2**16);
#s3=rcv3/(2**16);
#s4=rcv4/(2**16);
#%% valor positivo es sx primero
# negativo es s1 primero
s11=sp.signal.correlate(s1,s1,mode=ŠfullŠ)
lagidx11=np.floor(len(s11)/2)
lag11=np.arange(-lagidx11,lagidx11 + 1,1)
I11=s11.argmax()
LagDiff11=lag11[I11]*2
s21=sp.signal.correlate(s2,s1,mode=ŠfullŠ)
lagidx21=np.floor(len(s21)/2)
lag21=np.arange(-lagidx21,lagidx21 + 1,1)
I21=s21.argmax()
LagDiff21=lag21[I21]*2
#%% Encontrar diferencia de tiempos de llegada entre 1 y 2
a=sp.signal.correlate(s1,s2,mode=ŠfullŠ)
#definir el lag como un vector desde de -lag/2 a lag/2
lagidx=np.floor(len(a)/2)
lag=np.arange(-lagidx,lagidx + 1,1)
74
plt.figure()
plt.plot(a)
plt.show()
I=a.argmax() #posición de la diferencia entre señales (definicion de
#correlación)
LagDiff=lag[I]*2
LagTime=LagDiff/fs; #diferencia entre señales dada en tiempo
# LagTime positivo es de la Izquierda, negativo de la derecha
dt= LagTime * c; #diferencia de llegadas relativo al tiempo de llegada [m]
#%% encontrar angulo evaluando en la ecuación resultante y (hipérbola)
steps=1;
x=np.arange(-20,20+1,steps);
ycdr=((dt**2)/4)-(d**2)+((((4*(d**2))/(dt**2))-1)*(x**2));
#tomar la parte real de las raices negativas
y = csqrt(ycdr);
y = y.real;
xtime=x;
T=len(x);
begin=0;
# encontrar una pendiente media
# varianzas
sampsize = np.arange(1,len(xtime)+1,1);
Exy2 = (np.cumsum(xtime*y) - ((np.cumsum(xtime)*np.cumsum(y))/sampsize))**2;
75
Ex2 = np.cumsum(xtime**2) - (((np.cumsum(xtime))**2)/sampsize);
totss = np.cumsum(y**2) - (((np.cumsum(y))**2)/sampsize);
regss = Exy2[begin:T]/Ex2[begin:T];
r2 = regss / totss[begin:T]; #varianza normalizada
r3 = r2.argmax(); # máximos de r2
stop = begin + (r3+1); # mayor r2, mas alejado del principio
mx = np.mean(xtime[0:stop+1]);
my = np.mean(y[0:stop+1]);
mx2 = np.mean(xtime[0:stop+1]**2);
my2 = np.mean(y[0:stop+1]**2);
sdx = csqrt(mx2 - mx**2);
sdy = csqrt(my2 - my**2);
# Pendiente con los términos x-y corregidos
slope = (sdy)/sdx;
plt.figure()
plt.plot(y)
plt.show()
angle=math.atan(slope);
angle=math.degrees(angle);
if math.isnan(angle)==1:
angle=90;
if LagTime>0:
angle=90-abs(angle)+90;
elif LagTime<0:
angle=abs(angle);
76
Simulación por espacio k
#Este script realiza una simulación de una propagación de onda en un medio con
#una fuente y un número dado de receptores con la ayuda del toolbox de k-wave,
#este retorna vectores donde se consigna la presión en el tiempo, es decir,
#audios para cada punto receptor
#
clc; close all; clear all;
% =========================================================================
% SIMULACIÓN
% =========================================================================
%% Parámetros Iniciales
x = 50 ; % Dimensión x [m]
y = 24 ; % Dimensión y [m]
z = 2.4 ; % Dimensión z [m]
resol = 0.1; % resolución [m]
dx = resol; % espacio entre puntos igual en las 3 dimensiones [m]
dy = resol;
dz = resol;
Nx = round(x / resol); % número de puntos de rejilla (x,y,z)
Ny = round(y / resol);
Nz = round(z / resol);
kgrid = makeGrid(Nx, dx, Ny, dy, Nz, dz); %Función que crea el meshgrid
%(3x3x3)
%% Medio
% Propiedades del medio (Agua de mar, medio homogéneo)
medium.sound_speed = 1500; % [m/s]
medium.density = 1020; % [kg/m^3]
%% Tiempo
% Vector de tiempo
77
cfl = 0.2; %coeficiente de estabilidad (Courant-friedichs-levy)
%cfl = c*dt/dx
t_dur = 0.01; %tiempo de duración [s]
%fncion para calcular el vector y el diferencial dt desde la ecuacion de
%courant
[kgrid.t_array, dt] = makeTime(kgrid, medium.sound_speed, cfl, t_dur);
%% Fuente
%Definir fuente puntual
source.p_mask = zeros(Nx, Ny, Nz); %rejilla de la fuente (mask) vacía, como
% elemento de un struct
% Definir posiciones de la fuente
%En caso de necesitar varias fuentes usar la matriz:
% srcrowi = [-20 20 ]; %X
% srccoli = [-10 8 ]; %y
% srcdeepi = [ 0.5 0.5]; %Z
% %src1 %src2
%
srcrowi = [0.6] ; %X [m]
srccoli = [-2 ] ; %y [m]
srcdeepi = [0.5] ; %Z [m]
%conversión a puntos en la rejilla
srcrow = round(1 + (srcrowi + (x/2))/resol);
srccol = round(1 + (srccoli + (y/2))/resol);
srcdeep = round(1 + (srcdeepi + (z/2))/resol);
%ingresar estos puntos en la rejilla 3D con un valor de 1
srcindices = sub2ind(size(source.p_mask), srcrow, srccol, srcdeep);
source.p_mask(round(srcindices)) = 1;
%Define la señal de una fuente variante en el tiempo
78
source_freq = 1000; % [Hz]
source_mag = 35; % [Pa] % equivalente a 150dB re(1uPa)
% mag_dB = 150; % [dB re 1uPa]
% source_mag = (10^(mag_db/20)*10^-6; [Pa]
source.p(1,:) = source_mag*sin(2*pi*source_freq*kgrid.t_array); % señal, p
%En caso de necesitar una segunda fuente desde un archivo de audio
% [sp2,fs]=audioread(Šwhitenoise.wavŠ);
% sp22=resample(sp2(:,1),fs,round(dt^-1)); sp22=sp22Š;
% source.p(2,:) = sp22(1:length(kgrid.t_array));
%En caso de necesitar una segunda fuente con una señal sinusoidal dada
% source.p(2,:) = source_mag*sin(2*pi*source_freq*kgrid.t_array);
% filtrar la fuente para no reproducir frecuencias no soportadas por la rejilla
% source.p = filterTimeSeries(kgrid, medium, source.p);
%% Sensor
%Definir sensores puntuales
sensor.mask = zeros(Nx, Ny, Nz); %rejilla de los receptores vacía (mask)
% theta = [20, -45]*pi/180;
% phi = [30, 50]*pi/180;
% radio = 0.2;
% rcvrowi = radio*sin(theta).*cos(phi);
% rcvcoli = radio*sin(theta).*cos(phi);
% rcvdeepi = radio*cos(theta);
% %Arreglo lineal con d=5
% rcvrowi = [ 0 0 0 0 ]; %x
% rcvcoli = [-2 0 2 4 ] - 1; %y
% rcvdeepi = [ 0.5 0.5 0.5 0.5]; %z
% %h1 h2 h3 h4
rcvrowi = zeros(1,4); %x
rcvcoli = [-1.2:0.8:1.2]; %y
rcvdeepi =ones(1,4)*-0.9;
79
% %Arreglo tetraedro regular
% d = 1; % lado del tetraedro [m]
% h = round(sqrt(3)*d/2,1); % altura triangulo [m]
% H = round(sqrt(6)*d/3,1); % altura del tetraedro [m]
%Posiciones [m]
% rcvrowi = [ 0 0 -h -h/3]; %x
% rcvcoli = [-d/2 d/2 0 0 ]; %y
% rcvdeepi = [ 0 0 0 H ]; %z
%conversión a puntos de la rejilla
rcvrow = round(1 + (rcvrowi + (x/2))/resol);
rcvcol = round(1 + (rcvcoli + (y/2))/resol);
rcvdeep = round(1 + (rcvdeepi + (z/2))/resol);
%ingresar estos puntos en la rejilla 3D con un valor de 1
rcvindices = sub2ind(size(sensor.mask), rcvrow, rcvcol,rcvdeep);
sensor.mask(round(rcvindices)) = 1;
% Definir que parámetros van a medir los sensores
sensor.record = {ŠpŠ, Šp_finalŠ};
%% Simulación
%Absorción por PML
input_args = {ŠPMLSizeŠ, 1, ŠPMLAlphaŠ, 10}; %grids, absorción en Nepers
% Correr la simulación, función que contiene el cálculo de la presión
sensor_data = kspaceFirstOrder3D(kgrid, medium, source, sensor, input_args{:});
Anexo 2
Patrones polares de cada medición
Para cada arreglo, se muestran los patrones polares para las 4 mediciones con la fuente en los
ángulos: -75°, -45°,-30° y -150° y evaluado con los 3 métodos de beamforming.
• Arreglo lineal (ULA)
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
0
Potencia [dB]
������������ ����������� ���������
(a) Retraso y suma -75°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
0
Potencia [dB]
��� �������������������������������
(b) Capon -75°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
Potencia [dB]
������������� ��������
(c) MUSIC -75°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−10
−5
0
Potencia [dB]
������������ ����������� ���������
(a) Retraso y suma -45°. (b) Capon -45°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−10
−5Potencia [dB]
������������� ��������
(c) MUSIC -45°.
81
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
0
Potencia [dB]
������������ ����������� ���������
(a) Retraso y suma -30°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
0
Potencia [dB]
��� �������������������������������
(b) Capon -30°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
Potencia [dB]
������������� ��������
(c) MUSIC -30°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−10
−5
0
Potencia [dB]
������������ ����������� ���������
(a) Retraso y suma -150°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−10
−5
0
Potencia [dB]
��� �������������������������������
(b) Capon -150°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−10
−5Potencia [dB]
������������� ��������
(c) MUSIC -150°.
• Arreglo rectangular (URA)
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−10
−5
0
Potencia [dB]
������������ ����������� ���������
(a) Retraso y suma -75°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−10
−5
0
Potencia [dB]
��� �������������������������������
(b) Capon -75°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−10
−5Potencia [dB]
������������� ��������
(c) MUSIC -75°.
82
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−10
−5
0
Potencia [dB]
������������ ����������� ���������
(a) Retraso y suma -45°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−10
−5
0
Potencia [dB]
��� �������������������������������
(b) Capon -45°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−10
−5Potencia [dB]
������������� ��������
(c) MUSIC -45°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−10
−5
0
Potencia [dB]
������������ ����������� ���������
(a) Retraso y suma -30°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−10
−5
0
Potencia [dB]
��� �������������������������������
(b) Capon -30°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−10
−5Potencia [dB]
������������� ��������
(c) MUSIC -30°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−10
−5
0
Potencia [dB]
������������ ����������� ���������
(a) Retraso y suma -150°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−10
−5
0
Potencia [dB]
��� �������������������������������
(b) Capon -150°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−10
−5Potencia [dB]
������������� ��������
(c) MUSIC -150°.
• Arreglo tetraédrico
83
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
0
Potencia [dB]
������������ ����������� ���������
(a) Retraso y suma -75°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
0
Potencia [dB]
��� �������������������������������
(b) Capon -75°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
Potencia [dB]
������������� ��������
(c) MUSIC -75°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
0
Potencia [dB]
������������ ����������� ���������
(a) Retraso y suma -45°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
0
Potencia [dB]
��� �������������������������������
(b) Capon -45°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
Potencia [dB]
������������� ��������
(c) MUSIC -45°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
0
Potencia [dB]
������������ ����������� ���������
(a) Retraso y suma -30°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
0
Potencia [dB]
��� �������������������������������
(b) Capon -30°.
0°
30°
60°
90°
120°
150°
180°
-150°
-120°
-90°
-60°
-30°
Ángulo θ [ °]
−30
−25
−20
−15
−10
−5
Potencia [dB]
������������� ��������
(c) MUSIC -30°.
84
Respuestas de los arreglos
En esta sección se muestran las respuestas tanto de frecuencia como de ARF de los 3 arreglos.
• Arreglo lineal
0 1 2 3 4 5 6 7 8 9 10Frecuencia [kHz]
−90
−70
−50
−30
−10
10
30
50
70
90
Ángulo
(θ)
�����������������
−27
−24
−21
−18
−15
−12
−9
−6
−3
0
� ����������
La respuesta frecuencial del arreglo lineal demuestra mayor resolución de sus lóbulos,
además de un rango frecuencial donde es util desde entre 300Hz a 1.3kHz. Su forma es
típica de arreglos regularmente espaciados en linea
85
−3000 −2000 −1000 0 1000 2000 3000k [rads/m]
−3000
−2000
−1000
0
1000
2000
3000
k [r
ads/
m]
�����������������������������
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
� �����
La función de respuesta del arreglo lineal nos permite ver la unidimensionalidad del
mismo, no hay manera de saber de que lado proviene una fuente a cierto ángulo.
• Arreglo rectangular
0 1 2 3 4 5 6 7 8 9 10Frecuencia [kHz]
−90
−70
−50
−30
−10
10
30
50
70
90
Ángulo
(θ)
�����������������
−27
−24
−21
−18
−15
−12
−9
−6
−3
0
� ����������
86
En la respuesta frecuencial se observan lóbulos más anchos que el linear, sin embargo
los baches son más deĄnidos, el rango frecuencial también es menor, pero sigue siendo
útil en el rango cercano a 1kHz.
−4000 −3000 −2000 −1000 0 1000 2000 3000 4000k [rads/m]
−4000
−3000
−2000
−1000
0
1000
2000
3000
4000
k [r
ads/
m]
�����������������������������
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
� �����
El factor del arreglo bidimensional presenta ambigüedades en las esquinas, pero se
diferencia un punto central algo disperso (es decir diferencia en 2 dimensiones), esto
dado por la cantidad de elementos en el arreglo.
• Arreglo tetraédrico
87
0 1 2 3 4 5 6 7 8 9 10Frecuencia [kHz]
−90
−70
−50
−30
−10
10
30
50
70
90
Ángulo
(θ)
�����������������
−27
−24
−21
−18
−15
−12
−9
−6
−3
0
� ����������
Al no haber una regularidad entre receptores tan clara como en el linear la respuesta del
arreglo tetrahedrico se encuentra con un lobulo de unos 20° de incertidumbre y un rango
frecuencial igual al de los anteriores arreglos. Montajes esféricos (Ągura más coherente)
y con muchos más elementos son superiores en resolución y resuelven toda ambigüedad,
sin mensionar una sensibilidad de arreglo claramente beneĄciada.
−4000 −3000 −2000 −1000 0 1000 2000 3000 4000k [rads/m]
−4000
−3000
−2000
−1000
0
1000
2000
3000
4000
k [r
ads/
m]
�����������������������������
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
� �����
88
El patron de respuesta del arreglo muestra un solo punto en el centro, indicando que no
hay indeterminaciones por su conĄguración. La borrosidad de este punto representa su
resolución en términos espaciales.
Anexo 3
Licencias y Hojas de datos
Licencia toolbox k-Wave
License Details k-Wave © 2009-2017 Bradley Treeby, Ben Cox, and Jiri Jaros (see individual
Ąles for list of authors).
The k-Wave toolbox is distributed by the copyright owners under the terms of the GNU Lesser
General Public License (LGPL) which is a set of additional permissions added to the GNU
General Public License (GPL). The full text of both licenses is included with the toolbox in
the folder ŠlicenseŠ.
The license places copyleft restrictions on the k-Wave toolbox. Essentially, anyone can use
the software for any purpose (commercial or non-commercial), the source code for the toolbox
is freely available, and anyone can redistribute the software (in its original form or modiĄed)
as long as the distributed product comes with the full source code and is also licensed under
the LGPL. You can make private modiĄed versions of the toolbox without any obligation to
divulge the modiĄcations so long as the modiĄed software is not distributed to anyone else.
The copyleft restrictions only apply directly to the toolbox, but not to other (non-derivative)
software that simply links to or uses the toolbox.
k-Wave is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTIC-
ULAR PURPOSE. See the GNU Lesser General Public License for more details.
Licencia REAPER Digital Audio Workstation
END USER LICENSE AGREEMENT For REAPER®
IMPORTANT: This REAPER® ("Software") End User License Agreement ("EULA") is a
legal agreement between you (either an individual or, if purchased for an entity, an entity)
and Cockos Incorporated ("Cockos"). READ IT CAREFULLY BEFORE COMPLETING
THE INSTALLATION PROCESS AND USING THIS SOFTWARE. It provides a license
to use this software and contains warranty and liability disclaimers. BY DOWNLOADING
OR INSTALLING THE SOFTWARE YOU ARE INDICATING YOUR FULL AND VOL-
90
UNTARY ASSENT TO THE TERMS OF THIS LICENSE. If you do not agree to all of the
following terms, do not download or install the software or discontinue use immediately and
destroy all copies on your computer.
1. License Grants and Purchase:
1.1 Trial Period License. You may download and use the Software for free for sixty (60)
days after installation ("Trial Period"). During the Trial Period, Cockos grants you a limited,
non-exclusive and non-transferable license to copy and use the Software for evaluation purposes
only. The evaluation copy of the Software is fully functional.
1.2 License After Trial Period. If you continue to use this Software after the Trial Period, you
are required to purchase a license. The license fee varies according to your use
1.3 Subject to the terms and conditions of this Agreement, you are granted a limited non-
exclusive license to use the Software on one (1) computer any given time. This License is not
a sale of the Software or any other copy. Cockos retains title and ownership of the Software
and documentation, including all intellectual property rights. No title to the intellectual
property in the Software is transferred to you. You will not acquire any rights to the Software
except as expressly set forth herein.
1.4 Said purchased license shall apply to the current version of REAPER® and any future
versions of REAPER® up through and including version 6.99.
1.5 Cockos reserves the right within its sole discretion to modify the terms of its license for
all future versions of REAPER®.
2. End User Support: At CockosŠ discretion, Cockos may provide limited support through
email or discussion forums at http://www.reaper.fm.
3. License Restrictions:
3.1 You may not alter, merge, modify, adapt or translate the Software, or decompile, reverse
engineer, disassemble, or otherwise reduce the Software to a human-perceivable form.
3.2 You may not sell, rent, lease, sublicense, transfer, resell for proĄt or otherwise distribute
the Software, its documentation, or any part thereof.
3.3 You may not modify the Software or create derivative works based upon the Software.
However, you may develop, distribute, and sell plug-ins and extension software that interacts
with REAPER® using the VST, Audio Units, or REAPER® Extensions APIs, provided that
such activity does not conĆict with any other provision of this Agreement. (Use of third party
APIs may require you to enter into additional legal agreements with the third party. Use of
the REAPER® Extensions API does not require any additional legal agreement.)
91
3.4 You may not remove or obscure any copyright and trademark notices relating to the
Software.
3.5 Note that speciĄc included libraries/executables, including SoundTouch, MP3DEC,
cdrecord.exe, and FFmpeg, are licensed under the GNU GPL and/or LGPL; these libraries/ex-
ecutables do not have the above restrictions, and we make their source code for these libraries
available at http://www.reaper.fm/lgpl
4. Ownership and Intellectual Property Rights: This Agreement gives you limited rights to
use the Software. Cockos retains any and all rights, title and interest in and to the Software
and all copies thereof, including copyrights, patents, trade secret rights, trademarks and other
intellectual property rights. All rights not speciĄcally granted in this Agreement, including
International Copyrights, are reserved by Cockos. The structure, organization and code of
the Software are valuable trade secrets and conĄdential information of Cockos.
5. Disclaimer of Warranties: Cockos does not warrant that the Software is error free. Cockos
offers the Software Şas isŤ and Şwith all faultsŤ and by using the Software, you accept it Şas
isŤ and Şwith all faultsŤ. Cockos disclaims all other warranties, either express or implied,
including but not limited to implied warranties of merchantability and Ątness for a particular
purpose. Should the Software prove defective, you assume the entire cost of all necessary
servicing, repair or correction. Some jurisdictions may not allow the exclusion of implied
warranties, so the above disclaimers may not apply to you.
6. No Refund: Because the Software is provided free of charge during the Trial Period to
allow potential customers to evaluate and test it before paying the license fee, Cockos enforces
a strict no-refund policy. Please evaluate and test the Software carefully during the Trial
Period. Once you pay the license fee, your payment is Ąnal and may not be reimbursed.
7. Limitations on Liability: To the maximum extent permitted by applicable law, Cockos
shall not be liable for any special, incidental, indirect, or consequential damages whatsoever,
(including, but not limited to, damages for loss of proĄts or loss of conĄdential or other
information, for business interruption, for personal injury, for loss of privacy, for failure to
meet any duty including of good faith or of reasonable care, for negligence, and for any
other pecuniary or other loss whatsoever), arising out of or in any way related to the use
or inability to use the Software, the provision of or failure to provide support services, or
otherwise under or in connection with any provision of this EULA, even in event of fault,
tort (including negligence), strict liability, breach of contract or breach of warranty of Cockos,
and even if Cockos has been advised of the possibility of such damages. In any case, CockosŠ
entire liability under the provisions of this EULA or the applicable law shall be limited to
the amount paid by you for the Software. Some jurisdictions may not allow the exclusion of
92
consequential damages, so the above limitations and exclusions may not apply to you. This
Agreement sets forth CockosŠ entire liability and your exclusive remedy with respect to the
Software.
8. Termination of EULA: This Agreement is effective until terminated. This Agreement,
including the license to use the Software, will terminate automatically if you fail to comply
with any term or condition.
9. General:
9.1 Cockos reserves the right at any time to cease the support of the Software and to alter
prices, features, speciĄcations, capabilities, functions, licensing terms, release dates, general
availability or other characteristics of the Software.
9.2 If any provision hereof shall be held illegal, invalid or unenforceable, in whole or in part,
such provision shall be modiĄed to the minimum extent necessary to make it legal, valid
and enforceable, and the legality, validity and enforceability of all other provisions of this
Agreement shall not be affected.
9.3 This Agreement is to be governed by and construed in accordance with the laws of
California. Each party for itself and its property, hereby submits to the jurisdiction and venue
of San Francisco, California in relation to any claim or dispute that may arise with respect to
this Agreement and any judgment that may be rendered in connection with any such claim or
dispute. This Agreement will be will be interpreted as if the agreement were made between
California residents and performed entirely within California.
9.4 You may not assign this Agreement. Any attempt by You to assign this Agreement will
be null and void.
9.5 This Agreement contains the entire agreement between Cockos and You related to the
software and supersedes all prior agreements and understandings, whether oral or written.
All questions concerning this Agreement shall be directed to [email protected].
10. Software license agreements of third parties:
10.1 Xiph.orgŠs BSD license - libĆac: Copyright (c) 2000-2007 Josh Coalson - libogg: Copyright
(c) 2002, Xiph.org Foundation - libvorbis: Copyright (c) 2002-2008 Xiph.org Foundation -
libopusĄle: Copyright (c) 1994-2013 Xiph.Org Foundation - libopus: Copyright (c) 2001-
2011 Xiph.Org, Skype Limited, Octasic, Jean-Marc Valin, Timothy B. Terriberry, CSIRO,
Gregory Maxwell, Mark Borgerding, Erik de Castro Lopo Redistribution and use in source
and binary forms, with or without modiĄcation, are permitted provided that the following
conditions are met: - Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer. - Redistributions in binary form must
93
reproduce the above copyright notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the distribution. - Neither the name
of the Xiph.Org Foundation nor the names of its contributors may be used to endorse or
promote products derived from this software without speciĄc prior written permission. THIS
SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
ŞAS ISŤ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, IN-
CIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
© 2017 Cockos Incorporated
Hydrophone P-200
SW5020A001
94
Datasheet de los hidrófonos Atlas P-200
The Hydrophone P200 was developed as a replacement for the P2 and P20 Hydrophones.
Technical Data:
Sensitive in Frequency range…………………………… 10 Hz to 20 KHz
Reception sensitivity (Charge Sensitivity)………….GQP = -116 ± 2 dB rel. pC/µPa by 160Hz
Capacity…………………………………………………………….12,5 ± 2,5 nF
Dimensions……………………………………………………….see diagram
Weight……………………………………………………………… 0,165 Kg
Operating temperature……………………………………-2,5 °C to +35°C
Storage temperature……………………………………….-40° to +70 °C
Vibration test………………………………………………….. as per BV 044/87
Shock test ………………………………………………………..as per BV043/85
95