TRABAJO DE 6 CREDITOS. “Algoritmos de construcción de mapas

Anuncio
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
Descargar