integración de un sensor láser a la plataforma robótica

67
Integración de un Sensor Láser a la Plataforma Robótica MobileRobots por Francisco Alfonso Vides Cerón Jorge Sosa-Dias Pérez Proyecto de grado para optar por el título de: Ingeniero de Sistemas y de Computación Profesor Asesor: Fernando De la Rosa, Ph.D. Universidad de los Andes Departamento de Ingeniería de Sistemas y Computación Bogotá, D.C. Junio de 2008 ©Francisco Vides, Jorge Sosa-dias

Upload: others

Post on 25-Jul-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Integración de un Sensor Láser a la Plataforma Robótica

Integración de un Sensor Láser a la Plataforma Robótica MobileRobots

por

Francisco Alfonso Vides Cerón

Jorge Sosa-Dias Pérez

Proyecto de grado para optar

por el título de:

Ingeniero de Sistemas y de Computación

Profesor Asesor: Fernando De la Rosa, Ph.D.

Universidad de los Andes

Departamento de Ingeniería de Sistemas y Computación

Bogotá, D.C.

Junio de 2008

©Francisco Vides, Jorge Sosa-dias

Page 2: Integración de un Sensor Láser a la Plataforma Robótica

ii

Para Stella y Alfonso – F.V.

Para Rocío y Felipe –J.S.

…Nuestros Padres

Page 3: Integración de un Sensor Láser a la Plataforma Robótica

iii

Resumen

En el mundo de la robótica móvil los sensores de adquisición de distancias son una pieza fundamental para tareas de planificación de movimientos, localización y generación de mapas entre otras. La resolución, precisión y frecuencia de muestreo son características de estos sensores que resultan cruciales para muchas aplicaciones. Actualmente el laboratorio de visualización inmersiva y sistemas autónomos de la Universidad de los Andes posee cuatro robots referencia Pioneer de la casa MobileRobots. Estos robots ya traen instalados sensores de distancia de ultrasonido los cuales tienen limitaciones de precisión, resolución y rango de cubrimiento.

Nuestro objetivo es adaptar un sensor láser de adquisición de distancias marca Hokuyo URG a dos de estos robots. Estos sensores proveen mejores resolución, precisión y frecuencia de muestreo de medición de distancias. Esta adaptación incluye la instalación física y configuración de los sensores. Así mismo se ha elaborado una extensión de la plataforma de desarrollo de aplicaciones de alto nivel ARIA, de forma que el funcionamiento particular del sensor láser sea transparente. Finalmente se ha construido una aplicación demo que permite evidenciar el correcto funcionamiento del sensor integrado a la plataforma robótica.

Los resultados obtenidos se ilustran a través de una serie de pruebas que permiten verificar el funcionamiento del láser integrado sobre el robot y a su vez caracterizar importantes propiedades del mismo. La aplicación desarrollada permite reconstruir una nube de puntos de alta precisión de los objetos encontrados en el plano del láser.

Page 4: Integración de un Sensor Láser a la Plataforma Robótica

iv

Tabla de Contenidos

Lista de Figuras.................................................................... vi

Lista de Tablas ................................................................... viii

Capítulo 1. Introducción ...................................................... 1

Capítulo 2. Marco Teórico y Elementos Disponibles .............. 3

2.1 Principios de la robótica móvil ........................................ 3

2.1.1 Mapas de carreteras ................................................. 3

2.1.2 Descomposición en celdas ......................................... 4

2.1.3 Campos Potenciales .................................................. 4

2.2 Sensores ..................................................................... 5

2.3 Robots Pioneer ............................................................. 6

2.3.1 Comunicaciones ....................................................... 9

2.3.2 Plataforma de desarrollo ARIA .................................. 11

2.4 Sensor Láser Hokuyo URG ........................................... 14

Capítulo 3. Problema de interés y solución propuesta ........ 20

3.1 Definición y alcance del proyecto .................................. 21

3.1.1 Metodología de Trabajo en grupo .............................. 21

3.2 Instalación y Configuración del Dispositivo para Comunicación WiBox ........................................................ 22

3.3 Instalación y Configuración del sensor Láser URG ........... 26

3.4 Extensión ArURG en el API ARIA ................................... 29

3.4.1 ArSimpleConnectorUrg Class Reference ..................... 31

3.4.2 ArUrg Class Reference ............................................. 31

3.5 Aplicación Demo para pruebas...................................... 33

Capítulo 4. Pruebas y Resultados ....................................... 35

4.1 Pruebas de conexión para el WiBox ............................... 35

4.2 Pruebas básicas para el URG-Láser ............................... 36

4.3 Precisión del láser URG ................................................ 38

4.4 Variabilidad medidas láser respecto a materiales ............ 41

4.5 Variabilidad respecto a iluminación ambiente ................. 44

Page 5: Integración de un Sensor Láser a la Plataforma Robótica

v

4.6 Odometría del robot P3DX ........................................... 45

4.7 Generación de nubes de puntos .................................... 45

4.7.1 Visualización de nubes de puntos.............................. 46

4.7.2 Escenario 1 ............................................................ 46

4.7.3 Escenario 2 ............................................................ 48

4.7.4 Escenario 3 ............................................................ 50

4.8 Comunicaciones y tiempos de refresco .......................... 52

Capítulo 5. Conclusiones y Trabajo Futuro ......................... 55

Bibliografía ........................................................................ 57

Page 6: Integración de un Sensor Láser a la Plataforma Robótica

vi

Lista de Figuras Figura 2.1 Metodos de planeación. ............................................. 4

Figura 2.2 Descomposición en celdas. ......................................... 4

Figura 2.3 Campos potenciales para obstáculos y objetivo. ........... 5

Figura 2.4 Interaccion de un agente con el ambiente. ................... 6

Figura 2.5 Primeros robots Pioneer ............................................. 7

Figura 2.6 Robot P3DX del laboratorio ........................................ 8

Figura 2.7 Características físicas del robot P3DX .......................... 8

Figura 2.8 Mainboard del robot P3DX .......................................... 9

Figura 2.9 Formas de conexión al robot por el puerto HOST ........ 10

Figura 2.10 Sistema ARCOS .................................................... 11

Figura 2.11 Esquema general de la plataforma ARIA .................. 12

Figura 2.12 Diagrama de herencia de la interfaz ArRangeDevice .. 13

Figura 2.13 Relación de las Acciones en el robot ........................ 14

Figura 2.14 Láser URG-04LX ................................................... 15

Figura 2.15 Rango de barrido del láser URG .............................. 16

Figura 2.16 Estructura interna del láser Hokuyo [13] .................. 17

Figura 2.17 Dimensión Láser URG-04LX en milímetros ................ 19

Figura 3.1 Arquitectura propuesta ............................................ 20

Figura 3.2 WiBox ................................................................... 22

Figura 3.3 Conexiones WiBox .................................................. 23

Figura 3.4 Menú de configuración WiBox ................................... 23

Figura 3.5 Menú de configuración WiBox usando conexión TCP/IP 24

Figura 3.6 Software ComPort Redirector. .................................. 25

Figura 3.7 Pantalla de configuración del ComPort Redirector ........ 26

Figura 3.8 Estándar RS232 ...................................................... 27

Figura 3.9 Conexión Serial. ..................................................... 28

Figura 3.10 Tarjeta de potencia de los robots P3DX .................... 29

Figura 3.11 Jerarquía de clases incluyendo el ArUrg ................... 30

Figura 3.12 Esquema de la aplicación Demo .............................. 34

Figura 4.1 Aplicación vmon con información real del láser. .......... 37

Page 7: Integración de un Sensor Láser a la Plataforma Robótica

vii

Figura 4.2 Comando V a través de HyperTerminal. ..................... 38

Figura 4.3 Experimento de precisión del láser.. .......................... 39

Figura 4.4 Error absoluto observado en las mediciones. .............. 41

Figura 4.5 Esquema de experimento con diversos materiales....... 42

Figura 4.6 Diferentes materiales usados. .................................. 43

Figura 4.7 Error absoluto en la medición de materiales ............... 44

Figura 4.8 Escenario de pruebas 1. .......................................... 47

Figura 4.9 Escenario 1 estático generado por láser ..................... 47

Figura 4.10 Escenario 1 dinámico generado por láser ................. 48

Figura 4.11 Escenario de pruebas 2. ......................................... 49

Figura 4.12 Escenario 2 estático generado por láser ................... 49

Figura 4.13 Escenario 2 dinámico generado por láser ................. 50

Figura 4.14 Escenario de pruebas 3. ......................................... 51

Figura 4.15 Escenario 3 estático Generado por láser ................... 51

Figura 4.16 Escenario 3 dinámico generado por láser ................. 52

Figura 4.17 Esquema de comunicaciones y alimentación ............. 54

Page 8: Integración de un Sensor Láser a la Plataforma Robótica

viii

Lista de Tablas

Tabla 2.1 Especificaciones del láser URG 04LX según el fabricante ...... 16

Tabla 3.1 Interfaz de conexiones del láser URG ................................ 26

Tabla 4.1 Resumen de datos obtenidos al realizar el experimento de distancias .................................................................................. 39

Tabla 4.2 Medida máxima dependiendo de material .......................... 42

Tabla 4.3 Resultados de medidas del láser en diferentes materiales .... 43

Tabla 4.4 Resultados de medidas de láser con diferentes intensidades de luz ............................................................................................ 45

Tabla 4.5 Resultados de errores en odometría .................................. 45

Page 9: Integración de un Sensor Láser a la Plataforma Robótica

1

Capítulo 1. Introducción La robótica es el estudio y diseño de robots y de los métodos que

permiten definir sus tareas. La robótica nació del deseo humano de crear alguien semejante a él, que pudiera liberarlo de muchas tareas que comúnmente realiza y hacer otras de las cuales él no es capaz. Para poder lograr las tareas que el humano le impone el robot debe contar con una serie de interfaces que le permitan comunicarse con su entorno. Para recibir información del ambiente que lo rodea un robot utiliza sensores, así como nosotros usamos los sentidos. Existe una amplia gama de sensores y actuadores utilizados en robótica, creando en sí mismos un campo de investigación de gran interés. En particular están los sensores de detección de objetos y distancias. Estos juegan un papel muy importante en la planeación de trayectorias, generación de mapas y localización.

Con el ánimo de progresar en la búsqueda del conocimiento la Universidad de los Andes adquirió recientemente una serie de equipos bajo el financiamiento de la Facultad de Ingeniería dentro del programa de dotación de los laboratorios en el nuevo edificio Mario Láserna. Particularmente se compraron 4 robots Pioneer de la casa MobileRobots [1] y algunos periféricos externos a la plataforma original. Estos periféricos buscan extender la funcionalidad de los robots dándoles una mayor autonomía. Principalmente se adquirieron 2 sensores láser Hokuyo URG [2] para adquisición de distancias, 3 cajas WiBox para la comunicación inalámbrica, y una cámara Cannon para la adquisición de video monocular. A excepción de la cámara que ya venía instalada los otros periféricos no vienen preinstalados y requieren de una previa instalación y configuración.

Estos equipos hacen parte del laboratorio Visualización Inmersiva y Sistemas Autónomos donde participan los grupos IMAGINE (Ing de Sistemas y Computación) y GIAP (Ingeniería Eléctrica, Ingeniería Electrónica, Ingeniería Mecánica e Ingeniería de Sistemas y Computación). Esto permite la utilización de los equipos para el desarrollo de diversas aplicaciones multidisciplinarias. Para poder aprovechar al máximo el potencial de estos equipos los usuarios deben contar con una plataforma de desarrollo integrada que sea funcional, robusta y bien documentada. Los robots Pioneer ofrecen algunas interfaces hardware para conectar nuevos dispositivos a la plataforma original. Así mismo, existe una plataforma de desarrollo a nivel de software llamada ARIA [3], que además del control de movimiento del robot soporta algunos periféricos predefinidos. Sin embargo algunos de

