Curso de doctorado. TRABAJO DE 6 CREDITOS. “Algoritmos de construcción de mapas para la navegación de robots, basada en información procedente de Sensores de ultrasonidos” MILAGROS MARTÍNEZ DÍAZ Director : Ginés Benet, José E. Simó Ten ÍNDICE 1. Introducción._______________________________________________________ 3 2. Estudio teórico del sensor de ultrasonidos. _______________________________ 5 3. Extracción de información del sensor de ultrasonidos. _____________________ 6 3.1. Información procedente de la amplitud de la señal. _________________________ 7 3.2. Información procedente del tiempo de vuelo (TOF) de la señal. ______________ 13 4. Algoritmos de formación de mapas en base a información procedente de sensores de ultrasonidos. ________________________________________________________ 14 4.1. Mapas basados en rejilla.______________________________________________ 16 4.1.1. Revisión del método bayesiano. _____________________________________________ 18 4.1.2. Utilización del método bayesiano.____________________________________________ 19 4.1.3. Efecto de la reflexión especular. _____________________________________________ 22 4.2. Mapas topológicos. ___________________________________________________ 23 4.3. Mapas geométricos. __________________________________________________ 25 5. Experimentos realizados. ____________________________________________ 29 5.1. Extracción de información procedente de un único T/R. ____________________ 29 5.1.1. Ensayo mediante datos simulados. ___________________________________________ 5.1.2. Ensayo mediante datos reales : único obstáculo. _________________________________ 5.1.3. Ensayo mediante datos reales : detección de muros y esquinas. _____________________ 5.1.4. Ensayo mediante datos reales : construcción de mapa geométrico.___________________ 5.1.5. Ensayo mediante datos reales : construcción de mapa rejilla. _______________________ 29 29 30 33 34 6. Conclusiones y líneas futuras. ________________________________________ 35 7. Anexo. ___________________________________________________________ 36 7.1. Archivo de simulación en Matlab, para el ensayo 5.1.1 _____________________ 36 7.2. Archivo de simulación en Matlab, para el ensayo 5.1.2 _____________________ 37 7.3. Archivo de simulación en Matlab, para el ensayo 5.1.3 _____________________ 38 7.4. Archivo de simulación en Matlab, para el ensayo 5.1.4 _____________________ 42 7.5. Archivo de simulación en Matlab, para el ensayo 5.1.5. _____________________ 46 8. Bibliografía. ______________________________________________________ 51 Página 2 Pág 1. Introducción. La navegación por un entorno cerrado es un requerimiento fundamental para un robot móvil y autónomo. Para la gran mayoría vehículos autónomos sería deseable la construcción y actualización del mapa del entorno por donde éste se mueve. La actualización del mapa es quizás la principal motivación del robot, debido al hecho de que aunque se parta de un mapa altamente fiable, muy pocos entornos son completamente estáticos. Desgraciadamente la construcción de éste, así como su actualización o mantenimiento son tareas difíciles debido a varios factores : 1. Las medidas tomadas por los sensores, vienen corrompidas por ruido indeseable. 2. Condiciones ambientales no deseables, como por ejemplo la reflexión especular asociada a los sensores de ultrasonidos. 3. Limitaciones de percepción. El espacio de medidas de la mayoría de sensores ( ultrasonidos, cámaras, etc.), tiene una alcance limitado, pequeño espacio alrededor del robot. Para adquirir información global es necesario que el robot explore la totalidad del entorno. 4. Deslizamiento y arrastre. El movimiento del robot no es exacto, por ello debemos estimar la localización geométrica de éste eliminando el ruido odomético acumulado. Pequeños errores introducidos en la rotación del robot, nos pueden conducir al estimar la posición del robot, a grandes errores translacionales. Estos errores se pueden solucionar corrigiendo periódicamente la posición, por ejemplo utilizando el Filtro de Kalman Extendido (EKF), que es una solución muy utilizada. Pero el factor más importante de los comentados para que los modelos o mapas obtenidos sean fiables es el primero : ruido en las medidas. Claramente existen dos tipos de incertidumbres independientes : (1) ruido asociado al sistema y (2) validez de la medida tomada por el sistema. 1. El ruido introducido por el sistema es debido a la imprecisión que llevan asociados los sensores al realizar la medida. Éste es un ruido modelizable utilizando herramientas estadísticas convencionales : covarianzas, que puede ser eliminado empleando filtros de Kalman. 2. El ruido relativo a la validez de la medida realizada por el sensor, es un ruido producido por la captura de información irrelevante, incompleta, o espuria. Este tipo de incertidumbre no sigue ningún modelo, y no puede ser modelado mediante herramienta estadística. Por lo tanto las principales necesidades a la hora de construir y mantener un mapa son las siguientes : (a) Modelar del modo más exacto posible el ruido introducido por el sensor de medición. (b) Establecer un criterio, fiable, para la validación de las medidas obtenidas. Un tercer criterio para construir un mapa eficiente del entorno es utilizar una buena representación de los elementos. Por lo tanto crear y mantener un mapa del entorno es un proceso consistente en introducir nuevos elementos, afianzar los ya existentes o eliminarlos cuando se consideren obsoletos, tal y como se puede observar en el organigrama de la Figura 1, extraído de [LeDuCo-92], donde se puede recurrir para obtener mayor información. Página 3 Figura 1. Mantenimiento de una mapa del entorno. Página 4 Pág 2. Estudio teórico del sensor de ultrasonidos. Los sensores de ultrasonidos presentan varias ventajas frente a otros sistemas telemétricos basados en láser o visión : • COSTE : bajo, lo que permite equipar al robot con un número suficiente de sensores para llevar a cabo las medidas. • CONSUMO : menor que el presentado por otros sistemas de percepción. • RÁPIDOS : realizan un procesado de la señal en poco tiempo, lo cual proporciona al robot información para reaccionar de un modo veloz. Pero no todo son ventajas, también tienen algunos inconvenientes : • POBRE DIRECCIONALIDAD : o lo que es lo mismo, ancho de haz excesivo. • VELOCIDAD DE PROPAGACIÓN NO CONSTANTE : puesto que varía fundamentalmente con la temperatura y la humedad. [Clive-89] La velocidad del sonido en el aire se incrementa en un 0.18% por cada ºC, como se indica en la siguiente ecuación : Vt / V0 = √(T/T0) Vt velocidad a temperatura T V0 velocidad a 0 ºC (331 m/s) T temperatura absoluta ( º Kelvin) T0 =273 (0ºC = 273º Kelvin) Por lo tanto la velocidad del sonido a 20ºC es Vt = √(293/273) × 331 = 343 m/s • RUIDO TÉRMICO : afecta debido a la forma en que están construidos los sensores. • RUIDO ESPECULAR : cuando el rayo principal (mayor amplitud) se encuentra formando un ángulo con la perpendicular a la superficie reflectora que supera cierto valor, la onda reflejada no llegará al receptor, o podría rebotar en otra superficie y llegar al receptor ocasionando una medida incorrecta (ver apartado 4.1.3). A continuación se describe el modelo de onda emitida por un sensor de ultrasonidos. Figura 2. Modelo de onda emitida por sensor de ultrasonidos. Página 5 Cuando “a” es mucho mayor que “λ”, la onda emitida forma un haz directo. Este tipo de transmisor es modelado comúnmente como un pistón delgado de radio “a”, encerrado en una pantalla acústica infinita que está vibrando a una frecuencia “f”, siendo λ = c1/ f La onda producida tiene dos regiones distintas : zona cercana (near zone), y zona lejana (far zone). En la zona cercana la onda se halla contenida dentro de un cilindro de radio “a”, esta zona se extiende hasta una distancia aproximadamente igual a “a2/λ”. En la zona lejana, la onda diverge con un ángulo θ0 = sin-1(0.61λ/a). La presión irradiada por la onda en un punto de la zona lejana forma una curva gaussiana de varianza θ0/2, descrita por la siguiente expresión : p(r,θ) = (P0 / r) exp(-2θ2/θ02) siendo r la distancia al punto, y P0 una constante. Como se puede observar la presión ejercida en el punto es inversamente proporcional a la distancia. Si empleáramos un amplificador de ganancia variable con el tiempo para compensar esta atenuación, la ecuación de la presión quedaría como sigue : p(θ) = Pmax exp(-2θ2/θ02) La presión máxima, Pmax, se obtiene cuando θ = 0. En un sensor Polaroid típico, se dan los siguientes valores de referencia : a = 20 mm, f = 60 KHz, λ = 5.72 mm, lo que corresponde a una zona cercana de 70mm y θ0= 10º. 3. Extracción de información del sensor de ultrasonidos. En la siguiente figura se muestra un eco típico observado por un receptor de ultrasonidos. La onda es detectada cuando excede un determinado límite de amplitud (threshold), en el instante t0. Figura 3. Eco recogido por un sensor de ultrasonidos. 1 c = 343 m/s a 20 ºC y 1 atmósfera de presión Página 6 Pág 3.1. Información procedente de la amplitud de la señal. Para un par de transductores idénticos, un receptor y un transmisor, la ecuación que determina la amplitud de la señal detectada es la siguiente A(θ1,θ2) = Amax exp(-2θ12/θ02) exp(-2θ22/θ02) (Ver Figura 4 Izquierda) ; mientras que si se tratara de un transductor único, actuando como transmisor y receptor, y la superficie reflectora actuara como un espejo, en este caso el transmisor/receptor (T/R), se podría considerar como un transmisor (T) y un receptor virtual (R’) separado, como muestra la Figura 4 Derecha. Se puede observar que para un plano θ1 = θ y θ2 =−θ, mientras que para una esquina, θ1 = θ2 = θ. Figura 4. Izquierda : Transmisor y Receptor separados. Derecha : Transmisor y receptor unidos. La ecuación de la amplitud en función del ángulo2 quedaría como se muestra a continuación : A(θ) = Amax exp(-4θ2/θ02) ,, cuando |θ| < θ0 Es decir, la amplitud decrece conforme aumenta la desviación, θ, desde la línea de vista del transductor. Sin embargo, con un único transductor no se puede establecer diferencia entre un obstáculo plano y otro en forma de esquina, debido a que A(θ) = A(-θ), y precisamente la diferencia entre uno y otro viene establecida por el signo del ángulo. Es posible la diferenciación entre planos y esquinas, utilizando un único transductor, si éste tiene la posiblilidad de moverse y realizar medidas desde dos orientaciones diferentes, tal y como se detalla en [BoKu-91]. En la Figura 6 se representa visualmente el concepto, que es el siguiente : en el primer conjunto de medidas, tomadas con una orientación θ = θNI, se obtiene un arco centrado en el punto p1 ; posteriormente se traslada el sensor a la orientación θ = θNII, obteniendo otro arco centrado en el punto p2. En el caso de un plano θ NI = θNII, mientras que en el caso de una esquina θ NI ≠ θNII. Teniendo en cuenta que θ N denota la orientación del transductor que consigue la máxima amplitud, y esto para un plano se consigue cuando la orientación del sensor es normal a la superficie, y para una esquina cuando el sensor apunta a la intersección de ambos planos. El ángulo θ N cumple tres propiedades importantes : 1. La máxima amplitud del eco se consigue cuando θ = θN. 2. El centro del arco de puntos se obtiene en θ = θN. 3. La localización del objeto se encuentra en la dirección θ = θN. Para una esquina, será el punto de intersección de los planos, mientras que para un plano indicará su orientación espacial. En la Figura 5 se aprecia la curva de amplitud en función de la orientación del sensor. Un obstáculo es detectado por el sensor, tan sólo si se encuentra por encima del valor umbral de amplitud ( Γ ). Por lo tanto el sensor deberá muestrear entre los ángulos comprendidos entre θmin y θmáx . El ángulo, θ, es el formado desde el rayo principal del haz de ultrasonidos y la perpendicular formada por la superficie reflectora. 2 Página 7 Figura 5 . Amplitud versus orientación. La dirección del movimiento, ϒ, que ha de recorrer el sensor para efectuar las medidas, así como la distancia que ha de desplazarse, ∆, son datos que analizaremos a continuación. Figura 6 . Extracción de medidas con un único T/R. La dirección del movimiento debe ser realizada en un ángulo ϒ = ± arccos(∆/r1), desde el ángulo θNI , siendo “r1“ la distancia al centro del arco. El valor de ∆ es importante, ya que si se elige un valor demasiado pequeño, corremos el riesgo de obtener valores con baja precisión, mientras que si se elige un valor muy grande esto implica que el vehículo pueda interferir con otros elementos, o perder de vista el obstáculo previo en fase de medición. Se presenta un valor mínimo para el incremento, en función del incremento de muestreo del ángulo. Se debe cumplir que ∆ ≥ ∆min para que no haya errores. ∆min = r1 sin(2δθ) ,, δθ = incremento de θ para muestreo Resumiendo, las ecuaciones para diferenciación entre planos y esquinas, serán las siguientes : β = |θ NI − θNII | PLANO βP= 0 ESQUINA βE = arcsin(∆/r1) Pero como siempre se introducen pequeños errores en los cálculos de los ángulos : β’ = |θ’ NI − θ’NII | Si |β’ - βP| ≤ δθ Entonces es un PLANO Si |β’ - βE| ≤ δθ Entonces es una ESQUINA Otra solución aportada por [KoKiChu-96], empleando un único T/R para calcular la dirección, ∝, de un obstáculo, consiste en minimizar la siguiente ecuación : ∑Ni=1 {A(θi − ∝) − a i}2 = ∑Ni=1 { exp(-4(θi − ∝)2/θ02) − a i}2 Donde a i es la amplitud medida en la orientación θi, tomando la constante Amax = 1. Página 8 Pág Las soluciones aportadas empleando un único T/R requieren realizar múltiples mediciones para determinar un obstáculo, lo que requiere más tiempo. Para reducir este tiempo otros autores han optado por replicar los transductores, de modo que las medidas se tomen en paralelo. Esto sin duda equivaldría a mover el sensor de lugar y efectuar las medidas, pero sin pérdida de tiempo. En [BaKu-90], la solución consistirá en introducir dos transductores, a y b, tal y como muestra la Figura 7. De modo que las siguientes ecuaciones son obtenidas (θ = 0º y θs = tan-1 d/2R): PLANO : Aaa’(θ) = Abb’(θ) = Amax exp(-4θ2/θ02) Aab’(θ) = Aba’(θ) = (Amax exp(-4θs2/θ02)) exp(-4θ2/θ02) = A’max exp(-4θ2/θ02) ESQUINA : Aaa’(θ) = Amax exp(-4(θ − θs) 2 / θ02) Abb’(θ) = Amax exp(-4(θ + θs) 2 / θ02) Aab’(θ) = Amax exp(-4θ2/θ02) Figura 7. Situación de dos T/R para la diferenciación de planos y esquinas, cuando θ = 0º. Si θ aumentara su valor, tal y como muestra la Figura 8, diferentes valores de distancias existirían : R, Raa’, Rbb’, Rab’. Figura 8. Situación de dos T/R para la diferenciación de planos y esquinas, cuando θ ≠ 0º. Para estimar el valor del ángulo θ, se emplean las siguientes ecuaciones : PLANO : Raa’ = R − d/2 sin θ Rbb’ = R + d/2 sin θ Rab’ = Rba’ ≈ √ [ R2 + (d2 /4) − (R d sin θ)] Página 9 De lo que se deduce que : θ = sin-1 [(Rbb’ − Raa’)/d] De lo que se deduce que : ESQUINA : Raa’ = √ [ R + (d /4) − (R d sin θ)] 2 2 Rbb’ = √ [ R2 + (d2 /4) + (R d sin θ)] Si (Rbb’ − s(*) ) ≥ Rab’ θ = sin-1 [((Rbb’ − s) − Rab’)/d] Si (Raa’ − s) ≥ Rab’ Rab’ = Rba’ = R θ = sin-1 [((Raa’ − s) − Rab’)/d] Para el caso de la esquina es importante conocer el valor de θ, debido a que esto nos proporciona información acerca del lugar donde se encuentra la intersección entre planos de la esquina. Para el caso del plano nos define una línea ; la inclinación de la línea corresponderá al ángulo que forma el plano relativo al transductor. Las curvas de la señal en función de θ, muestran que la amplitud toma su máximo valor cuando el reflector “ a ” está directamente encarado con “ a’ ” y “ b “ con “ b’ “, y esto ocurre, para un plano cuando θ = 0º, en este caso Aaa’ = Abb’ = Amax,mientras que para una esquina esto ocurre para Aaa’(+θs) = Amax y Abb’(−θs) = Amax (Ver Figura 9). Figura 9. Curvas de amplitud en función de θ. Debido a los efectos del ruido, la medida de amplitud puede sufrir variaciones, las cuales modelaremos mediante un ruido aleatorio n : Amedio(θ) = A(θ) + n. Este ruido tendrá una función de densidad de probabilidad de media 0 y varianza τ2. Mediante experimentos realizados para estimar el ruido total añadido a la señal, se ha llegado a la conclusión de que la varianza τ es igual al 2% de Amedio,max(θ) y que es constante con el rango. De este modo las curvas de amplitud son redibujadas, teniendo una cota superior y otra inferior de ±3τ como se aprecia en la siguiente figura : Figura 10. Curvas incorporando el efecto del ruido (±3τ). (*) Factor corrector : s = √ [ R2ab’ + (d2 /4)] − Rab’ Página 10 Pág Para identificar el tipo de reflector se compararán las magnitudes obtenidas para las curvas. Para proporcionar fiabilidad estadística (statistical robutness), una amplitud es mayor que otra si su diferencia es mayor de 6τ, de modo que decidiremos que el obstáculo encontrado es : PLANO si (Aaa’ − Aab’ > 6τ) Y (Abb’ − Aab’ > 6τ) ESQUINA si (Aab’ − Aaa’ > 6τ) O (Aab’ − Abb’ > 6τ) En ocasiones por los efectos del ruido no se puede establecer una diferencia entre obstáculos, esto usualmente ocurre para |θ| > 10º ≈ θ0. El valor de τ es utilizado para elegir la separación “d” entre transductores. Para una determinada distancia al obstáculo, R, se determinará la distancia mínima y máxima : dmin y dmax. dmin = [(R tan θ0)/2 ] √ [-ln(1 −(6τ/Amax))] dmax = 2R tan θ0 Para una determinada separación d, tal que dmin ≤ d ≤ dmax, un determinado rango de distancias R , Rmin ≤ R ≤ Rmax , puede ser medido. Siendo los valores de Rmin y Rmax los siguientes : Rmin = d /2 tan θ0 Rmax = 2d / [tan θ0 √ (-ln(1 − (6τ/Amax)))] Incrementando el valor de “d”, es posible aumentar el valor Rmax, pero esto incrementa también el valor de Rmin. Para solucionar este problema se empleará una configuración de múltiples transductores formando un vector lineal. Para más información acerca de este tema [Baku-90]. Una solución aportada por [JeKi-95], consiste en disponer de un sistema tri-aural, en el que se emplean tres transductores, equidistantes ; el central actuando como transmisor y receptor, y los dos laterales como receptores, tal y como se muestra en la figura. Figura 11. Configuración del sistema tri-aural de recepción. Las curvas de las amplitudes recibidas por los transductores son las que se muestran en las siguientes gráficas, con inclusión del ruido blanco : Figura 12. Curvas de amplitud Página 11 Las ecuaciones son las siguientes ( θs = tan-1 d/2R): PLANO : Abb’(θ) = Amax exp(-4θ2/θ02) Abc’(θ) = Aba’(θ) = (Amax exp(-4θs2/θ02)) exp(-4θ2/θ02) = A’max exp(-4θ2/θ02) ESQUINA : Abb’(θ) = Amax exp(-4θ2/θ02) Aba’(θ) = Amax exp(-4(θ − θs) 2 / θ02) Abc’(θ) = Amax exp(-4(θ + θs) 2 / θ02) La máxima amplitud para cada transductor, en el caso de un plano se obtiene cuando θ = 0º, mientras que para una esquina, la máxima amplitud en el transductor central (“b”), se obtiene cuando θ = 0º, para el transductor “a”, cuando θ = θs, y para el “c” cuando θ = -θs. La ecuación que sirve para determinar si el obstáculo medido es una esquina es la siguiente : ESQUINA si |Aba’ − Abc’ | > 6τ PLANO en otro caso Estas ecuaciones no son muy buenas para ángulos, θ , próximos a 0º. Las ecuaciones para la determinación de θ y distancia al obstáculo, R, son las siguientes : R = Rbb’ /2 θ = sin-1 [((R2bc’ − R2ba’)/4d Rbb’] Para el caso de una esquina el ángulo θ, indica el punto de intersección de los planos, mientras que para el caso de un plano se puede calcular una línea, cuya ecuación es l = R tan θ. Otros autores que también emplean un sistema tri-aural son [KlKu-94], [KlKu-95], [AKKl-95], pero con una configuración distinta, como se podrá apreciar en la Figura 13. Las fórmulas empleadas para calcular los ángulos son las siguientes : α1 = sin-1 [ (d2 + (r1)2 − (r2)2) / (2d r1) ] Las distancias r1 y r2 son obtenidas por la técnica del TOF. Los valores r3 y α2 serán funciones de r1 y α1 . PLANO : α2 (r1 , α1) = α1 + βplano r3 (r1 , α1) = √{ (r1)2 − 2r1d sin α1 + d2 } βplano = tan-1 [ (d cos α1) / (r1 − d sin α1) ] ESQUINA : α2 (r1 , α1) = α1 + βesquina r3 (r1 , α1) = √{ (r1)2 − 2r1d sin α1 + d2 } βesquina = -tan-1 [ (d cos α1) / (r1 − d sin α1) ] Se hace notar que el plano deber ser lo suficientemente ancho como para producir reflexiones, es decir para r1>>> d, el plano ha de ser al menos de (d cos α1)/2. Mientras que para que el sensor pueda ver adecuadamente una esquina, ésta debe tener un arco de aproximadamente tan-1 (2d/r1). Para establecer la discriminación entre planos y esquinas se emplea la diferencia angular, β para planos y −β para esquinas. Figura 13. Ecos reflejados de un plano y una esquina. Página 12 Pág En [PerAuVa-93] se describe otro sistema tri-aural, en el que existe un emisor/receptor, sitúado en el centro y dos receptores, separados una distancia ‘d’, que permite la discriminación entre planos/esquinas y obstáculos convexos (‘edges’), basándose en el tiempo de vuelo de la señal. El sistema funciona del siguiente modo : se emite una señal por parte del emisor, y el eco es recibido en cada uno de los receptores, formando una tripleta con los tiempos de llegada correspondientes. Si la señal encuentra más de un obstáculo, y por tanto más de un eco es recibido, se crea una lista de tripletas, correspondiente a cada uno de los obstáculos detectados. Con estos datos se calcula la posición ( distancia, r, y orientación, φ ) de acuerdo con las fórmulas que se describirán a continuación. Se asume que todas las superficies reflectantes son curvadas, y aunque esto no es cierto, para los objetivos del algoritmo es suficiente : los muros asumen un radio de curvatura infinito, y para los objetos puntuales (‘edges’) un radio cero. En función del radio calculado para un objeto se descubre si es un muro (rc = ∞) u objeto puntual (rc =0). rc = [ 2r12 - r22 - r32+ d2 /2] [2(r2 + r3 - 2r1] ; r1 = m1 / 2 r2 = [√(m22 - d2)]/2 r3 = [√(m32 - d2)]/2 Figura 14. Detección de obstáculo por sistema tri-aural. Para el cálculo de la distancia y el ángulo de orientación se emplean las dos siguientes ecuaciones : r = m1 /2 φ = arcsin((d32 - d22) / 4d d1) Para un plano : (m1 m2 m3) = (d1 d2 d3) Para un obstáculo puntual: (m1 m2 m3) = (2d1 d1 + d2 d1 + d3) 3.2. Información procedente del tiempo de vuelo (TOF) de la señal. Es conveniente comenzar con la modelización del entorno de medida. Si partimos de un ambiente homogéneo ( aire o agua ), en el que tenemos un conjunto de objetos, situados a distancias x1, x2, ... xn , de tamaño 0, que reflejan la señal en una magnitud que viene determinada por la constante f1, f2, ... fn, siendo |fn| <<< 1, ∀n. Figura 15. Conjunto de obstáculos y señal emitida por T/R. y es emitida una señal de ultrasonidos p(t), sabiendo que la velocidad de propagación de la señal es c=343 m/s, a 1 atmósfera de presión y 20°C; cuando la señal llega al primer obstáculo, en t1= x1/c, es reflejada como f1 × p(t- t1) hacia el transmisor, llegando t1 segundos después al receptor, que recibe: s1(t) = f1 × p(t- t1- t1) = f1 × p(t- 2 t1). Página 13 El resto de la señal pasa del primer obstáculo al siguiente: p(t- t1) - f1 × p(t- t1) = ( 1- f1) × p(t- t1) ≈ p(tt1), ya que | f1| << 1. De modo que en en t2= x2/c llega la señal p(t- t2), y el receptor recibe: s2(t) = f1 × p(t- 2 t2). Si continuáramos razonando del mismo modo para el resto de obstáculos llegaríamos a obtener la función de la señal que recibe el receptor: s(t) = Σni = 1 si(t) = Σni = 1 (fi × p(t- iti)),, siendo ti= xi/c Matemáticamente s(t) = p(t) * f0(x),, x = ct/2 y f0(x)= Σni = 1 (fi × δ(x - xi)) Figura 16. Señal f0(x). Si fuésemos capaces de reconstruir la señal f0(x), tendríamos los valores de distancia de todos los obstáculos. La solución matemática consiste en realizar una deconvolución trabajando en el dominio de la frecuencia [ArrayImaging], empleando la transformada de fourier de las señales emitida y reflejada, y según propiedades de ésta tenemos las siguientes igualdades: s(t) = p(t) * f0(x) ⎯⎯⎯→ S(w) = P(w) × F0(Kx) ,, Kx = 2w/c (m/s) y w en (rad/seg) F0(Kx) = S(w) / P(w) donde P(w) ≠ 0 ∀ w Sin embargo la restricción impuesta por la ecuación matemática, P(w) ≠ 0 ∀w, es demasiado estricta, por ello no se utiliza en la práctica, ya que las señales recibidas por los sensores de ultrasonidos suelen llevar ruido incorporado. Otra técnica utilizada es la denominada “Matched Filtering”, que consiste en multiplicar por la transformada de fourier conjugada de la señal emitida (P*(w)). FM(Kx) = S(w) × P*(w) La señal en el dominio del espacio, fM(x), la obtendremos realizando la transformada de fourier inversa de FM(Kx). Cada uno de los máximos de la señal fM(x) indican la existencia de un obstáculo detectado. (Ver apartado 5.1.1 para ver ejemplo de utilización) RESOLUCIÓN. La resolución teórica que se obtiene en la detección de obstáculos, es decir ∆x, depende del ancho de banda de la señal p(t) emitida (f0). ∆x = (Πc)/2w0 = c/4 f0 ,, (w0 = 2Πf0) Por ejemplo, para un ancho de banda de 3KHz, tomando c = 340 m/s, en este caso ∆x=2.8 cm. En la práctica esta resolución es bastante superior (alrededor de 10 a 15 cm). 4. Algoritmos de formación de mapas en base a información procedente de sensores de ultrasonidos. Las tres funciones básicas para la navegación de un robot autónomo en un entorno cerrado son : 1. Modelización del entorno, elaboración de un mapa. 2. Determinación de la posición del robot, partiendo de un mapa del entorno. 3. Detección de obstáculos inesperados durante la navegación, partiendo de un mapa del entorno. En la obtención de modelos del entorno, basándose en la información recogida por sensores de ultrasonidos y explotando el hecho de que el espacio entre los sensores y el objeto reflector más cercano está totalmente Página 14 Pág vacío, la generación del mapa representativo del entorno se realiza mediante sucesivas medidas, obtenidas por los sensores durante su navegación en el entorno que se pretende representar. Hay por tanto una fuerte dependencia del resultado final del mapa y la cantidad de medidas obtenidas. Se distinguen tres tendencias en la elaboración del mapa, en función de cómo se explota la información para elaborar el mapa del entorno : − mapas basados en rejilla : que consisten en la subdivisión del entorno en una serie de celdas uniformes, que puede estar representado en dos dimensiones (celdas de tamaño ∆ × ∆), o tres dimensiones (celdas de tamaño ∆ × ∆ × ∆). El contenido de estas celdillas será un valor de probabilidad de ocupación o probabilidad de existencia de un obstáculo. Referencias [Cho-89], [LiCho-94], [Elfes-87], [Mora-88] y [BoKo-91a] , entre otras. La mayor ventaja de este tipo de mapas es que son fáciles de construir y de mantener, incluso en entornos de gran envergadura. Por otro lado, puesto que la geometría de las celdillas se corresponde con la geometría del terreno, es fácil para un robot determinar su posición dentro del mapa tan sólo conociendo su posición y orientación en el mundo real. Este tipo de representación facilita el cómputo de la trayectoria más corta. Otra ventaja es la falta de ambigüedad en la determinación de una situación del mundo real, aunque sean tomadas las medidas desde diferentes lugares. Sin embargo sufre de un problema básico, la gran cantidad de memoria necesaria para el almacenamiento de la información, así como la complejidad temporal de los algoritmos necesarios para extracción de información elaborada, como por ejemplo la determinación de trayectorias. Esto es debido a que la resolución del mapa (∆), debe ser lo suficientemente fina para capturar información importante del entorno. Tampoco facilita la creación de interfaces para la introducción de órdenes. − mapas topológicos : que consisten en un grafo ponderado cuyos nodos representan situaciones diferentes del entorno. Los arcos de conexión de estos nodos indican la viabilidad de navegación entre una situación y otra contigua. El peso asignado a cada arco indica el coste de acceder de una situación a otra (ejemplo una medida de distancia). No es imprescindible la inclusión de información métrica, debido a que cada situación posee datos relativos a las situaciones vecinas que son accesibles. Referencias [A.Kurz-96], [KuBy-91],[ ThrunBu-96A] y [ThrunBu-96B], entre otras.. La utilidad de este tipo de mapas consiste en la facilidad que ofrecen en cuanto a la planificación de trayectorias para la navegación de un robot y la baja complejidad espacial que requieren, ya que la resolución depende de la complejidad del entorno. No necesita conocer la situación geométrica exacta del robot, y se trata de la representación más conveniente para algoritmos de solución de problemas, o planificadores basados en información simbólica, y proporcionan interfaces para la introducción de órdenes más cercanos al lenguaje natural : ejemplo “ve a la habitación ‘A’ “. Pero es más dificil su construcción y mantenimiento en el caso de grandes entornos. El reconocimiento de lugares frecuentemente ofrece ambigüedad, ya que depende del punto de vista del robot que recoge la situación. Los planificadores pueden ofrecer en ocasiones trayectorias subóptimas. − mapas geométricos : en los que son tenidas en cuenta las geometrías de los obstáculos del entornos (muros, esquinas cóncavas y convexas, ...). Son examinadas y localizadas en base a los principios físicos de la propagación de las ondas acústicas. Existe un gran grupo de investigadores dedicados a la extracción de información geométrica de las ondas acústicas emitidas y recibidas por sensores de ultrasonidos en un entorno cerrado, constituido por planos y esquinas cóncavas en ángulo de 90º especulares. Referencias [BaKu-90] [BoKu-91] [LeDuCo-92] [WeGiWy-94] [KlKu-94] [SaBe-94] [KlKu-95] [AkKl-95] [JeKi-95] [KoKiChu-96] [Dudek-96] y [Zelin-91]. Página 15 4.1. Mapas basados en rejilla. Figura 17. Emisión de un sensor ultrasonidos. En la representación basada en rejilla, el área de trabajo es representada por un vector bidimensional, de elementos cuadrados, llamados celdillas. Cada celdilla contiene un valor de certeza, que nos indica si está ocupada por un obstáculo, está libre o no ha sido explorada por el momento. Este valor de certeza es calculado mediante funciones de probabilidad que tienen en consideración las características del sensor que realiza la medida. Un sensor de ultrasonidos típico, suele retornar un valor de distancia al obstáculo que tiene más próximo, medida d, pero no especifica el valor angular donde se localiza el obstáculo (ver Figura 17). Si un obstáculo es detectado por un sensor de ultrasonidos es más probable que se encuentre cercano al eje del cono del haz de ultrasonidos que a la periferia de éste. Por otro lado la información de distancia proporcionada por éste (d) tiene mucha incertidumbre, debido a la gran apertura del haz de ultrasonidos. Un método para la construcción de un mapa basado en rejilla del terreno, que muestra la probabilidad de ocupación de las celdillas es descrito en [Elfes-87]. En este modelo se almacena no solo la probabilidad de ocupación de las celdillas básicas, sinó también la probabilidad de estar vacias, así como las zonas inexploradas. El método de elaboración del mapa comprende varias etapas : preprocesado inicial de las medidas, cálculo de probabilidades de ocupación de acuerdo con unas funciones de densidad de probabilidad que se describirán a continuación y finalmente composición de la información, de modo que conforme se obtienen las medidas se reduce la cantidad de zonas inexploradas, y aumenta la fiabilidad de la información. − Preprocesado de las medidas : para eliminar posible ruido añadido, se rechazan medidas de distancias inferiores a un umbral mínimo, y superiores a un umbral máximo, así como realizar una media aritmética de múltiples medidas recogidas desde la misma posición del sensor. − Cálculo de probabilidades de ocupación : son calculadas dos funciones de probabilidad, basadas en la geometría de la onda de ultrasonidos emitida por nuestro sensor, y la sensibilidad espacial del sensor. Se definen dos áreas en la zona cubierta por la onda ultrasónica : área de ocupación y área de vacio, en la que no hay obstáculos. Se definen los siguientes valores (Ver Figura 18) : R medida de distancia devuelta por el sensor de ultrasonidos ε error máximo cometido por el sensor, en la medida de distancia w anchura del haz ultrasónico S = (x,y) posición del sensor de ultrasonidos δ distancia desde S a un punto P θ ángulo formado desde el eje x de coordenadas, hasta el punto P. Página 16 Pág Figura 18. Funciones de densidad de probabilidad. ∗ probable región vacia : incluye todos aquellos puntos tales que δ < R-ε, θ ≤ w/2 , que tienen probabilidad pE = fE(δ,θ) de estar vacios . θ∈[ -w/2,w/2]. pE(x,y) = fE(δ,θ) = Er(δ)Ea(θ) = {1 - ((δ-Rmín) / (R-ε-Rmín))2} × {1-(2θ/w)2} para δ∈[Rmín, Rε] 0 en otro caso ∗ probable región ocupada : incluye todos aquellos puntos tales que δ < R-ε, θ ≤ w/2 , que tienen probabilidad pO = fO(δ,θ) de estar ocupados. θ∈[ -w/2,w/2]. pO(x,y) = fO(δ,θ) = Or(δ)Oa(θ) = {1 - ((δ-R) / ε)2} × {1-(2θ/w)2} para δ∈[ R-ε, R+ε] 0 en otro caso − Fusión de la información procedente de varias lecturas : cada medida nos proporciona información parcial del mapa del entorno. Diferentes lecturas indicando que una celdilla está vacia se confirman unas a otras, y lo mismo si indican que está ocupada. Por otro lado, la evidencia de estar vacia, nos disminuye la certeza de que esté ocupada. La distribución de probabilidad de las áreas vacias y ocupadas no es simétrica. La de las áreas vacias representa un espacio cuya totalidad es probablemente vacio, y se combinan simplemente mediante una fórmula aditiva, mientras que la del área ocupada para una determinada lectura nos representa una falta de conocimiento acerca del obstáculo, que se detecta en la parte delantera de la onda emitida. Los valores de probabilidad para esta zona además al fusionarlos son comparados para detectar conflictos y normalizados para sumar la unidad. Finalmente se utiliza una fórmula aditiva para combinarlos con valores anteriores. El algoritmo es el siguiente : 1. Inicialización : se inicializa el mapa a ‘desconocido’. 2. fusión de áreas vacias: = pE(celda) pE(celda) NUEVA ×pE(celda) ) 3. + pE(celda) NUEVA − (pE(celda) fusión de áreas ocupadas : 3.1. pO(celda) NUEVA = pO(celda)NUEVA × (1 − pE(celda)) 3.2. se normalizan los valores de probabilidad de ocupación. 3.3. pO(celda) = pO(celda) + pO(celda) Página 17 NUEVA − (pO(celda) ×pO(celda)NUEVA 4. Umbralización : el valor final de ocupación de una determinada celdilla en el mapa es obtenida mediante comparación con los valores relativos de vacio y ocupación. En [Mora-88] se relata el trabajo realizado en el laboratorio de robots móviles (Mobile Robot Laboratory, MRL) de la universidad de Carnegie-Mellon. El artículo describe un método de elaboración y mantenimiento del mapa de rejilla, en el que se utiliza sólo la probabilidad de ocupación, basado en fórmulas ad-hoc. El método consiste en inicializar las celdillas del mapa con un valor de certidumbre del entorno, Cb, que se calcula dividiendo el número de celdillas del perímetro entre el número total del celdillas del mapa. Los valores de certidumbre próximos a Cb, indican zonas inexploradas, valores próximos a cero indican zonas vacías, y valores próximos a la unidad zonas ocupadas por obstáculos. Las ecuaciones empleadas para la actualización del mapa de probabilidades dada una medida R, retornada por un sensor de ultrasonidos, cuya amplitud del haz de ultrasonidos es w, son las siguientes : − Para el conjunto de celdillas CR ={ CR,∝ = (R,α) | |α| < w/2}, es decir todas aquellas localizadas a la distancia R, y dentro del área angular emitida por la onda de ultrasonidos, ver Figura 18 para más detalles, se utiliza una fórmula que aumenta la probabilidad de ocupación de cada celdilla, CR,∝: CR,∝ = CR,∝ + PR,∝ − (CR,∝ ×PR,∝). PR,∝ indica el valor de probabilidad de ocupación, de la celdilla que se encuentra a distancia R, y w/2 PR,∝ sea ‘1’. Si la fiabilidad del sensor orientación ∝, y deben escalarse para que PR = Σ∝=−w/2 no es perfecta, la normalización debe ser menor de la unidad. − Para el conjunto de celdillas Cr<R ={ Cr,∝ = (r,α) | |α| < w/2 y r = R1,R2 ... R}, es decir todas las celdillas localizadas a distancias menores de R, y sitúadas en el área interior de la onda de ultrasonidos, o zona de celdillas vacias ( ver Figura 18), se utiliza la siguiente fórmula, que reduce el valor de certidumbre : Cr,∝ = Cr,∝ × ( 1 − Pr,∝). En este caso Pr,∝ indica la posibilidad de que un obstáculo en esa posición esté ocupado y haya sido inapreciado. Figura 19. Área descrita por la onda de ultrasonidos. Otro método, éste basado en el modelo matemático Bayesiano para la representación de la ocupación de las celdillas, es descrito en [Cho-89] y [LiCho-94]. 4.1.1. Revisión del método bayesiano. La fórmula de Bayes para la probabilidad condicional es la siguiente : P( o | M ∩ A) = [P( M | o ∩ A) × P( o | A)] (1) [P( M | o ∩ A) × P( o | A)] + [P( M | o* ∩ A) × P( o* | A)] P( o* | M ∩ A) = [P( M | o* ∩ A) × P( o* | A)] (2) [P( M | o ∩ A) × P( o | A)] + [P( M | o* ∩ A) × P( o* | A)] Siendo A y M condiciones, y ‘o’ un evento dependiente en A y M. P( o | M ∩ A) es la probabilidad de que ocurra el evento ‘o’, cuando aparecen las condiciones M y A. El evento ‘o*’ significa que no Página 18 Pág ocurre ‘o’, luego P( o* | M ∩ A) es la probabilidad de que no ocurra el evento ‘o’, cuando aparecen las condiciones M y A. Sabemos que P( o | M ∩ A) + P( o* | M ∩ A) = 1. Si dividimos ambas ecuaciones obtenemos una tercera : P( o | M ∩ A) = P( M | o ∩ A) × P( o | A) P( o* | M ∩ A) P( o* | A) P( M | o* ∩ A) (3) 4.1.2. Utilización del método bayesiano. Si consideramos ‘M’ la nueva medición, ‘A’ la anterior, y ‘o’ el hecho de estar ocupada una celda del mapa de probabilidad, podemos utilizar la ecuación (3) para actualizar los valores de probabilidad de estar ocupadas las celdillas del mapa del entorno. Para ello, en cada medida se reorganizan las celdillas del mapa según se muestra en Figura 20, de modo que siempre tengamos un conjunto de celdillas vacías, y un conjunto de celdillas ocupadas. Si adaptamos la notación de la ecuación (3) a nuestras necesidades, obtenemos la ecuación (4), en la que el subíndice ‘i’ indica la celda iésima del vector obtenido del mapa. Figura 20. Reorganización de las celdillas. P( oi | M ∩ A) = P( M | oi ∩ A) × P( oi | A) P( oi* | M ∩ A) P( M | oi* ∩ A) (4) P( oi* | A) a) P( oi | M ∩ A), es la probabilidad de que en la celdilla i esté ocupada, asumiendo que la nueva medición, M, y la anterior, A, sean dadas. P( oi | M ∩ A) + P( oi* | M ∩ A) = 1. b) P( M | oi ∩ A), es la probabilidad de que una nueva medición, M, sea obtenida, asumiendo que la celdilla ‘i’ esté ocupada y A sea dada. P( M | oi ∩ A) + P( M | oi* ∩ A) = 1. c) P( oi | A), es la probabilidad de que la celdilla ‘i’ esté ocupada en A. P( oi | A)+P( oi* | A) = 1. La ecuación (4) nos permite actualizar el mapa de probabilidad de ocupación : P( oi | M ∩ A) = Par(oi) y P( oi | M ∩ A) + P( oi* | M ∩ A) = 1 P( oi* | M ∩ A) luego tenemos que : Página 19 P( oi | M ∩ A) = Par(oi) / [1 + Par(oi)] La P( oi | A) y P( oi *| A) son valores que se obtienen del mapa, y P( M | oi ∩ A) y P( M | oi*∩ A) se pueden calcular de la siguiente manera : Definimos la probabilidad de que la onda de ultrasonidos pare en la celdilla ‘i’ como P(Hi | A) : P(Hi | A) = P(Hi | oi) × P(oi | A) + P(Hi | oi*) × P(oi* | A) = PDET (i) × P(oi | A) + PFAIL(i) × P(oi* | A) P(Hi | oi) es la probabilidad de que pare en la celdilla ‘i’, asumiendo que está ocupada. P(oi | A) es la probabilidad de estar ocupada la celdilla ‘i’, tomada de la medición A. P(Hi | oi*) es la probabilidad de que pare en la celdilla ‘i’, asumiendo que no está ocupada. P(oi* | A) es la probabilidad de no estar ocupada la celdilla ‘i’, tomada de la medición A. << PDET (i) y PFAIL(i) son valores que dependen de las características del sensor >> − La probabilidad de ocupación de una celda ‘i’ que pertenece a una región vacía : P( M | oi ∩ A) = Πk=1 y del mismo modo : j+m-1 P( M | oi*∩ A) = Πk=1 P(Hk* | oi ∩ A) × P(Hj+m | A) (Ver Figura 21) (5) j+m-1 P(Hk* | oi* ∩ A) × P(Hj+m | A) (6) Figura 21. Esquema representativo de P(M|A) Si dividimos (5) entre (6) obtenemos la siguiente ecuación : P( M | oi ∩ A) = P( Hi* | A ∩ oi ) = 1 - PDET (i) P( M | oi* ∩ A) P( Hi* | A ∩ oi*) (7) 1- PFAIL(i) − La probabilidad de ocupación de una celda ‘i’ que pertenece a una región ocupada (i ∈ [j .. j+m]), si j es el índice de la primera celdilla ocupada (ver Figura 21), es la siguiente : m P( M | oi ∩ A) = ∑n=0 { [Πk=1 m j+n-1 P( M | oi*∩ A) = ∑n=0 { [Πk=1 (9) j+n-1 P(Hk* | oi ∩ A)] × P(Hj+n | oi ∩ A) × P(Hj+n | M) } (8) P(Hk* | oi*∩ A)] × P(Hj+n | oi*∩ A) × P(Hj+n | M) } P(Hj+n | M) es la probabilidad de que la onda pare en la celda ‘j+n’ en la región ocupada. Debido a que existen ‘m’ casos posibles, como se puede apreciar en la Figura 22. Y teniendo en cuenta que esta probabilidad asume una distribución gaussiana, que implica : m ∑n=0 P(Hj+n | M) = 1 Página 20 Pág Si dividimos la ecuación (8) entre la (9) obtenemos : m j+n-1 P(Hk* | oi ∩ A)] × P(Hj+n | oi ∩ A) × P(Hj+n | M) } (10) m j+n-1 P(Hk* | oi*∩ A)] × P(Hj+n | oi*∩ A) × P(Hj+n | M) } P( M | oi ∩ A) = ∑n=0 { [Πk=1 P( M | oi*∩ A) ∑n=0 { [Πk=1 Figura 22. Todos los casos posibles para la región ocupada. Con la ayuda de las ecuaciones (7) y (10), y sustituyendo en (4) , se calculan los valores de probabilidad de ocupación de las celdillas en cada medida nueva, M. 4.1.2.1.Cálculo de PDET (i) y PFAIL(i). Puesto que PDET (i) y PFAIL(i) son características del sensor, es necesario un procedimiento experimental para calcular sus valores. Un método descrito en [LiCho-94] y [Cho-89], consiste en lo siguiente (Figura 23): PDET = P(r) × P(θ) y PFAIL = C PDET 2 θ∈[-w/2,w/2] P(θ) = 1 - (2θ/w) , 2 P(r) = 1 - (r/Rmáx) , r ∈[Rmín ,Rmáx] Rmín es el rango mínimo detectado. Rmáx es el rango máximo detectado. r y θ se calculan para la celdilla ‘i’ Figura 23. Valores de PDET y PFAIL Página 21 4.1.3. Efecto de la reflexión especular. Debido a que el sensor de ultrasonidos retorna una medida de la distancia al obstáculo más próximo basándose en el tiempo transcurrido desde que emite la onda hasta que recibe el eco, en ocasiones ocurre que la medida retornada no es la distancia al obstáculo más cercano ; dos cosas pueden ocurrir para que acontezca tal error : (1) que la superficie del obstáculo sea tal que la amplitud del eco retornado no sea detectada por el receptor, y (2) que el eco sea reflejado por una superficie no perpendicular al transductor, formando un arco, ∝, superior a w/2, (siendo w la apertura de la onda emitida por el sensor), como se detalla en el dibujo de la Figura 24, de modo que al rebotar en otra superficie distinta, llegue al receptor en un tiempo superior al del obstáculo inicial, produciéndose una medida errónea en el cálculo de la distancia. Figura 24. Reflexión especular. La solución consiste en añadir un valor de confianza a la distancias de los objetos. El coeficiente se utiliza para modificar los valores de PDET y PFAIL en el mundo real. VALOR DE CONFIANZA. De la experiencia se deduce, que el efecto de la reflexión especular introduce medidas erróneas en las distancias próximas a los rangos máximos, es decir, cuanto mayor es el rango detectado mayor es la probabilidad de que sea un error debido a la reflexión especular. Para paliar este efecto se introduce un coeficiente, RCF, que multiplicado al valor de PDET corrije el efecto : RCF = ( 1 - [ rango / (max_rango × amplitud_rango) ] ) k Los valores de ‘amplitud_rango’ y ‘k’ son constantes a ser determinadas. Un sensor no muy sensible debería seguir una curva como la que se muestra en la Figura 25 (a), mientras que uno muy sensible como la (b). En la Figura 25 el valor mínimo para RCF está relacionado con la ‘amplitud_rango’. Por ejemplo, si la ‘amplitud_rango’ es la unidad el valor de RCF será cero cuando el rango sea máximo. Esto implica que los valores cercanos al máximo son producto de la reflexión especular. Sin embargo esto no es cierto en zonas abiertas, donde abundarían las medidas de gran magnitud. Página 22 Pág Figura 25. Curvas para RCF en función del valor de k. 4.2. Mapas topológicos. Las soluciones aportadas por diferentes autores se distinguen a su vez en dos grupos : ⇒ construcción del mapa empleando medidas obtenidas por sensores de ultrasonidos y sensores goniométricos situados en los ejes de las ruedas del robot, mediante navegación por el entorno [A.Kurz-96]. La información procedente de los sensores de ultrasonidos es empleada para la construcción de un mapa de situaciones, utilizando redes neuronales (Kohonen’s Self-Organizing Feature Map ) o técnicas de agrupamiento ( RCE-Classifier, Restricted-Coulomb-Energy Classifer ), clasifica el entorno de un conjunto de situaciones con relaciones de similitud local. Partiendo de este mapa de situaciones construye el grafo, de modo que cuando el mapa indica un cambio de situación si no existe ya, se incluye un nuevo nodo y un arco. El grafo resultante representa un mapa del espacio libre del entorno. Aunque no es necesaria la información métrica, justifica su inclusión por dos motivos : determinación de situaciones similares e inclusión de la distancia entre situaciones, que puede ser de utilidad para la navegación. Para incluir la información métrica emplea los sensores goniométricos, conocidas la velocidad rotacional (wrot) y de traslación (wtr) del robot, calcula la posición empleando las siguientes fórmulas ( r es la distancia del eje de la rueda) : x(t) = x(t-1) + r wtr cos(α) y(t) = y(t-1) + r wrot cos(α) α = wrot Y para compensar los errores acumulativos producidos por la imprecisión con que se obtienen las velocidades, se emplea una técnica matemática conocida con el nombre de filtro extendido de Kalman (EKF), cada 30 metros de navegación, lo que conduce a obtener un error final de situación del 1% de la distancia respecto al ángulo de rotación. El reconocimiento de las situaciones basado en el clasificador RCE ( Restricted Coulomb Energy Classifier), es un método clásico para el reconocimiento de patrones, pero antes de ser clasificada la información obtenida del entorno, debe se preprocesada con el objetivo de hacerla lo más independiente posible de la orientación desde la cual se obtuvo. Hay que tener presente que una de las desventajas de la construcción de los mapas topológicos es la gran dependencia del punto de vista de la situaciones. Se describen dos métodos para realizar el preprocesado de los datos, en el que se realiza una rotación virtual del anillo de sensores que obtuvo la medida, realizándose mediante desplazamiento cíclico de la medición, que es equivalente a la rotación real de los sensores respecto de la base del robot : (a) Rotación según una orientación de referencia (RO) : cuando la orientación del robot en el entorno es siempre conocida, se eliminan estos problemas haciendo que el robot se coloque en una orientación de referencia. Página 23 (b) Rotación hacia la posición de mayor ocupación (Most Occupied Orientation, MOO): se orienta el robot hacia la posición según la cual las distancias obtenidas por cada uno de sus sensores es la menor. n DMoo = 1/n (Σi=1 di ) n es el número de sensores di es la medida y orientación obtenida por el sensor ‘i’ hasta el punto central del robot. Una vez preprocesada la información se trata de utilizarla para la distinción de clases. Cada clase está representada por un vector (R-vector), y un radio o esfera de influencia Figura 26. Clasificador RCE Cuando una nueva medición no entra dentro de la esfera de influencia de ninguna de las existentes se trata de una nueva clase. Como consecuencias las situaciones que se obtienen son aproximadamente del mismo tamaño. De las clases obtenidas con el método descrito, se forma el grafo topológico de situaciones, cada clase describe una situación, que son unidas por arcos. ⇒ mapas topológicos obtenidos de un mapa basado en rejilla. Un algoritmo para la contrucción de mapa topológico sobre información procedente de un mapa de rejilla es descrito en [ThrunBu-96B], los pasos descritos son los que se detallan a continuación : 1. Umbralización: Todas aquellas celdillas cuyo valor de ocupación sea menor de un valor umbral son consideradas vacias y agrupadas en el conjunto C. El resto serán las celdillas ocupadas, denotadas por C*. Ver Figura 27 (a). 2. Diagrama de Voroni : Cada punto vacio (x,y) ∈C, tiene uno o más puntos cercanos perteneciente a C*, con la característica de ser equidistantes y los de menor distancia. A estos puntos se les denomia ‘puntos_base’ del punto (x,y). El diagrama de Voroni se compone de todos los puntos vacios con dos o más puntos base. Ver Figura 27 (b). 3. Puntos críticos : A la distancia entre el punto (x,y) y sus puntos base se le denomina ‘clearance’ de (x,y). Los puntos críticos del diagrama de Voroni son todos aquellos que tienen un mínimo local en la función ‘clearance’. Ver Figura 27 (c). 4. Líneas críticas : Son obtenidas al conectar cada punto crítico con sus puntos base, (que son necesariamente dos, ya que de otro modo no producirían un mínimo local en la función ‘clearance’). De este modo el espacio libre queda subdividido en regiones, ver Figura 27 (d). 5. Gráfico topológico : Cada región obtenida según el punto anterior es un nodo del gráfico topológico. Para cadea región se calcula un vértice, ver (e), y los arcos ponderados que unen los vértices representan la distancia y dirección del movimiento para alcanzar dicha región. Es posible obtener mapas topológicos más compactos a partir del mapa topológico original, mediante un procedimiento de poda, según el cual pares de regiones adyacentes son combinadas para formar una única región topológica, si ninguno de ellos tiene más de dos vecinos. El efecto que se consigue es agrupar conjuntos de nodos en pasillos largos en único nodo y también elimina algunos nodos que no tienen hijos, o sea finales. Página 24 Pág Figura 27. Pasos en la extracción de un grafo topológico, partiendo de un mapa rejilla. 4.3. Mapas geométricos. La generación de un mapa geométrico de puntos, empleando un único T/R es imposible, debido a que es imposible distinguir entre un plano y una esquina como se puede apreciar en la Figura 28. Figura 28. Puntos de reflexión de un muro y una esquina. Diferentes soluciones han sido propuestas por diferentes autores. En [BoKu-91] proponen un método para la discriminación de planos/esquinas y flancos (edges) con un único T/R, parametrizando el arco formado cuando el sensor escanea un objeto. La determinación de flanco o plano/esquina se realiza sobre la misma posición, pero para discernir si es un plano o esquina ha de cambiar de posición, comprobando si es plano o esquina mediante el cálculo de la orientación y la distancia al centro de los arcos. Este método requiere múltiples lecturas del mismo obstáculo desde dos posiciones diferentes. [KoKiChu-96] describe un método matemático para la determinación de la dirección y distancia de un reflector o varios, empleando un único sonar. Para el caso de un reflector simple, la determinación de la dirección la realiza mediante fórmulas basadas en la amplitud del eco reflejado, y para la determinación de la distancia emplea un método basado en la correlación entre señal emitida y recibida. Este método consiste en pasar un filtro (matched filter), cuya respuesta impulso es la mostrada en la Figura 29 (a), al eco reflejado, de modo que el pico temporal de la señal resultante (Figura 29 (b)), será inmediatamente detectado, siendo su amplitud proporcional a la de la señal emitida. Página 25 Figura 29. Respuesta impulso del “matched filter”. (a) Onda recibida (b) Función de autocorrección. Cuando se trata de obtener dirección y distancia de múltiples reflectores, como se muestra en la Figura 30, tenemos dos problemas : (A) Detección de los diferentes reflectores individuales, para una determinada orientación del sensor. Para determinar de entre todos los picos que hay en el eco reflejado, cuales son producto del reflejo de un reflector y cuales son producto del ruido, realizan un barrido circular manteniendo el sonar en la misma posición espacial pero realizando medidas rotando en incrementos constantes del ángulo (∆∂), en torno a su eje vertical, ya que un reflector tendrá el mismo TOF independientemente de la orientación del sonar receptor. De este modo cada pico tendrá tres parámetros : TOF, amplitud y orientación del sonar. Agrupamos los picos en grupos para un mismo tiempo de vuelo GP = {P(ti,∂i,ai) / | ti - ti-1 | < δ, | ∂i - ∂i-1 | = ∆∂, i = k, ... k+N}. Aceptaremos o rechazaremos un GP siguiendo los siguientes criterios : Si | ∂k - ∂k+N | ≥ β - ∆∂ se acepta como válido, que es lo mismo que decir que si el ángulo de barrido de un GP es menor que el ancho del haz, en una cantidad mayor que ∆∂, entonces el GP no será válido, se considerará ruido (β es la anchura del haz emitido). Si Max { tk , tk+1 ... tk+N } - Min{ tk , tk+1 ... tk+N } < ∆t será valido, es decir el TOF debe estar dentro de un límite muy pequeño para ser aceptado. Debe existir un punto de amplitud máxima dentro del GP que sea mayor que el pico obtenido en el primer muestro y el último. (B) Determinar la dirección de los reflectores que distan la misma distancia del sonar (como por ejemplo 2 y 3 en Figura 30). La amplitud de un pico producido por varios reflectores en la misma distancia es la suma de las amplitudes individuales de cada uno de ellos. Y se determina el número de puntos de reflexión por comparación, conociendo experimentalmente la amplitud del pulso reflejado por un único reflector. Se resuelve el problema minimizando una función. Página 26 Pág Figura 30. Múltiples puntos de reflexión. El algoritmo que emplean para la determinación de distancia y dirección de los obstáculos de un entorno especular cerrado es el siguiente : a) emite un pulso, recibe un eco sobre el que aplica el filtro y determina los picos de la señal. b) agrupa los picos con similar TOF en grupos. c) rota el sonar a la siguiente posición angular, sobre su eje y vuelve al punto a. Si ha finalizado una rotación completa, seguir por d). d) desprecia los grupos según las tres reglas indicadas anteriormente. e) estima la distancia de un grupo, realizando la media aritmética las distancias de los puntos del grupo. f) estima la dirección mediante minimización de una función El trabajo realizado por [BaKu-90] consiste en la creación del mapa mediante la discriminación entre planos y esquinas, empleando información de amplitud y TOF de la onda recibida. Utiliza dos T/R separados una distancia “d”, y realizan un estudio de la separación óptima entre ellos para evitar errores de medida, sin embargo al menos dos lecturas de la misma posición han de ser tomadas para realizar los cálculos. Planos y esquinas son distinguidos empleando diferente tipo de símbolo en el mapa, y para los planos calcula a su vez la orientación. Figura 31. A la izquierda mapa de puntos obtenida con un único sensor de ultrasonidos, y a la derecha mapa de puntos obtenido con dos sensores de ultrasonidos. En [JeKi-95] utilizan este mismo esquema, un T/R situado en el centro y dos receptores a derecha e izquierda del primero, pero con una sola medición discrimina entre planos y esquinas, basándose en la amplitud del eco reflejado y características de los ángulos más que en información temporal. Página 27 En [KlKu-94], [KlKu-95], y [AkKl-95] demuestran que dos transmisores, que se disparan separadamente en el tiempo, y dos receptores es necesario y suficiente para distinguir entre planos, esquinas y flancos, sin movimiento en el sensor. En el artículo utilizan un vector de sensores tal y como muestra la figura: Figura 32. Situación de los receptores y transductores Los dos receptores están cerca para reducir el error de correspondencia de los ecos reflejados, y los transmisores están lo suficientemente separados como para conseguir la clasificación de los obstáculos en el mayor rango posible (de 5 a 7 metros). El ángulo de recepción de un eco puede ser calculado empleando la amplitud del eco reflejado, tal y como muestran los anteriores artículos, pero éste utiliza la diferencia en el tiempo de llegada del eco a los dos receptores. Para diferenciar planos, esquinas y flancos emplea la diferencia de los ángulos de llegada del eco reflejado de cada transmisor al vector de receptores. Y para establecer diferencias entre flancos y planos/esquinas se ayuda de información calculada por TOF. En [AkKl-95] se realiza una extensión del estudio para la localización y clasificación de obstáculos en tres dimensiones, para ello introduce tres receptores y tres transmisores, dispuestos en 2D. En [LeDuCo-92] se introduce un algoritmo para la creación y el mantenimiento mediante refinamiento sucesivo del mapa geométrico de un entorno cerrado, empleando el filtro extendido de Kalman para la eliminación del ruido introducido en las mediciones. Las fórmulas para la extracción del conocimiento geométrico así como el conjunto de sensores a emplear no son detalladas. También introduce un método para la determinación de la posición del robot dado un mapa a priori. En [WeGiWy-94] se utilizan sensores de ultrasonidos para situación de un brazo robot de tres grados de libertad, y describe un método para el cálculo de distancia y ángulo de un obstáculo por un “vector de 4 T/R”. El método denominado “digital beam-forming implementation” consiste en combinar las señales recibidas por un conjunto de T/R para realzar la señal en una específica dirección mientras se suprime en otras. Procedimiento ampliamente utilizado en radar para producir un haz direccional. Por otro lado, cuando el mapa ya se encuentra diseñado, otros problemas han de ser tenidos en consideración, como la determinación de la posición del robot respecto de un mapa a priori [SaBe94],[CuKy-95], [NiHo-94], [LeDu-91], la detección de obstáculos no previstos [KuVi-91], [BorKo-88], [BorKo-95], [BorKo-91b],[GaRoVi-95], [RJLTM-93], [ARTD-91], y la planificación de la trayectoria de navegación del robot. Pero estos temas no van a ser tratados en el presente estudio. Página 28 Pág 5. Experimentos realizados. 5.1. Extracción de información procedente de un único T/R. A continuación se mostrarán una serie de ensayos realizados para poner de manifiesto la efectividad de los conocimientos teóricos vistos anteriormente. Los archivos de simulación se encuentran en el anexo. 5.1.1. Ensayo mediante datos simulados. La prueba consistirá en detectar dos obstáculos puntuales, que se encuentran uno a continuación de otro, a unas distancias de 0.2 m y 0.6 m, respectivamente. El objetivo del ensayo consistirá en constatar mediante la herramienta de simulación matemática MATLAB la eficacia del método matemático descrito en el apartado 3.2. Para ello se simula matemáticamente el eco producido por estos obstáculos cuando se emite una señal de ultrasonidos a una frecuencia “fc” igual a 40KHz durante 0.4 ms. Y se realiza un muestreado de éste a una frecuencia de 1MHz, durante un tiempo “to” igual a 4.096 ms, lo que implica una visibilidad máxima de 0.7m, aplicando la fórmula Dmáx = (to × c)/ 2 ( c es la velocidad del sonido ). Los resultados son exactos, como se puede apreciar en la Figura 33, ambos obstáculos son detectados sin margen de error, puesto que todas las señales has sido generadas matemáticamente. Figura 33. Señal reconstruída mediante Matched Filtering. 5.1.2. Ensayo mediante datos reales : único obstáculo. Aplicando los mismos conceptos que en el apartado anterior, pero en este caso empleando un eco real, a las mismas frecuencias y tiempos, obtenemos los resultados que se muestran en la Figura 34, en la que se aprecia la existencia de un obstáculo puntual a una distancia del T/R de 0.4 m, como se esperaba. De este modo el método de reconstrucción de la señal para la detección de obstáculos puntuales, basado en el tiempo de vuelo ha sido comprobado, en los siguientes apartados se empleará un procedimiento que además utiliza la amplitud del eco recibido para extraer mayor cantidad de información acerca de los obstáculos, e intentar la discriminación entre diferentes tipos de reflectores : muros, esquinas en ángulo recto, ... Página 29 Figura 34. Señal reconstruída mediante Matched Filtering. 5.1.3. Ensayo mediante datos reales : detección de muros y esquinas. En el siguiente ensayo se pretende detectar los dos muros y la esquina de un entorno especular cerrado, utilizando los conceptos estudiados en [Boku-91] (descrito en apartado 3.1). Para realizar el experimento se ha utilizado una tarjeta para la emisión y recepción de ultrasonidos cuyo esquema se encuentra en la Figura 35. Los sensores se han montado sobre un soporte capaz de realizar un giro completo sobre su eje, lo que permite realizar una captura de información a intervalos angulares constantes, y comunica con un PC del que recibe las órdenes, y al que envía los datos. Estos datos son posteriormente procesados, (“off line”), con el objetivo de detectar muros y esquinas en Figura 35. Equipo de adquisición de datos. ángulo recto. Los puntos que pertenezcan al mismo muro se unirán formando una línea recta, mientras que los puntos que formen una esquina son marcados mediante un círculo. Los resultados obtenidos son los que se aprecian en la Figura 36. Página 30 Pág Figura 36. Muros y esquina detectados en color verde. El anterior resultado se ha obtenido mediante la captura de información, describiendo un arco de apertura 100º sobre la esquina que se pretende detectar, desde dos posiciones diferentes, a una frecuencia de emisión y recepción de 40KHz. El circuito demodulador obtiene la envolvente de la señal recibida a una frecuencia de 10KH. En la siguiente figura (Figura 38) se visualizan, representados como arteriscos, los puntos detectados en cada muestreo. Utilizando información de la amplitud se extraen los puntos que se marcan con un círculo rojo. De las dos mediciones se obtienen un total de diez puntos, pertenecientes a los obstáculos (muros y esquinas). Finalmente se fusionan resultados y se unen los puntos que pertenecen al mismo muro, y se detecta la esquina. La obtención de los puntos marcados con un círculo se realiza mediante el cálculo de los puntos, que superando un umbral de amplitud, tienen un máximo relativo suficientemente significativo. En la Figura 37 se expone una representación de la señal obtenida desde la posición del sensor indicada en la Figura 38 izquierda. El equipo comienza la captura de información desde el eje x positivo local al sensor, y en el sentido de las agujas del reloj. Como se puede observar existen cinco puntos máximos relativos que se corresponden con los cinco círculos del mapa. Para conseguir este resultado se ha tenido que pasar un filtro exponencial en los datos, que produce una ampliación mayor del eco recibido a mayor distancia, de este modo se consigue detectar los obstáculos más lejanos, cuya amplitud es menor en principio. Figura 37. Gráficas de amplitud del eco recibido. Derecha : sin filtro exponencial, izquierda con un filtro exponencial que aumenta el eco de los obstáculos más lejanos. Página 31 Página 32 5.1.4. Ensayo mediante datos reales : construcción de mapa geométrico. Para realizar el siguiente experimento se ha utilizado el mismo equipo descrito en el apartado 5.1.3. El objetivo del experimento ha consistido en la creación de un mapa geométrico del entorno, para ello se ha realizado un filtrado de los datos, basándonos en los mismos criterios teóricos detallados con anterioridad : tiempo de vuelo e información de la amplitud de la señal. El resultado final es el que se muestra en la Figura 39, en la que se muestran los paredes del entorno, y un cenicero circular situado en el suelo ; los asteriscos denotan los lugares donde se han detectado obstáculos. Las diferentes posiciones del sensor desde donde se han obtenido las medidas son las que se denotan por círculos numerados, en total han sido recogidas nueve mediciones diferentes, cada una de las cuales ha efectuado un total de 200 medidas, una cada 1.8º, describiendo un giro completo sobre su propio eje. Figura 39. Mapa geométrico del entorno. Los asteriscos denotan los obstáculos detectados por el algoritmo. El procedimiento de detección de la información es el siguiente : para cada conjunto de medidas (tomadas desde una posición geométrica del sensor), se realizan dos filtrados, en primer lugar seleccionan los puntos pertenecientes a los obstáculos más cercanos al sensor, basándonos en el tiempo de vuelo, y posteriormente se seleccionan aquellos puntos cuya amplitud forma un máximo local. Véase en la Figura 40 representados con asteriscos los puntos detectados por el sensor en la posición indicada, y mediante círculos aquellos de máxima amplitud. Estos puntos circulares se corresponden, con mayor probabilidad, con los obstáculos reales del entorno. Juntando todos los resultados obtenidos en cada posición del sensor, se ha trazado el mapa de la Figura 39. Página 33 Figura 40. Puntos detectados por el sensor de ultrasonidos desde la posición 6 del T/R. 5.1.5. Ensayo mediante datos reales : construcción de mapa rejilla. El siguiente ensayo tiene como objetivo la creación de un mapa del entorno, utilizando los conceptos estudiados en [Elfes-87] y [Mora-88], que ha sido elegido frente al método bayesiano descrito en el apartado 4.1.1. , por simplicidad de implementación. Para realizar el experimento se ha utilizado un equipo como el que se describe en la Figura 35. Las funciones de densidad de probabilidad , ( ver la Figura 18), han sido implementadas con los siguientes valores de los parámetros : Rmin = 1 cm y ε = 0.1 cm. Los resultados son los que se muestran en la Figura 41, donde se representa con un arterisco los puntos en los que se ha detectado mayor probabilidad de existencia de obstáculos. El archivo para la creación del mapa, escrito en matlab se encuentra en el anexo. Figura 41. Mapa rejilla del entorno. Los asteriscos denotan los obstáculos detectados por el algoritmo Página 34 Pág 6. Conclusiones y líneas futuras. El presente trabajo ha centrado su interés en los métodos empleados en la construcción de un mapa en 2D del entorno, con los que un vehículo pueda navegar y tenga facilidad para orientarse en el terreno, empleando sensores de ultrasonidos para la captura de información. Se han expuesto los conceptos físicos básicos de funcionamiento de los sensores de ultrasonidos, y el modo de extracción de la información basándose en el tiempo de vuelo (TOF) y la amplitud de la señal. También se han resaltado las ventajas e inconvenientes de cada tipo de mapa : geométrico, de rejilla y topológico, y se han realizado un conjunto de experiencias en la construcción de mapas geométricos y de rejilla con la herramienta de simulación MATLAB. Los resultados conseguidos ponen de manifiesto la efectividad de la teoría. Como futuras líneas de trabajo se pretende seguir con el perfeccionamiento en la elaboración del mapa, tendiendo a la extracción a más alto nivel de obstáculos estáticos, que permitan la navegación eficaz del vehículo autónomo por el entorno. Para ello el conjunto de tareas a realizar, serían las que se detallan a continuación : − Traducción de los algoritmos a otro lenguaje de programación orientado al objeto, que permita una estructura de datos más elaborada y compacta, mayor potencia gráfica, y ejecución de procesos para la simulación del móvil por un entorno virtual, donde poder ensayar en el futuro los nuevos algoritmos utilizados : por ejemplo C++. − Caracterización de la respuesta del sensor de ultrasonidos utilizado en las experiencias con el objetivo de discernir con la mayor exactitud posible la presencia de uno o más obstáculos, es decir conseguir la reducción del arco de puntos que indican la ubicación del obstáculo. Conseguir esta reducción nos permitiría obtener una mayor fiabilidad de los datos obtenidos, y por consiguiente una mayor claridad en el mapa que representa el terreo por donde se mueve el vehículo móvil. − Desarrollo de un modelo de simulación de los ecos producidos por un entorno virtual con los tres tipos de obstáculos : muros, esquinas en ángulo recto y superficies reflectoras puntuales. Caracterización del ruido producido por efecto del sensor al efectuar la medición, el ruido ambiental producido por efecto de la temperatura, humedad, etc ... − Perfeccionamiento del algoritmo para la diferenciación de planos, esquinas y obstáculos puntuales en un entorno especular cerrado por el que navega un móvil. → Empleando un único transductor (T/R), como en las pruebas realizadas actualmente, efectúando medidas en diferentes posiciones describiendo un giro completo sobre su eje. Describiendo una estrategia de posicionamiento en pro del refinamiento de la información obtenida y de la existente con anterioridad. → Empleando un anillo de transductores, separados a una distancia constante alrededor del móvil, lo que acelera el tiempo de recogida de medidas, pero incluye otros problemas como por ejemplo la necesidad de discernir los ecos que corresponden a cada receptor. − Extracción de información elaborada del entorno, intentando la formación de figuras geométricas con el objetivo de mejorar la navegación del móvil y permitir su localización en el mapa. − Desarrollo de algoritmos para la navegación del móvil empleando la representación del mapa más efectiva, es decir que conlleve menor coste. Este apartado conlleva el estudio de la localización del robot sobre un mapa a priori, elaboración de algoritmos para evitar obstáculos. Página 35 7. Anexo. 7.1. Archivo de simulación en Matlab, para el ensayo 5.1.1 % % ARCHIVO docto2.m % % Este archivo sitúa unos cuantos obstáculos % y después los detecta % % NOTA: Si se varia tau0 , t0 ha de estar en relación % Si se varia la distancia de los objetivos, pensar en la máxima reconocible % El coeficiente de reflectabilidad ha de ser máximo 1 % c = 343; % Velocidad de la luz (m/seg) tau0 = 0.0004; % Duración del pulso de emisión en (seg) fc=40000; % Frecuencia del pulso de emisión (Hz) wc= 2*pi*fc; % Ancho de banda del pulso de emisión (radianes) al= wc; % Ni idea t0= 0.0040961; % Tiempo de observación (seg) n = 4096; % Numero de muestras a tomar % % Vector de objetos xn(1) = 0.20; % Primer obstáculo en (m) xn(2) = 0.60; % Segundo obstáculo en (m) % Vector de reflectabilidades fn(1) = 0.9; % Reflectabilidad del primer obstáculo MAXIMO 1 fn(2) = fn(1); % Reflectabilidad del segundo obstáculo MAXIMO 1 % nt=length(xn); % Numero de obstáculos % % Tenemos en : % 1. p : pulso de emisión % 2. s : eco de recepción % 3. fp y fs fft de p y s % 4. f es la señal demodulada % % Inicialización: % j = sqrt(-1); dt=t0/n; % Incremento de tiempo entre muestras for i=1:n; t(i) = dt*(i-1); % Vector de tiempos x(i) = .5*c*t(i); % Vector de espacios p(i) = 0; % Vector de señal emitida if abs(t(i)-(tau0/2)) <= (tau0/2), p(i) = exp(j*wc*t(i)+j*al*(t(i)^2)); end; end; % % Simulación de la señal reflejada % t2=(tau0/2); for i=1:n; s(i)=0; for m=1:nt; td=t(i)-(2*xn(m))/c; if abs(td-t2) <= t2, s(i) = s(i) + fn(m)*exp(j*wc*td+j*al*(td^2)); end; end; end; for i=1:n; % Baseband conversion cc=exp(-j*(wc+al*tau0)*t(i)); p(i) = p(i)*cc; s(i) = s(i)*cc; end; % % GRAFICAS figure; plot(t,real(p)); title(' PULSO DE RECONOCIMIENTO '); xlabel(' t ( segundos )'); ylabel(' p(t) '); figure; plot(t,real(s)); title(' ECO REFLEJADO '); xlabel(' t ( segundos )'); Página 36 Pág ylabel(' s(t) '); % % CALCULO DE LAS FFT Y SEÑAL RECONSTRUIDA % fp = fft(p); fs = fft(s); for i=1:n; ff(i)=0; ff(i) = fs(i) * conj(fp(i)); end; f= ifft(ff); % % Gráfica figure; f = abs(f); plot(x,real(f)); title(' Señal reconstruida por Matched Filter '); xlabel(' x ( metros)'); ylabel(' f(x) '); 7.2. Archivo de simulación en Matlab, para el ensayo 5.1.2 % % ARCHIVO docto3.m % % Este archivo lee un eco % y después detecta el obstáculo/s % % NOTA: Si se varia tau0 , t0 ha de estar en relación % Si se varia la distancia de los objetivos, pensar en la máxima reconocible % El coeficiente de reflectabilidad ha de ser máximo 1 % c = 343; % Velocidad de la luz (m/seg) tau0 = 0.0004; % Duración del pulso de emisión en (seg) fc=40000; % Frecuencia del pulso de emisión (Hz) wc= 2*pi*fc; % Ancho de banda del pulso de emisión (radianes) al= wc; % Ni idea t0= 0.0040961; % Tiempo de observación (seg) % Distancia máxima visible (t0 * c) / 2 metros n = 4096; % Numero de muestras a tomar % % % Tenemos en : % 1. p : pulso de emisión % 2. s : eco de recepción % 3. fp y fs fft de p y s % 4. f es la señal demodulada % % Inicialización: % j = sqrt(-1); dt=t0/n; % Incremento de tiempo entre muestras for i=1:n; t(i) = dt*(i-1); % Vector de tiempos x(i) = .5*c*t(i); % Vector de espacios p(i) = 0; % Vector de señal emitida if abs(t(i)-(tau0/2)) <= (tau0/2), p(i) = exp(j*wc*t(i)+j*al*(t(i)^2)); end; end; % % Lectura la señal reflejada % load d:\User\Docto\Trabajos\sensores\Radar\datos\a5.dat; s=a5; for i=1:n; % Baseband conversion cc=exp(-j*(wc+al*tau0)*t(i)); p(i) = p(i)*cc; s(i) = s(i)*cc; end; % % GRAFICAS figure; plot(t,real(p)); title(' PULSO DE RECONOCIMIENTO '); xlabel(' t ( segundos )'); ylabel(' p(t) '); figure; plot(t,real(s)); title(' ECO REFLEJADO '); xlabel(' t ( segundos )'); ylabel(' s(t) '); % Página 37 % CALCULO DE LAS FFT Y SEÑAL RECONSTRUIDA % fp = fft(p); fs = fft(s); for i=1:n; ff(i)=0; ff(i) = fs(i) * conj(fp(i)); end; f= ifft(ff); % % Grafica figure; f = abs(f); plot(x,real(f)); title(' Señal reconstruida por Matched Filter '); xlabel(' x ( metros)'); ylabel(' f(x) '); 7.3. % % % % % % % % % % % % % % % % % % % % % % % Archivo de simulación en Matlab, para el ensayo 5.1.3 ARCHIVO Ver2.m ESQUINA DEL DESPACHO REPITE (1) Lee 70 ecos (n), de la esquina del despacho, tomados cada 1.8º empezando desde la puerta, y girando en sentido de las agujas del reloj ( Cada eco consta de 200 medidas (m) ) (2) Determina si los obstáculos son muros o esquinas. HASTA finalizar el numero de muestras tomado (Vector T_R) NOTA: Si se varia tau0 , t0 ha de estar en relacion Si se varia la distancia de los objetivos, pensar en la maxima reconocible El coeficiente de reflectabilidad ha de ser maximo 1 ************************************************************************************ VARIABLES GLOBALES ************************************************************************************ clear all c = 34300; fc= 40000; frec_muest=10000; % Velocidad del sonido % Frecuencia del pulso de emision % En Hz (10 KHz) n = 200; m = 70; t0= n/frec_muest; inc_ang = 360/200; % % % % % % Numero Numero Tiempo 360º / de de de nº (cm/seg) ( 40 KHz) muestras a tomar orientaciones del T/R observacion (seg) medidas,, se realiza una medida cada 1.8º Otras variables inicio=1; fin=n; % Esto representa el mapa cartesiano, donde se tomaron las medidas pared1_x = [0 0 250 250 0] ; pared1_y = [0 250 250 0 0]; T_R = [144 126.5, % Situación del primer muestreo 133.5 105]; % Situación del segundo muestreo max_ind = 500; mapa_radio(max_ind,max_ind) = 0; mapa_ang(max_ind,max_ind) = 0; mapa_T_R(max_ind,max_ind) = 0; % Tenemos en : % 1. p : pulso de emision % 2. s : eco de recepcion % 3. fp y fs fft de p y s % 4. f es la señal demodulada % % Inicializacion: % j = sqrt(-1); Página 38 Pág dt=t0/n; % Incremento de tiempo entre muestras for i=1:n; t(i) = dt*(i-1); % Vector de tiempos x(i) = .5*c*t(i); % Vector de espacios en cm end; % ************************************************************************************ % PRIMERA Lectura la señal reflejada % cada 1.8º, es decir 200 muestras (m), de 200 medidas cada muestra (n) % ************************************************************************************ % ----------------------------------------------------------------% Este archivo contiene los datos tomados, con un preprocesado por matching filtering %load d:\User\Docto\Trabajos\6cred\pruebas\Fourier\mapa\Datos_1.res; %load d:\User\Docto\Trabajos\6cred\pruebas\Fourier\mapa\Datos_2.res; load c:\user\6cred\pruebas\pru_51~1.3\Datos_1.res load c:\user\6cred\pruebas\pru_51~1.3\Datos_2.res % % % Primer procesado: cálculo de la señal del eco % mediante el método del Matching Filtering % -----------------------------------------------------------------% Datos procesados segun "matching filtering", tomados en coordenadas indicadas % en T_R, y situados uno a continuacion de otros, de modo de que existe % una fila por angulo de medida (m), % una columna por medida tomada y archivo cargado (n*length(T_R(:,1)-1)) % s = [Datos_1 Datos_2]; clear total_x; clear total_y; clear esquina_x; clear esquina_y;clear ele; j = 1; h = 1; % ele intenta incrementar la amplitud de obstaculos a más de 2 metros % dejar igual los anteriores for z1 = 1:n, ele(z1) = exp(z1/75); end; esquina_x(1) = esquina_y(1) = resolu = 6; d = 1; 0; 0; for k=1:length(T_R(:,1)-1), clear clear clear clear clear clear fnew; clear mapa; clear mapa_x; clear mapa_y; clear angulo; amplitudes; clear indice;clear dist_max; dist_max_x; clear dist_max_x_2; dist_max_y; clear dist_max_y_2; detectados; mapa_todos; for z1=1:m, for z2=1:n, fnew(z1,z2) = s(z1,z2+( (k-1)*n)) * ele(z2); end; end; X_1 = T_R(k,1) Y_1 = T_R(k,2) % Coordenadas del T/R % -------------------------------------------------% Segundo procesado: obtención de los puntos % donde se encuentran los obstáculos % ------------------------------------------------% % % % % mapa[j,k], j variando de 1 a m, y k dependerá del numero de obstaculos en esa linea la primera columna contiene el angulo de medición, y el resto los radios a cada obstaculo mapa_x[j,k], j variando de 1 a m, y k dependerá del numero de obstaculos en esa linea cada columna contine la coordenada en x, respecto al %sistema de coordenadas global, de cada obstáculo % cada fila se refiere a un angulo de medición % mapa_y[j,k], j variando de 1 a m, y k dependerá del numero de obstaculos en esa linea % cada columna contiene la coordenada en y, respecto al sistema de % coordenadas global, de cada obstáculo % cada fila se refiere a un angulo de medición % % dist_max[j], j variando de 1 a m % distancia al obstáculo con amplitud maxima para % una posición del T/R % dist_max_x[j], j variando de 1 a m % distancia al obstáculo con amplitud maxima para % una posición del T/R, en coordenadas cartesianas % dist_max_y[j], j variando de 1 a m % distancia al obstáculo con amplitud maxima para % una posición del T/R, en coordenadas cartesianas % dist_max_2[j], j variando de 1 a m Página 39 % % % % % % % % % % % % % % % % % % lleva un 0 donde no hay obstáculo y la distancia al punto más significativo dist_max_x_2[j], j variando de 1 a m en coordenadas cartesianas lo de dist_max dist_max_y_2[j], j variando de 1 a m en coordenadas cartesianas lo de dist_max amplitudes[k,j], k de 1 a 2, j variando de 1 a m primera fila:amplitud del obstáculo más significativo segunda fila:distancia al obstáculo más significativo detectados[j], j variando de 1 a m indica las posiciones representativas de cada curva con cero donde no hay nada total_x[j], j variando de 1 a m en coordenadas cartesianas, almaceno todos los puntos calculados en cada pasada total_y[j], j variando de 1 a m en coordenadas cartesianas, almaceno todos los puntos calculados en cada pasada disp(' Procesando información del T/R ....'); % Búsqueda de las distancias a los obstáculos (Cálculo de máximos en la curva fnew) for vec=1:m; % Coordenadas polares del obstáculo, respecto al sistema de coordenadas local al T/R angulo(vec)= -(pi/180)*((inc_ang*vec)-inc_ang); % angulo en radianes % Obstaculos dentro de la orientacion vec, tomada desde (X_1, Y_1) [maximo,i]= max(fnew(vec,inicio:fin)); indice(vec) = i; % Almaceno el indice donde esta el maximo umbral = maximo - (maximo/10); dist_max(vec) = x(i); dist_max_x(vec)= ( x(i) * cos(angulo(vec))) + X_1; dist_max_y(vec)= ( x(i) * sin(angulo(vec))) + Y_1; mapa(vec,1)= angulo(vec); % la primera columna almacena el angulo cantidad=1; for i2=inicio:fin; if ((i2~=1) & (i2~=fin)) if ((fnew(vec,i2)> umbral )& (fnew(vec,i2)>fnew(vec,i2-1))& (fnew(vec,i2)>fnew(vec,i2+1))) mapa(vec,cantidad+1)=x(i2); % Radio al obstáculo % coordenadas cartesianas globales, % almacenadas con una cierta resolucion coord_x = ( x(i2)* cos(angulo(vec))) + X_1; coord_y = ( x(i2)* sin(angulo(vec))) + Y_1; mapa_x(vec,cantidad)= coord_x - rem(coord_x,resolu) + (resolu/2); mapa_y(vec,cantidad)= coord_y - rem(coord_y,resolu) + (resolu/2); cantidad=cantidad+1; end; end; end; end; % Búsqueda de las distancias a los obstáculos Representativas % (Cálculo de máximos en la curva amplitudes,, siguiendo [BoKu-91]) % Amplitud del obstáculo % distancia al obstáculo for vec=1:m, amplitudes(1,vec) amplitudes(2,vec) end; correc = 3; primero = 1; ultimo = m; más pronunciado : primera fila más pronunciado : segunda fila = fnew(vec,indice(vec)); = x(indice(vec)); % 3 * 1.8 grados a derecha e izquierda del obstáculo umbral = max(amplitudes(1,:)); umbral = umbral * ( 3 / 6); for vec=primero:ultimo , z1 = vec - 1; z2 = vec + 1; z3 = vec - correc; z4 = vec + correc; if (z1 <= 0), z1 = ultimo+z1; end; if (z2 > ultimo), z2 = z2 - ultimo; end; if (z3 <= 0), z3 = ultimo+z3; end; if (z4 > ultimo), z4 = z4 - ultimo; end; Página 40 Pág if ( amplitudes(1,vec) > umbral & amplitudes(1,vec) > amplitudes(1,z1) amplitudes(1,vec) > amplitudes(1,z2) & amplitudes(1,vec) > amplitudes(1,z3) & amplitudes(1,vec) > amplitudes(1,z4)), detectados(vec) = amplitudes(1,vec); dist_max_2(vec) = amplitudes(2,vec); coord_x = ( dist_max_2(vec) * cos(angulo(vec))) + X_1; coord_y = ( dist_max_2(vec) * sin(angulo(vec))) + Y_1; dist_max_x_2(vec)= coord_x - rem(coord_x,resolu) + (resolu/2); dist_max_y_2(vec)= coord_y - rem(coord_y,resolu) + (resolu/2); total_x(j) = round(dist_max_x_2(vec)); total_y(j) = round(dist_max_y_2(vec)); & if total_x(j) > 0 & total_y(j) > 0, if mapa_radio(total_x(j),total_y(j)) ~=0, % Comprobando si es esquina % coordenadas del punto anterior, del T/R X_2 = T_R(mapa_T_R(total_x(j),total_y(j)),1); Y_2 = T_R(mapa_T_R(total_x(j),total_y(j)),2); distan = abs( sqrt( (X_1-X_2)^2 + (Y_1-Y_2)^2) ); beta_esquina = asin(distan/mapa_radio(total_x(j),total_y(j)) ); beta = abs(mapa_ang(total_x(j),total_y(j))- angulo(vec)); if abs(beta-beta_esquina) <= (inc_ang*pi/180), % Se trata de una esquina esquina_x(h) = dist_max_x_2(vec); esquina_y(h) = dist_max_y_2(vec); h = h+1; end; end; %comprobando si hace muro con otro if k > 1, ok = 0; for e = 1:length(pared(:,1)), f= pared(e,1); % primer punto del posible muro if ((total_x(f) ~= total_x(j)) | (total_y(f) ~= total_y(j))) beta = abs (mapa_ang(total_x(f), total_y(f))- angulo(vec)); if beta <= 0.06, % 2*1.8º(en radianes) if length(pared(e,:)) > 1, if pared(e,2) > 0, if total_x(j) > total_x(pared(e,2)), pared(e,2)=j; end; if total_x(j) < total_x(pared(e,1)), pared(e,1)=j; end; else pared(e,2) = j; end; else pared(e,2) = j; end; ok = 1; end; end; end; if ok == 0, pared(d,1)= j; % puntero a total_x y total_y d = d+1; end; else pared(d,1)= j; % puntero a total_x y total_y d = d+1; end; % variables para el proximo calculo mapa_radio(total_x(j),total_y(j)) = dist_max_2(vec); mapa_ang(total_x(j),total_y(j)) = angulo(vec); mapa_T_R(total_x(j),total_y(j)) = k; end; j = j+1; else detectados(vec) = dist_max_2(vec) = dist_max_x_2(vec) dist_max_y_2(vec) 0; 0; = 0; = 0; end; end; %%fin calculo de maximos en curva de amplitudes Página 41 if ( vec == 1), total_x = dist_max_x_2; total_y = dist_max_y_2; end; % -------------------------------------------------% Representación gráfica de funciones % -------------------------------------------------figure; % % Dibujamos las paredes y la posición de T/R % con solo los obstaculos mas pronunciados % plot(pared1_x,pared1_y,'y-',X_1,Y_1,'ro'); hold; plot(dist_max_x,dist_max_y,'g*',dist_max_x_2,dist_max_y_2,'ro'); mensaje = sprintf(' Mapa con puntos máximos detectados. T/R en (%3.1f,%3.1f)',X_1,Y_1); title(mensaje); xlabel(' Distancia eje X, (cm)'); ylabel(' Distancia eje Y, (cm)'); figure; % % Curva de amplitudes a obstaculos mas representativos plot(angulo,amplitudes(1,:),'r-'); hold; plot(angulo,detectados,'c*'); title(' Mapa con amplitudes a puntos más representativos.'); xlabel(' Angulo (radianes)'); ylabel(' Amplitud '); end; figure; % % Dibujamos las paredes y los puntos calculados en todas % las mediciones, sin rechazar ninguno plot(pared1_x,pared1_y,'y-',total_x,total_y,'r*',esquina_x,esquina_y,'co'); mensaje = sprintf(' Mapa con muros y esquinas detectadas tras %i muestreos ',k); title(mensaje); xlabel(' Distancia eje X, (cm)'); ylabel(' Distancia eje Y, (cm)'); figure; % Dibujamos los muros y esquinas plot(pared1_x,pared1_y,'y-'); hold on; for i = 1: length(pared(:,1)), if (pared(i,2) ~= 0), dibu_x(1) = total_x(pared(i,1)); dibu_y(1) = total_y(pared(i,1)); dibu_x(2) = total_x(pared(i,2)); dibu_y(2) = total_y(pared(i,2)); plot(dibu_x,dibu_y,'g-'); end; end; plot(esquina_x,esquina_y,'go'); mensaje = sprintf(' Mapa con muros y esquinas detectadas tras %i muestreos ',k); title(mensaje); xlabel(' Distancia eje X, (cm)'); ylabel(' Distancia eje Y, (cm)'); hold off; 7.4. Archivo de simulación en Matlab, para el ensayo 5.1.4 % % % % % ARCHIVO Ver4.m PASILLO A, desde ascensor % % REPITE % (1) Lee 200 ecos (n), de la esquina del despacho, % tomados cada 1.8º empezando desde la puerta, y girando % en sentido de las agujas del reloj % ( Cada eco consta de 200 medidas (m) ) % HASTA finalizar el numero de muestras tomado (Vector T_R) % (2) Construye un mapa geométrico del entorno con puntos % % NOTA: Si se varia tau0 , t0 ha de estar en relación Página 42 Pág % Si se varia la distancia de los objetivos, pensar en la máxima reconocible % El coeficiente de reflectabilidad ha de ser máximo 1 % % ************************************************************************************ % VARIABLES GLOBALES % ************************************************************************************ clear all c = 34300; fc= 40000; frec_muest=10000; % Velocidad del sonido % Frecuencia del pulso de emisión % En Hz (10 KHz) n = 200; m = 200; t0= n/frec_muest; inc_ang = 360/m; % % % % % % Numero Numero Tiempo 360º / %si m (cm/seg) ( 40 KHz) de muestras a tomar de orientaciones del T/R de observación (seg) nº medidas,, se realiza una medida cada 1.8º = 200 Otras variables inicio=1; fin=n; % Esto representa el mapa cartesiano, donde se tomaron las medidas pared1_x = [0 240 240 260 260 450 450 460] ; pared1_y = [0 0 40 40 0 0 25 25]; pared2_x = [0 100 100 450 450 460 460]; pared2_y = [300 300 250 250 225 225 25]; T_R = [300 150, 300 200, 250 200, 200 200, 200 150, 200 100, 200 50, 250 100, 250 150]; % % % % % % % % % Situación Situación Situación Situación Situación Situación Situación Situación Situación del del del del del del del del del primer muestreo segundo muestreo tercer muestreo cuarto muestreo quinto muestreo sexto muestreo séptimo muestreo octavo muestreo décimo muestreo % Tenemos en : % 1. p : pulso de emisión % 2. s : eco de recepción % 3. fp y fs fft de p y s % 4. f es la señal demodulada % % Inicialización: % j = sqrt(-1); dt=t0/n; % Incremento de tiempo entre muestras for i=1:n; t(i) = dt*(i-1); % Vector de tiempos x(i) = .5*c*t(i); % Vector de espacios en cm end; % ************************************************************************************ % PRIMERA Lectura la señal reflejada % cada 1.8º, es decir 200 muestras (m), de 200 medidas cada muestra (n) % ************************************************************************************ % ----------------------------------------------------------------% Este archivo contiene los datos tomados, con un preprocesado por matching filtering load c:\user\6cred\pruebas\fourier\mapa\mapa1.res; load c:\user\6cred\pruebas\fourier\mapa\mapa2.res; load c:\user\6cred\pruebas\fourier\mapa\mapa3.res; load c:\user\6cred\pruebas\fourier\mapa\mapa4.res; load c:\user\6cred\pruebas\fourier\mapa\mapa5.res; load c:\user\6cred\pruebas\fourier\mapa\mapa6.res; load c:\user\6cred\pruebas\fourier\mapa\mapa7.res; load c:\user\6cred\pruebas\fourier\mapa\mapa8.res; load c:\user\6cred\pruebas\fourier\mapa\mapa10.res; % % % Primer procesado: cálculo de la señal del eco % mediante el método del Matching Filtering : ya realizado en archivos mapa* % -----------------------------------------------------------------% Datos procesados según "matching filtering", % tomados en coordenadas indicadas en T_R, y situados uno a % continuacion de otros, de modo de que existe % una fila por angulo de medida (m), % una columna por medida tomada y archivo cargado (n*length(T_R(:,1)-1)) % s = [mapa1 mapa2 mapa3 mapa4 mapa5 mapa6 mapa7 mapa8 mapa10]; clear total_x; clear total_y; Página 43 j = 1; h = 1; resolu =1; % Voy a poner una resolución de 1 cm cuadrado d = 1; for k=1:length(T_R(:,1)-1), clear clear clear clear clear clear fnew; clear amplitudes; dist_max_x; dist_max_y; detectados; mapa_todos; mapa; clear clear clear clear mapa_x; clear mapa_y; clear angulo; indice;clear dist_max; dist_max_x_2; dist_max_y_2; for z1=1:m, for z2=1:n, fnew(z1,z2) = s(z1,z2+( (k-1)*n)) ; end; end; X_1 = T_R(k,1) Y_1 = T_R(k,2) % Coordenadas del T/R % -------------------------------------------------% Segundo procesado: obtención de los puntos % donde se encuentran los obstáculos % ------------------------------------------------% mapa[j,k], j variando de 1 a m, k dependerá del numero de obstáculos en esa línea % la primera columna contiene el ángulo de medición, % y el resto los radios a cada obstáculo % mapa_x[j,k], j variando de 1 a m, y k dependerá del numero de obstáculos en esa línea % cada columna contiene la coordenada en x, respecto al sistema de coordenadas global, % de cada obstáculo % cada fila se refiere a un ángulo de medición % mapa_y[j,k], j variando de 1 a m, y k dependerá del numero de obstáculos en esa línea % cada columna contiene la coordenada en y, respecto al sistema de % % coordenadas global, de cada obstáculo % cada fila se refiere a un ángulo de medición % % dist_max[j], j variando de 1 a m % distancia al obstáculo con amplitud máxima para % una posición del T/R % dist_max_x[j], j variando de 1 a m % distancia al obstáculo con amplitud máxima para % una posición del T/R, en coordenadas cartesianas % dist_max_y[j], j variando de 1 a m % distancia al obstáculo con amplitud máxima para % una posición del T/R, en coordenadas cartesianas % dist_max_2[j], j variando de 1 a m % lleva un 0 donde no hay obstáculo y % la distancia al punto más significativo % dist_max_x_2[j], j variando de 1 a m % en coordenadas cartesianas lo de dist_max % dist_max_y_2[j], j variando de 1 a m % en coordenadas cartesianas lo de dist_max % amplitudes[k,j], k de 1 a 2, j variando de 1 a m % primera fila:amplitud del obstáculo más significativo % segunda fila:distancia al obstáculo más significativo % detectados[j], j variando de 1 a m % indica las posiciones representativas de cada curva % con cero donde no hay nada % total_x[j], j variando de 1 a m % en coordenadas cartesianas, almaceno todos los puntos % calculados en cada pasada % total_y[j], j variando de 1 a m % en coordenadas cartesianas, almaceno todos los puntos % calculados en cada pasada disp(' Procesando información del T/R ....'); umbral_max = max(max(fnew)); % Búsqueda de las distancias a los obstáculos (Cálculo de máximos en la curva fnew) for vec=1:m; % Coordenadas polares del obstáculo, respecto al sistema de coordenadas local al T/R angulo(vec)= -(pi/180)*((inc_ang*vec)-inc_ang); % Angulo en radianes % Obstáculos dentro de la orientacion vec, tomada desde (X_1, Y_1) [maximo,i]= max(fnew(vec,inicio:fin)); indice(vec) = i; % Almaceno el índice donde esta el máximo umbral = maximo - (maximo/10); dist_max(vec) = x(i); dist_max_x(vec)= ( x(i) * cos(angulo(vec))) + X_1; dist_max_y(vec)= ( x(i) * sin(angulo(vec))) + Y_1; Página 44 Pág mapa(vec,1)= angulo(vec); % la primera columna almacena el ángulo cantidad=1; for i2=inicio:fin; if ((i2~=1) & (i2~=fin)) if ((fnew(vec,i2)> umbral )&(fnew(vec,i2)>fnew(vec,i2-1)) &(fnew(vec,i2)>fnew(vec,i2+1))) mapa(vec,cantidad+1)=x(i2); % radio al obstáculo % coordenadas cartesianas globales, % almacenadas con una cierta resolucion coord_x = ( x(i2)* cos(angulo(vec))) + X_1; coord_y = ( x(i2)* sin(angulo(vec))) + Y_1; mapa_x(vec,cantidad)= coord_x - rem(coord_x,resolu) + (resolu/2); mapa_y(vec,cantidad)= coord_y - rem(coord_y,resolu) + (resolu/2); cantidad=cantidad+1; end; end; end; end; % Búsqueda de las distancias a los obstáculos Representativas % (Cálculo de máximos en la curva amplitudes,, siguiendo [BoKu-91]) % Amplitud del obstáculo % distancia al obstáculo for vec=1:m, amplitudes(1,vec) amplitudes(2,vec) end; correc = 6; primero = 1; ultimo = m; más pronunciado : primera fila más pronunciado : segunda fila = fnew(vec,indice(vec)); = x(indice(vec)); % correc * 1.8 grados a derecha e izquierda del obstáculo umbral = (umbral_max / 4); for vec=primero:ultimo; z1 = vec - 1; z2 = vec + 1; z3 = vec - correc; z4 = vec + correc; if (z1 <= 0), z1 = ultimo+z1; end; if (z2 > ultimo), z2 = z2 - ultimo; end; if (z3 <= 0), z3 = ultimo+z3; end; if (z4 > ultimo), z4 = z4 - ultimo; end; if else ( amplitudes(1,vec) > umbral & amplitudes(1,vec) > amplitudes(1,z1) & amplitudes(1,vec) > amplitudes(1,z2) & amplitudes(1,vec) > amplitudes(1,z3) & amplitudes(1,vec) > amplitudes(1,z4)), detectados(vec) = amplitudes(1,vec); dist_max_2(vec) = amplitudes(2,vec); coord_x = ( dist_max_2(vec) * cos(angulo(vec))) + X_1; coord_y = ( dist_max_2(vec) * sin(angulo(vec))) + Y_1; dist_max_x_2(vec)= coord_x - rem(coord_x,resolu) + (resolu/2); dist_max_y_2(vec)= coord_y - rem(coord_y,resolu) + (resolu/2); total_x(j) = round(dist_max_x_2(vec));total_y(j) = round(dist_max_y_2(vec)); j = j+1; detectados(vec) = 0; dist_max_2(vec) = 0; dist_max_x_2(vec) = 0; dist_max_y_2(vec) = 0; end; end; %%fin cálculo de máximos en curva de amplitudes if ( vec == 1), total_x = dist_max_x_2; total_y = dist_max_y_2; end; % -------------------------------------------------% Representación gráfica de funciones % -------------------------------------------------for i = 1:length(angulo), umbral_y(i) = umbral; end; figure; % % Dibujamos las paredes y la posición de T/R % plot(pared1_x,pared1_y,'y-',pared2_x,pared2_y,'y-',X_1,Y_1,'co'); axis([0, 500, 0, 500]); l = circul(15,100,150); Página 45 hold on; for i1=1:m; for i2=1:length(mapa_x(i1,:)-1) plot(mapa_x(i1,i2),mapa_y(i1,i2),'g*'); end; end; hold off; mensaje = sprintf(' Mapa con puntos detectados. T/R en (%i,%i) ',X_1,Y_1); title(mensaje); xlabel(' Distancia eje X, (cm)'); ylabel(' Distancia eje Y, (cm)'); figure; % % Dibujamos las paredes y la posición de T/R % con solo los obstaculos mas pronunciados % plot(pared1_x,pared1_y,pared2_x,pared2_y,'y-',X_1,Y_1,'co',T_R(k,1),T_R(k,2),'co'); axis([0, 500, 0, 500]); l = circul(15,100,150); hold on; plot(dist_max_x,dist_max_y,'g*',dist_max_x_2,dist_max_y_2,'r*'); axis([0, 500, 0, 500]); hold off; mensaje = sprintf(' Mapa con puntos máximos detectados. T/R en (%i,%i)',X_1,Y_1); title(mensaje); xlabel(' Distancia eje X, (cm)'); ylabel(' Distancia eje Y, (cm)'); figure; % % Curva de amplitudes a obstáculos más representativos plot(angulo,amplitudes(1,:),'y-'); hold; plot(angulo,detectados,'g*',angulo,umbral_y,'y.'); title(' Mapa con amplitudes a puntos mas representativos.'); xlabel(' Angulo (radianes)'); ylabel(' Amplitud '); end; % % % figure; % % % C O N C L U S I O N E S Dibujamos las paredes y los puntos calculados en todas las posiciones del T/R plot(pared1_x,pared1_y,'y-',pared2_x,pared2_y,'y-',total_x,total_y,'r*'); axis([0, 500, 0, 500]); l = circul(15,100,150); mensaje = sprintf(' Mapa con puntos detectados tras %i muestreos ',k); title(mensaje); xlabel(' Distancia eje X, (cm)'); ylabel(' Distancia eje Y, (cm)'); hold on; for k=1:length(T_R(:,1)-1), plot(T_R(k,1),T_R(k,2),'co'); end; hold off; 7.5. Archivo de simulación en Matlab, para el ensayo 5.1.5. % % % % % ARCHIVO rejilla.m PASILLO A, desde ascensor % % REPITE % (1) Lee 200 ecos (n), de la esquina del despacho, % tomados cada 1.8º empezando desde la puerta, y girando % en sentido de las agujas del reloj % ( Cada eco consta de 200 medidas (m) ) % % HASTA finalizar el numero de muestras tomado (Vector T_R) % % (2) Construye un mapa geométrico del entorno con puntos % % NOTA: Si se varia tau0 , t0 ha de estar en relacion % Si se varia la distancia de los objetivos, pensar en la maxima reconocible % El coeficiente de reflectabilidad ha de ser maximo 1 % Página 46 Pág % ************************************************************************************ % VARIABLES GLOBALES % ************************************************************************************ clear all c = 34300; fc= 20000; frec_muest=10000; w = 10*pi/180; % % % % Velocidad del sonido (cm/seg) Frecuencia del pulso de emision ( 20 KHz) En Hz (10 KHz) 10 grados de anchura del haz de ultrasonidos n = 200; % Numero m = 200; % Numero t0= n/frec_muest; % Tiempo inc_ang = 360/m; % 360º / inc_ang_rad = inc_ang*pi/180; de de de nº muestras a tomar orientaciones del T/R observacion (seg) medidas,, se realiza una medida cada 1.8º si m = 200 % Estas variables no se emplean en este archivo, ya que los % datos ya vienen precalculados % wc= 2*pi*fc; % al= wc; % tau0 = 0.0004; % % % Ancho de banda del pulso de emision % Ni idea % Duracion del pulso de emision en (seg) (radianes) Otras variables % Esto representa el mapa cartesiano, donde se tomaron las medidas pared1_x = [0 240 240 260 260 450 450 460] ; pared1_y = [0 0 40 40 0 0 25 25]; pared2_x = [0 100 100 450 450 460 460]; pared2_y = [300 300 250 250 225 225 25]; T_R = [300 150, 300 200, 250 200, 200 200, 200 150, 200 100, 200 50, 250 100, 250 150]; % % % % % % % % % Situación Situación Situación Situación Situación Situación Situación Situación Situación del del del del del del del del del primer muestreo segundo muestreo tercer muestreo cuarto muestreo quinto muestreo sexto muestreo septimo muestreo octavo muestreo decimo muestreo % Tenemos en : % 1. p : pulso de emision % 2. s : eco de recepcion % 3. fp y fs fft de p y s % 4. f es la señal demodulada % % Inicializacion: % j = sqrt(-1); dt=t0/n; % Incremento de tiempo entre muestras for i=1:n; t(i) = dt*(i-1); % Vector de tiempos x(i) = .5*c*t(i); % Vector de espacios en cm end; % ************************************************************************************ % PRIMERA Lectura la señal reflejada % cada 1.8º, es decir 200 muestras (m), de 200 medidas cada muestra (n) % ************************************************************************************ % ----------------------------------------------------------------% Este archivo contiene los datos tomados, con un preprocesado por matching filtering load c:\user\6cred\pruebas\mapa\mapa1.res; load c:\user\6cred\pruebas\mapa\mapa2.res; load c:\user\6cred\pruebas\mapa\mapa3.res; load c:\user\6cred\pruebas\mapa\mapa4.res; load c:\user\6cred\pruebas\mapa\mapa5.res; load c:\user\6cred\pruebas\mapa\mapa6.res; load c:\user\6cred\pruebas\mapa\mapa7.res; load c:\user\6cred\pruebas\mapa\mapa8.res; load c:\user\6cred\pruebas\mapa\mapa10.res; % % % % % % % % % % s Primer procesado: cálculo de la señal del eco mediante el método del Matching Filtering -----------------------------------------------------------------Datos procesados segun "matching filtering", tomados en coordenadas indicadas en T_R, y situados uno a continuacion de otros, de modo de que existe una fila por angulo de medida (m), una columna por medida tomada y archivo cargado (n*length(T_R(:,1)-1)) = [mapa1 mapa2 mapa3 mapa4 mapa5 mapa6 mapa7 mapa8 mapa10]; Página 47 resolu =1; num = ceil(500 / resolu); Cb = (2*num)/(num^2); for k=1:num, Mapa_xy(k,k)= Cb; end; % resolución de 1 cm cuadrado, ha de ser entero % Numero de celdillas en el eje x, tamaño resolu % Inicialización de la certeza, a valor entorno for k=1:length(T_R(:,1)-1), clear clear clear clear clear clear fnew; clear mapa; clear mapa_x; clear mapa_y; clear angulo; amplitudes; clear indice;clear dist_max; dist_max_x; clear dist_max_x_2; dist_max_y; clear dist_max_y_2; detectados; mapa_todos; for z1=1:m, for z2=1:n, fnew(z1,z2) = s(z1,z2+( (k-1)*n)) ; end; end; clear z1;clear z2; X_1 = T_R(k,1) Y_1 = T_R(k,2) % Coordenadas del T/R % -------------------------------------------------% Segundo procesado: obtención de los puntos % donde se encuentran los obstáculos % ------------------------------------------------% % mapa_xy[k,k], k variando de 1 a num, contenido de celdillas es la probabilidad de ocupación disp(' Procesando información del T/R ....'); umbral_max = max(max(fnew)); % Búsqueda de las distancias a los obstáculos (Cálculo de máximos en la curva fnew) for vec=1:m; % Coordenadas polares del obstáculo, respecto al sistema de coordenadas local al T/R angulo(vec)= -(pi/180)*((inc_ang*vec)-inc_ang); % Angulo de medición, en radianes % Obstaculos dentro de la orientacion vec, tomada desde (X_1, Y_1) [maximo,i]= max(fnew(vec,1:n)); indice(vec) = i; % Almaceno el indice donde está el máximo umbral = maximo - (maximo/10); mapa(vec,1) = x(i); % radio al primer obstáculo cantidad=2; for i2=1:n; if ((i2~=1) & (i2~=n)) if ((fnew(vec,i2)> umbral )& (fnew(vec,i2)>fnew(vec,i2-1))& (fnew(vec,i2)>fnew(vec,i2+1))) mapa(vec,cantidad)=x(i2); cantidad=cantidad+1; end; end; end; % radio end; % Búsqueda de las distancias a los obstáculos Representativas % (Cálculo de máximos en la curva amplitudes,, siguiendo [BoKu-91]) % Amplitud del obstáculo % distancia al obstáculo for vec=1:m, amplitudes(1,vec) amplitudes(2,vec) end; correc = 6; primero = 1; ultimo = m; más pronunciado : primera fila más pronunciado : segunda fila = fnew(vec,indice(vec)); = x(indice(vec)); % 3 * 1.8 grados a derecha e izquierda del obstáculo %umbral = max(amplitudes(1,:)); umbral = (umbral_max / 4); for vec=primero:ultimo; z1 = vec - 1; z2 = vec + 1; Página 48 Pág z3 = vec - correc; z4 = vec + correc; if (z1 <= 0), z1 = ultimo+z1; end; if (z2 > ultimo), z2 = z2 - ultimo; end; if (z3 <= 0), z3 = ultimo+z3; end; if (z4 > ultimo), z4 = z4 - ultimo; end; if else ( amplitudes(1,vec) > umbral & amplitudes(1,vec) > amplitudes(1,z1) & amplitudes(1,vec) > amplitudes(1,z2) & amplitudes(1,vec) > amplitudes(1,z3) & amplitudes(1,vec) > amplitudes(1,z4)), detectados(vec) = amplitudes(1,vec); dist_max_2(vec) = amplitudes(2,vec); detectados(vec) = 0; dist_max_2(vec) = 0; end; end; %%fin calculo de maximos en curva de amplitudes for vec=1:m, if (dist_max_2(vec) > 0), % Solo introduzco los puntos significativos [ZO_X,ZO_Y,PO] = CeldasOc(dist_max_2(vec),angulo(vec),inc_ang_rad,w,X_1,Y_1,resolu,num,num); [ZL_X,ZL_Y,PL] = CeldasLi(dist_max_2(vec),angulo(vec),inc_ang_rad,w,X_1,Y_1,resolu,num,num); for y=1:length(ZO_X), P = PO(y); % En este vector se deja la probabilidad de ocupación C = Mapa_xy(ZO_X(y),ZO_Y(y)) ; Mapa_xy(ZO_X(y),ZO_Y(y)) = C + P - (C*P); end; for y=1:length(ZL_X), P = PL(y); % En este vector se deja la probabilidad de ocupación Mapa_xy(ZL_X(y),ZL_Y(y)) = Mapa_xy(ZL_X(y),ZL_Y(y))*(1-P); end; end; % del for vec =1 :m end; % del for k=1:length(T_R(:,1)-1) % % % % % % % ************************************************************** ************************************************************** C O N C L U S I O N E S ************************************************************** ************************************************************** % % % Dibujamos las paredes y los puntos calculados en todas las posiciones del T/R plot(pared1_x,pared1_y,'y-',pared2_x,pared2_y,'y-'); hold off; axis([0, 500, 0, 500]); l = circul(15,100,150); mensaje = sprintf(' Mapa con puntos detectados tras %i muestreos. title(mensaje); xlabel(' Distancia eje X, (cm)'); ylabel(' Distancia eje Y, (cm)'); Rojo obstáculos.',k); hold on; for k=1:length(T_R(:,1)-1), plot(T_R(k,1),T_R(k,2),'co'); end; for k=1:length(Mapa_xy), for j = 1:length(Mapa_xy), if Mapa_xy(k,j) > Cb, plot(k*resolu,j*resolu,'r*');end; end; end; hold off; ******************************************************************************** **************************** FUNCIONES DEFINIDAS ***************************** ******************************************************************************** function [ZO_X,ZO_Y,PO] = CeldasOc(radio,angulo,inc_ang,w,x1,y1,resolu,maxx,maxy); Página 49 i = 1; angul = angulo - (w/2); a = -w/2; x = 0; y = 0; while (angul <= (angulo+(w/2))), [coord_x,coord_y]= IndiMap(angul,radio,resolu,x1,y1,maxx,maxy); if ((coord_x ~= 0) & (coord_y ~= 0) & ( (coord_x ~= x) | (coord_y ~= y))), ZO_X(i) = coord_x; ZO_Y(i) = coord_y; [PO(i),basu] = Prob(radio,a,0.1,radio,2,w); % prob de estar ocupado sin estarlo realmente % 0,1 de error en radio y 2 de radio minimo i = i+1; a = a + inc_ang; end; angul = angul + inc_ang; x=coord_x; y = coord_y; end; clear n;clear i;clear angul;clear basu; end; function [ZL_X,ZL_Y,PL] = CeldasLi(radio,angulo,inc_ang,w,x1,y1,resolu,maxx,maxy); inc_rad = i = 1; r = 0; x= 0; y = while ( r angul while sqrt(resolu^2 + resolu^2); 0; <= radio) = angulo - (w/2); a = -w/2; (angul <= (angulo+(w/2))), [coord_x,coord_y]= IndiMap(angul,r,resolu,x1,y1,maxx,maxy); if ((coord_x ~= 0) & (coord_y ~= 0) & ((x ~= coord_x) | (y ~=coord_y))), ZL_X(i) = coord_x; ZL_Y(i) = coord_y; [PL(i),basu] = Prob(r,a,0.1,radio,2,w); % probabilidad de estar ocupado sin estarlo realmente % 0.1 de error en R, y radio mínimo 2 i = i+1; a = a + inc_ang; end; angul = angul + inc_ang; x = coord_x; y = coord_y; end; r = r + inc_rad; end; clear n;clear i;clear angul;clear basu end; function [x,y]= IndiMap(angulo,radio,resolu,x1,y1,xmax,ymax) coord_x = ( radio* cos(angulo)) + x1; coord_y = ( radio* sin(angulo)) + y1; x = ceil(coord_x / resolu); y = ceil(coord_y / resolu); if (x<0) x = 0; end; if (y<0) y = 0; end; % % Este programa realiza el calculo de la funcion de densidad % de probabilidad como en Elfes-87 (Figura 18) % function [Po,Pe] = Prob(radio,angulo,error,R,rmin,w); % angulo ha de estar centrado en el origen Ea = 1 - ( ((2*angulo)/ w)^2); % Oa es igual a Ea if ((radio < (R-error)) & (radio > rmin)), Er = 1 - ( (radio-rmin) / (R-error-rmin))^2; else Er = 0; end; if ((radio > (R-error)) & (radio < (R+error))) , Or = 1 - ( (radio-R) / (error))^2; else Or = 0; end; Pe = Er * Ea; Po = Or * Ea; % Probabilidad de estar vacio % Probabilidad de estar ocupado Página 50 Pág 8. Bibliografía. Conceptos generales : 1. [ArrayImaging] Fourier Array Imaging. Mehrdad Soumekh. Prentice Hall, 1994 2. The Map-Building and Exploration Strategies of a Simple Sonar-Equipped Mobile Robot. David Lee. Cambridge University Press, 1996 3. A Simple Approach to Digital Signal Processing. Craig Marven, Gillian Ewers. Texas Instruments. 4. [KuSi-87] Physically Based Simulation Model for Acoustic Sensor Robot Navigation. Roman Kuc, Victor Brian Viard. IEEE Transactions On PAMI. Vol 9 No. 6, November 1987, pp 766-778 5. [Clive-89] Ultrasonic measurement: keeping your distance. Clive Loughlin. Sensor Review. Vol 9 No. 2, April 1989, pp 85-89 6. [KuVi-91] “A Physycally Based Navigation Strategy for Sonar-Guided Vehicles”. Roman Kuc, Victor Brian Viard. The International Journal of Robotics Research, Vol 10 No. 2, April 1991, pp 75-87 7. Apartado 1 de [KoKiChu-96]. Evitar obstáculos : 8. [BorKo-88] Obstacle Avoidance With Ultrasonic Sensors. Johan Borenstein, Yoram Koren. IEEE Journal of Robotics and Automation. Vol 4 No. 2, 1988, pp 213-218 9. [GaRoVi-95] Multielement Ultrasonic System for Robotic Navigation V. Gabbani, S. Rocchi, V. Vignoli IEEE International Conference on Robotics and Automation, 1995, pp 3009-3014 10. [RJLTM-93] Environment Recognition in Welding Processes by Ultrasonic Sensors. R. Ceres, J.M. Martín, L. Calderón, T. Freire Bastos, M. Armada. Sensor and Actuators A-Physical. Vol 37, No. 8, June 1993, pp 635-638 Página 51 11. [BorKo-95] Error Elimination Rapid Ultrasonic Firing for Mobile Robot Obstacle Avoidance J. Borenstein, Y. Koren IEEE Transactions on Robotics and Automation, Vol. 11 No. 1, February 1995 12. [BorKo-91b] Histogramic In-Motion Mapping For Mobile Robot Obstacle Avoidance. J. Borenstein, Y. Koren. IEEE Transactions On Robotics and Automation, Vol 7, No. 4, August 1991, pp 535-539 13. [ARTD-91] On Board Data Fusion and Decision System used for Obstacle Detection: A Network and a Real Time Approach A. Chebira, R. Reynaud, T. Maurin, D. Berschandy 1991 IEEE Localización de un robot móvil con mapa a priori : 14. [CuKy-95] Sensor-Based Self-Localization for Wheeled Mobile Robots. A. Curran, K. J. Kyriakopoulos. Journal of Robotic Systems. Vol 12 No. 3, March 1995, pp163-176 15. [NiHo-94] Combining a Stable 2-D Vision Camera and an Ultrasonic Range Detector for 3-D Position Estimation. Anders Nilsson, Per Holmberg. IEEE Transactions on Instrumentation And Measurement. Vol 43, No. 2, 1994, pp 272-276 16. [LeDu-91] Mobile Robot Localization By Tracking Geometric Beacons. Jhon J. Leonard, Hugh F. Durrant-Whyte. IEEE Transactions On Robotics and Automation, Vol 7, No. 3, June 1991, pp 376-382 Mapas topológicos : 17. [A.Kurz-96] Constructing Maps for Mobile Robot Navigation Based on Ultrasonic Range Data Andreas Kurz. IEEE Trans. On Systems Man and Cybernetics Part B-Cybernetics. Vol 26, No. 2, 1996, pp233242 18. [KuBy-91] A Robot Exploration and Mapping Stratey Based on a Semantic Hierarchy of Spatial Representations. Benjamin Kuipers, Yung-Tai Byun. Journal of Robotics and Autonomous Systems, Vol. 8, 1991, pp 47-63 19. [ThrunBu-96A] Integrating Grid-Based and Topological Maps for Mobile Robot Navigation. S.Thrun, Arno Bücken Proceedings of the Thirteenth National Conference on A. I. , 1996 20. [ThrunBu-96B] Learning Maps For Indoor Mobile Robot Navigation. Sebastian Thrun, Arno Bücken. Página 52 Pág Schoold of Computer Science Carnegie Mellon University of Pittisburg, April 1996 Mapas geométricos : 21. [BaKu-90] Differentiating sonar reflections from corners and planes by employing an intelligent sensor. Billur Barshan, Roman Kuc. IEEE Transactions On PAMI. Vol 12 No. 6, June 1990, pp 560-569 22. [Zelin-91] Mobile Robot Map Using Sonar. A. Zelinsky. Journal of Robotics Systems , May 1991, Vol 8 No. 5 pp 557-577 23. [BoKu-91] Building a Sonar Map in a Specular Environment Using a Single Mobile Sensor. Ömur Bozma, Roman Kuc. IEEE Transactions On PAMI. Vol 13 No. 2, December 1991, pp 1260-1269 24. [LeDuCo-92] Dynamic Map Building for an Autonomous Mobile Robot. John J. Leonard, Hugh F. Durrant-Whyte, Ingemar J. Cox. International Journal of Robotics Research. Vol 11, No. 4, 1992, pp 286-298 25. [PerAuVa-93] A High Resolution Sensor Based on Tri-aural Perception. Herbert Peremans, Koenraad Audenaert, Jan Van Campenhout. IEEE Transactions on Robotics and Automation. Vol 9, No. 1, February 1993, pp 36-48 26. [WeGiWy-94] Robot Guidance Using Ultrasonic Arrays P.Webb, Y. Gibson, C. Wykes Journal of Robotics Systems, Vol. 11 No. 8, 1994, pp 681-692 27. [KlKu-94] An Optimal Sonar Array for Target Localization and Classification. Lindsay Kleeman, Roman Kuc. Proceedings IEEE Inter. Conf. On Robot. Autom. , May 1994, pp 3130-3135 28. [SaBe-94] Towards a Robust Methodology for Mobile Robot Localisation Using Sonar. Angelo M. Sabatini, Orazio Di Benedetto. Proceedings IEEE Inter. Conf. On Robot. Autom. , May 1994, pp 3142-3147 29. [KlKu-95] Mobile Robot Sonar for Target Localization and Classification. Lindsay Kleeman, Roman Kuc. The International Journal of Robotics Research, Vol 14 No. 4, August 1995, pp 295-318 30. [AkKl-95] A Sonar Sensor for Accurate 3D Target Localisation and Classification H. Akbarally, L. Kleeman IEEE International Conference on Robotics and Automation, 1995, pp 3003-3008 Página 53 31. [JeKi-95] Study On World Map Building for Mobile Robots with Tri-Aural Ultrasonic Sensor System H. Jo Jeon, B. Kook Kim IEEE International Conference on Robotics and Automation, 1995, pp 2907-2912 32. [KoKiChu-96] A Method of Acoustic Landmark Estraction for Mobile Robot Navigation. Joong Hyup Ko, Wan Joo Kim, Myung Jin Chung. IEEE Transactions On Robotics and Automation, Vol 12 No. 3, June 1996, pp 478-485 33. [Dudek-96] Environment Representation Using Multiple Abstraction Levels. Gregory L. Dudek. Proceedings of the IEEE, November 1996, vol 84, No. 11, pp 1684-1704 Mapas basados en rejilla : 34. [Cho-89] Certainty Grid Representation for Robot Navigation by a Bayesian Method. Dong Woo Cho. Robotica, Vol 8, 1990, pp 159-165 35. [LiCho-94] Specular Reflection Probability in the Certainty Grid Representation. Jong Hwan Lim, Dong Woo Cho. Journal of Dynamic System Measurement and Control. Vol 116 No. 3, September 1994, pp 512-520 36. [Elfes-87] Sonar-Based Real-World Mapping and Navigation. Alberto Elfes. IEEE Journal of Robotics and Automation. Vol 3 No. 3, June 1987, pp 249-265 37. [Mora-88] Sensor Fusion in Certain Grids for Mobile Robots. Hans P. Moravec. AI Magazine. Vol 9 No. 2, 1988, pp 61-74 38. [BorKo-91a] The Vector Field Histogram - Fast Obstacle Avoidance for Mobile Robots. J. Borenstein, Y. Koren. IEEE Transactions On Robotics and Automation, Vol 7, No. 3, June 1991, pp 278-288 Página 54 Pág