informe final de robótica - ldc noticias - universidad …05-38019/files/informe3.pdf · utilizó...

1

Upload: lydien

Post on 29-Sep-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

S2π-D’oh!: Robot de apoyo portuario para el curso de Introducción a la Robótica de la USB

Alberto Rodríguez#1, Alessandro Chacón#2, Ernesto Level#3, Daniel Palhazi Cuervo#4 #Departamento de Ingeniería en Computación, Universidad Simón Bolívar.

Caracas, Venezuela. [email protected] [email protected] [email protected] [email protected]

Resumen — S2π-D’oh! es un robot de apoyo portuario que fue diseñado para el curso de Introducción a la Robótica de la Universidad Simón Bolívar. Este robot, construido mayormente con piezas de lego y haciendo uso del kit robótico XBC V.3, se encarga de movilizar bloques que se encuentran apilados en varias torres de cuatro bloques cada una desde la zona de carga de un puerto hacia dos barcos y un tren de carga, según el color del bloque, siguiendo las especificaciones de la competencia LARC 2009. El objetivo principal del robot es realizar dicha tarea y obtener la mayor cantidad de puntos posibles en un máximo de 5 minutos. Palabras Claves — robot, robótica, IEEE, LARC, XBC.

I. INTRODUCCIÓN. El proyecto del curso de Introducción a la Robótica de este

año consiste en construir un robot siguiendo las especificaciones de la competencia LARC 2009 [1]. Esta competencia plantea básicamente la elaboración de un robot de apoyo portuario cuya tarea principal es la clasificación y transporte de contenedores en la zona de descarga de un puerto.

Este robot debe ser capaz de buscar en la zona de carga los

bloques a movilizar, obtener el color del mismo para así determinar el destino del bloque y luego proceder a trasladarlo a ese sitio. Los objetivos de este proyecto son:

• Construir el robot utilizando los sensores y actuadores

necesarios para completar la tarea satisfactoriamente. • Programar el recorrido utilizando los sensores y los

distintos elementos identificadores en la cancha (líneas delimitadoras, zonas de carga, etc.) y hacer uso de estos para ubicar los bloques y movilizarlos, y utilizar la cámara para determinar el color de cada uno de los bloques.

• Movilizar satisfactoriamente los bloques desde la zona

de carga hacia su destino, que produzcan al equipo la mayor cantidad de puntos en 5 minutos.

II. ESTRUCTURA DEL ROBOT. El robot está construido con piezas de lego. El controlador,

los sensores y los actuadores pertenecen al kit robótico XBC V.3 que fue provisto a cada equipo [2]. Ver Fig. 1 y 2.

Fig. 1: Vista frontal del robot.

Fig. 2: Vista lateral del robot.

A. Locomoción. La locomoción del robot se logra utilizando dos ruedas,

cada una conectada a un motor independiente. Adicionalmente, se construyeron dos soportes en la parte anterior y posterior del robot con la finalidad de darle mayor estabilidad y maniobrabilidad durante su movimiento. Ver Fig. 3.

Para ser capaz de levantar los bloques y trasladarlos se

utilizó una grúa basándose en el diseño de un levanta-cargas, aunque en vez de levantar los bloques por su cara inferior, se levantan por su cara superior haciendo uso de un imán para sostenerlos. Para ello se utilizó igualmente un motor independiente que, haciendo uso de un hilo de nylon, permitiera subir y bajar la plataforma que sostenía el imán.

Adicionalmente, se utilizó un mecanismo que permitiera

soltar los bloques una vez movilizados hacia el barco o hacia el tren, por lo que se utilizó un servo conectado a un brazo mecánico que permitiese empujar el bloque en sentido contrario al imán y así lograr despegarlos.

B. Sensores. El conjunto de sensores del robot está conformado por tres

sensores de reflectancia (colocados en la parte frontal del robot, uno en el centro, uno a la derecha y uno a la izquierda). Estos sensores se utilizaron principalmente para detectar las líneas de la cancha, utilizando mayormente el del centro para seguir líneas, y utilizando los otros dos para alinearse, aunque con los otros dos también era posible seguir líneas

El robot utilizó también dos telémetros ópticos en sus caras

