desarrollo de un algoritmo de procesamiento de sejales con arreglos de...

109
Desarrollo de un algoritmo de procesamiento de seiales 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

Upload: others

Post on 28-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 2: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 3: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

A mis padres, apoyo incondicional.

Tutores y compaijeros, cómplices y guías.

Desafíos, forjadores de templanza.

Page 4: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 5: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 6: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 7: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 8: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 9: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 10: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 11: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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)

Page 12: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 13: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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).

Page 14: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 15: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 16: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 17: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 18: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 19: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 20: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 21: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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]

Page 22: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 23: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 24: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 25: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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]

Page 26: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 27: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 28: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 29: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 30: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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)

Page 31: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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)

Page 32: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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)

Page 33: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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)

Page 34: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 35: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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,

Page 36: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 37: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 38: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 39: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 40: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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°.

Page 41: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

C Simulación por métodos numéricos 27

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

Page 42: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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).

Page 43: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 44: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 45: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

D Diseijo de arreglos y aĄnación 31

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).

Page 46: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 47: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 48: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 49: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 50: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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)

Page 51: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 52: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 53: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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).

Page 54: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

E Implementación práctica 40

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°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−30

−25

−20

−15

−10

−5

0

Potencia [dB]

��� �������������������������������

(b) Capon

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.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−10

−5

0

Potencia [dB]

������������ ����������� ���������

(a) Retraso y suma.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−10

−5

0

Potencia [dB]

��� �������������������������������

(b) Capon

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

Page 55: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 56: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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)

Page 57: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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°.

Page 58: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 59: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 60: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 61: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 62: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 63: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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):

Page 64: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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])

Page 65: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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))))

#

Page 66: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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])

Page 67: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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)

Page 68: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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)))

Page 69: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 70: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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]:

Page 71: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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]")

Page 72: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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)

Page 73: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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()

Page 74: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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()

Page 75: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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):

Page 76: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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)))

Page 77: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 78: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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))

Page 79: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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Š,

Page 80: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 81: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 82: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 83: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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))

Page 84: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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()

Page 85: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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$ŠŠ)Š)

Page 86: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 87: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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)

Page 88: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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;

Page 89: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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);

Page 90: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 91: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 92: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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;

Page 93: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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{:});

Page 94: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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)

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°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−30

−25

−20

−15

−10

−5

0

Potencia [dB]

��� �������������������������������

(b) Capon -75°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−30

−25

−20

−15

−10

−5

Potencia [dB]

������������� ��������

(c) MUSIC -75°.

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°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−10

−5Potencia [dB]

������������� ��������

(c) MUSIC -45°.

Page 95: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

81

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°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−30

−25

−20

−15

−10

−5

0

Potencia [dB]

��� �������������������������������

(b) Capon -30°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−30

−25

−20

−15

−10

−5

Potencia [dB]

������������� ��������

(c) MUSIC -30°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−10

−5

0

Potencia [dB]

������������ ����������� ���������

(a) Retraso y suma -150°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−10

−5

0

Potencia [dB]

��� �������������������������������

(b) Capon -150°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−10

−5Potencia [dB]

������������� ��������

(c) MUSIC -150°.

• Arreglo rectangular (URA)

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−10

−5

0

Potencia [dB]

������������ ����������� ���������

(a) Retraso y suma -75°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−10

−5

0

Potencia [dB]

��� �������������������������������

(b) Capon -75°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−10

−5Potencia [dB]

������������� ��������

(c) MUSIC -75°.

Page 96: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

82

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−10

−5

0

Potencia [dB]

������������ ����������� ���������

(a) Retraso y suma -45°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−10

−5

0

Potencia [dB]

��� �������������������������������

(b) Capon -45°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−10

−5Potencia [dB]

������������� ��������

(c) MUSIC -45°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−10

−5

0

Potencia [dB]

������������ ����������� ���������

(a) Retraso y suma -30°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−10

−5

0

Potencia [dB]

��� �������������������������������

(b) Capon -30°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−10

−5Potencia [dB]

������������� ��������

(c) MUSIC -30°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−10

−5

0

Potencia [dB]

������������ ����������� ���������

(a) Retraso y suma -150°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−10

−5

0

Potencia [dB]

��� �������������������������������

(b) Capon -150°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−10

−5Potencia [dB]

������������� ��������

(c) MUSIC -150°.

• Arreglo tetraédrico

Page 97: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

83

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°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−30

−25

−20

−15

−10

−5

0

Potencia [dB]

��� �������������������������������

(b) Capon -75°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−30

−25

−20

−15

−10

−5

Potencia [dB]

������������� ��������

(c) MUSIC -75°.

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°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−30

−25

−20

−15

−10

−5

0

Potencia [dB]

��� �������������������������������

(b) Capon -45°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−30

−25

−20

−15

−10

−5

Potencia [dB]

������������� ��������

(c) MUSIC -45°.

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°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−30

−25

−20

−15

−10

−5

0

Potencia [dB]

��� �������������������������������

(b) Capon -30°.

30°

60°

90°

120°

150°

180°

-150°

-120°

-90°

-60°

-30°

Ángulo θ [ °]

−30

−25

−20

−15

−10

−5

Potencia [dB]

������������� ��������

(c) MUSIC -30°.

Page 98: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 99: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

� ����������

Page 100: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 101: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

� �����

Page 102: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.

Page 103: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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-

Page 104: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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.)

Page 105: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 106: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 107: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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

Page 108: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

Hydrophone P-200

SW5020A001

94

Datasheet de los hidrófonos Atlas P-200

Page 109: Desarrollo de un algoritmo de procesamiento de sejales con arreglos de …bibliotecadigital.usb.edu.co:8080/bitstream/10819/5926/1/... · 2018. 7. 12. · Desarrollo de un algoritmo

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