Page 10: Integración de un Sensor Láser a la Plataforma Robótica

2

los periféricos adquiridos son externos al fabricante. Particularmente el láser Hokuyo es un potente periférico pero no cuenta actualmente con soporte software ni guía de instalación hardware. Estos periféricos son de carácter genérico y requieren una configuración y adaptación a la plataforma física y de software que ofrecen los robots Pioneer. Esta adaptación es un paso fundamental para el desarrollo y ejecución de futuras aplicaciones que se basen en estos periféricos. Esto nos motiva a poner en funcionamiento los sensores láser adquiridos y generar una plataforma estable para que futuros estudiantes puedan hacer uso de éstos en el desarrollo de aplicaciones de alto nivel sin tener que preocuparse por los detalles de bajo nivel (instalación y configuración). Para esto nos hemos planteado los siguientes objetivos:

Objetivo General

Adaptar el sensor láser URG-04LX a la plataforma robótica P3DX y extender la plataforma ARIA con el nuevo sensor para su uso en nuevos desarrollos.

Objetivos Específicos • Tener el láser operativo en los dos robots P3DX (alimentación y

comunicación). • Desarrollar una librería para la plataforma ARIA como interfaz

entre el robot y el láser URG. • Desarrollar una aplicación prototipo que genere una nube de

puntos de su entorno y la visualice, basándose en las detecciones del sensor láser y usando la librería desarrollada.

La estructura del documento es la siguiente: En el capítulo 2 se quiere contextualizar al lector con un breve marco teórico de la robótica móvil y los sensores, e introducir los elementos que tenemos disponibles para llevar parte de esta teoría a aplicaciones prácticas. En el capítulo 3 explicamos en detalle el problema de interés y planteamos nuestra solución propuesta. El capítulo 4 muestra los resultados obtenidos a lo largo del proyecto y finalmente el capítulo 5 cierra con algunas conclusiones e ideas para trabajos futuros basados en éste.

Page 11: Integración de un Sensor Láser a la Plataforma Robótica

3

Capítulo 2. Marco Teórico y Elementos Disponibles

Este capítulo resume algunos conceptos fundamentales en el desarrollo del proyecto y establece los elementos disponibles para realizar el proyecto. Al hablar de elementos nos referimos a las piezas de hardware y software que son relevantes a este proyecto y que están disponibles para nuestro uso. Particularmente hablamos de los robots pioneer, sus periféricos y su ambiente de programación.

2.1 Principios de la robótica móvil

La robótica móvil se refiere a la rama de la robótica que estudia los robots que no están fijos sobre una plataforma sino que pueden moverse libremente en el espacio. Existen tres tipos de robótica móvil, terrestres, aéreos (comúnmente llamados UAV’s), submarinos (comúnmente llamados AUV´s). En la actualidad se ha realizado más desarrollo sobre los robots terrestres, que a su vez se pueden categorizar en tres grandes tipos: los que poseen ruedas, los que poseen piernas y los que poseen orugas para su desplazamiento.

La robótica móvil se asienta sobre principios de planificación de trayectorias. Existen una diversidad de métodos por los cuales el robot a través de sus sensores y un algoritmo pueden recorrer un espacio de la manera que el usuario lo desea. En planificación se habla del concepto de configuración de un robot como un conjunto de parámetros que define de manera única su posición y orientación en el espacio. El espacio de configuraciones define el conjunto de configuraciones donde el robot entra en contacto o colisión con los obstáculos en el ambiente. Los métodos más comunes de planificación se basan en aproximaciones generales conocidas como mapa de carreteras, descomposición en celdas y campos potenciales [4]-[6] definidos en el espacio de configuraciones.

2.1.1 Mapas de carreteras

La técnica consiste en capturar la conectividad del espacio por medio de una serie caminos, los cuales posteriormente se analizan para encontrar uno que una la configuración de inicio con la de terminación. El grafo de visibilidad y el método probabilístico de caminos son ejemplos de métodos que utilizan esta técnica.

Page 12: Integración de un Sensor Láser a la Plataforma Robótica

4

Figura 2.1 (a) Grafo de visibilidad [5] (b) Generación por el método

probabilístico de caminos [5].

2.1.2 Descomposición en celdas

Es uno de los métodos más estudiados, consiste en dividir el espacio en pequeñas regiones llamadas celdas. Por medio de ellas se puede construir un camino que pase por regiones libres del espacio. Existen dos enfoques el aproximado y el exacto. En el primero se tiene una división comúnmente en rectángulos que representa el espacio libre y sus obstáculos en el espacio de configuración, mientras que en el segundo se tiene una división exacta con polígonos del espacio. Aunque en el primero no se garantiza que pueda encontrar un camino o en si decir si realmente existe uno, la ventaja con respecto al segundo en el cual si se puede, es que es muchísimo mas rápido.

Figura 2.2 Descomposición en celdas. Aproximado (izquierda) [5] y exacto

(derecha) [5].

2.1.3 Campos Potenciales

Método que utiliza la noción de fuerza potencial. Los obstáculos tienen un potencial de repulsión que se aumenta conforme el robot se acerca a ellos. La meta final tiene una potencial de atracción que se va reduciendo cuando el robot se acerca a ella. La ruta entre las

Page 13: Integración de un Sensor Láser a la Plataforma Robótica

5

configuraciones inicial y final se genera siguiendo el gradiente negativo del potencial total.

Figura 2.3 Campos potenciales para obstáculos y objetivo [5].

Estas técnicas sirven de base para técnicas más robustas y elaboradas que permiten manejar la planificación de caminos en un plano de forma segura. Complicaciones adicionales surgen debido a discrepancias entre el espacio de configuración y el mundo real. Estas incertidumbres han sido tratadas y existen propuestas para corregir dinámicamente la incertidumbre en orientación, posición y control, de forma que se pueda tener una planeación confiable [7].

2.2 Sensores

Los robots son agentes inteligentes que por definición perciben su entorno a través de sensores y actúan con él a través de actuadores [8]. La Figura 2.4 representa un agente de manera general. La capacidad de un robot depende entonces de su inteligencia, de sus actuadores y por supuesto de sus sensores. Para un robot y en general para cualquier agente inteligente la etapa de percepción resulta fundamental. Primero que todo el agente necesita conocer el mundo que lo rodea para interactuar apropiadamente con él. Y luego de ejercer una acción es muy deseable que el agente verifique cómo cambio el mundo con dicha acción. Para tener esa habilidad perceptiva un robot necesita sensores. Un sensor es un elemento del robot que permite medir y cuantificar algún atributo del mundo. Por lo general en el mundo robótico un sensor es un transductor que convierte alguna variable del mundo mecánico en energía eléctrica procesable por el robot. Estos sensores caen en 2 grandes categorías, sensores pasivos y activos. Los primeros dependen completamente de la energía que provee el ambiente y no modifican el mundo en lo absoluto, como es el caso de una foto celda para medir la intensidad de luz ambiente. Los sensores activos meten energía en el mundo para actuar como es el caso por ejemplo de un ultrasonido que emite sonido ultrasónico y lo espera de vuelta.

Page 14: Integración de un Sensor Láser a la Plataforma Robótica

6

Por otro lado los sensores también pueden ser clasificados por su modalidad, es decir por el tipo de variable que miden del mundo real. En general se pude decir que dos sensores bajo la misma modalidad generan preceptos lógicamente equivalentes [9]. Por ejemplo un sensor de proximidad ultrasonido y un sensor de contacto (bumper) generan el mismo precepto: hay una pared enfrente. Sin embargo debe ser claro que la calidad de este precepto no es la misma. Y es ahí donde surge en muchos casos una muy extensa gama de sensores que sirven para medir lo mismo aunque algunos lo hagan mejor que otros.

Figura 2.4 Un agente interactúa con el ambiente a través de sensores y

actuadores.

La diversidad de variables cuantificables en el mundo y las diferentes formas de medirlas hacen que exista un gigantesco campo de estudio en el mundo de los sensores. Una de las principales áreas de interés en la robótica móvil es proveer al robot con la información de que tan lejos o que tan cerca están los objetos que lo rodean. Con esto se logra un precepto de la situación actual del mundo que soporte el movimiento inteligente. El sensor que se estudia en este trabajo cae dentro de la categoría de sensores activos, en la modalidad de adquisición de distancias y profundidad. Un estudio más detallado de este sensor se realiza en la sección 2.4.

2.3 Robots Pioneer

La empresa MobileRobots [1] (antes llamada activemedia robotics), fue fundada en 1995 con la creación del primer robot pioneer, hasta evolucionar a lo que es ahora. Esto otorga a la empresa una importante experiencia que brinda a sus productos robustez y confiabilidad. En la Figura 2.5 se puede apreciar 2 de los primeros robots de la empresa.

Page 15: Integración de un Sensor Láser a la Plataforma Robótica

7

Figura 2.5 Primeros robots Pioneer [1]

Hoy por hoy la empresa maneja una amplia gama de robots que varían en funcionalidad y precio. Sin embargo todos comparten una arquitectura común y una misma plataforma de programación lo que los hace ampliamente compatibles entre sí. Particularmente la Universidad de los Andes posee 2 referencias de robots: el AmigoBot y el P3DX. Se tienen 2 de cada referencia para un total de 4 robots. En este trabajo nos concentraremos en el P3DX, dado que solo se poseen 2 sensores láser. Además este robot es mucho más flexible para aceptar periféricos adicionales debido a su capacidad de carga, su geometría y sus asequibles interfaces de potencia. Sin embargo este trabajo se puede extender fácilmente a robots AmigoBot y otros robots de la casa Mobile Robots sin perder generalidad. El robot P3DX salió al mercado en el 2004. Su centro de procesamiento se basa en un microprocesador Renesas SH2 que está controlado por el software Advanced Robotics Control and Operations (ARCOS). Posee un sistema de ruedas diferencial controladas por motores DC reversibles. El sistema de control de tracción es transparentemente manejado por el microcontrolador y se tiene una retroalimentación odométrica con encoders de precisión integradas al sistema. El manejo de potencia de las 3 baterías que ofrecen hasta 252W-h es controlado por el microcontrolador y ofrece una amplia variedad de interfaces de salida para conectar periféricos adicionales. Todo lo anterior en una fuerte carcasa de aluminio resistente a golpes menores y con una capacidad de carga de hasta 23Kg. Como todas las plataformas Mobile Robots el P3DX se puede programar utilizando la Interfaz Avanzada para Aplicaciones en Robótica (ARIA).

Page 16: Integración de un Sensor Láser a la Plataforma Robótica

8

Figura 2.6 Robot P3DX del laboratorio

Figura 2.7 Características físicas del robot P3DX [10]

Con la configuración básica de Hardware el P3-DX junto con el software de ARIA potencialmente puede:

• Explorar aleatoriamente • Navegar con el robot controlado por teclas o joystick • Planear Caminos con navegación gradiente • Desplegar un mapa de las lecturas del sonar • Localizarse usando el sonar • Comunicar información de sensores y control relacionadas al

sonar, el encoder del motor , los controles del motor, entradas del usuario e información de recarga de la batería

• Correr programas en C++ • Probar actividades rápidamente • Simular los comportamientos con el simulador que acompaña

el ambiente de desarrollo.

Page 17: Integración de un Sensor Láser a la Plataforma Robótica

9

Pero además trae la opción de expansión para usar el P3DX con otros periféricos y adicionalmente la posibilidad de aumentar la funcionalidad. La Figura 2.8 muestra el esquema de la mainboard del robot P3DX que cuenta con múltiples salidas para conectar periféricos específicos como sonares o giroscopios, o bien periféricos generales a través de los puertos auxiliares Aux1-3 que funcionan bajo el estándar RS232.

