legos1
TRANSCRIPT
Universidad del Quindío, Alfonso Cruz, López Orozco, Fajardo Londoño, Valenzuela Ramos. Introducción a la robótica
móvil.
1
Resumen—En el presente laboratorio se experimenta la
construcción de robots móviles a partir de herramientas como
la de Lego Mindstorms con la finalidad de armar una
plataforma mecánica con locomoción por ruedas, dotada de
dos tipos de sensores (de contacto y de luz) para que ejecute la
detección de obstáculos y el seguimiento de una línea negra
sobre una superficie blanca.
Palabras clave—Lego Mindstorms, robots móviles,
programación en Java, Lejos RCX API.
Abstract—In this laboratory experience building mobile
robots from tools like Lego Mindstorms in order to build a
mechanical platform with locomotion by wheels, equipped
with two types of sensors (light and contact) to execute the
obstacle detection and tracking of a black line on a white
surface.
Key words—Lego Mindstorms, mobile robots, Java
programming, Lejos RCX API.
I. OBJETIVOS
Conocer y experimentar con los diferentes tipos
de sensores provistos por Lego Mindstorms.
Construir la plataforma mecánica para la
realización de las pruebas correspondientes a
cada tipo de sensor.
Realizar la programación del robot móvil a
través de la API Lejos de Java.
II. INTRODUCCIÓN
Lego Mindstorms es un juego de robótica para
niños fabricado por la empresa Lego, el cual posee
elementos básicos de las teorías robóticas, como la
unión de piezas y la programación de acciones, en
forma interactiva. Este robot fue comercializado por
primera vez en septiembre de 1998.
Comercialmente se publicita como Robotic
Invention System, en español Sistema de Invención
Robotizado (RIS). También se vende como
herramienta educacional, lo que originalmente se
pensó en una sociedad entre Lego y el MIT
(Massachusetts Institute of Technology). La versión
educativa se llama Lego Mindstorms for School, en
español Lego Mindstorms para la escuela y viene
con un software de programación basado en la GUI
(graphical user interface) de Robolab (entorno de
programación gráfico que permite controlar el
bloque inteligente de LEGO RCX) [1].
III. LEGO MINDSTORMS RCX
El bloque RCX es la parte central del Lego
Mindstorms, ya que aquí se encuentra toda la parte
lógica y electrónica que permite la mayoría de las
acciones del robot, almacenándose hasta 5
programas que se pueden cargar en su memoria
interna, y guardándose allí el firmware básico para
el control de los distintos dispositivos que se pueden
conectar al bloque.
El bloque RCX tiene tres versiones oficiales: 1.0,
1.5 y 2.0, las cuales presentan mejoras en el
software sin verse afectado mayormente el
hardware que se vende con el bloque, sin embargo,
la parte electrónica de los bloques no es compatible,
ya que las tres versiones poseen distintas
regulaciones de voltaje, pero aun así no afecta el
hardware que posee el bloque.
Su microcontrolador interno es Hitachi H8/3292,
que funciona a 5 volts y una velocidad aproximada
de 16 Mhz, siendo esa su velocidad máxima para la
serie de Hitachi H8/3000. Posee una memoria ROM
de 16 Kb, una memoria RAM externa de 32 Kb y
posee un decodificador Analógico Digital que
permite transformar las distintas entradas de energía
en bits. Su empaque original es de un circuito
impreso, que carece de zócalos de conexión, y se
encuentra soldada a la base del circuito impreso del
bloque. Este microcontrolador puede procesar
varias instrucciones por segundos, pero su mayor
desventaja comparado con el Lego Mindstorms
NXT es la baja capacidad de mantener hilos de
procesos, es decir, no puede ejecutar dos
instrucciones al mismo tiempo, y a pesar que el
Introducción a la Robótica Móvil con Lego
Mindstorms Arnold Alejandro Cruz, Gerardo Andrés López, Anderson Fajardo Londoño, Juan David Valenzuela
{arnold.91, galogeing, anderskater15, judavara}@hotmail.com
Universidad del Quindío
Universidad del Quindío, Alfonso Cruz, López Orozco, Fajardo Londoño, Valenzuela Ramos. Introducción a la robótica
móvil.
2
programador o usuario compruebe que si puede, no
es así, sino que la velocidad de proceso impide
distinguir el retardo producido [2].
Fig. 1 Bloque RCX de Lego Mindstorms.
En la parte delantera del bloque RCX, el Lego
Mindstorms trae un puerto infrarrojo que le permite
la comunicación con el computador para transferir
el firmware y los programas. Funciona a una
frecuencia de 37 Khz, que se asemeja al control
remoto de un televisor, transmitiendo datos a una
velocidad aproximada de 2400 bps, lo que implica
que cada bit se transmite a 417 us.
Una de las cualidades del puerto infrarrojo es la
capacidad de conectarse a otro dispositivo que
posea el puerto, como Palms, computadores
portátiles y algunos modelos de teléfonos móviles,
lo que permite realizar pequeñas plataformas de
comunicaciones para lugares recónditos o muy
pequeños.
La distancia de separación entre el RCX y el
receptor es como máximo a 30 cm, funcionando a
su máxima capacidad desde la base de la torre y sin
objetos que interfieran la visual entre ambos
instrumentos. Sin embargo, la distancia es menor
debido a la contaminación lumínica que puede
existir en el cuarto [3].
A. Sensor de luz
El sensor de luz permite tomar una muestra de luz
mediante un bloque modificado que en un extremo
trae un conductor eléctrico y por el otro una cámara
oscura que capta las luces. Esta cámara es capaz de
captar luces entre los rangos de 0,6 a 760 lux. Este
valor lo considera como un porcentaje, el cual es
procesado por el bloque lógico, obteniendo un
porcentaje aproximado de luminosidad.
El bloque RCX con la fórmula
determina el porcentaje obtenido por la lectura de la
luz, tomando una muestra cada 2.9ms.
Debido a que este sensor capta grados de
luminosidad, no es capaz de distinguir colores, sólo
capta la existencia del blanco (claridad), negro
(oscuridad) y los tonos de grises que corresponden a
los distintos porcentajes de luz existentes en el
medio [4].
Fig. 2 Sensor de luz lego RCX.
Para analizar los valores captados por los
sensores se tiene la siguiente tabla:
Tabla 1.
Mediciones del sensor de luz.
Voltaje Raw Sensor(Ohm) Luz(lux) Temp(°C)
5.0
B. Sensor de contacto
El sensor de contacto permite detectar si el bloque
que lo posee ha colisionado o no con algún objeto
que se encuentre en su trayectoria inmediata. Al
tocar una superficie, una pequeña cabeza externa se
contrae, permitiendo que una pieza dentro del
bloque cierre un circuito eléctrico haciendo circular
energía, provocando una variación de voltaje de 0 a
5 V.
En este caso, si la presión supera una medida
estándar de 450, mostrado en la pantalla de LCD, se
considera que el sensor está presionado, de otro
modo, se considera que está sin presión [5].
Universidad del Quindío, Alfonso Cruz, López Orozco, Fajardo Londoño, Valenzuela Ramos. Introducción a la robótica
móvil.
3
Fig. 3 Sensor de contacto lego RCX.
IV. PROCEDIMIENTO
A. Montaje robot móvil evasor de obstáculos
Se lleva a cabo la construcción de la plataforma
móvil Roverbot planteada por la guía de laboratorio,
se monta paso a paso siguiendo el procedimiento
especificado por el manual de los legos RCX para
finalmente conectar los sensores de contacto
obteniéndose de esta manera la siguiente estructura:
Fig. 4 Robot móvil evasor de obstáculos.
Finalmente se procede a establecer el algoritmo a
través de la API de lejos que permitirá al robot
móvil eludir obstáculos de la mejor manera posible.
Si uno de los sensores detecta algún obstáculo el
robot retrocede para luego girar a la derecha o a la
izquierda durante cierto tiempo según el sensor
accionado para luego continuar su trayectoria en
línea recta hasta encontrar una nueva obstrucción.
La siguiente figura muestra la lógica de control:
Inicio
Configuración tipo y modo del sensor: Tipo contacto Modo booleano
Activación de los sensores S1 y S3
Modificación de la potencia de los motores
A y C
¿sensor S1 presionado?
Motor A y C hacia atrás
SI
NO
Motor C hacia delante
¿sensor S3 presionado?
Motor A y C hacia atrás
SI
Motor A hacia delante
Motor A y C hacia delante
NO
Lectura sensores S1 y S3
Fig. 5 Lógica robot móvil evasor de obstáculos.
B. Montaje robot móvil seguidor de línea negra
Se procede a cambiar los sensores de contacto de la
plataforma construida por el sensor de luz, en donde
resulta la siguiente estructura:
Fig. 6 Robot móvil seguidor de línea negra.
Donde el objetivo principal es crear un algoritmo
que permita al robot móvil seguir una línea negra
sobre una superficie blanca por medio de un solo
sensor de luz. Para lograr esto fue necesario calibrar
el sensor de luz a través de la lectura analógica de
los diferentes valores obtenidos cuando se
accionaba sobre línea negra y sobre la superficie
blanca, en donde se obtuvo un valor analógico de
Universidad del Quindío, Alfonso Cruz, López Orozco, Fajardo Londoño, Valenzuela Ramos. Introducción a la robótica
móvil.
4
para el color negro de la línea. Con base en este
valor se procedió a realizar la correspondiente
lógica de control que permitiría el seguimiento de la
línea negra:
Inicio
Configuración tipo y modo del sensor: Tipo luz Modo analógico
Modificación de la potencia de los motores
A y C
¿iteraciones < 6? && ¿sensor S2 < 750?
SI
NO Motor A y C hacia delante
Motor A hacia atrásMotor C hacia delante
Tiempo*iteraciones
Lectura sensor S2Iteraciones = 1
Activación del sensor S2
¿iteraciones%2==0?
Lectura sensor S2Iteraciones++
SI
Motor A hacia delanteMotor C hacia atrásTiempo*iteraciones
Lectura sensor S2Iteraciones++
NO
Fig. 7 Lógica robot móvil seguidor de línea negra.
Las iteraciones permiten establecer por cuanto
tiempo debe permanecer girando el robot para
encontrar la línea negra, es decir, si por ejemplo
durante 50 milisegundos el robot móvil no ha
encontrado la línea negra este deberá girar en
sentido contrario una vez más 50 milisegundos (100
milisegundos), si aún continua sin encontrarla girará
en sentido contrario, pero esta vez dos veces más 50
milisegundos (150 milisegundos) y así
sucesivamente hasta encontrar la línea.
V. CONCLUSIONES
La utilización de estructuras para la construcción de
plataformas con diferentes tipos de locomoción
facilitan el desarrollo de robots móviles a precios
relativamente bajos y en el menor tiempo posible,
con la disposición de todo tipo de piezas para el
armado de dichas plataformas en donde la única
limitación presente es la capacidad creativa de cada
autor. Además estructuras como las de los juegos de
robótica lego suministran una serie de sensores y
actuadores, donde combinan la electrónica con
bloques de piezas, que permiten establecer gran
cantidad de sistemas con diversas aplicaciones
como la construcción de robots móviles que
detecten obstáculos y sigan diferentes tipos de
trayectorias marcadas por una línea negra.
Se concluye que la tecnología robótica lego permite
construir, depurar y reparar cada diseño de
estructura en menor tiempo, que si fuese construido
cada robot, cada plataforma con la manufactura de
cada pieza, no sería posible ni siquiera igualar
dichas facilidades proporcionadas por lego para la
creación de todo tipo de robots. Permitiendo de esta
manera invertir y focalizar el tiempo y los recursos
de una forma más efectiva, desarrollando así
conceptos de informática, mecánica y electrónica
con los mínimos esfuerzos académicos.
Finalmente se concluye que de los diferentes tipos
de locomoción, la que más facilidades presenta
frente a la descripción matemática de su dinámica y
frente a la implementación de la misma es la
locomoción por ruedas. Este tipo de locomoción,
además de que se construye con relativa facilidad,
permite la movilización de mucho mas peso que la
locomoción con patas, pero presenta la desventaja
de que la altura del obstáculo a superar no debe ser
mayor al radio de la rueda.
REFERENCIAS
[1]http://es.wikipedia.org/wiki/Lego_Mindstorms
[2]http://es.wikipedia.org/wiki/Lego_Mindstorms#B
loque_RCX
[3]http://es.wikipedia.org/wiki/Lego_Mindstorms#B
loque_RCX
[4]http://es.wikipedia.org/wiki/Lego_Mindstorms#B
loque_RCX
[5]http://es.wikipedia.org/wiki/Lego_Mindstorms#B
loque_RCX
Universidad del Quindío, Alfonso Cruz, López Orozco, Fajardo Londoño, Valenzuela Ramos. Introducción a la robótica
móvil.
5
ANEXOS
Algoritmo correspondiente al robot detector de obstáculos:
import josx.platform.rcx.*; public class obstaculos { public static void main(String[] args) throws Exception { Sensor.S1.setTypeAndMode(SensorConstants.SENSOR_TYPE_TOUCH, SensorConstants.SENSOR_MODE_BOOL); Sensor.S3.setTypeAndMode(SensorConstants.SENSOR_TYPE_TOUCH, SensorConstants.SENSOR_MODE_BOOL); Sensor.S1.activate(); Sensor.S3.activate(); Motor.A.setPower(7); Motor.C.setPower(7); while (true) { boolean myS1State = Sensor.S1.readBooleanValue(); boolean myS3State = Sensor.S3.readBooleanValue(); if (myS1State) { Sound.systemSound(false, 2); Motor.C.backward(); Motor.A.backward(); Thread.sleep(1000); Motor.C.forward(); Thread.sleep(500); } else { if (myS3State) { Sound.systemSound(false, 2); Motor.C.backward(); Motor.A.backward(); Thread.sleep(1000); Motor.A.forward(); Thread.sleep(500); } else { Motor.A.forward(); Motor.C.forward(); } } } } }
Universidad del Quindío, Alfonso Cruz, López Orozco, Fajardo Londoño, Valenzuela Ramos. Introducción a la robótica
móvil.
6
Algoritmo correspondiente al robot seguidor de línea negra:
import josx.platform.rcx.*; public class seguidor { public static void main(String[] args) throws Exception { Sensor.S2.setTypeAndMode(SensorConstants.SENSOR_TYPE_LIGHT, SensorConstants.SENSOR_MODE_RAW); Sensor.S2.activate(); Motor.A.setPower(7); Motor.C.setPower(7); while (true) { int s2raw = Sensor.S2.readRawValue(); int iteracion = 1; Motor.A.forward(); Motor.C.forward(); while (iteracion < 6) { if (s2raw < 750) { if (iteracion%2 == 0) { Motor.A.backward(); Motor.C.forward(); Thread.sleep(50*iteracion); s2raw = Sensor.S2.readRawValue(); iteracion++; } else { Motor.A.forward(); Motor.C.backward(); Thread.sleep(50*iteracion); s2raw = Sensor.S2.readRawValue(); iteracion++; } } else { break; } } } } }