laterales que permitiesen determinar cuando el robot se encontraba cercano a un bloque y poder así buscarlo, o dejarlo si fuese el caso (a partir del primer bloque dejado en un barco). Además, se utilizaron dos sensores de contacto en la zona frontal para determinar cuando el robot se encontraba exactamente frente a un bloque, y así proceder a bajar la grúa para cargarlo y trasladarlo hacia su destino.

Por último, se utilizó un sensor de contacto en el punto más

alto de la grúa, en la zona interna a ésta, para detectar cuando la grúa hubiese subido el máximo y así detenerla.

Fig. 3: Vista inferior del robot.

C. Cámara. La cámara de video se ubicó a un lado de la grúa para poder

visualizar una parte del bloque al momento de recogerlo y determinar así su color, utilizando como ayuda una linterna pequeña que alumbrase el cubo para tener más precisión al momento de determinar su color.

III. DETALLES DE PROGRAMACIÓN.

A. Paradigma predominante. La inteligencia del robot está fundamentada en el

paradigma híbrido deliberativo reactivo, aunque predomina un enfoque jerárquico. [3]

Las características del problema que se está tratando

permiten asumir un claro precepto de mundo cerrado y se presta para la utilización de un enfoque jerárquico. Sin embargo, existen ciertas tareas, en especial aquellas relacionadas con la detección y seguimiento de las líneas de la cancha, así como la detección y ubicación de bloques, cuya implementación se facilita siguiendo un enfoque reactivo basado en percepción.

B. Estructuras de datos y algoritmos. Para realizar a cabo esta tarea se modelo la cancha de la

competencia como un grafo, donde cada torre de bloques, dos espacios en cada barco, cada espacio disponible en el tren y el botón de la cancha eran nodos. La aristas entre estos nodos era simplemente el camino que se debía tomar para llegar de uno a otro, bien sea siguiendo una línea, alineándose en alguna parte, etc. Ver Fig. 4.

Se utilizó un arreglo de enteros que determinaba para cada

nodo, excepto el botón, cuantos bloques hay en un espacio, donde inicialmente todas las torres de la zona de carga son 4, y la ubicación de las torres en los barcos y en el tren son 0. Así resultó sencillo determinar cuantos bloques había en cada torre y conocer así la cantidad que se debía bajar la grúa para recogerlos o dejarlos.

Para resolver el problema de movilizar los bloques, el robot

se movilizaba del punto de partida (el mismo nodo que el botón) hacía una pila derecha o una pila izquierda indicado previamente en el código, donde cargaba un bloque y según su color se trasladaba a ese lugar y colocaba el bloque, luego se dirigía al nodo más cercano y repetía este procedimiento. En caso que el robot colocara los dos bloques correspondientes al tren se dirigía al botón, lo presionaba y empezaba de nuevo.

C. Dificultades y comentarios sobre el código. El código fue programado lo más siempre posible,

abarcando sin embargo las exigencias del proyecto, se programaron funciones básicas como ir hacia adelante o atrás, bien sea una distancia dada o hasta que se detuviesen los motores por algún motivo, particularmente encontrar una línea negra en el suelo; girar 90 grados hacia cualquier lado sobre sí

mismo o girar 180 grados; bajar y subir grúa; bajar y subir los brazos manejados por el servo.

Estas funciones ayudaron a crear posteriormente funciones

como alinearse con respecto a una línea negra y seguirla con ayuda de uno de los sensores de reflectancia; levantar y soltar bloque, y a su vez utilizar éstas para crear el programa principal que permitiera al robot movilizar los bloques a su destino.

Se requirió el uso de procesos para utilizar la grúa

indistintamente de los motores de las ruedas, y así poder utilizar la grúa al mismo tiempo que el robot se movía sobre la cancha. Esto permitió un ahorro importante de tiempo que permitiera al robot realizar más de una tarea a la vez.

Sobre el código no hubo mayor dificultad que contar los

tics correspondientes a los motores para que girasen lo más cercano a 90 grados y a la misma velocidad, calibrar los sensores de reflectancia para diferenciar colores en la cancha y así utilizarlos como guía para ubicarse en ella. Calibrar también la distancia que la grúa debía bajar para recoger o soltar los distintos bloques según su altura; y calibrar la cámara para que fuese capaz de reconocer el color del bloque que se encontraba en frente, determinando cual era el color predominante en la imagen observada.

Fig. 4: Cancha de la competencia y sus nodos (en naranja).

IV. DESEMPEÑO EN LA COMPETENCIA. El robot no se desempeño como fue planeado en la cancha

de la competencia. De las oportunidades que se corrió fallaron los sensores determinando mal el color o no encontrando una línea, por lo cual el robot perdía el rumbo y colocaba bloques en barcos equivocados o tumbando una pila de bloques de la zona de carga, por lo que la puntuación obtenida fue negativa.

Posteriormente se realizó otra corrida la cual resultó

bastante buena comparada con la de la competencia, para más información, fotos y videos acerca de este robot puede referirse a la página web: http://www.ldc.usb.ve/~05-38019

Se muestra a continuación una tabla con los puntajes de todos los equipos la dos oportunidad que se realizó la corrida:

Robot Corrida #1 Corrida #2 Kir-bot -400 600 S2π-D’oh -900 -400 Cangrebot 100 600 Thor 0 -300 NumberSix -100 0

V. PROBLEMAS Y RECOMENDACIONES.

A. Principales Problemas encontrados. • Las piezas de lego representan un gran problema en

la construcción de robots. Es necesario tomar en cuenta las limitaciones que tienen este tipo de piezas.

• Los desniveles de la cancha constituyeron una gran

dificultad para el esquema de dos ruedas y dos soportes del robot. No obstante, se pudo uniformar la superficie y solventarse fácilmente.

• La detección de la línea de color verde con los

sensores de reflectancia no se pudo realizar debido a que tiende a confundirse con el blanco de la cancha y no se detecta diferencia alguna, por lo que no se utilizó la línea verde para guiarse en la cancha.

• Al alinearse con una línea influye mucho la

velocidad con la que el robot se movía previamente; ya que al frenar, éste tiende a desplazarse un poco hacía adelante y no queda correctamente alineado. Por esta razón, se modificó el código para que retrocediese un poco y se alineara de nuevo a una velocidad más lenta.

• La detección y movilización de bloques fue compleja,

ya que no sólo se debían calibrar las alturas de los bloques para saber la distancia que la grúa debía bajar para recogerlos y soltarlos, sino que se debió utilizar un servo distinto al facilitado ya que éste no tenía la fuerza necesaria para despegar el bloque del imán.

• Se debió buscar un imán lo suficientemente fuerte

para sostener el bloque y poder trasladarlo, pero que no fuese además muy fuerte y poder así despegar el bloque de él, por lo que se colocaron un par de monedas para disipar un poco la fuerza de éste y permitir este balance.

• La cámara no siempre fue capaz de detectar con un

nivel alto de confianza el color del bloque que cargaba, por lo que cometió muchos errores durante las pruebas y la corrida al decir que el bloque era de un color cuando era falso.

• Los sensores de reflectancia representaron un problema, ya que a veces no eran capaces de detectar una línea, lo cual ocasionó problemas igualmente durante la corrida del robot al alinearse y seguir líneas.

B. Recomendaciones. • Simplificar el diseño del robot lo más posible.

Algunas ideas se ven muy prometedoras pero no se pueden realizar debido a las limitaciones de las piezas de lego.

• Es necesario calibrar los sensores para que se adapten

a las condiciones ambientales del lugar donde se vayan a realizar las pruebas, particularmente los sensores de reflectancia y la cámara, ya que estos dependen fuertemente de la cantidad de luz que se tenga en la cancha.

• Es necesario tomar en cuenta la cantidad de sensores con la que se cuenta y tomar las previsiones correspondientes, ya que tiende a ser un problema la falta de sensores para percibir con un nivel alto de confianza la cancha de competencia y evitar al máximo los distintos errores que puedan surgir.

REFERENCIAS [1] 2003-2009 IEEE Lain American Robotics Competition LARC 2009.

http://robotica.elo.utfsm.cl/competencia/. [2] Getting Started with the XBC 3.0 and IC. Kiss Institute for Practical

Robotics. Norman, EE UU. [3] MURPHY, Robin (2000): Introduction to AI Robotics. Cambridge,

Massachusetts: Lóndres, Inglaterra: The MIT Press.