Figura 2.8 Mainboard del robot P3DX [10]

2.3.1 Comunicaciones

Los robots de Mobile Robots manejan la estructura cliente- servidor. La plataforma robótica (el Hardware y el microcontrolador) actúan como servidor manejando las tareas de bajo nivel como el control de velocidad y dirección de los motores, la adquisición de datos de algunos sensores o el manejo del posicionamiento a partir de la lectura de los encoders. Por otra parte se necesita un cliente software corriendo en un computador que maneje las tareas de alto nivel, tales como la generación de mapas, la navegación, la planeación de caminos etc. Esta arquitectura da la ventaja de que un cliente software puede cambiar transparentemente de robot servidor siempre y cuando este preste los mismos servicios de hardware. Además puede haber varios clientes controlando un mismo servidor dando paso a aplicaciones de inteligencia distribuida.

La comunicación entre el servidor en el microcontrolador del robot y el cliente software se hace a través de la conexión serial HOST en el robot. Existen múltiples formas de comunicar un cliente software con el microcontrolador a través de este puerto. La Figura 2.9 muestra algunas de las opciones. En la Universidad de los Andes uno de los robots tiene computador abordo y el otro no. Sin embargo para el desarrollo de

Page 18: Integración de un Sensor Láser a la Plataforma Robótica

10

aplicaciones software esto resulta irrelevante ya que finalmente la comunicación se hará a través del puerto serial HOST bajo alguna modalidad conocida. La sección 3.2 explicara en detalle la implementación de esta comunicación.

Figura 2.9 Formas de conexión al robot por el puerto HOST [10]

Usualmente el cliente es desarrollado usando el API de programación ARIA. Este se comunicara a su vez con el software de operación del robot ARCOS, que esta embebido en el micro controlador del robot. Sin embargo si el usuario quiere tener un mayor control puede comunicarse directamente con ARCOS a través de los comandos que ofrece esta arquitectura. La Figura 2.10 muestra la arquitectura básica del sistema ARCOS.

Page 19: Integración de un Sensor Láser a la Plataforma Robótica

11

Figura 2.10 Sistema ARCOS [10]

2.3.2 Plataforma de desarrollo ARIA

Es preciso conocer la arquitectura de la plataforma de desarrollo ARIA para poder entender cómo es que funciona, y poder hacer uso de la misma y realizar modificaciones o adiciones. Acá se describe la estructura general [3].

Page 20: Integración de un Sensor Láser a la Plataforma Robótica

12

Figura 2.11 Esquema general de la plataforma ARIA [3]

El Robot

ArRobot

Es la clase principal de ARIA, en ella se encuentra toda la información primaria del robot siendo controlado. Esta clase por si sola representa el robot estándar sin ningún tipo de sensores, solo motores.

Los Sensores

ArRangeDevice

Esta es la clase que maneja todos los dispositivos que envíen algún tipo de lectura de distancia, tal como los ultrasonidos y el láser. Existen varias subclases que actualmente implementan esta interfaz y especializan algún tipo de sensor. La estructura de esta herencia la podemos ver en la Figura 2.12 2.12. Esta clase mantiene dos búferes de datos del tipo ArRangeBuffer. Uno de ellos para guardar las lecturas más recientes y otro que es por así decirlo un historial de lecturas declarado como CumulativeBuffer. Estos búferes no son otra cosa que una lista de puntos en el plano XY en los que el sensor ha detectado un objeto. Por facilidad de

Page 21: Integración de un Sensor Láser a la Plataforma Robótica

13

representación, estos puntos son del tipo ArPose que permite representar un punto en el espacio de configuración incluyendo la dirección a la que mira el robot.

Figura 2.12 Diagrama de herencia de la interfaz ArRangeDevice

Una de las ventajas de usar esta interfaz es la posibilidad de asociar un sensor a un robot. De forma que el robot tenga una lista de sensores y se puedan acceder a instrucciones de alto nivel tal como pedir el objeto más cercano que alguno de los sensores asociados detecte.

Las Acciones

El comportamiento del robot esta encapsulado en todas las clases que heredan ArAction, ArActionGroup y ArMode.

ArAction

Representa una acción individual que un robot puede tomar en respuesta a sus circunstancias. Existen en ARIA algunas acciones predefinidas como ArAvoidFront, ArAvoidSide y ArActionGoto.

ArAction Group

Es usado para agrupar un colección de ArAction que en conjunto implementan un comportamiento. Se le puede dar prioridad a las ArAction que se adicionan. ARIA ejecuta de la de mayor prioridad a la de menor.

ArMode

Encapsula el comportamiento completo del robot, se puede asociar un ArMode con dos caracteres del teclado que indica cuales letras el usuario tecleara para activar ese modo.

Page 22: Integración de un Sensor Láser a la Plataforma Robótica

14

Figura 2.13 Relación de las Acciones en el robot [3]

2.4 Sensor Láser Hokuyo URG

Al igual que para un humano, para los robots es muy importante darse una idea de profundidad. Saber que tan lejos está un objeto con respecto a la posición del agente y que dimensiones tiene dicho objeto es información muy deseable al interactuar con el mundo. El ser humano utiliza varios componentes para percibir la profundidad, tales como la visión estereoscópica, la superposición de objetos, el tamaño relativo, o la experiencia previa. En el caso de un robot se hace necesario contar con dispositivos que permitan adquirir o inferir las distancias. En inglés estos dispositivos se conocen como rangefinder. Estos dispositivos permiten medir la distancia desde la posición del sensor a un punto objetivo [11]. Varias técnicas se han desarrollado para que un agente robótico pueda percibir distancias. Principalmente se utilizan la triangulación, el tiempo de vuelo (Time of flight), la modulación en frecuencia, la intensidad de la señal de retorno, o la medición del cambio de fase. A su vez, estas técnicas son implementadas con diversos transductores y en distintas subclases [12]. Dentro de los transductores más comunes se utilizan las cámaras estereoscópicas, el ultrasonido, los patrones de luz y los sensores láser. Este último es el que particularmente nos interesa.

Al igual que un ultrasonido el láser puede utilizar el principio de reflexión, enviando un haz de luz al ambiente esperando a que se refleje en una superficie y capturando dicha reflexión. A diferencia de un ultrasonido el láser tiene la ventaja de que puede dirigir la señal haciéndolo mucho más preciso siendo capaz de medir distancias de varios metros con errores de unos pocos milímetros. Adicionalmente por tratarse de luz el láser es muchísimo más rápido generando hasta un

Page 23: Integración de un Sensor Láser a la Plataforma Robótica

15

millón de lecturas por segundo [9]. Estas grandes ventajas por supuesto vienen a su debido costo, haciendo de los sensores láser un dispositivo considerablemente costoso comparado con algunos sustitutos. Los sensores ultrasonido suelen funcionar bajo la técnica Time of Flight. En esta técnica un reloj digital de pulsos cronometra el tiempo que se demora en ir y volver la señal y calcula la distancia basándose en la simple ecuación � � � � �. Para un ultrasonido � � 340/�, lo que requiere un reloj del orden de 340 kHz para tener una resolución milimétrica. Esta velocidad de reloj se consigue fácilmente con componentes compactos y económicos. No ocurre lo mismo para los sensores láser. En este caso � � 3 � 10�/� y el reloj tiene que ser de 300GHz para obtener la misma resolución. Un reloj con esta velocidad resulta poco viable en términos de costo y disipación de potencia. Esto hace que los sensores láser empleen otras técnicas tales como la medición del cambio de fase.

Comercialmente hoy se consiguen sensores láser de adquisición de distancia que van desde el orden de $2.400 a $100.000 dólares. La mayoría de estos sensores hacen un barrido de distancia sobre el plano en que esta el sensor, lo cual presenta el inconveniente de que no se pueden detectar objetos por arriba o por debajo de este plano. Como solución a esto algunos utilizan más de un sensor ligeramente inclinado para arriba o abajo detectando así objetos en varios planos a medida que el robot se mueve.

Figura 2.14 Láser URG-04LX

El URG-04LX es un sensor láser 2D de la empresa Hokuyo Automatic Co [2]. Se caracteriza por ser compacto y liviano conservando precisión y bajo consumo de energía. Además tiene un amplio ángulo de barrido a alta resolución. Pero por encima de estas impresionantes características, la más interesante es su precio: $2.400

Page 24: Integración de un Sensor Láser a la Plataforma Robótica

16

dólares aproximadamente. Lo que lo ha hecho crecer enormemente en popularidad. Como se menciono, la Universidad de los Andes adquirió uno de estos equipos, se puede ver en la Figura 2.14 2.14.

Figura 2.15 Rango de barrido del láser URG

El URG escanea 240 grados a la redonda y tiene una resolución angular de 0.36° como se puede ver en la Figura 2.15. Se alimenta por una fuente poder de 5 voltios y 500mA. Se conecta por medio del puerto serial a una velocidad que va desde los 19.2kbps hasta 750kbs, se recomienda la velocidad más grande que se pueda utilizar. Existe también la posibilidad de conectarse por un puerto USB a 12Mbps. El alcance del láser se dice que es máximo de 4 metros pero varía en gran manera de acuerdo a los materiales de los objetos [13]. La Tabla 2.1 resume las principales características del láser Hokuyo URG04LX.

Tabla 2.1 Especificaciones del láser URG 04LX según el fabricante

Fuente de luz Láser semiconductor λ=785nm

Alimentación 5VDC, ±5%

Consumo de corriente

500mA

Rango de detección 20mm – 4095mm (varia con el material del objeto)

Precisión ±10mm por debajo de 1m y 1% de la medición por encima de 1m

Resolución 1mm

Angulo de escaneo 240°

Page 25: Integración de un Sensor Láser a la Plataforma Robótica

17

Resolución angular 0.36°

Interfaz de datos Serial RS232 o USB v2.0

Peso 160g aprox.

El funcionamiento del sensor se basa en el envió y recepción de un rayo de luz a 785nm. Este rayo de luz es modulado a 2 frecuencias distintas, cercanas a los 50MHz. Posteriormente se calcula la distancia al objeto basándose en la diferencia de fase entre la onda emitida y la onda recibida usando la siguiente ecuación:

� ���

4��

Donde � es la velocidad de la luz, � la frecuencia de modulación (en este caso alrededor de 50MHz), y � la diferencia de fase. Esta diferencia de fase se mide haciendo un muestreo de la señal de salida y entrada a mas o menos el doble de la frecuencia.

Este mismo proceso se hace múltiples veces mientras un motor gira los espejos de emisión y recepción dándole dirección al haz de luz. Obteniendo de esta manera el barrido completo de hasta 682 lecturas. El sensor que se utiliza para recibir el rayo es un fotodiodo de avalancha. La estructura interna del láser se muestra en la Figura 2.16. Los experimentos demuestran que el láser es bastante sensible a los materiales de los que se componen los objetos reflectores así como a la luminosidad del ambiente. Por esto es importante hacer una caracterización propia del láser dentro del desarrollo.

Figura 2.16 Estructura interna del láser Hokuyo [13]

Page 26: Integración de un Sensor Láser a la Plataforma Robótica

18

El láser maneja un protocolo de comunicación del cual existen dos versiones el SCIP 1.1 y la 2.0. La primera versión maneja 4 tipos distintos de comandos a saber:

(1) Comando de versión (2) Comando de encendido de láser (3) Configurar velocidad de comunicación protocolo RS-232C (4) Comando de adquisición de información de distancia

La segunda versión maneja 7 tipos distintos de comandos a saber:

(1) Comando de información del sensor (3 tipos) [VV] [PP] [II] (2) Comando de desactivar/activar medida [BM] [QT] (3) Comando de configuración de la velocidad para el protocolo

