Where Am I Project (Alberto Fuentes)

 logo2dominios

 

 


Ya tenemos la primera entrada de Alberto Fuentes, estoy seguro que os va a encantar y sorprender.

¡Comenzamos!.

El proyecto Where Am I (¿Dónde estoy?) se desarrolló para la asignatura de Redes de Sensores del último curso del grado de Telecomunicaciones. Nuestro grupo estaba formado por 5 personas, todos ellos cursando la intensificación de telemática, para este proyecto decidimos agrupar todas las especialidades de nuestra carrera en este proyecto:

  • Señales.
  • Electrónica.
  • Programación.

El proyecto desarrollado tiene como objetivo estimar la posición de un usuario dentro de una determinada zona y que un robot pueda seguirlo (Mindstorms LEGO). Para ello empleamos sensores inalámbricos (motes Telosb de CrossBow) y para resolver parte de la automatización usamos una Raspberry Pi.

La disposición de los “motes” o nodos es muy relevante para el desarrollo del proyecto, cuatro de ellos se situarán formando un rectángulo (en los vértices), donde actuarán como nodos ancla (“anchor”) para el servicio de localización. Un quinto nodo, el que porta el usuario, será el que se pueda mover dentro del rectángulo, y es del que necesitamos conocer su posición. Por último, habrá un nodo más que será el que permita la comunicación entre el robot y el nodo del usuario.

imagen_1Esquema de funcionamiento.

Los nodos ancla, intercambian un mensaje de forma periódica que contiene sus coordenadas y que le permite a los demás extraer el RSSI (Indicador de fuerza de la señal recibida). Cuando cada nodo ancla conoce las coordenadas y la RSSI del resto de los nodos ancla, se puede estimar con facilidad la posición del nodo central a partir de las distancias a los nodos ancla. Es importante señalar que el intercambio de mensajes entre los nodos ancla nunca cesa, por lo que se van recibiendo nuevos valores de RSSI, que permiten que el sistema se adapte a los cambios del medio radioeléctrico.

El nodo central, por su parte, envía de forma periódica un mensaje de saludo (HELLO) a todos los nodos ancla, y cuando éstos lo reciben, responden con la distancia estimada al nodo central desde cada uno de ellos. Una vez que el nodo central ha recibido las estimaciones de los cuatro nodos ancla, ya puede determinar el punto en el que se encuentra (dentro del cuadrilátero).

Para determinar la posición, el código incorpora dos algoritmos de uso libre: el WCL (Weighted Centroid Localization) y un método basado en la trilateración utilizando distancias de Manhattan, desarrollado por Alejandro Braza Barba, componente del grupo, y que cuyo desarrollo se adjunta en el documento TrilateracionManhattan.pdf.

La comunicación entre los nodos centrales y los nodos anclas se basa en el estándar de comunicación inalámbrica ZigBee. En el PC se ejecuta un script de python, que recibe la posición del nodo central a través de comunicación serie y se la comunica al meta sistema Operativo Robótico ROS (en inglés Robot Operating System, ROS) , encargado del control del robot.

Para la comunicación entre ROS y el robot se emplea un enlace inalámbrico entre el PC y una Raspberry Pi donde se ejecutan varios nodos de ROS.

Por último, la comunicación entre la Raspberry Pi y el robot se realiza mediante un interfaz serie, que conecta a la Raspberry por USB con el módulo de control del robot Mindstorms LEGO.

El robot se trata de un Mindstorms NXT de Lego, que posee dos servomotores controlados por el módulo de control. El módulo de control del robot, se alimentó con seis (6) baterías de 1.5 V tipo AA y  para alimentar la Raspberry pi fue necesario integrar un “power bank” en la estructura del robot.

imagen_2

CONTROL DEL ROBOT

Para el control del robot hacemos uso del meta-sistema operativo robótico ROS, el cual está compuesto por una serie de herramientas, funcionalidades y librerías para el desarrollo de aplicaciones robóticas. La filosofía de diseño de ROS permite crear sistemas muy modulares, en los que incluso los programas se pueden estar ejecutando de forma distribuida en una red IP. Para conseguir esta comunicación entre ejecutables (llamados nodos), ROS provee un nodo principal que se encarga de arbitrar las comunicaciones entre todos los demás nodos de la red.

imagen_3

Las comunicaciones pueden ser de dos tipos principalmente:

  1. Basadas en tópicos
  2. Basadas en servicios.

La diferencia fundamental es que en el primero (basadas en tópico) son asíncronas, mientras que las del segundo (basadas en servicios) están compuestas de una petición y una respuesta.

La comunicación basada en tópicos consiste en el patrón publicador-suscriptor, en el que se pueden dar los siguientes casos:

  • Un único publicador envía mensajes a varios suscriptores.
  • Varios publicadores envían mensajes a un único suscriptor.
  • Varios publicadores envían mensajes a varios suscriptores.

En todos ellos, todos los suscriptores reciben todos los mensajes de todos los publicadores, mediante conexión punto a punto entre cada uno de ellos. Cada tópico tiene asociado un nombre y un formato de mensaje específico.

Esta arquitectura de comunicaciones permite la fácil integración de nodos desarrollados por terceros con nodos de desarrollo propio, ya que el único requisito es que publiquen o se suscriban al tópico adecuado y con el formato de mensaje correspondiente.

En nuestro caso integraremos los nodos existentes en el paquete nxt-ros, con nodos desarrollados por nosotros en Python. A grandes rasgos, la funcionalidad ofrecida por el primer conjunto de nodos es el envío de mensajes de control al robot, la recepción de las medidas de los sensores del robot, y el procesamiento de éstas últimas. Esto permite obtener, por ejemplo, la posición (traslación y orientación) del sistema de referencia del robot (“base_link”) con respecto a un sistema de referencia denominado “odom”, a través de las medidas de la posición de los motores.

La transformación entre ambos sistemas de referencia es publicada en el tópico /tf con el tipo de mensaje tf/tfMessage que nos es más que una rotación y una traslación de un sistema de coordenadas con respecto a otro.

ENLACES

Video funcionamiento: https://www.youtube.com/watch?v=8oQcoF7vMic

Trilateración Manhattan: https://www.dropbox.com/s/1tjvi45t91wq9wv/Trilateraci%C3%B3nManhattan.pdf?dl=0

PROYECTO REALIZADO POR:

Francisco Becerra Letrán
Alejandro Braza Barba
Miguel Fontanilla Pérez de Tudela      
Ismael Martín Saldaña
Alberto Fuentes Muñoz

Saludos.

favicon

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *