Posicionamiento con sonido Butia 2012

De Proyecto Butiá
Saltar a: navegación, buscar

Posicionamiento con sonido Butia Img01.png

Integrantes

  • Gonzalo Perretti
  • Alberto Martinucci
  • Rodrigo Herrera


Tutor

  • Marco Pannone


Introducción

El proyecto pretende generar una aplicación para determinar la posición de un robot butiá/XO relativa a un grupo de XO fijas que ofician de puntos de referencia (torres). Para el cálculo de dicha posición se utiliza un método matemático llamado trilateración.

La trilateración se utiliza para determinar las posiciones relativas de objetos usando la geometría de triángulos de forma análoga a la triangulación. A diferencia de ésta que usa medidas de ángulos, la trilateración usa las localizaciones conocidas de dos o más puntos de referencia, y la distancia medida entre el sujeto y cada punto de referencia. [1]

Descripción del Problema

Se plantea utilizar la técnica de localización por trilateración descrita en [1] para poder determinar la posición relativa de un robot butiá/XO. Como se observa en la figura 1 se utilizarán tres computadoras XO como puntos de referencia para determinar la posición relativa del robot butiá/XO.

figura 1


Las ecuaciones para determinar la posición utilizando esta técnica son las siguientes:

Img03.png


Para determinar las distancias entre las XO y el robot butiá/XO se utilizará la lógica de la actividad Acoustic Measure [2]. Esta actividad determina la distancia entre dos XO midiendo el tiempo que le toma a un pulso de sonido viajar entre ellas. Se propone la construcción de una plugin para turtlebots que encapsule la lógica necesaria para determinar la posición del robot butiá/XO dentro del marco de referencia.




Diseño de Software

Para encarar la resolución decidimos basarnos en la actividad medir que ya resuelve satisfactoriamente el problema de calcular la distancia entre 2 computadoras XO.

De esta manera se adaptó el código de dicha actividad cuya arquitectura es cliente – servidor para que no solo funcione únicamente con 1 cliente sino para que una actúe como servidor y acepte la conexión de 3 clientes, los cuales representarán las torres que usaremos para calcular las coordenadas del servidor en función de la posición de las torres y un sistema de coordenadas definido adecuadamente.

Esto requirió generar un código cliente para que permitiera conectarse a una actividad con más de 2 participantes, cosa que la actividad medir no permite y además generar un código servidor que ofreciera la posibilidad de que 3 computadoras XO se unieran para poder calcular las distancias y obtener la coordenadas del servidor respecto a ellas.

El diagrama correspondiente a los clientes es el presentado en la siguiente figura:

400


El diagrama correspondiente al servidor es el presentado en la siguiente figura:

400

Plugin Tortugarte

Se creó también un plugin para tortugarte que permitirá ejecutar la aplicación servidor anteriormente detallada y utilizarla para obtener las coordenadas del robot butía en el cual se está ejecutando.


Img06.png


La pastilla que permitirá iniciar el programa servidor tiene el nombre "Start". Como fue indicado, la ejecución de ella en tortugarte iniciará el programa servidor y compartirá la actividad de manera tal que permita conectarse a ella las 3 computadoras XO que oficiaran de torres.

En esta primera versión la posición de las 3 torres en el sistema de coordenadas deberán ser establecidas en el tortugarte mediante los bloques "Set Tower", estos valores serán empleados para el posterior cálculo de las coordenadas del robot. Cabe destacar que estos bloques se activan luego de que las 3 torres están conectadas al servidor, de lo contrario permanecerán desactivados.

Una vez establecidos estos datos, se esta en condiciones de pedirle al programa que obtenga la posición actual del butiá en función de las torres y del sistema de coordenadas establecidos por las mismas utilizando el método matemático de trilateración utilizando el bloque "Get Coord" que devuelve los valores x e y de la posición.

Al igual que como sucede con los bloques de las torres, éste también permanecerá inactivo mientras no están conectadas las 3 torres.

Este bloque se puede utilizar las veces que se desee siempre que las torres estén conectadas, si se desea terminar la ejecución del servidor el bloque encargado de dicha acción es el denominado “Stop”. La ejecución de dicho bloque finalizará la ejecución de la actividad y por consiguiente ya no estará disponible la actividad para que las torres puedan volver a conectarse.


Esquema de funcionamiento

A continuación se esquematiza el funcionamiento general de la aplicación:

Imagen 0.jpg

Imagen 1.jpg

Imagen 2.jpg

Imagen 3.jpg

Imagen 4.jpg


Experimentos y Pruebas

Posición de las Xo torres. Las pruebas de emisión-recepción de sonido se realizaron para determinar la mejor orientación del robot respecto de las antenas (XO) para obtener lecturas adecuadas. Para estas pruebas se probaron varias posiciones en las que el robot podría enfrentarse a las antenas. Los resultados obtenidos fueron los obvios y están en concordancia con los descripto en [2], esto es, las mejores medidas se obtuvieron al tener enfrentado el robot con cada una de las torres. Igualmente se observó cierta tolerancia, pudiendo realizar buenas medidas aun estando el robot no enfrentado a las torres. Ahora, las medidas realizadas estando el robot de espaldas a una antena arrojan malos resultados con valores que parecieran aleatorios. La exactitud de la medida de estas distancias es de extrema importancia ya que el error cometido en estas redundará en un error sobre la posición relativa del robot. En [3] se describe en detalle este problema, conocido como GeometricDilution of Precision (GDOP), y se plantean mecanismos para acotar dicho error. En este trabajo no se aplica ninguno de los métodos descriptos en dicho documento, el error dado por la posición de las antenas se reducirá seleccionando inteligentemente las posiciones de las mismas (por ej. no alineándolas) y el error en las distancias a las mismas se acotará haciendo que el robot butiá se enfrente a cada una para luego realizar las mediciones.

Ruido ambiente. Factores que causan variaciones y errores en las mediciones de distancias utilizando la actividad acoustic tape measureson, como se indica en [2], la temperatura ambiente y el porcentaje de humedad en el aire.

Obstáculos. La actividad acoustic tape measure, en la cual nos basamos para obtener las distancias entre el butiá y las antenas, no funciona correctamente si no existe una “línea de visión” entre estos. Se requiere que no haya obstáculos entre el robot butiá y una antena cuya distancia se quiere determinar.


Conclusiones

Ubicación de torres. La posición de las torres en relación al robot Butiá es importante para no afectar la intensidad de la señal acústica. También la posición del robot (xo abierta o cerrada) y como se enfrenta a las xo torres es un elemento a considerar. Se debe elegir una posición adecuada de las torres para no afectar la exactitud de las estimaciones.

Entorno. El ruido de ambiente tiene un impacto muy negativo sobre las mediciones, es importante controlarlo dentro de lo posible y tenerlo en cuenta para actividades en el aula.

Alcance. Los dos puntos anteriores afectan en forma importante el tamaño del área cubrir por las torres.


Referencias

[1] Trilateración – Wikipedia

https://es.wikipedia.org/wiki/Trilateraci%C3%B3n

[2] Acoustic Tape Measure

http://wiki.laptop.org/go/Acoustic_Tape_Measure

[3] Utilización de los determinantes de CAYLEY-MENGER en la localización por trilateración esférica(D. Ramón Rodríguez Luque.

http://ebookbrowse.com/presentacion-trilateracion-cayley-menger-pdf-d142423696