Rs-232C [SS] (4) Comando de adquisición de distancia (2 tipos) [MDMS]

[GDGS] (5) Comando de velocidad del motor [CR]

(6) Comando de ajuste de tiempo en la adquisición [TM]

(7) Comando de reset [RS]

La gran precisión y versatilidad de este láser se encuentra encapsulada en una pequeña y liviana carcasa que lo hace ideal para trabajar con robots pequeños y medianos. En la Figura 2.17 2.17 podemos ver las dimensiones del láser en milímetros.

Page 27: Integración de un Sensor Láser a la Plataforma Robótica

19

Figura 2.17 Dimensión Láser URG-04LX en milímetros

Page 28: Integración de un Sensor Láser a la Plataforma Robótica

20

Capítulo 3. Problema de interés y solución propuesta

Como se había mencionado anteriormente los robots Pioneer son una adquisición reciente de la Universidad de los Andes. Existe un gran potencial de desarrollo investigativo con estos robots. Para aprovechar dicho potencial es necesario que los proyectos de esta etapa temprana se construyan de manera sólida y robusta de tal forma que puedan ser reutilizados por proyectos posteriores. Con este fin es deseable seguir una estructura modular en el desarrollo de proyectos con módulos funcionales y bien documentados que sirvan de apoyo a futuras aplicaciones de más alto nivel. Bajo este esquema de trabajo es nuestro objetivo entregar al final del proyecto un sensor funcional instalado de forma segura a nivel hardware y que ofrezca facilidades de desarrollo software bajo la librería estándar ARIA de MobileRobots.

Nuestra propuesta para lograr dicho objetivo es hacer una instalación hardware robusta y confiable, junto con un software totalmente integrado a ARIA que siga la estructura natural de los sensores soportados oficialmente por el fabricante Mobile Robots. Todo lo anterior acompañado de una documentación que permita al usuario novato aprender rápidamente a usar las funcionalidades que ofrece el sensor. La arquitectura propuesta en este proyecto se muestra en la Figura 3.1. donde se aprecia en borde amarillo los nuevos módulos (con identificador URG) agregados a la arquitectura original de la Figura 2.11.

Figura 3.1 Arquitectura propuesta para la integración del sensor láser. Los

nuevos módulos con identificador URG tienen borde amarillo.

Page 29: Integración de un Sensor Láser a la Plataforma Robótica

21

3.1 Definición y alcance del proyecto

Los robots que posee el laboratorio de Sistemas Autónomos de la Universidad de los Andes actualmente poseen sensores de ultrasonido funcionales, sin embargo estos no son adecuados para muchas aplicaciones dada su baja precisión. Por este motivo la universidad adquirió dos sensores láser, que debido a restricciones económicas, tuvieron que ser comprados de un proveedor diferente al fabricante. Esto implica que no poseen el soporte de la plataforma tanto física como informática del mismo.

El alcance entonces comprenderá la instalación y adaptación del láser URG-04LX a la plataforma ARIA y desarrollo de una aplicación prototipo. La potencialidad que se alcanza con la integración del láser es bastante alta, pero dada la restricción de tiempo nos limitaremos a una aplicación de prueba relativamente sencilla que demuestre la funcionalidad básica del mismo. Particularmente tenemos como propuesta la reconstrucción de un mapa de un ambiente controlado en el cual todos los objetos son de un material conocido y se encuentran a una altura detectable por el láser, además se cuenta con las condiciones de iluminación adecuadas y un ambiente estático. Dado que el problema está centrado en la adaptación del láser y la aplicación de prototipo es la demostración de este objetivo, no vamos a inventarnos nuevos algoritmos de exploración sino que utilizaremos el que ya existe en la plataforma.

3.1.1 Metodología de Trabajo en grupo

La primera parte del trabajo se realizo de manera conjunta, se hizo una recopilación y comprensión de todo el material necesario para comprender el funcionamiento de los robots de Mobilerobots, el WiBox y el láser URG-04LX de Hokuyo. A continuación se procedió a hacer pruebas del WiBox proceso que se extendió varias semanas por muchos inconvenientes, posteriormente se busco adaptar el láser físicamente a los robots lo cual también fue bastante problemático y se extendió durante varias semanas (primero se probo el láser directamente en un computador , después conectado con el robot). En la segunda parte hubo una división del trabajo, se partió de una ayuda brindada por Matthew Lafary de la empresa MobileRobots quien contactamos a través de la lista de correo de ARIA [14]. Luego se procedió a trabajar en dos sentidos, por una parte un integrante se encargo de conseguir que ARIA pusiera a funcionar el robot en el modo wander y que entregara los puntos recibidos del láser URG-04LX; mientras que el otro integrante se encargo de recibir estos puntos y crear una aplicación que permitiese generar un mapa del ambiente en el cual está inmerso el robot a partir de los puntos entregados por ARIA. Paralelamente se fue desarrollando

Page 30: Integración de un Sensor Láser a la Plataforma Robótica

22

la documentación y respectivos manuales de manera conjunta. Dentro de la metodología de trabajo se tuvieron frecuentes reuniones para tomar decisiones, revisar el estado de avance e integrar las partes. Bajo previo acuerdo cada integrante cumplió semanalmente varias tareas específicas de forma que se tuviera un avance continuo y estable.

3.2 Instalación y Configuración del Dispositivo para Comunicación WiBox

La comunicación con los robots se hace por medio de un dispositivo llamado WiBox (Figura 3.2) que no es más que un conversor entre los protocolos RS-232C y TCP/IP y Viceversa. De esta manera para la plataforma de desarrollo y para el robot la comunicación inalámbrica es transparente, cada uno solo sabe que se comunica RS-232C. Para lograr que el computador interprete el TCP/IP como un puerto serial se debe usar el programa que viene con el WiBox llamado COM Port Redirector.

Figura 3.2 WiBox [15]

La instalación del WiBox es muy sencilla, consiste básicamente en conectarle una fuente de alimentación que entregue cualquier voltaje entre 9 y 30 voltios(soporta máximo una potencia de 2.5Watts), adicionalmente se conecta en cualquiera de los dos puertos seriales el dispositivo que se desea utilizar. Existe adicionalmente un puerto Ethernet Rj45 al cual se puede conectar un cable del mismo estándar, esta conexión es opcional y en un principio es destinada para mantenimiento. Todo esto lo podemos ver en la Figura 3.3 3.3

Page 31: Integración de un Sensor Láser a la Plataforma Robótica

23

Figura 3.3 Conexiones WiBox

La configuración del WiBox se puede realizar de dos formas via serial por medio de un programa que permita visualizar los datos enviados por el puerto serial o via TCP/IP por medio de un browser. Para la primera de ellas se requiere de un cable serial, un extremo del mismo se conecta al puerto serial 1 del WiBox y el otro extremo a un computador. A continuación por medio de un programa que permita visualizar los datos enviados por el puerto serial como hyperterminal se conecta al puerto serial al cual el cable se encuentra conectado. Se debe entonces dejar presionada la tecla x y seguidamente conectar la fuente de energía del WiBox. Esto producirá que aparezca el menú de configuración (Figura 3.4). A través de este menú se puede configurar entre las funciones más importantes: la IP estática del WiBox, la velocidad de transmisión por cada uno de los puertos, escoger la red inalámbrica a la cual se va conectar y configurar los aspectos de seguridad si los tiene para poder tener acceso.

Figura 3.4 Menú de configuración WiBox utilizando la conexión serial

Page 32: Integración de un Sensor Láser a la Plataforma Robótica

24

Existe otro modo más cómodo y amigable de tener acceso a las mismas opciones y es vía TCP/IP usando un browser internet, aunque cabe notar que para poder hacer uso del mismo se debe primero configurar la conexión de red que necesariamente se debe hacer por el método anteriormente descrito. El procedimiento es el siguiente, primero se abre cualquier browser y se navega a la dirección IP configurada como IP estática en el WiBox. Aparecerá un dialogo que pide usuario y password por default no es nada por lo cual se debe presionar Enter para continuar (esto es configurable en cualquiera de los dos métodos de configuración por seguridad). Saldrá entonces un menú como el de la Figura 3.5, como se ve se puede acceder de una manera más gráfica a las mismas opciones que podíamos configurar por el método usando un puerto serial anteriormente descrito. Cabe anotar que también es posible tener acceso a este menú usando el puerto de conexión RJ45 que tiene el WiBox para conectarlo a la red y configurarlo por medio del puerto serial para que este se conecte por medio de un cable y no inalámbricamente. Para mayores detalles referirse al manual del WiBox [15].

Figura 3.5 Menú de configuración WiBox usando conexión TCP/IP

Adicionalmente como se menciono anteriormente esta el software Com Port Redirector del mismo fabricante del WiBox que se utiliza para traducir de TCP/IP a RS-232C y viceversa. Se debe instalar, y

Page 33: Integración de un Sensor Láser a la Plataforma Robótica

25

posteriormente se pueden adicionar cuantos puertos seriales se quiera, y a cada uno de ellos se les asigna un puerto y una dirección IP correspondientes a la IP estática del WiBox que contiene el puerto serial que se quiere acceder (Figura 3.6 y Figura 3.7). De esta manera una vez configurado, el computador nunca sabrá que existe una conexión inalámbrica, para él, se está conectando a un puerto serial suyo.

Figura 3.6 Software ComPort Redirector. Utilizado para re-direccionar un puerto

serial a la consola WiBox.

Page 34: Integración de un Sensor Láser a la Plataforma Robótica

26

Figura 3.7 Pantalla de configuración del Com Port Redirector para asignar IP y

puerto TCP del WiBox al cuar redirigir los datos del puerto serial virtual COM1.

3.3 Instalación y Configuración del sensor Láser URG

Antes de poder utilizar el láser para aplicaciones embebidas en ARIA es necesario asegurarse de que se encuentra apropiadamente instalado y configurado. Lo primero que se debe hacer para utilizar el láser es ensamblar sus conexiones. De fábrica el sensor láser viene con un cable de 8 hilos que se conecta al láser. Por este mismo cable irán tanto la alimentación como los datos. La semántica de esta conexión se describe en la Tabla 3.1. En nuestro caso no necesitamos usar la salida síncrona, ésta se utiliza para sincronizar dispositivos electrónicos adicionales con el láser. Por esto solo necesitamos usar los cables del 4 al 8.

Tabla 3.1 Interfaz de conexiones del láser URG

URG-04LX Color de Cable

1 NC Rojo

2 NC Blanco

3 Salida síncrona Negro

4 GND (Pin 5 DB9) Morado

Page 35: Integración de un Sensor Láser a la Plataforma Robótica

5 RxD (Pin 3 DB9)

6 TxD (Pin 2 DB9)

7 0v

8 5VDC

La alimentación debe ser totalmente independiente de los datos, por lo que el cable debe bifurcarse. Los pines 4, 5 y 6 van a un terminal DB9 macho. Este conector es el más común para la comunicación RS232. Las conexiones estándar para un conector DB9 se mla Figura 3.8, sin embargo ni el hardware ni el software empleado utiliza control de flujo, por lo que solo se emplean los pines de transmisión y recepción de datos y la tierra. El cable soldado al conector tiene la apariencia final que se muestra en la

Figura 3.8 Estándar RS232

27

Amarillo

Verde

Azul

Café

La alimentación debe ser totalmente independiente de los datos, por lo que el cable debe bifurcarse. Los pines 4, 5 y 6 van a un terminal DB9 macho. Este conector es el más común para la comunicación RS232. Las conexiones estándar para un conector DB9 se m

, sin embargo ni el hardware ni el software empleado utiliza control de flujo, por lo que solo se emplean los pines de transmisión y

de datos y la tierra. El cable soldado al conector tiene la apariencia final que se muestra en la Figura 3.9.

Estándar RS232

La alimentación debe ser totalmente independiente de los datos, por lo que el cable debe bifurcarse. Los pines 4, 5 y 6 van a un terminal DB9 macho. Este conector es el más común para la comunicación RS232. Las conexiones estándar para un conector DB9 se muestran en

, sin embargo ni el hardware ni el software empleado utiliza control de flujo, por lo que solo se emplean los pines de transmisión y

de datos y la tierra. El cable soldado al conector tiene la

Page 36: Integración de un Sensor Láser a la Plataforma Robótica

28

Figura 3.9 a) Cables del láser conectados a un conector DB9 y a un conector de

corriente. b) Conexión interna.

Por otro lado se debe alimentar el láser a través de los pines 7 y 8. Para facilitar la movilidad del sensor se adapto un conector de potencia estándar macho a estos 2 pines, de forma que un cable hembra se pudiese fijar a la fuente de alimentación utilizada. Esto es particularmente útil en el caso del robot ya que la derivación de potencia esta dentro del mismo, y no es deseable abrir el robot cada vez que se quiera conectar o desconectar el láser.

Los robots P3DX facilitan la tarea de alimentación de potencia del láser ya que cuentan con una tarjeta de potencia que ofrece salidas estándar de 12v y 5v y un amperaje suficiente para alimentar el láser. La Figura 3.10 muestra la tarjeta de potencia de un robot P3DX. Para alimentar el láser se utilizo la salida Aux Power en la parte superior izquierda. Esta salida no requiere de conectores ya que basta con atornillar las ranuras ajustables que allí se encuentran.

Page 37: Integración de un Sensor Láser a la Plataforma Robótica

29

Figura 3.10 Tarjeta de potencia de los robots P3DX [10]

3.4 Extensión ArURG en el API ARIA

Para integrar el láser al API de ARIA lo más natural es seguir la jerarquía de clases existente que se menciono en la sección 2.3.2. Como los otros sensores, el URG debe tener una única clase que encapsule su complejidad y cuya instancia represente este sensor dentro del entorno de programación. No obstante esto no quiere decir que no se requieran clases adicionales que sirvan de apoyo a esta clase. Siguiendo además el esquema de nombres que trabaja ARIA quizás el nombre más representativo para esta nueva clase sea ArUrg. Para la comunicación con el láser se utiliza el protocolo interno SCIP1.1[17]. Sin embargo esto es completamente transparente para el usuario, que no tendrá que comprender este protocolo de comunicación para usar los métodos de la clase.

El láser URG es un range device y debe ser tratado como tal. Por este motivo la clase ArUrg hereda de la clase ArRangeDevice. Adicionalmente el URG posee un micro controlador interno que maneja el ciclo de control del láser y se comunica asíncronamente a través del protocolo RS232. Por este motivo también es natural que ArUrg herede de ArRangeDeviceThreaded. La jerarquía de clases manejada se muestra en la Figura 3.11.

Page 38: Integración de un Sensor Láser a la Plataforma Robótica

Figura 3.11 Jerarquía

Adicionalmente a ayude a encapsular la complejidad de usar los parámetros de consola para establecer la comunicación inicial con el láser URG. Una clase de este tipo ya existe para hacer conexiones con el robot y con el lásSICK. El ArSimpleConnectorUrg es una modificación de la clase ArSimpleConnector que entiende los nuevos parámetros de conexión para el URG. Adicionalmente a la creación de estas dos nuevas clases es necesario hacer ligeras modificaciones a algunas clasque soporten toda la funcionalidad de la nueva clase ArUrg.

Junto con los métodos heredados de ArRangeDevice y ArRangeDeviceThreaded el ArUrg ofrece las siguientes funcionalidades:

• Manejo del tamaño de los bufferes actual y manual por tiempo o distancia.

• Obtener todas las lecturas del buffer actual o cumulativo en forma de ArRangeBuffer.

• Obtener las distancias “crudas” (sin procesar) del láser.• Obtener la distancia más cercana en un rango de bar

polar del buffer actual o cumulativo• Obtener la distancia más cercana en una caja alrededor del

robot usando el buffer actual o • Establecer y adquirir información de dibujo para clientes

gráficos como MobileEyes.• Ignorar un dato en cierto án

robot que interfieren en la lectura)• Limpiar los datos del buffer cumulativo por criterios de tiempo

o distancia.• Obtener información del sensor y cambiar sus parámetros de

barrido.

Para información de uso más detallada se documentación del API ARIA con la información propia del láser URG[16]. A continuación se muestra la documentación generada para las clases ArUrg y ArSimpleConnectorURG. Se encuentra en

30

Jerarquía de clases incluyendo el ArUrg

Adicionalmente a la clase ArUrg es conveniente tener una clase que ayude a encapsular la complejidad de usar los parámetros de consola para establecer la comunicación inicial con el láser URG. Una clase de este tipo ya existe para hacer conexiones con el robot y con el lásSICK. El ArSimpleConnectorUrg es una modificación de la clase ArSimpleConnector que entiende los nuevos parámetros de conexión para el URG. Adicionalmente a la creación de estas dos nuevas clases es necesario hacer ligeras modificaciones a algunas clases existentes para que soporten toda la funcionalidad de la nueva clase ArUrg.

Junto con los métodos heredados de ArRangeDevice y ArRangeDeviceThreaded el ArUrg ofrece las siguientes funcionalidades:

Manejo del tamaño de los bufferes actual y cumulativeanual por tiempo o distancia.

Obtener todas las lecturas del buffer actual o cumulativo en forma de ArRangeBuffer. Vector o lista de datos ArPose.Obtener las distancias “crudas” (sin procesar) del láser.Obtener la distancia más cercana en un rango de barpolar del buffer actual o cumulativo Obtener la distancia más cercana en una caja alrededor del robot usando el buffer actual o cumulative Establecer y adquirir información de dibujo para clientes gráficos como MobileEyes. Ignorar un dato en cierto ángulo (útil si hay objetos en el robot que interfieren en la lectura) Limpiar los datos del buffer cumulativo por criterios de tiempo o distancia. Obtener información del sensor y cambiar sus parámetros de

Para información de uso más detallada se documentación del API ARIA con la información propia del láser URG

A continuación se muestra la documentación generada para las clases ArUrg y ArSimpleConnectorURG. Se encuentra en

la clase ArUrg es conveniente tener una clase que ayude a encapsular la complejidad de usar los parámetros de consola para establecer la comunicación inicial con el láser URG. Una clase de este tipo ya existe para hacer conexiones con el robot y con el láser SICK. El ArSimpleConnectorUrg es una modificación de la clase ArSimpleConnector que entiende los nuevos parámetros de conexión para el URG. Adicionalmente a la creación de estas dos nuevas clases es

es existentes para que soporten toda la funcionalidad de la nueva clase ArUrg.

Junto con los métodos heredados de ArRangeDevice y ArRangeDeviceThreaded el ArUrg ofrece las siguientes funcionalidades:

cumulative,

Obtener todas las lecturas del buffer actual o cumulativo en Vector o lista de datos ArPose.

Obtener las distancias “crudas” (sin procesar) del láser. Obtener la distancia más cercana en un rango de barrido

Obtener la distancia más cercana en una caja alrededor del

Establecer y adquirir información de dibujo para clientes

gulo (útil si hay objetos en el

Limpiar los datos del buffer cumulativo por criterios de tiempo

Obtener información del sensor y cambiar sus parámetros de

Para información de uso más detallada se actualizó la documentación del API ARIA con la información propia del láser URG

A continuación se muestra la documentación generada para las inglés por ser el

Page 39: Integración de un Sensor Láser a la Plataforma Robótica

31

idioma estándar para documentación de clases. Los detalles se salen del enfoque de este documento, pero una versión mucho más completa se encuentra junto con el CD de instalación [16].

3.4.1 ArSimpleConnectorUrg Class Reference Connect to Urg based on run-time availablitily and command-line arguments.

#include <ArSimpleConnectorUrg.h>

Public Member Functions

• AREXPORT ArSimpleConnectorUrg (int *argc, char **argv)

Constructor that takes args from the main.

• AREXPORT ArSimpleConnectorUrg (ArArgumentBuilder *arguments)

Constructor that takes argument builder.

• AREXPORT ArSimpleConnectorUrg (ArArgumentParser *parser)

Constructor that takes argument parser.

• AREXPORT ~ArSimpleConnectorUrg (void)

Destructor.

• AREXPORT bool setupUrg (ArUrg *urg)

Sets up the urg to be connected.

• AREXPORT bool setupSecondUrg (ArUrg *urg)

Sets up a second urg to be connected.

• AREXPORT bool setupUrgArbitrary (ArUrg *urg, int urgNumber)

Sets up a urg to be connected (make sure you setMaxNumUrgs).

• AREXPORT bool connectUrg (ArUrg *urg)

Connects the urg synchronously (will take up to a minute).

• AREXPORT bool connectSecondUrg (ArUrg *urg)

Connects the urg synchronously (will take up to a minute).

• AREXPORT bool connectUrgArbitrary (ArUrg *urg, int urgNumber)

Connects the urg synchronously (make sure you setMaxNumUrgs).

• AREXPORT bool parseArgs (void)

Function to parse the arguments given in the constructor.

• AREXPORT bool parseArgs (ArArgumentParser *parser)

Function to parse the arguments given in an arbitrary parser.

• AREXPORT void logOptions (void) const

Log the options the simple connector has.

• AREXPORT void setMaxNumUrgs (int maxNumUrgs=1)

Sets the number of possible urgs.

3.4.2 ArUrg Class Reference Interface to a Hokuyu Urg 04LX laser range device.

#include <ArUrg.h>

Page 40: Integración de un Sensor Láser a la Plataforma Robótica

32

Public Member Functions

• AREXPORT ArUrg (size_t currentBufferSize=1000, size_t cumulativeBufferSize=0, const char

*name="urg", bool addAriaExitCB=true)

Constructor.

• AREXPORT ~ArUrg ()

Destructor.

• AREXPORT void setDeviceConnection (ArDeviceConnection *conn)

Sets the device connection.

• AREXPORT ArDeviceConnection * getDeviceConnection (void)

Gets the device connection.

• AREXPORT bool blockingConnect (void)

Connects to the sensor.

• AREXPORT void log (void)

Logs the information about the sensor.

• AREXPORT void setSensorPosition (double x, double y, double th)

Sets the position of the laser on the robot.

• AREXPORT void setSensorPosition (ArPose pose)

Sets the position of the laser on the robot.

• AREXPORT bool setParams (double startingDegrees=-135, double endingDegrees=135, double

incrementDegrees=1, bool flipped=false)

Sets the parameters that control what data you get from the urg.

• AREXPORT bool setParamsBySteps (int startingStep=0, int endingStep=768, int clusterCount=3, bool

flipped=false)

Sets the parameters that control what data you get from the urg.

• virtual AREXPORT void * runThread (void *arg)

The functor you need to implement that will be the one executed by the thread.

Protected Member Functions

• virtual AREXPORT void setRobot (ArRobot *robot)

Page 41: Integración de un Sensor Láser a la Plataforma Robótica

33

3.5 Aplicación Demo para pruebas

La idea de la aplicación demo es probar el funcionamiento del desarrollo de forma integral. Se quiere demostrar el potencial que tiene el láser, manteniendo un esquema relativamente sencillo y fácil de duplicar. Escogimos la generación de un mapa estático, que es una tarea comúnmente necesitada en robótica. En realidad nuestra aplicación se limitará a capturar y dibujar la nube de puntos de los datos arrojados por el láser. Algoritmos avanzados de identificación de líneas y detección de regiones pueden ser usados sobre esta nube de puntos. La aplicación de demostración cubre las siguientes funcionalidades:

• Adquisición de una nube de puntos del sensor láser • Visualizar las adquisiciones en tiempo real • Guardar en un archivo la nube de puntos • Visualizar una nube de puntos previamente almacenada en un

archivo • Guardar la nube de puntos como una imagen • Teleoperar el robot durante la adquisición • Modo autoexploración con tiempo de exploración

parametrizado • Estadísticas (puntos recogidos, tiempo de recolección…)

La idea es que esta aplicación demo se pueda usar de forma distribuida, lo que es de gran utilidad en el caso del computador abordo. La Figura 3.12 muestra un esquema de la aplicación demo. Dependiendo de si hay o no computador a bordo hay ligeras modificaciones en el despliegue pero esto es transparente a la aplicación gracias a su arquitectura. En el caso en el que haya computador a bordo el módulo ServerDemoURG estará corriendo en el computador del robot. El canal entre el láser URG y este módulo será un cable serial interno que comunica al computador abordo con el láser. Los módulos ClientDemoURG y GeneradorMapas usualmente correrán en un segundo computador que se conecta a ServerDemoURG a través de la tarjeta de red inalámbrica del computador abordo. Para el caso en el cual no hay computador abordo ServerDemoURG debe correr en un computador con acceso a la red del robot y conectarse al mismo usando el programa ComPortRedirector o el socket apropiado (ver manual de inicio [16]). El ClientDemoURG y GeneradorMapas podrían correr en el mismo computador que el ServerDemoURG, pero se recomienda el uso de un tercer computador para distribuir la carga del procesador. Para mayor detalle en como usar esta aplicación se recomienda ver el Manual de referencia del láser Hokuyo URG en la plataforma P3DX [16].

Page 42: Integración de un Sensor Láser a la Plataforma Robótica

34

Figura 3.12 Esquema de la aplicación Demo

Page 43: Integración de un Sensor Láser a la Plataforma Robótica

35

Capítulo 4. Pruebas y Resultados Parte importante de este trabajo es verificar de forma práctica el

funcionamiento del trabajo realizado. Para esto debemos contar con un conjunto de pruebas en ambientes controlados, que puedan ser reproducidas sistemáticamente. A continuación describiremos cada una de las pruebas realizadas y sus respectivos resultados.

4.1 Pruebas de conexión para el WiBox

Antes de acceder a cualquier función de los robots se debe verificar que las conexiones de alimentación y datos del WiBox funcionen correctamente. Para verificar esto se hicieron las siguientes pruebas:

Antes que nada nos aseguramos de que el cable de alimentación proveniente de la tarjeta de potencia del robot se encontrara debidamente conectado al WiBox. Con el robot encendido y la salida de potencia auxiliar activa el led Power del WiBox se encendió indicando una alimentación exitosa. La siguiente prueba consistió en acceder al setup del WiBox por medio del puerto serial como se explicó en la sección 3.2. La Figura 3.4 muestra los resultados de esta prueba. Tras acceder exitosamente al menú de configuración a través del puerto serial, se procedió a configurar el WiBox para una conexión por medio de la red inalámbrica de la universidad pero fue imposible conectarse de este modo, se descubrió que era debido a que la red debe tener configurada una IP estática para el WiBox. Por tanto se intento por medio de la conexión Ethernet y usando un browser se pudo accesar de manera correcta al setup de configuración del WiBox. La siguiente prueba que hicimos fue llevar nuestro propio router para evitar los problemas que habíamos tenido con la red de la universidad. Aun así la conexión inalámbrica no quiso funcionar, por los bombillos de conexión aparentemente parecería que lo estuviese haciendo pero no nos dejaba entrar a la página de configuración via web, pensamos que podía ser causa de la restricción en los equipos. Se hizo la prueba entonces en un portátil Toshiba sin ningún tipo de restricción pero de igual forma no funciono. La última prueba que podíamos hacer, era probar el WiBox en una conexión diferente a la de la universidad, y así se hizo. La conexión resulto existosa, lo cual nos confirmo nuestras sospechas de algún problema debido a restricciones en los equipos de la universidad. Posteriormente se encontró la causa específica, existía un filtro de MACs, razón por la cual ni los computadores ni el WiBox podían conectarse a la red. Se procedió entonces a pedir la inclusión de las MACs de los equipos a la red “robots” de la universidad. Una vez hecho esto, el WiBox funciono de la misma manera que lo hizo en el anterior ambiente. Cabe resaltar que durante el proceso de hacer funcionar el

Page 44: Integración de un Sensor Láser a la Plataforma Robótica

36

WiBox correctamente, aparte de los contratiempos anteriormente mencionados, hubo muchos retrocesos debido a causas varias, y la configuración no resulto tan inmediata como se mostraba en el manual del fabricante.

Para verificar el correcto funcionamiento un primer paso es observar los leds indicadores del WiBox. El led Wireless debe parpadear mientras busca la red y se apaga en una conexión exitosa. Los led serial 1 y 2 aparecen prendidos constantemente y parpadean al recibir o enviar datos. El led Ethernet debe permanecer apagado. Seguidamente la prueba que realizamos fue conectar un PC al puerto serial 1 del WiBox y conectarnos con hipeterminal a éste, mientras que en otro PC enviábamos datos al WiBox usando telnet, o hiperterminal junto con el COMPort Redirector.

4.2 Pruebas básicas para el URG-Láser

La primera prueba que se hizo con el láser fue verificar que el sensor funcionara independientemente del robot. Para esto se utilizo una fuente de laboratorio que nos brindara los 5VDC y los 500mA. Es sumamente importante en esta prueba verificar con un multímetro que en efecto la fuente este botando los 5v, ya que la tolerancia del sensor nominalmente es de solo 5%. Para los datos se utilizo un cable serial cruzado con terminales DB9 hembra-hembra. Este cable se usa comúnmente para comunicación con periféricos o entre PCs por lo que no debería ser difícil de conseguir. Este cable se conecta a algún puerto COM del computador.

Tras hacer las conexiones apropiadas a la fuente y al computador se puede utilizar la aplicación vmon.exe en la carpeta DisplayAppForWin32 que viene con el software del láser. Los resultados se aprecian en Figura 4.1.

Page 45: Integración de un Sensor Láser a la Plataforma Robótica

37

Figura 4.1 Aplicación vmon con información real del láser.

Otra prueba que resulta interesante es comunicarse con el láser usando directamente los comandos del protocolo SCIP. El comando más sencillo a utilizar es el que devuelve la información del fabricante. Esto es especialmente útil para saber el firmware que tiene el dispositivo y los protocolos que soporta. Para esto basta con establecer una comunicación serial con el dispositivo a través de un programa como HyperTerminal de Windows. Los parámetros de configuración de la conexión son los siguientes:

• Baud Rate : 19.2Kbps, 57.6Kbps, 115.2Kbps, 250Kbps, 500Kbps, 750Kbps

• Parity : None • Data Bit : 8 • Stop Bit : 1 • Flow Control : None

Una vez creada la conexión se debe escribir la letra V seguida de un ENTER. En respuesta se debe obtener la información del fabricante como lo muestra la Figura 4.2.

Page 46: Integración de un Sensor Láser a la Plataforma Robótica

38

Figura 4.2 Comando V a través de HyperTerminal.

De la misma manera se puede probar con diferentes comandos soportados por el protocolo SCIP [16].

4.3 Precisión del láser URG

El fabricante del láser URG ofrece unas características dentro de su hoja de especificaciones. Sin embargo es fundamental para el resto del desarrollo comprobar la veracidad de estas características nominales dentro de la arquitectura planteada. Como lo que más nos interesa es la respuesta del láser integrado a la plataforma ARIA, haremos las pruebas con una aplicación que utiliza la clase ArUrg y ArSimpleConnectorUrg para la comunicación con el láser. Sin embargo necesitamos un ambiente controlado que nos permita aislar la información del láser del resto de variables. Para esto fijamos la posición relativa del láser con respecto al robot en (0,0) y dejamos el robot quieto en el origen para todas las mediciones de esta sección. Cuando hablamos de que el robot esta quieto en el origen nos referimos a que la posición XY manejada por ARIA es (0,0) a pesar de que el robot se mueva físicamente. Para esto reiniciamos el robot después de cada desplazamiento. Con lo anterior aseguramos que las distancias devueltas por la clase ArUrg son las distancias medidas desde el centro del sensor láser al objeto de interés sin ningún desplazamiento.

Page 47: Integración de un Sensor Láser a la Plataforma Robótica

39

Este conjunto de pruebas se realizó frente a una pared blanca, con un nivel de luz bajo. Nos aseguramos de que el centro del láser estuviera a una distancia d de la pared y que no hubiesen objetos más cercanos al láser. Una aplicación propia que utiliza la extensión ArUrg nos permite saber cual es el punto más cercano. Este valor se puede comparar con la distancia ya conocida a la pared. Un esquema de este experimento se aprecia en la Figura 4.3.

Figura 4.3 Experimento de precisión del láser. La distancia d fue medida con un

metro y se compara con la lectura arrojada por el láser. Se verificó que el área azul estuviera libre de obstáculos.

Se tomaron datos para diversas distancias a la pared. A pesar de que tanto el robot como el láser se encontraban estáticos en cada barrido el punto más cercano encontrado variaba significativamente. Debido a esto fue necesario muestrear varios barridos a una misma distancia y hacer un análisis estadístico sobre estos datos. En general se analizo un espacio de muestra de 120 barridos por cada distancia. La cantidad de datos en cada barrido también es variable debido a que varios datos son descartados por estar muy cerca entre si. La Tabla 4.1 Resumen de datos obtenidos al realizar el experimento descrito en la Figura 4.3 nos muestra un resumen de los resultados obtenidos.

Tabla 4.1 Resumen de datos obtenidos al realizar el experimento descrito en la Figura 4.3

Distancia

Real(mm)

Distancia Media

Observada(mm) Desv. Estandar

Promedio lect.

x barrido

error

abs

(mm) error %

datos

fuera

100 104.89 2.0376 42.88 4.888 4.89% 0.00%

200 208.15 1.3604 48.94 8.150 4.08% 9.95%

300 306.48 1.4753 54.36 6.475 2.16% 0.00%

400 404.81 1.4504 59.48 4.813 1.20% 0.00%

Page 48: Integración de un Sensor Láser a la Plataforma Robótica

40

500 506.63 1.4788 56.66 6.625 1.33% 3.75%

1000 1007.85 2.2690 66.73 7.854 0.79% 3.91%

2000 1999.91 4.1982 54.38 0.088 0.00% 0.00%

3000 3011.68 1.3759 55.81 11.675 0.39% 0.00%

Estos datos nos muestran que hay una variación apreciable de las mediciones en cada barrido. La primera columna indica la distancia real al sensor obtenida usando un metro. La segunda indica la distancia media observada por el láser dentro de una muestra de 120 barridos. La desviación estándar nos da una idea de que tanto fluctuaban los datos de un barrido a otro. Los errores fueron calculados sobre la media encontrada. La última columna establece cuantos datos estuvieron por fuera del rango de error especificado por el fabricante. A pesar de la fluctuación de estos los datos casi siempre se mantienen en el rango establecido por el fabricante. Menos del 10% de las mediciones estuvieron por fuera del rango nominal en todos los barridos. La Figura 4.4 muestra una gráfica comparativa entre lo que observamos y lo que predice el fabricante. Las cotas negras en cada punto son la desviación estándar del error, de forma que asumiendo una distribución normal el 68% de los desfases encontrados estará en ese rango. Algunos datos se encuentran cercanos al límite nominal, pese a esto, la gran mayoría de los datos cumple con las especificaciones del fabricante, por lo que podemos basarnos en ellas para desarrollos posteriores.

Page 49: Integración de un Sensor Láser a la Plataforma Robótica

41

Figura 4.4 Error absoluto observado en las mediciones. El área roja es el rango

de error que especifica el fabricante. Los puntos azules representan el error promedio encontrado a cada distancia y las cotas negras muestran la dispersión de cada dato.

4.4 Variabilidad medidas láser respecto a materiales

Un factor que también resulta importante a la hora de caracterizar el láser es con respecto al comportamiento del mismo con obstáculos de diferente material. En las especificaciones del fabricante no aparece nada acerca de este tema, pero haciendo una investigación más profunda encontramos un artículo del inventor del láser [13] y en el si hay una parte que habla de los materiales en la cual dice que las distancias varían dependiendo de éstos. Se reportaron pruebas sobre diferentes materiales cuyos resultados se resumen en la Tabla 4.2 pudiendose apreciar para algunos de los materiales detecciones mas allá del rango del sensor (4m) definido por el fabricante. Nosotros decidimos entonces hacer una prueba para verificar no el máximo, sino teniendo una distancia fija de 600mm y en las mismas condiciones que se describe para la precisión de láser, verificar que tan precisa es la medida del láser variando el material del obstáculo. El esquema del experimento se puede apreciar en la Figura 4.5.

Page 50: Integración de un Sensor Láser a la Plataforma Robótica

Tabla 4.2 Medida máxima dependiendo de material [

Figura 4.5 Esquema de experimento con diversos materiales

En la Figura 4.6 podemos ver la imagen de los diferentes materiales y a continuación en la tabla en las distancias medidas para cada uno de ellos.

42

ida máxima dependiendo de material [13]

Esquema de experimento con diversos materiales

podemos ver la imagen de los diferentes materiales y a continuación en la tabla 4.3 podemos ver los resultados obtenidos en las distancias medidas para cada uno de ellos.

600mm

podemos ver la imagen de los diferentes materiales .3 podemos ver los resultados obtenidos

Page 51: Integración de un Sensor Láser a la Plataforma Robótica

43

Figura 4.6 Diferentes materiales usados para comprobar el comportamiento del láser.

Material Distancia Media

Observada Desv Estandar Promedio de

lecturas x barrido

error

abs

(mm) error %

1. Pared Blanca 606.44 1.4377 58.98 6.440 1.07%

2. Pared Verde 562.08 1.8129 72.59 37.920 6.32%

3. Madera Negra 566.04 2.1505 27.19 33.960 5.66%

4.Metal Gris 573.38 1.7740 68.74 26.620 4.44%

5.Carton 603.06 1.8247 62.83 3.060 0.51%

6. Espejo 557.03 3.6720 37.03 42.970 7.16%

7. Pantalla

Translucida 553.91 1.6024 32.52 46.090 7.68%

8. Espuma 617.21 2.0758 45.16 17.210 2.87%

Tabla 4.3 Resultados de medidas del láser en diferentes materiales

Mirando los resultados podemos observar que el error más grande lo posee la pantalla traslucida y la menor es la del cartón. Podemos observar dos factores importantes que están modificando la precisión como son el color del objeto y sus propiedades de reflexión. Esto se deriva del hecho que los materiales que presentan mayor error son en primera instancia la pantalla traslucida, seguida por el espejo. Materiales que presentan condiciones especiales en cuanto a la reflexión, mientras el primero casi no refleja el segundo lo hace completamente. El funcionamiento del láser como se describió previamente depende del principio de reflexión, de tal manera que se envía un haz y se espera otro de vuelta. Al tener condiciones como las anteriores resultan subóptimas para la medición y por tanto tiene sentido que introduzcan bastante error en la medida. De igual manera podemos ver que el color

1 2 3 4

5 6 7 8

Page 52: Integración de un Sensor Láser a la Plataforma Robótica

44

influye ya que al ser más oscuro absorbe mayor luz y por tanto el haz reflejado va ser más tenue y por tanto la medida no tan exacta, así son mejores las medidas con obstáculos de color claro como la pared blanca y la espuma. Confirmando así los resultados de la tabla 4.3. Para tener una idea mejor de lo analizado se presentaron los datos de manera visual ordenados desde el menor error absoluto al mayor.

Figura 4.7 Error absoluto en la medición con láser en diferentes materiales. La

barra negra es la dispersión de los datos.

4.5 Variabilidad respecto a iluminación ambiente

Otra variable que es importante medir es que tanto cambian las mediciones bajo diferentes condiciones de iluminación en el ambiente. Al no contar con un luxómetro capaz de medir de manera precisa los niveles de luz procedimos con un método más precario que consistió en hacer mediciones desde oscuridad total hasta total iluminación, aumentando un reflector a la vez del laboratorio para un total de 7. Se hizo la medida de un obstáculo a una distancia fija de 600mm al igual que en la prueba de los materiales, pero esta vez también se mantuvo fijo el material, una pared blanca. Los resultados obtenidos se resumen la Tabla 4.4.

Descripción

Distancia Media

Observada(mm)

Desv.

Estandar

Promedio

lect. x

barrido

error

abs

(mm) error %

Nivel1 Luces 2do piso 608.07 1.65 57.73 8.070 1.35%

Nivel2 Norte1 608.10 1.67 58.41 8.100 1.35%

Nivel3 Norte2 608.30 1.51 58.04 8.300 1.38%

Nivel4 Oriente 607.01 1.64 57.67 7.010 1.17%

Nivel5 Occidente 607.83 1.74 58.01 7.830 1.31%

0,000

10,000

20,000

30,000

40,000

50,000

60,000

Err

or

Ab

solu

to(m

m)

Materiales

Page 53: Integración de un Sensor Láser a la Plataforma Robótica

45

Nivel6 doble altura1 607.97 1.56 58.06 7.970 1.33%

Nivel7 doble altura2 608.11 2.09 57.83 8.110 1.35%

Nivel8 Reflectores 607.88 1.67 57.80 7.880 1.31%

Tabla 4.4 Resultados de medidas de láser con diferentes intensidades de luz

Podemos ver de los resultados que a primera vista no existe una diferencia significativa entre los niveles de luz y la precisión del láser. El error se mantiene casi constante alrededor del 1.35%.

4.6 Odometría del robot P3DX

Es importante hacer una prueba de la odometría del P3DX ya que está ligada directamente a la precisión en la medida del láser. Debido a que no es el enfoque de este proyecto, no se realizaron muchas pruebas con la odometría, pero si se realizo un experimento en el cual arrancaba el robot de una posición definida y se teleoperaba hasta otra también definida. Sabiendo ambas posiciones y orientaciones se comparaban los datos obtenidos de los enconders con los medidos con metro. En la Tabla 4.5 están los resultados.

Tabla 4.5 Resultados de errores en odometría

Como se ve los errores son considerables. Adicionalmente se noto que durante la prueba hubo mayores errores cuando se hicieron giros y frenados abruptos. Tiene sentido ya que hay deslizamiento del robot sobre la superficie sin que giren las ruedas y esto puede causar los datos problemáticos. Dados los resultados se considera que es muy importante tener en cuenta este factor a la hora de usar el láser, y seria pertinente un conjunto de pruebas más detallado al respecto.

4.7 Generación de nubes de puntos

Como se especificó en la sección 3.5 la aplicación demo cuenta con la generación de un archivo que reúne los datos encontrados por el láser. Este archivo se graba en disco como archivo separado por comas (.npu). Esto permite una semántica simple donde cada dato de interés estará separado por una coma o por un salto de línea. Primero tenemos un encabezado y luego los datos obtenidos por el láser. El encabezado tiene la siguiente estructura:

Titulo ¶

Robot Type:, Pioneer ¶

Robot SubType:, p3dx-sh ¶

Posicion Real x Posicion Real y Posicion Real theta Posicion Observada x Posicion Observada y Posicion Observada theta Error Abs

0 0 0 0 0 0 0 0 0

0 0 -5.6550 -1 -1 0 1 1 5.6550

2,022 0 0 2000 0 0 22 0 0

2100 -2100 -93 2187 -1963 -90 87 137 3

0 60 0 -233 -233 14 233 293 14

.

Page 54: Integración de un Sensor Láser a la Plataforma Robótica

46

Date:, Fri May 30 18:44:08 2008 ¶

Sensor name, urg ¶

RobotX, RobotY, Number of readings, Time ¶

Readings,x1,y1,x2,y2,…,…,xN,yN¶

Donde los datos en negrilla son variables que dependen del ambiente de medición. Las comas y el salto de línea (representado con el símbolo ¶ en este documento) son separadores del archivo, que por ejemplo no son visibles al abrir uno de estos archivos en Excel.

Los datos están distribuidos como lo indica la última parte del encabezado. Es importante destacar el salto de línea después de la estampa de tiempo y que los datos se encuentran en parejas x,y separadas por una coma y en la misma fila uno tras el otro (x1,y1,x2,y2,…,xN,yN,).

Los archivos generados bajo este formato pueden ser leídos en cualquier editor de texto, y también son interpretados por MS Excel. Para poder visualizarlos gráficamente se puede usar el visualizador que se describe en la siguiente sección.

4.7.1 Visualización de nubes de puntos

Una imagen vale más que mil palabras, y las nubes de puntos no son la excepción. La forma más agradable y conveniente de analizar la información otorgada por el láser es gráficamente. Con este propósito, y el ánimo de poder comparar los resultados con simulaciones, y otros sensores establecimos una serie de escenarios duplicables en el laboratorio de Sistemas Autónomos. Para esto usamos el espacio en las instalaciones del laboratorio para armar corrales de cartón en los cuales el robot se pudiese desplazar con la confianza de que todas las paredes y obstáculos serian visibles por sus sensores y que en caso de colisión inesperada ni la pared ni el robot sufrieran daños graves. En cada escenario las pruebas se hicieron para el robot quieto en el origen y luego para el robot moviéndose en modo exploración (wander).

4.7.2 Escenario 1

El escenario 1 es el más sencillo de todos. Consta únicamente de corral rectangular y pequeño libre de obstáculos y esquinas convexas. La Figura 4.8 muestra el escenario 1 con sus respectivas medidas y la posición inicial del robot respecto al origen indicado.

Page 55: Integración de un Sensor Láser a la Plataforma Robótica

47

Figura 4.8 Escenario de pruebas 1.

Figura 4.9 Escenario 1 estático generado por láser

Page 56: Integración de un Sensor Láser a la Plataforma Robótica

48

Figura 4.10 Escenario 1 dinámico generado por láser

Las Figura 4.9 y la Figura 4.10 nos muestran los datos obtenidos por el láser en estado estático y dinámico. Una de las ventajas de separar estas mediciones es que sabremos que en el primer caso no habrá errores inducidos por la odometría del láser. En efecto al observar la figura Figura 4.9 nos damos cuenta de que los puntos de ruido caen dentro del rango de precisión del láser dando el efecto borroso o multicapa a las paredes detectadas. Sin embargo no aparecen puntos muy alejados de los objetos reales. En cambio en el segundo caso los errores son más notorios y la figura rectangular parece repetirse con ligeras rotaciones. Esto se debe a que las mediciones se basan en la posición del láser heredando los errores de odometría vistos en la sección 4.6. A pesar de esto es claro que el rectángulo se detecta correctamente y para una primera aproximación esta nube de puntos da buena idea del espacio explorado.

4.7.3 Escenario 2

Este escenario extiende al escenario 1 haciendo una forma de L. Este escenario ya contiene 1 esquina convexa y un material diferente al cartón: el metal gris de la puerta.

Page 57: Integración de un Sensor Láser a la Plataforma Robótica

49

Figura 4.11 Escenario de pruebas 2.

Figura 4.12 Escenario 2 estático generado por láser

Page 58: Integración de un Sensor Láser a la Plataforma Robótica

50

Figura 4.13 Escenario 2 dinámico generado por láser

Al igual que en el primer caso la primera figura es más limpia que la segunda. Sin embargo el ruido de ambiente pareció afectar menos en esta ocasión únicamente desfasándose en orientación, lo que hace que la L aparezca reteñida en varias direcciones.

4.7.4 Escenario 3

Este escenario es idéntico al escenario 2 con la diferencia de que se introdujeron varios obstáculos (cajas) de tamaño conocido.

Page 59: Integración de un Sensor Láser a la Plataforma Robótica

51

Figura 4.14 Escenario de pruebas 3.

Figura 4.15 Escenario 3 estático Generado por láser

Page 60: Integración de un Sensor Láser a la Plataforma Robótica

52

Figura 4.16 Escenario 3 dinámico generado por láser

Este escenario por ser el más complejo exigió un tiempo mayor de exploración. Al tener más datos la nube de puntos es más factible que aparezcan puntos ruidosos. Sin embargo estos se concentran extrañamente en algunas áreas, por lo que creemos que esta vez el ruido fue inducido por el experimento. Una posibilidad es que los bordes de las cajas estuviesen inclinados de forma que hubiese un rayo reflejado que creara el efecto de la pared virtual detrás de las reales. También en la pared de abajo se ve una línea claramente definida debajo de la principal, quizás falto elevar un poco la caja de protección y el láser estaba detectando la pared real.

4.8 Comunicaciones y tiempos de refresco

Antes de cerrar la sección de resultados nos pareció importante hacer un breve análisis del canal de comunicación con el láser y los tiempos de refresco de la información. La Figura 4.17 muestra un esquema de las conexiones de alimentación y datos del proyecto. En el caso más general en el que no se tiene computador a bordo es difícil establecer la tasa real de refresco del láser. El fabricante establece que el URG tiene un refresco de 100ms. Es decir el láser hace un barrido completo de hasta 1024 datos cada 100ms. Cada dato es codificado en 2 bytes, mas algunos bytes en cada barrido definidos por el SCIP. Esto nos da aprox 3000 bytes por barrido completo. Esto significa que el láser arroja 240000 bits/seg de información. Sin embargo en el canal es evidente que hay varios cuellos de botella que impiden que esta comunicación se lleve a tal velocidad. Para empezar están los 19200bauds de la comunicación serial que por tratarse de una comunicación binaria equivalen a 19200bits/seg, muy por debajo de lo

Page 61: Integración de un Sensor Láser a la Plataforma Robótica

53

que exige el láser. Adicionalmente hay posibles demoras y/o pérdida de paquetes en la comunicación inalámbrica con el WiBox y el procesador del computador que recibe los datos. Por este motivo un dato mucho más diciente es el que nos arrojan las mediciones de cuantos datos estamos recibiendo por segundo. Para esto basta con tomar los datos que ya arroja nuestro programa y ver en promedio cuantos barridos están llegando en cada segundo. El láser permite especificar dentro de su protocolo SCIP si se quiere agrupar datos para mayor eficiencia. Esto significa que de un conjunto de varias lecturas o pasos de 0.36º se pueden resumir tomando la lectura más cercana dentro de un intervalo angular. El programa que estamos utilizando esta configurado para pedir al láser que agrupe de a tres pasos, es decir una resolución angular de aproximadamente 1 grado. Cada dato es una pareja (ángulo, distancia) o punto (X,Y) y a lo sumo se tendrán 240 datos recibidos en cada barrido (una medición por cada grado). Bajo estas condiciones y el servidor corriendo en un computador externo al robot tenemos un promedio de 9 barridos por segundo. Donde a su vez el número de datos útiles en cada barrido depende de la cercanía de los objetos, y de los parámetros de filtrado de datos establecidos a nivel de software. Sin embargo esto ya nos da una idea de que a lo más tendremos 2160 datos por segundo llegando a nuestra aplicación. Además se puede hacer una idea de los requerimientos de memoria sabiendo que una vez procesados como 2 números enteros cada medición requiere al menos 8 bytes, esto es 17280 bytes/seg. Razón por la cual debemos tener especial cuidado de filtrar los datos que almacenamos o corremos el riesgo de generar archivos demasiado grandes o desbordar la memoria principal.

Page 62: Integración de un Sensor Láser a la Plataforma Robótica

54

Figura 4.17 Esquema de comunicaciones y alimentación del proyecto

Page 63: Integración de un Sensor Láser a la Plataforma Robótica

55

Capítulo 5. Conclusiones y Trabajo Futuro

Al comienzo del semestre se planteo con nuestro asesor una visión global del desarrollo colectivo que se quiere dentro del laboratorio de Sistemas Autónomos en la Universidad. Para llegar a hacer aplicaciones de alto nivel robustas y confiables se requiere una estructura de desarrollo modular donde cada parte del grupo de investigación sea capaz de ubicar su trabajo dentro de una gran arquitectura modular en la cual no se requiera empezar cada proyecto desde cero sino que se pueda partir de módulos de más bajo nivel que sean reutilizables, facilitando el trabajo. Dentro de esta estructura de generación de conocimiento es fundamental contar con desarrollos robustos y confiables en los módulos de bajo nivel que sirvan de pilares a otras aplicaciones futuras. Nuestro trabajo forma uno de esos pilares en la construcción de futuras aplicaciones. Nuestra principal contribución fue la configuración y puesta en marcha del sensor láser Hokuyo URG sobre los robots P3DX. Por ser estos robots relativamente nuevos en el laboratorio aún no han desarrollado gran parte de su potencial. Un primer acercamiento lo hizo Morales [18] al poner en marcha el P3DX con computador abordo y realizar exitosamente una aplicación usando la cámara integrada. Nosotros configuramos las comunicaciones para los 3 robots restantes y lo que es más importante adaptamos un sensor láser Hokuyo URG a los robots P3DX.

Este sensor láser resulto ser bastante superior a los sensores ultrasonido que posee el robot. Mientras que el cinturón de sensores ultrasonido provee a lo más 8 mediciones con una resolución angular aproximada de 20º el láser puede entregar hasta 1024 mediciones con resolución de 0.36º. También los resultados muestran una mejor precisión y veracidad en cada dato respecto a lo visto con los ultrasonido. Por último su rango de barrido de 240º define un campo de observación más amplio con respecto al rango de 180º del cinturón de ultrasonidos.

Por supuesto, para que esto funcione es necesario contar con una buena documentación del trabajo realizado. Adicionalmente a este documento hemos elaborado un compacto manual de usuario que busca ayudar a futuros usuarios a elaborar aplicaciones que usen el láser en el menor tiempo posible [16]. También hemos entregado a la universidad un CD con una versión de ARIA para usar con el láser URG que cuenta con una documentación de las nuevas clases. También entregamos en ese mismo CD la aplicación DEMO que utilizamos para las pruebas, que puede servir como ejemplo para otras aplicaciones.

Page 64: Integración de un Sensor Láser a la Plataforma Robótica

56

A nivel de la plataforma física las conexiones necesarias del WiBox y del láser URG quedaron debidamente hechas y en el manual se especifica como volver a conectar en caso de desconexión. Adicionalmente se elaboro una plataforma de madera para fijar sobre el robot tanto el láser como el WiBox de forma confiable. Reuniendo los componentes anteriores, un nuevo usuario de los robots P3DX y del sensor láser debería encontrar mucho más sencillo el proceso de desarrollo usando el láser URG.

El trabajo futuro sobre este trabajo es bastante amplio, las aplicaciones que utilizan el láser no solo cubren la generación de mapas sino procesos generales de navegación y localización, reconocimiento de objetos y patrones, seguimiento y muchas otras más. A partir de los resultados obtenidos ya hay identificados algunos trabajos futuros. En principio se espera trabajar en el filtrado de falsas detecciones (por el ruido de ambiente) y correcciones (por problemas de odometría) para tener datos más confiables. También existe la posibilidad de mejorar el visualizador de puntos de forma que permita una interaccion más amplia con los datos encontrados permitiendo rotar el mapa, editarlo por medio de filtros automáticos o eliminación manual de puntos de error, aproximar a líneas y polígonos y tener una interacción más agradable para el usuario. Adicionalmente trabajar en la generación de mapas a partir del uso de algoritmos de reconstrucción de rectas resultado del reconocimiento de patrones lineales de puntos. A partir de los trabajos anteriores se espera trabajar en el desarrollo de un algoritmo de SLAM. Otro trabajo de interés consiste en montar el láser URG a una plataforma que permita controlar su orientación, por lo tanto la del plano de detección, para ampliar el campo de observación Aun existe un gran potencial por explotar sobre esta misma línea de investigación. Esperamos que este trabajo sea una contribución para futuros desarrolladores dentro y fuera de la universidad.

Page 65: Integración de un Sensor Láser a la Plataforma Robótica

57

Bibliografía [1] MobileRobots Inc (ActivMedia Robotics)., Intelligent Robots for

Commercial & Research Applications. Mobile Robots. [Online] [Citado: Febrero 15, 2008.] http://www.mobilerobots.com/.

[2] Hokuyo Automatic co., Scanning range finder (SOKUIKI sensor). Hokuyo. [Online] Hokuyo Automatic co., 2007. [Citado: Febrero 12, 2008.] http://www.hokuyo-aut.jp/02sensor/07scanner/urg.html.

[3] MobileRobots Inc. "Aria Reference Manual." Septiembre 2002.

[4] Latombe, Jean-Claude., Robot motion planning. Boston : Kluwer Academic Publishers, 1991.

[5] De los Santos de la Rosa, Erik A. “Heurística para la generación de configuraciones en pasajes estrechos aplicada al problema de los clavos” Tesis de Maestria, Departamento de Ingeniería en Sistemas Computacionales, Universidad de las Américas Puebla, 2004.

[6] Hwang, Yong K. and Ahuja, Narendra., "Gross motion planning—a survey." ACM Computing Surveys (CSUR), 1992, Issue 3, Vol. 24, pp. 219 - 291.

[7] De la Rosa, Fernando, Laugier, Christian and Nájera, José., "Robust path planning in the plane." IEEE Transactions on Robotics and Automation, Abril 1996, Vol. 12, pp. 347-352.

[8] Russell, Stuart and Norvig, Peter., Artificial Intelligence a Modern Approach. Upper Saddle River, New Jersey : Pearson Education Inc, 2003.

[9] Murphy, Robin R., Introduction to AI Robotics. Cambridge, Massachusetts : The MIT Press, 2000.

[10] MobileRobots Inc., "Pioneer 3 Operations Manual." Version 4. Enero 2007.

[11] McGraw-Hill Encyclopedia of Science and Technology., "Range finder." Answers.com. [Online] [Citado: Marzo 12, 2008.] http://www.answers.com/topic/range-finder.

[12] Everett, H. R., Sensors for Mobile Robots: Theory and Application. Natick, MA : A K Peters, 1995.

[13] Kawata, Hirohiko, et al., "Development of ultra-small lightweight optical range sensor system." s.l. : IEEE/RSJ, 2005. Intelligent Robots and Systems. (IROS). pp. 1078 - 1083.

[14] Lafary, Matthew., URG Patch. [C++ code] s.l. : MobileRobots Inc, 2008.

Page 66: Integración de un Sensor Láser a la Plataforma Robótica

58

[15] Lantronix., "WiBox 2100E User Guide." [PDF]. Junio 2006.

[16] Vides, Francisco y Sosa-dias, Jorge., Manual referencia rápida para el uso del láser Hokuyo URG en la plataforma P3DX. Bogotá DC : Uniandes, 2008.

[17] Hokuyo Automatic co., "Communication Protocol Specification- URG Series (SCIP 1.1)." [PDF]. Febrero 2004.

[18] Morales Pinzón, Alfredo and De la Rosa, Fernando., Detección y seguimiento de visitante con robot móvil. Bogotá: Uniandes, 2008.

Page 67: Integración de un Sensor Láser a la Plataforma Robótica

59