Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

CD 5075

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 158

La versión digital de esta tesis está protegida por la Ley de Derechos de Autor

del Ecuador.

Los derechos de autor han sido entregados a la “ESCUELA POLITÉCNICA


NACIONAL” bajo el libre consentimiento del (los) autor(es).

Al consultar esta tesis deberá acatar con las disposiciones de la Ley y las
siguientes condiciones de uso:

· Cualquier uso que haga de estos documentos o imágenes deben ser sólo
para efectos de investigación o estudio académico, y usted no puede
ponerlos a disposición de otra persona.
· Usted deberá reconocer el derecho del autor a ser identificado y citado
como el autor de esta tesis.
· No se podrá obtener ningún beneficio comercial y las obras derivadas
tienen que estar bajo los mismos términos de licencia que el trabajo original.

El Libre Acceso a la información, promueve el reconocimiento de la


originalidad de las ideas de los demás, respetando las normas de presentación
y de citación de autores con el fin de no incurrir en actos ilegítimos de copiar y
hacer pasar como propias las creaciones de terceras personas.

Respeto hacia sí mismo y hacia los demás.


ESCUELA POLITÉCNICA NACIONAL

FACULTAD DE INGENIERÍA ELÉCTRICA Y


ELECTRÓNICA

APLICACIÓN DEL CONTROLADOR PID EN UN SEGWAY


CONTROLADO DE MODO LOCAL Y REMOTO MEDIANTE
BLUETOOTH IMPLEMENTADO EN LA PLATAFORMA LEGO NXT
2.0

PROYECTO PREVIO A LA OBTENCIÓN DEL TÍTULO DE


INGENIERO EN ELECTRÓNICA Y CONTROL

QUILLIGANA CORREA SILVIA MARLENE

(marle_jun23@hotmail.com)

DIRECTOR: Ing. PATRICIO BURBANO R. MSc

(pburbanor@hotmail.com)

Quito, Agosto 2013


i

DECLARACIÓN

Yo, Quilligana Correa Silvia Marlene, declaro bajo juramento que el trabajo aquí
descrito es de mi autoría; que no ha sido previamente presentada para ningún
grado o calificación profesional; y, que he consultado las referencias bibliográficas
que se incluyen en este documento.

A través de la presente declaración cedo mis derechos de propiedad intelectual


correspondientes a este trabajo, a la Escuela Politécnica Nacional, según lo
establecido por la Ley de Propiedad Intelectual, por su Reglamento y por la
normatividad institucional vigente.

___________________________

Quilligana Correa Silvia Marlene


ii

CERTIFICACIÓN

Certifico que el presente trabajo fue desarrollado por Silvia Marlene Quilligana
Correa, bajo mi supervisión.

________________________

Ing. Patricio Burbano

DIRECTOR DEL PROYECTO


iii

AGRADECIMIENTO

Agradezco a Dios porque me dio la oportunidad y capacidad de estudiar, a mi


padre porque me enseño que todo en la vida se logra con esfuerzo y sacrificio, a
mi madre por su apoyo incondicional y por sacarnos adelante pese a todas las
adversidades que pasamos, a mis hermanos por sus palabras de aliento, a mi
esposo por nunca soltar mi mano, a mi hijo por ser la fuerza para seguir y a mis
amigos que durante todo este tiempo me han brindado su apoyo.

De manera especial quiero agradecer a los ingenieros que de una u otra forma
han contribuido con este gran logro, gracias porque día a día ponen su esfuerzo y
dedicación para entregar al país no sólo excelentes profesionales sino también
personas con un alto sentido de responsabilidad, criterio y compromiso.
iv

DEDICATORIA

Este trabajo va dedicado con gran amor a mi esposo y a mi hijo, a mi esposo


porque me ha cobijado con su amor, ha sido incondicional conmigo y ha sido mi
soporte todo este tiempo y a mi hijo porque ha sido la luz que alegra cada
despertar.
v

CONTENIDO

CAPITULO 1 MARCO TEÓRICO ................................................. 1


1.1 SEGWAY................................................................................................................................... 1
1.1.1 INTRODUCCIÓN.............................................................................................................. 1
1.1.2 HISTORIA DEL SEGWAY ............................................................................................... 1
1.1.3 DINÁMICA DE LA ESTABILIZACIÓN ........................................................................... 2
1.1.3.1 El Cerebro y La Fuerza ........................................................................................... 3

1.1.4 SEGWAY EN BASE A LEGO MINDSTORMS ................................................................. 5


1.1.4.1 Lego Mindstorms Nxt ............................................................................................. 5

1.1.4.2 Robots Lego Con Auto Balanceo ............................................................................. 8

1.2 PID (Proporcional Integral Derivativo) ...................................................................................... 10


1.2.1 INTRODUCCIÓN............................................................................................................ 10
1.2.2 ESTRUCTURA................................................................................................................ 11
1.2.2.1 Acción Proporcional.............................................................................................. 12

1.2.2.2 Acción Integral ..................................................................................................... 13

1.2.2.3 Acción Derivativa ................................................................................................. 14

1.2.3 IMPLEMENTACIÓN DEL CONTROLADOR PID ......................................................... 15


1.2.3.1 Algoritmo No Interactivo ...................................................................................... 15

1.2.3.2 Algoritmo Interactivo ............................................................................................ 16

1.2.3.3 Algoritmo Paralelo ................................................................................................ 17

1.3 ROBÓTICA ............................................................................................................................. 18


1.3.1 DEFINICIÓN................................................................................................................... 18
1.3.2 ROBOT............................................................................................................................ 18
1.3.3 ROBOTS MÓVILES........................................................................................................ 20
1.3.3.1 Definición ............................................................................................................. 20

1.3.3.2 Robots Móviles Con Ruedas.................................................................................. 20

CAPITULO 2 DISEÑO Y ENSAMBLAJE DE PROTOTIPO


SEGWAY………… ...................................................... 23
2.1 PLATAFORMA LEGO NXT 2.0.............................................................................................. 23
2.1.1 NXT................................................................................................................................. 29
2.1.2 SERVOMOTORES .......................................................................................................... 33
2.1.3 SENSOR DE COLOR RGB ............................................................................................. 37
vi

2.1.4 SENSOR ULTRASÓNICO .............................................................................................. 38


2.2 DISEÑO DEL PRIMER PROTOTIPO ...................................................................................... 39
2.2.1 DISEÑO EN EL PROGRAMA LEGO DIGITAL DESIGNER 4.2 .................................... 39
2.2.2 IMPLEMENTACIÓN DEL PROTOTIPO ........................................................................ 42
2.2.3 MODELADO DEL SISTEMA FÍSICO ............................................................................ 43
2.2.4 DISEÑO DEL CONTROLADOR PID.............................................................................. 48
2.2.4.1 Diseño Por Software ............................................................................................. 48

2.2.4.2 Calibración Del PID .............................................................................................. 51

2.3 DISEÑO DEL SEGUNDO PROTOTIPO .................................................................................. 52


2.3.1 DISEÑO EN EL PROGRAMA LEGO DIGITAL DESIGNER 4.2 .................................... 52
2.3.2 CONEXIÓN DE SENSORES Y ACTUADORES ............................................................. 56
2.3.3 IMPLEMENTACIÓN DEL PROTOTIPO ........................................................................ 57
2.3.4 MODELADO DEL SISTEMA FÍSICO ............................................................................ 59
2.3.5 DISEÑO DEL CONTROLADOR PID.............................................................................. 61
2.3.5.1 Diseño Por Software ............................................................................................. 61

2.3.5.2 Calibración Del PID .............................................................................................. 63

2.4 DISEÑO DEL PROTOTIPO FINAL......................................................................................... 63


2.4.1 DISEÑO EN EL PROGRAMA LEGO DIGITAL DESIGNER 4.2 .................................... 64
2.4.2 IMPLEMENTACIÓN DEL PROTOTIPO ........................................................................ 64

CAPITULO 3 DESARROLLO DE LA LÓGICA DE


PROGRAMACIÓN .. …………………………………66
3.1 TIPOS DE PROGRAMACIÓN................................................................................................. 66
3.1.1 PROGRAMAR SIN UTILIZAR UN ORDENADOR ........................................................ 66
3.1.2 ROBOLAB 2.9................................................................................................................. 68
3.1.3 LABVIEW TOOLKIT...................................................................................................... 69
3.1.4 NXC (Not eXactly C) ....................................................................................................... 70
3.1.5 ROBOT C ........................................................................................................................ 72
3.1.6 SOFTWARE NXT ........................................................................................................... 73
3.2 PROGRAMACIÓN .................................................................................................................. 74
3.2.1 SOFTWARE UTILIZADO ............................................................................................... 74
3.2.2 BLOQUES UTILIZADOS EN LA PROGRAMACIÓN .................................................... 79
3.2.2.1 Bloque Motor ........................................................................................................ 79

3.2.2.2 Bloque Sound ....................................................................................................... 80

3.2.2.3 Bloque Rotation Sensor ......................................................................................... 81

3.2.2.4 Bloque Color Sensor ............................................................................................. 82


vii

3.2.2.5 Bloque Variable .................................................................................................... 83

3.2.2.6 Bloque Math ......................................................................................................... 84

3.2.2.7 Bloque Compare ................................................................................................... 84

3.2.2.8 Bloque Range ....................................................................................................... 85

3.2.2.9 Bloque Wait .......................................................................................................... 85

3.2.2.10 Bloque Loop ......................................................................................................... 86

3.2.2.11 Bloque Switch ....................................................................................................... 87

3.2.2.12 Bloque Switch (Sensor Ultrasónico) ...................................................................... 88

3.2.2.13 Cable De Datos ..................................................................................................... 89

3.2.3 DIAGRAMA DE FLUJO DE LA PROGRAMACIÓN...................................................... 89


3.3 MANEJO DEL BLUETOOTH ................................................................................................. 92
3.3.1 PROGRAMA PARA EL BLUETOOTH........................................................................... 93
3.3.1.1 Bloque Display ..................................................................................................... 94

3.3.1.2 Bloque Switch ....................................................................................................... 94

3.3.2 DIAGRAMA DE FLUJO ................................................................................................. 95

CAPITULO 4 PRUEBAS Y RESULTADOS ................................ 97


4.1 PRUEBAS REALIZADAS CON EL SENSOR DE COLOR RGB ............................................ 97
4.2 CALIBRACIÓN DEL PID ....................................................................................................... 98
4.3 PRUEBAS REALIZADAS CON EL PRIMER PROTOTIPO .................................................... 99
4.3.1 EQUILIBRIO ................................................................................................................... 99
4.3.2 EQUILIBRIO CON ENTRADA ..................................................................................... 100
4.4 PRUEBAS CON EL SEGUNDO PROTOTIPO ...................................................................... 101
4.4.1 EQUILIBRIO ................................................................................................................. 101
4.4.2 EQUILIBRIO CON ENTRADA ..................................................................................... 105
4.4.3 PRUEBAS CON EL SENSOR ULTRASÓNICO ............................................................ 106
4.4.4 PRUEBAS CON PERTURBACIÓN EÓLICA DE BAJO CAUDAL .............................. 106
4.5 PRUEBAS CON EL PROTOTIPO FINAL ............................................................................. 108
4.5.1 EQUILIBRIO ................................................................................................................. 108
4.5.2 EQUILIBRIO CON ENTRADA ..................................................................................... 110

CAPITULO 5 CONCLUSIONES Y RECOMENDACIONES... 112


5.1 CONCLUSIONES .................................................................................................................. 112
5.2 RECOMENDACIONES ......................................................................................................... 113

REFERENCIAS BIBLIOGRÁFICAS .................................................... 114


ANEXOS
viii

RESUMEN

Este proyecto está construido con el kit LEGO MINDSTORMS NXT 2.0 el cual
brinda la facilidad de cambiar de diseño de una manera rápida y sin costos
adicionales. El elemento principal del proyecto es el sensor de color RGB (red,
green, blue) el cual funciona con ambientes de luminosidad definidos. Otra
ventaja que presenta esta plataforma es que cuenta con un lenguaje gráfico de
programación muy amigable con el usuario.

El presente proyecto trata de la implementación de un controlador PID


(Proporcional Integral Derivativo) en un Segway. Para comprobar el PID se
utilizarán perturbaciones manuales y, a través de un control remoto. En forma
automática el controlador PID se encarga de mantener el equilibrio en el sistema,
para lo cual se toma como referencia la intensidad de luz emitida por un sensor de
color RGB, a diferencia de los robots de equilibrio que utilizan un sensor
giroscópico u otros sensores especiales.

Cuando se realiza una perturbación al sistema, la plataforma se moverá hacia


adelante o atrás en una trayectoria lineal tratando de mantener su autobalanceo.
Para perturbar al sistema es posible transmitir una señal mediante comunicación
Bluetooth entre dos controladores MINDSTORMS (principal y control remoto).

Mediante cálculos matemáticos se obtiene la función de transferencia de cada


prototipo. Posteriormente se desarrolla el controlador PID, partiendo de valores
obtenidos mediante un programa computacional y se realiza ajustes por
simulación. Para un mejor resultado, la calibración final se ajusta mediante el
método prueba y error.
ix

PRESENTACIÓN

En este proyecto se da a conocer un robot (Segway) capaz de mantener el


equilibrio mediante el uso de un controlador Proporcional Integral Derivativo (PID)
que ajusta constantemente la potencia del motor a las ruedas en respuesta a un
error (ángulo aproximado cerca de la espalda recta) calculado desde el sensor de
color RGB. Los controladores PID ayudan a resolver el problema de control,
particularmente cuando la dinámica del proceso lo permite.

El presente proyecto está distribuido de la siguiente manera:

En el Capítulo 1 se da a conocer el Segway comercial así como modelos


implementados con el kit LEGO MINDSTORMS, se detalla las definiciones
básicas sobre el controlador Proporcional Integral Derivativo, además un breve
resumen acerca de la robótica que de alguna manera tiene que ver con el
proyecto.

En el Capítulo 2 se da a conocer las piezas que conforman el Kit LEGO


MINDSTORMS 2.0 y se explica el funcionamiento de las partes importantes
utilizadas en el prototipo. Se presenta el prototipo previo y final, los dos muestran
su diseño en el paquete computacional LEGO DIGITAL DESIGNER 4.2 así como
la implementación física de cada uno. Otro punto tomado en cuenta en este
capítulo es el modelado de la planta y la obtención del controlador.

En el Capítulo 3 se presenta un resumen de los tipos de programación con los


que puede trabajar el Kit LEGO y se profundiza en la escogida para el desarrollo
de este prototipo. Se detalla cada uno de los bloques utilizados en los programas
tanto para el controlador local como para el controlador que actúa como remoto;
en cada uno se muestra su diagrama de flujo respectivo.

En el Capítulo 4 se exponen las pruebas que se realizaron y los resultados


obtenidos durante el desarrollo del proyecto, los problemas presentados y las
soluciones dadas,

En el Capítulo 5 se presentan las conclusiones y recomendaciones del proyecto.


1

CAPITULO 1
MARCO TEÓRICO

1.1 SEGWAY

1.1.1 INTRODUCCIÓN

El Segway es el primer dispositivo de transporte con autobalanceo. El ordenador y


los motores situados en la base mantienen la base del Segway horizontal todo el
tiempo. El usuario se debe inclinar hacia la dirección que quiera tomar (delante,
atrás, derecha o izquierda).

Segway consiste en una red inteligente de sensores, componentes mecánicos y


sistemas de control, que permiten al Segway mantenerse en equilibrio y
desplazarse sobre dos ruedas. [1]

1.1.2 HISTORIA DEL SEGWAY

Aparece públicamente el 3 de diciembre de 2001, tras una década de pruebas


realizadas por su inventor Dean Kamen, se decía que era un invento
revolucionario, Steve Jobs sugirió que las ciudades serían construidas alrededor
de este nuevo método de transporte y John Doerr predijo ventas que llegarían a
los 1.000 millones de dólares mucho antes que cualquier otro producto anterior.

Los tres primeros Segway se vendieron en más de $100.000 dólares cada uno,
mediante una subasta. La compañía esperaba vender 50.000 unidades en el
primer año pero al cabo de 21 meses sólo se habían vendido 6.000, uno de los
compradores fue Walt Disney que ordenó cuatro docenas para sus parques, y en
septiembre del 2003 fueron retirados del mercado.
2

La condición que llevó a la retirada fue descrita en una nota de prensa como
"Peligro: Bajo ciertas condiciones operativas, particularmente cuando las
baterías están cerca del final de la carga, algunos Segway pueden no dar la
suficiente potencia, ocasionando que el conductor caiga. Esto puede suceder si el
conductor acelera de manera brusca, encuentra un obstáculo o continúa
conduciendo después de recibir un aviso de batería baja".

Entre los factores que influyeron en la baja demanda fue el elevado costo
(US$4.000 y US$5.000 dependiendo del modelo), el vehículo pesa más de 80
libras, otro factor tomado en cuenta es que con una carga de batería se puede
viajar tal vez 11 millas a eso se le suma que el público en general estuvo
asustado por la naturaleza revolucionaria del producto.

Para eliminar posibles malentendidos, y para eliminar la mala imagen asociada


con el vehículo, Segway Inc. abrió concesionarios por todos los Estados
Unidos en los que la gente podía examinar y probar los Segway.

Con esta estrategia se logró que los trabajadores de correos se decidieran a


realizar sus rutas sobre un Segway, el único inconveniente era la duración de las
baterías pero según la empresa no era problema ya que bastaba de unos minutos
cambiar las baterías por unas nuevas. [2]

1.1.3 DINÁMICA DE LA ESTABILIZACIÓN

El aspecto más sorprendente del Segway es su capacidad para equilibrarse, para


entender de una mejor manera se hará una analogía con el ser humano. Cuando
el ser humano se pone de pie y se inclina hacia delante, de manera que se pierda
el equilibrio, este probablemente no se caerá de cara debido a que el cerebro
sabe que está desequilibrado porque el líquido en el oído se desplaza, así que
hace mover la pierna hacia delante para evitar la caída. En lugar de caerse, el ser
humano camina hacia delante, un paso cada vez.
3

El Segway hace casi lo mismo excepto que tiene ruedas en lugar de piernas, un
motor en lugar de músculos, una colección de microprocesadores en lugar de un
cerebro y un juego de sensores sofisticados para la inclinación en lugar de un
sistema de equilibrio del oído interno. Al igual que su cerebro, el Segway sabe
cuándo usted se inclina hacia delante. Para mantener el equilibro, gira las ruedas
a la velocidad apropiada, así usted se mueve hacia delante. Segway llama esta
conducta estabilización dinámica y ha patentado el proceso único que permite que
el Segway se equilibre sólo sobre dos ruedas. Como se puede ver en la Figura
1.1 [3]

Figura 1.1 Modelo de Segway [2]

1.1.3.1 El Cerebro y La Fuerza

El sistema sensor principal es un grupo de giroscopios. Un giroscopio básico es


una rueda giratoria dentro de un marco estable. Un objeto giratorio resiste los
cambios en sus ejes de rotación porque una fuerza aplicada se mueve junto con
el mismo objeto, ver Figura 1.2.

A medida que el punto de fuerza sigue moviéndose, termina aplicando la fuerza


en los extremos opuestos de la rueda – la fuerza se equilibra a sí misma. Debido
4

a su resistencia a la fuerza externa, una rueda giroscopio mantendrá su posición


en el espacio (relativa al suelo), incluso aunque se incline. Pero el marco del
giroscopio se moverá libremente en el espacio. Al medir la posición de la rueda
giratoria del giroscopio relativa al marco, un sensor preciso puede notar la
inclinación de un objeto (la inclinación que tiene con relación a la posición vertical)
además de la velocidad de inclinación (con qué rapidez se está inclinando).

Figura 1.2 Esquema básico de un giroscopio [3]

Los ordenadores internos de Segway comparan constantemente los datos de los


giroscopios para determinar si cualquiera de estos está suministrando datos
erróneos, en esta condición, puede compensar y usar datos de los sensores
restantes para seguir obteniendo equilibrio. Dos sensores de inclinación llenos de
un fluido de electrolitos proporciona una referencia de gravedad de la misma
manera que nuestro oído interno lo hace para nuestro sentido del equilibrio.

Se tiene un sistema de reducción que permite que el motor funcione a


velocidades potentes y eficientes a través de todos los niveles de las marchas del
Segway.

A continuación se muestra un esquema general de cómo se debería armar un


Segway, como se ilustra en la Figura 1.3. [3]
5

Figura 1.3 Esquema general de un Segway [3]

1.1.4 SEGWAY EN BASE A LEGO MINDSTORMS

1.1.4.1 Lego Mindstorms Nxt

LEGO MINDSTORMS NXT es la segunda generación de productos de robótica


del grupo LEGO, que lanzó la primera generación de productos de LEGO
MINDSTORMS en 1998 con el sistema de invención robótica LEGO
MINDSTORMS.

LEGO MINDSTORMS NXT se inició en 2006, con la primera versión del kit de
herramientas de robótica, el 1,0 NXT, con un hardware apropiado y un software
de fácil programación. LEGO MINDSTORMS NXT 2.0 combina la ilimitada
6

versatilidad del sistema de construcción de LEGO con un ladrillo microprocesador


inteligente.

LEGO MINDSTORMS es una fabulosa herramienta ya que se puede construir y


programar robots del diseño que la imaginación desee ya que se cuenta con
piezas y elementos que permiten armar un robot inteligente con diferentes
operaciones.

A continuación se muestra unos modelos de lo que se puede hacer con los


elementos de lego (Figura 1.4), el primero es un robot vehículo que dispara bolas
a los intrusos, el segundo es una máquina clasificadora de colores, el tercero es
un robot humanoide que puede realizar diferentes funciones como: bailar, charlar,
caminar y evitar obstáculos, puede recoger y distinguir objetos de diferente color.
El último es un robot en forma de lagarto que protege su área y salta hacia
adelante.

Figura 1.4 Ejemplos de robot LEGO [4]

1.1.4.1.1 Tecnología NXT


La tecnología NXT da los siguientes beneficios:

· El NXT es un micro-computador, ladrillo inteligente LEGO, el cual puede ser


programado para tomar los sensores como entradas y los servomotores como
salidas.
· El servomotor tiene un sensor de rotación integrado que proporciona un
control preciso del movimiento del motor (+ / - 1 grado).
· El sensor de toque hace "sentir" su robot y con lo cual reacciona a su entorno.
7

· Los sensores ultrasónicos funcionan como un radar, se podría decir que estos
sensores hacen que el robot pueda ver, medir la distancia y reaccionar al
movimiento.
· El sensor de color RGB (red, green, blue) puede distinguir entre colores,
también funciona como un sensor de luz, detecta la luz configurada y la luz
ambiente, y funciona como una lámpara.

En la Figura 1.5 se puede observar cada uno de los componentes antes descritos.

SERVOMOTOR

SENSOR DE
TOQUE

SENSOR ULTRASÓNICO

SENSOR RGB

Figura 1.5 Elementos principales de un Toolkit LEGO MINDSTORMS [4]

1.1.4.1.2 Programación
NXT-G es una interfaz intuitiva basada en iconos de arrastrar y soltar, el lenguaje
de programación está diseñado para una fácil introducción a la programación para
los nuevos usuarios y los usuarios experimentados. El diseño del programa se lo
realiza bloque por bloque tomando en cuenta que se tiene que elegir los bloques
correspondientes a los de entrada que son los sensores y los de salida que serían
los motores y una secuencia lógica de lo que se quiere hacer. [4] Se puede
observar un ejemplo en la Figura 1.6.
8

Figura 1.6 Programación por bloques para LEGO MINDSTORMS [4]

1.1.4.2 Robots Lego Con Auto Balanceo

La historia de los Segways realizados con MINDSTORMS de LEGO empezó con


el Legway (Figura 1.7) de Steve Hassenplug en 2003. El diseño ganó muchos
premios e incluso era capaz de seguir una línea marcada en el suelo. [5]

El programa para LegWay fue escrita en BrickOS (LEGOS) y utiliza EOPDs


(Electro-Optical Proximity Detector) para mantener una distancia constante al
suelo. A medida que la distancia disminuye, LegWay se mueve hacia adelante. A
medida que aumenta la distancia, LegWay se mueve hacia atrás. Cada 50 ms,
LegWay intenta volver a calcular el punto de equilibrio mediante la medición de la
distancia actual y la velocidad del motor. [6]
9

Figura 1.7 LegWay [6]

Después vino el NXTWay de Phillippe Hurbain, era algo impredecible en espacios


exteriores y su sensor de infrarrojos era demasiado sensible a algunos tipos de
luz, ver Figura 1.8

Figura 1.8 NXTWay [7]

El NXTWay-G es un modelo basado en los dos anteriores, la principal novedad es


que se ha sustituído el sensor de infrarrojos por un giroscopio (que no viene el
MindStorms pero que Ryo ha sabido adaptar convenientemente). Ver Figura 1.9
10

Figura 1.9 NXTway-G [7]

1.2 PID (Proporcional Integral Derivativo)

1.2.1 INTRODUCCIÓN

El control automático asienta sus bases esencialmente en el concepto de


realimentación.
Este concepto se concreta en una estructura de control en la cual el controlador
se puede entender como un operador, que en función de la salida deseada de la
planta, y la salida real medida, proporciona la acción de control a aplicar sobre el
sistema.
El controlador PID (Proporcional, Integral y Derivativo) es un controlador
realimentado cuyo propósito es hacer que el error en estado estacionario, entre la
señal de referencia y la señal de salida de la planta sea cero, lo que se logra
mediante el uso de la acción integral. Además el controlador tiene la capacidad de
anticipación a través de la acción derivativa que tiene un efecto predictivo sobre la
salida del proceso. [8] [9]
11

1.2.2 ESTRUCTURA

Como se puede observar en la Figura 1.10, el control PID combina tres acciones:
Proporcional (P), Integral (I) y Derivativa (D).

Figura 1.10 Variable de salida aplicando un PID [10]

El comportamiento del algoritmo PID se puede describir como:

Ec(1)

De la Ec(1) se describe lo siguiente: Kp es la constante de proporcionalidad en la


acción de control proporcional (Kp pequeña acción proporcional pequeña, Kp
grande acción proporcional grande), como se muestra en la Figuara 1.11.

Figura 1.11 Acción proporcional en un control PID [10]

Ti es la constante de tiempo integral y es el tiempo necesario para que la acción


integral contribuya a la salida del controlador en una cantidad igual a la acción
proporcional (Ti pequeño acción integral grande, Ti grande acción integral
pequeña), ver Figura 1.12.
12

Figura 1.12 Acción proporcional-integral en un control PID [10]

Td es la constante de tiempo derivativa, esta acción tiene carácter de previsión, lo


que hace más rápida la acción de control, aunque tiene una desventaja
importante, amplifica las señales de ruido en el actuador, (Td pequeño acción
derivativa pequeña, Td grande acción derivativa grande), ver Figura 1,13

Figura 1.13 Acción proporcional-derivativa en un control PID [10]

1.2.2.1 Acción Proporcional

En el caso de un control proporcional puro, la ley de control de la Ec(1) se reduce


a:
Ec(2)

La acción de control es simplemente proporcional al error. La variable ub es una


señal de polarización o un reset. Cuando el error e es cero, la variable de control
toma el valor u(t) = ub. La polarización ub a menudo se la fija en (umax+umin)/ 2, pero,
13

algunas veces, puede ser ajustada manualmente de forma que el error de control
en estado estacionario sea cero en una referencia dada.
En la Figura 1.14 se muestra en forma detallada como trabaja una planta con
acción proporcional.

Figura 1.14 Acción proporcional en un proceso [10]

1.2.2.2 Acción Integral

La acción integral asegura que la salida del proceso concuerde con la referencia
en estado estacionario. Con el controlador proporcional, normalmente existiría un
error en estado estacionario. Con la acción integral, un pequeño error positivo
siempre producirá un incremento en la señal de control y, un error negativo
siempre dará una señal decreciente sin importar cuán pequeño sea el error; por lo
cual el error en estado estacionario siempre será cero con la acción integral.
Asuma que el sistema está en estado estacionario con una señal de control
constante, u0, y un error constante, e0. De la Ec(1) se tiene que la señal de control
está dada por:

Ec(3)
14

Como se tiene que e0≠0, claramente se contradice el supuesto de que la señal de


control u0 se mantiene constante. Por tanto, como resultado de esto, un
controlador con acción integral siempre dará un error en estado estacionario cero.
La acción integral también puede ser vista como un dispositivo que
automáticamente restablece el término de polarización ub de un controlador
proporcional.
En la Figura 1.15 se explica la acción integral.

Figura 1.15 Acción integral en un proceso

1.2.2.3 Acción Derivativa

El propósito de la acción derivativa es mejorar la estabilidad de lazo cerrado.


Debido a la dinámica del proceso, pasa algún tiempo antes de que la variable de
control se note en la salida, por lo cual, el sistema de control tarda en corregir el
error. La acción de un controlador con acción proporcional y derivativa puede ser
interpretada como si el control proporcional fuese hecho para predecir la salida
del proceso. La predicción se hace por la extrapolación del error de control en la
dirección de la tangente a su curva respectiva, como se muestra en la Figura
1.16.
15

Figura 1.16 Interpretación geométrica de la acción derivativa como un control


predictivo, donde la predicción se obtiene mediante extrapolación lineal [8]

1.2.3 IMPLEMENTACIÓN DEL CONTROLADOR PID

En la actualidad se pueden encontrar distintas versiones del algoritmo de


controlador PID. Cualquiera de ellas se puede considerar como perteneciente a
uno de los tres grupos de controladores PID (no interactivos, interactivos y
paralelos). Para conocer qué tipo de algoritmo incorpora un determinado
regulador es necesario analizar la función de transferencia.

1.2.3.1 Algoritmo No Interactivo

Se conoce con el nombre de algoritmo no interactivo de control PID al algoritmo


clásico dado por la Ec(1), que representado con su función de transferencia da la
siguiente ecuación.

Ec(4)

Con el calificativo de no interactivo se quiere poner de manifiesto que las acciones


de control integral y derivativa son independientes, aunque exista un parámetro
del controlador, la ganancia proporcional Kp, que afecte a las tres acciones
16

(proporcional, integral y derivativa). Este algoritmo está considerado como el


estándar por la ISA (Instrument Society of America).

Este algoritmo admite ceros complejos, lo que es útil cuando se controla sistemas
con polos oscilatorios.

La Figura 1.17 muestra la estructura de diagrama de bloques para un algoritmo no


interactivo.

Figura 1.17 Forma no interactiva de un controlador PID [8]

1.2.3.2 Algoritmo Interactivo

Este algoritmo también es llamado algoritmo serie y fue empleado generalmente


en los antiguos reguladores analógicos. Es una versión ligeramente diferente y
está dado por la siguiente ecuación

Ec(5)

Con el calificativo de interactivo se quiere recalcar que la modificación de


cualquiera de las constantes de tiempo Ti′ o Td′ afecta a las tres acciones
(proporcional, integral y derivativa), tal como se entienden dichas acciones en el
algoritmo clásico. Este algoritmo surgió como una posibilidad de realizar control
PID analógico con dos amplificadores, a diferencia del no interactivo que requiere
el uso de tres amplificadores.
17

La forma serie tiene una interpretación atractiva en el dominio de la frecuencia, ya


que los ceros corresponden a los valores inversos de los tiempos derivativo e
integral. Todos los ceros del controlador son reales. Las acciones integral o
proporcional puras no pueden ser obtenidas con valores finitos de los parámetros
del controlador. La mayoría de los controladores usan esta forma.

En la Figura 1.18 se puede observar el diagrama de bloques de una estructura


interactiva del PID.

Figura 1.18 Forma interactiva de un controlador PID [8]

1.2.3.3 Algoritmo Paralelo

Este algoritmo permite modificar cada acción por separado. El calificativo de


paralelo quiere indicar que las tres acciones (proporcional, integral y derivativa)
son independientes. Este tipo de algoritmo no tiene en principio ninguna ventaja
respecto a los dos anteriores, salvo el poder ajustar cada acción por separado, lo
cual constituye una parametrización lineal del controlador. Es una representación
muy popular del controlador y está dada por la siguiente ecuación:

Ec(6)

Los parámetros están relacionados con la forma estándar a través de las


siguientes ecuaciones:

Ec(7)
18

Ec(8)

Ec(9)

La forma paralela es la más general, debido a que se pueden obtener acciones


proporcional, integral y derivativa puras con parámetros finitos. El controlador
puede también tener ceros complejos, siendo, por tanto, la forma más flexible. Sin
embargo, es también la forma donde los parámetros tienen poca interpretación
física. [9]

1.3 ROBÓTICA

1.3.1 DEFINICIÓN

La palabra ‘robótica’ cubre muchos conceptos pero todos giran en torno a la


misma idea, por lo cual de una manera general se dirá que la robótica es la
ciencia encaminada a diseñar y construir aparatos y sistemas capaces de
desempeñar tareas propias de un ser humano. [11] [12]

1.3.2 ROBOT

Al pensar en un robot se presentan ideas de máquinas utilizadas para la


realización de trabajos productivos y de imitación de movimientos y
comportamientos de seres vivos.

Históricamente el término “robot” aparece por primera vez en 1921, en una obra
teatral de un autor checo en cuyo idioma la palabra “robota” significa fuerza de
trabajo. [13]

A continuación se observa el esquema general de un robot. Figura 1.19


19

Figura 1.19 Esquema general de un robot [14]

En la Figura 1.19 se observan los bloques necesarios para lograr el control del
robot. El esquema básico de un robot, consta de un sistema mecánico,
actuadores, sensores y sistema de control.

En el sistema mecánico puede distinguirse entre el órgano terminal, el brazo


articulado y un vehículo.

El sistema de control involucra tanto bucles de realimentación de la información


suministrada por los sensores internos como de entorno.

Los sensores internos permiten conocer el estado de la estructura mecánica,


brindan datos importantes como giro o desplazamiento relativo entre
articulaciones, velocidad, fuerza o par.

Los sensores externos se encargan de percibir el entorno, mediante conocimiento


del mismo, y ajustar el comportamiento del robot de acuerdo a las variaciones
dadas en su entorno. Estos sensores han tenido un gran desarrollo tecnológico,
por lo que en la actualidad permiten dotar de “sentidos” al robot, haciendo que la
percepción del entorno sea más cercana a la realidad pero incrementando la
complejidad de los datos obtenidos a través de estos sensores. [13]
20

1.3.3 ROBOTS MÓVILES

Inicialmente el robot respondía a una estructura mecánica anclada en uno de sus


extremos. El robot móvil llega a extender el campo de la robótica incrementando
la autonomía, limitando en lo posible la intervención humana. [13]

1.3.3.1 Definición

Se define a un robot móvil como un dispositivo formado por componentes físicos y


computacionales, divididos en cuatro subsistemas: [15]

· Locomoción
· Percepción
· Razonamiento
· Comunicación

1.3.3.2 Robots Móviles Con Ruedas

Dentro de los robots móviles terrestres cabe mencionar los vehículos con ruedas,
ya que suponen la solución más inmediata debido a su eficiencia y simplicidad a
la hora de trabajar sobre terrenos duros y llanos. Poseen diversas aplicaciones en
la industria, tales como el bodegaje, inspección, minería, transporte, control de
producción a distancia. También, en el contexto de robots de servicio, los robots
móviles se han introducido recientemente en la forma de aspiradoras para el
hogar (caso Trilobite Electrolux). [13] [15]

1.3.3.2.1 Ruedas
Las ruedas del robot móvil se mueven por el contacto con la superficie,
idealmente, se desplaza 2πr por vuelta. El robot puede tener varias ruedas por lo
cual es importante estudiar su giro.

1.3.3.2.2 Giro
Un robot móvil puede contar con varias ruedas, y existe un punto alrededor del
cual cada rueda sigue una trayectoria circular cuyo punto se llama Centro de
21

Curvatura Instantáneo (CCI) en el caso de una trayectoria recta el CCI está en


infinito. Como se puede ver en la Figura 1.20.

Figura 1.20 Centro de curvatura instantánea [15]

1.3.3.2.3 Arreglo de ruedas


Las formas más conocidas de disponer las ruedas en los robots móviles son:

· Diferencial
· Síncrono
· Tipo triciclo
· Tipo carro

DIFERENCIAL

Consiste de dos ruedas en un eje común, cada rueda se controla


independientemente y se puede obtener los siguientes movimientos:

· Línea Recta
· En arco
· Vuelta sobre su propio eje

Para que el movimiento sea recto se requiere que las ruedas vayan a la misma
velocidad.

SÍNCRONO

Las ruedas se mueven al mismo instante, cada eje se mueve en forma


dependiente para dar vuelta y avanzar. Las ruedas están ligadas de forma tal que
siempre apuntan en la misma dirección y para dar vuelta giran las ruedas sobre el
eje vertical, pero se requiere de un mecanismo adicional para mantener el frente
del chasis en la dirección de las ruedas. Ver Figura 1.21
22

Figura 1.21 Movimiento sobre el eje de rotación de dos ruedas [15]

TRICICLO

Cuenta con tracción que son las dos ruedas fijas y con una rueda para la
dirección, ver Figura 1.22. Son usados por su simplicidad mecánica y su
estabilidad.

Figura 1.22 Esquema de un triciclo [15]

CARRO

El sistema de carro es similar al triciclo solo que cuenta con dos ruedas de
tracción y dos ruedas para dirección. Sus principales ventajas son buena
estabilidad y facilidad de ir derecho. La desventaja es su complejidad cinemática.
Ver Figura 1.23

Figura 1.23 Arreglo de ruedas tipo carro [15]


23

CAPITULO 2
DISEÑO Y ENSAMBLAJE DE PROTOTIPO SEGWAY

En el presente capítulo se presentará el diseño de la plataforma basándose en las


piezas con las que se cuenta. LEGO MINDSTORMS NXT cuenta con 619 que
serán presentadas en la Tabla 2.1 y sólo se va a detallar en profundidad las
piezas que son ocupadas para la implementación del prototipo. Cabe recalcar que
para este proyecto es necesario dos NXT ya que uno va actuar como local y otro
como remoto.

2.1 PLATAFORMA LEGO NXT 2.0

A continuación se muestra cada uno de los elementos de los cuales consta un Kit
LEGO MINDSTORMS NXT 2.0.

Tabla 2.1 Elementos de LEGO MINDSTORMS NXT 2.0 [16]

CANTIDAD ELEMENTO GRAFICO

1 NXT 2.0

3 Servo-motor

1 Sensor de color RGB

2 Sensores de contacto

1 Sensor ultrasónico

1 Cable USB para Mindstorms


NXT
24

3 Cables de conexión

4 Rueda negra con agujeros

4 Eje negro de cuatro centímetros

2 Eje negro de seis centímetros

1 Eje negro de 12 centímetros

5 Eje y pin de conector angulado


#1, negros

6 Eje y pin de conector angulado


#2 en ángulo de 180°, color
negro
8 Eje y pin de conector angulado
# 6, en ángulo de 90°, color
negro
5 Eje y pin de conector
perpendicular 3L, con agujero
en el centro, color negro
4 Eje flexible de doble conector,
color negro

5 Eje y conector con un agujero


en el eje, color negro

2 Rueda negra con 12 dientes de


engranajes cónicos doble

2 Rueda negra con 20 dientes de


engranajes cónicos dobles

2 Rueda negra con 36 dientes de


engranajes cónicos dobles

8. Mecanismos de elevación de
1x2 gruesa con el agujero de
pasador y el agujero del eje
25

4 Link negro 1x9

6 Pin de conexión doble


perpendicular 3L, color negro

3 Pin doble con eje pasante

10 Pin con cresta de fricción


longitudinal y una bola de
conexión, color negro
98 Pin con cresta de fricción con
ranuras centrales, color negro

4 Llantas color negro

2 Rodadura grande color negro

3 Esferas azules

3 Ejes con pin de cresta de


fricción longitudinal, color azul

52 Pin largo con cresta de fricción


longitudinal, color azul

2 Disco de leva, color gris azulado

6 Ejes de tres centímetros con


capuchón, color gris oscuro
azulado
4 Ejes de 8 centímetros con
capuchón, color gris oscuro
azulado
2 Ejes de 5.5 centímetros con
capuchón, color gris oscuro
azulado
10 Mecanismo de elevación de
1x3, color gris oscuro azulado
26

4 Mecanismo de elevación :1x9


con inclinación (6-4) grueso,
color gris oscuro azulado
2 Mecanismo de elevación
:1x11.5 doblado grueso, color
gris oscuro azulado
13 Mecanismo de elevación 2x4
grueso en forma de L, color gris
oscuro azulado
14 Mecanismo de elevación 3x5
grueso en forma de L, color gris
oscuro azulado
3 Esferas verdes

11 Uniones, color gris claro


azulado

9 Uniones color gris claro azulado


de 1/2

19 Ejes de tres centímetros color


gris claro azulado

8 Ejes de cinco centímetros color


gris claro azulado

4 Ejes de siete centímetros color


gris claro azulado

2 Ejes de nueve centímetros color


gris claro azulado

8 Eje y pin perpendicular al


conector, color gris claro
azulado
16 Eje y pin perpendicular 3L.
Conector con dos orificios, color
gris claro azulado
4 Eje perpendicular y pin doble,
color gris claro azulado

8 Eje y pasador perpendicular


doble, color gris claro azulado
27

4 Conector de eje (con el agujero


liso x Orientación +), color gris
claro azulado
2 Eje con esfera, color gris claro
azulado

18 Mecanismo de elevación 1x5


grueso, color gris claro azulado

6 Mecanismos de elevación: 1 x 7
(4-4) grueso, color gris claro
azulado
4 Mecanismos de elevación: 1 x 7
doble, grueso, color gris claro
azulado
2 Mecanismos de elevación: 1 x 3
en forma de T, grueso, color gris
claro azulado
3 Conector de ½, color gris claro
azulado

1 Conector perpendicular 2x2,


color gris claro azulado

6 Conector perpendicular de 3x3


con 4 pines, color gris claro
azulado
14 Conector de 4 y pines 3L
perpendicular, color gris claro
azulado
10 Pin largo con cresta de fricción
longitudinal y barras de parada,
color gris claro azulado
6 Pin sin cresta de fricción
longitudinal, color gris claro
azulado
10 Diente 1x3 con agujero en el
eje, color naranja

4 Mecanismos de elevación de 2
x 4 en forma de L grueso, color
naranja
2 Túnel para esferas color gris
oscuro.
28

1 Lanzador de esferas color gris


oscuro

3 Esferas color rojo

9 Eje con 2 muescas color rojo

4 Eje sin cresta de fricción


longitudinal, color crema

1 Engranaje cónico de 12 dientes,


color crema

6 Pin largo sin cresta de fricción


longitudinal, color crema

3 Descanso / Final del panel


lateral de admisión, color gris
azulado
20 Mecanismo de elevación 1x7
grueso, color gris claro azulado

10 Mecanismos de elevación: 1 x 9
(7-3) Grueso, color gris claro
azulado
14 Mecanismos de elevación: 1 x 9
Grueso, color gris claro azulado

6 Mecanismos de elevación: 1 x
11 Grueso, color gris claro
azulado
10 Mecanismos de elevación: 1 x
13 Grueso, color gris claro
azulado
2 Mecanismos de elevación: 1 x
15 Grueso, color gris claro
azulado
2 Guardachoques para coches
panel de la izquierda

2 Guardachoques para coches


panel de la derecha
29

1 Correa de caucho blanca


pequeña (sección redonda)

1 Pieza blanca de 1x2

3 Esferas color amarillo

2.1.1 NXT

El ladrillo inteligente LEGO NXT es el cerebro de los robots MINDSTORMS,


permite a los robots tener vida y realizar diferentes tareas. El NXT es un
microprocesador, con puertos de entrada, de salida y memoria para el
almacenamiento de programas. La comunicación con la computadora se la puede
hacer mediante el puerto USB o por Bluetooth. [17] [18] Ver Figura 2.1

Figura 2.1 Ladrillo NXT de LEGO MINDSTORMS [19]

A continuación se muestran los elementos que lo conforman:

· Puertos para motores: A, B y C.


· Puertos para sensores: 1, 2, 3 y 4
· Puerto USB.
· Conexión inalámbrica Bluetooth.
· Altoparlante
30

· Botones
· Pantalla

La ubicación de los elementos en el bloque NXT se muestra en a Figura 2.2

Altoparlante

Figura 2.2 Distribución de los componentes de un NXT de LEGO [19]

En la parte del Bluetooth se puede encontrar la siguiente simbología Tabla 2.2

Tabla 2.2 Simbología del Bluetooth [20]

Símbolo Significado

Bluetooth activado, pero el NXT


no es visible para otros
dispositivos.
Bluetooth activado y el NXT es
visible para otros dispositivos
Bluetooth activado y el NXT
está conectado a otro
dispositivo

El bloque NXT consta de las siguientes características técnicas:

· Microcontrolador de 32 bits ARM7


31

o Reloj de 48MHz
o Memoria FLASH de 256 Kbytes
o Memoria RAM de 64 Kbytes
· Microcontrolador de 8 bit AVR
o Reloj de 8MHz
o Memoria FLASH de 4Kbytes
o Memoria RAM de 512 Bytes

El microcontrolador AVR se comunica con el microcontrolador principal


mediante el bus de comunicación I2C (Inter-Integraed Circuit), el AVR recibe
información del motor, de la fuente de poder, nivel de carga de la batería y los
estados de los botones.

· Comunicación Inalámbrica Bluetooth (Bluetooth Clase II v2.0)


· Puerto de alta velocidad USB (12 Mbit/s)
· Cuatro puertos de entrada de seis hilos, plataforma digital
· Tres puertos de salida de seis hilos, plataforma digital
· Pantalla gráfica de cristal líquido de 64 x 100 pixeles
· Parlante, calidad de sonido 8KHz
· Fuente de alimentación: 6 baterías AA [20]

Para el manejo del NXT se cuenta con el siguiente teclado, ver Figura 2.3, en el
cual el botón naranja es para el encendido y para dar enter, los botones de color
gris claro son para moverse hacia la derecha o izquierda según se observa en la
Figura 2.3. El botón gris oscuro es para retroceder en el menú, para apagar se
debe pulsar varias veces este botón hasta que en la pantalla aparezca “turn off” y
luego se presiona enter.

Figura 2.3 Teclado básico de un NXT [17]


En el NXT se cuenta con el siguiente menú principal, ver Tabla 2.3
32

Tabla 2.3 Menú principal del NXT 2.0 [17] [20]

Programas que se
han descargado del
computador
Programas que han
sido realizados en el
NXT
Sonidos que son
parte del programa

En este sub-menú, se puede programar


directamente el NXT.

Permite experimentar con los sensores y los


motores, para esto se utilizan programas que están
listos para funcionar.

Se puede
seleccionar el
icono del sensor
o del motor que
desea probar.
Sólo se puede
obtener lecturas
de un sensor o
motor a la vez.
Se puede
seleccionar el
puerto al que el
sensor o el motor
va ser conectado

Los datos del


sensor o del
motor aparece
en la pantalla
Modo Sleep Configuración en
modo sleep de 2, 5,
10, 30 o 60 minutos,
cuando no se está
33

utilizando.

Cambio de volumen Ajuste de volumen


del sonido del NXT
en un rango de 0 a 4

Eliminación de a
Eliminar todos los partir de cuatro
programas subcarpetas:
Software files, NXT
files, Sonido files, y
Try Me files.

En el submenú Bluetooth, se puede establecer una


conexión inalámbrica, conexión entre el NXT y
otros dispositivos Bluetooth, con otras unidades
NXT, teléfonos móviles y computadoras.
Se puede utilizar una conexión inalámbrica para
descargar los programas.

La distribución de los elementos principales del Kit LEGO en el NXT se presenta


en la Tabla 2.4

Tabla 2.4 Puertos predeterminados [17]

Puertos de entrada Puertos de salida


1 Sensor de contacto A Motor para funcionamiento extra
2 Sensor de contacto B Motor izquierdo
3 Sensor RGB C Motor derecho
4 Sensor de ultrasonido

2.1.2 SERVOMOTORES

El kit LEGO 2.0 contiene tres servomotores, ver la Figura 2.4, los cuales
proporcionan el movimiento, cada motor consta de un sensor de rotación
34

integrado, el mismo que permite tener movimientos con mucha precisión


(precisión de +/- 1 grado).

Núcleo del
Cilindro con agujero
motor
Tacómetro para el Juego de para colocar el eje
sensor de rotación engranajes para la rueda
a b

Figura 2.4 Servomotor: (a) vista interna (b) vista externa [20]

Los servomotores de corriente DC están construidos en base a una gran cantidad


de engranajes internos, ver Figura 2.4a. Éstos pueden rotar hasta alcanzar 170
rpm (revoluciones por minuto), trabajan en un rango de -9V a +9V y tienen un
peso de 80 g.
En la Figura 2.5 se puede observar las curvas características velocidad (en
revoluciones por minuto) vs nivel de potencia de un motor NXT

Motor sin carga, alimentación


de 9V, Relación lineal
velocidad vs nivel de potencia

Motor sin carga ,alimentación


de 7.5V. Relación lineal pero
con velocidad menor

Motor con carga de 11.5N.cm,


alimentación de 9V, El motor
se detiene por debajo del 40%
del nivel de potencia,

Motor con carga de


11.5N.cm, alimentación de
9V y control de potencia.

Motor con carga de


11.5N.cm, alimentación
de 7.2V.

Figura 2.5 Curva velocidad vs nivel de potencia [21]


En la Figura 2.6 se muestran las características del motor NXT versus la carga
aplicada. Para las curvas de color azul oscuro, el NXT fue accionado a 9 V
(voltaje de las baterías alcalinas), los magenta se obtuvieron a 7,2 V (tensión de
las baterías de NiMH). El nivel de potencia es de 100% para todas.
35

a) Potencia mecánica vs Torque c) Eficiencia vs Torque

b) Velocidad de rotación vs Torque d) Corriente vs Torque

Figura 2.6 Características del motor en función de la carga [21]

Según la información del kit Lego Mindstorms™, de la Figura 2.7 los terminales
MA0 y MA1 corresponden a las salidas del driver LB1836 ó LB1930 , al cual debe
conectarse el motor; POWERMA (Potencia al motor A) es una señal de voltaje
(4.3V) común en todos los puertos de salida y entrada, para alimentar otros
circuitos; y los pines TACHOA1 y TACHOA0 son las señales del encoder del
motor ’A’, que portan información sobre el número de pulsos generados cuando el
motor esta en movimiento y el sentido de giro del mismo .

Figura 2.7 Circuito Electrónico Controlador NXT [22]


36

En la Tabla 2.5 se puede observar un servomotor NXT con todas sus partes.

Tabla 2.5 Partes internas del Servomotor NXT [21]

El componente amarillo es un fusible


que protege el motor y el NXT de
sobrecorrientes. Es un RXE065
Raychem o Bourns MF-R065.

El otro lado del motor muestra la


rueda del encoder y el encoder óptico
que proporcionan la función de
rotación del sensor en el motor NXT

El componente negro rectangular en


la parte superior es un supresor de
picos de tensión que se fija a un
máximo de 15 voltios.

Del motor al eje de salida tenemos la


siguiente relación de engranajes:
10:30:40 = 1:4
9:27 = 1:3
10:20 = 1:2
10:13:20 = 1:2

Total 1:48
Rueda del encoder y partes de la
carcasa. Contamos con 12 ranuras en
codificador y motor para la reducción
de engranaje del encoder es 10:32.
Así que por un cambio de eje de
salida, existe un giro de 48 * 10/32 =
15 vueltas, el encoder óptico ve 15 *
12 = 180 ranuras. Utilizando ambos
lados de las ranuras tenemos
resolución 360 por turno. Se debe
tener en cuenta que puesto que
existe un codificador de cuadratura, la
resolución máxima será de 720
dientes / vuelta.
37

2.1.3 SENSOR DE COLOR RGB

Este sensor incorpora tres LEDs (RGB: red, green, blue), ver Figura 2.8, de
distinto color que iluminan la superficie cuyo color desea detectarse. Se mide la
intensidad que esta superficie refleja para cada uno de los colores y mediante el
valor de la intensidad relativa reflejada de cada uno de los colores, el sensor de
color calcula un Número de Color, que es el valor que se devuelve al programa
NXT.

El sensor de color RGB se puede utilizar en tres Modos:

· Modo de sensor de color: puede detectar seis colores: negro, blanco,


rojo, verde, azul y amarillo.
· Modo de lámpara: es posible controlar los LED's del sensor en color rojo,
verde y azul.
· Modo de sensor de luz: actúa como el sensor de luz antigua: devuelve un
valor de 0-100 donde 0 es más oscuro, y el 100 es más brillante. En este
modo, también es posible elegir un LED de color deseado (de nuevo, rojo,
azul o verde).

El sensor de Color NXT se conecta a un puerto de sensores del NXT mediante un


cable NXT normal y hace uso del protocolo digital de comunicaciones I2C.

Se debe tener en cuenta que el sensor se lo debe colocar en forma perpendicular


a la superficie. [23]

Figura 2.8 Sensor de color RGB [23]


38

2.1.4 SENSOR ULTRASÓNICO

El sensor ultrasónico permite al robot detectar objetos, evitar obstáculos, medir


distancias, y detectar el movimiento. Al trabajar con el sensor se debe tomar en
cuenta que los objetos de gran tamaño con superficies duras proporcionan las
mejores lecturas mientras que los objetos hechos con tejidos suaves, de curva
(por ejemplo, un balón), o muy pequeños pueden ocasionar dificultades para
obtener lecturas adecuadas.

Este sensor utiliza el mismo principio que los murciélagos: mide la distancia
calculando el tiempo que tarda una onda de sonido para golpear un objeto y
volver, ver Figura 2.9. Este sonido no puede ser percibido por el ser humano ya
que el sensor trabaja a una frecuencia de 40KHz y un oído sano y joven es
sensible a las frecuencias comprendidas entre los 20 Hz y los 20 kHz.

El sensor ultrasónico mide la distancia en centímetros y pulgadas. Es capaz de


medir distancias 0-2,5 metros con una precisión de + / -3 cm, como precaución se
debe conocer que el sensor tiene una zona muerta que va desde 0 a 3 cm, esto
quiere decir que no detecta en este rango.

Figura 2.9 Sensor Ultrasónico [19]


39

2.2 DISEÑO DEL PRIMER PROTOTIPO

Para el diseño del prototipo se utiliza los siguientes elementos: ladrillo NXT, dos
servomotores, sensor RGB y piezas de enlace.

El primer prototipo es diseñado tratando de que el peso esté equilibrado, se trata


de hacerlo lo más próximo a un péndulo invertido. Con este diseño se logra el
equilibrio en las dos ruedas y es la base para el prototipo final.

Para el diseño se utiliza el programa LEGO DIGITAL DESIGNER 4.2, en la Tabla


2.6 se explica paso a paso cuales son las piezas que se utilizan y como están
unidas.

2.2.1 DISEÑO EN EL PROGRAMA LEGO DIGITAL DESIGNER 4.2

Tabla 2.6 Diseño del prototipo 1 en el programa LEGO DIGITAL DESIGNER 4.2

Cantid Piezas Elemento formado


ad
2

(4cm)
4

8
40

(11 Orificios)
2

(13 Orificios)
1
41

(11 Orificios)
3

2
(9c
m)
2

1
(5c
m)
2

(Cable 35cm)
42

2.2.2 IMPLEMENTACIÓN DEL PROTOTIPO

Tabla 2.7 Implementación del prototipo con piezas del LEGO MINDSTORMS NXT

Piezas Elemento Formadp


43

2.2.3 MODELADO DEL SISTEMA FÍSICO

Una vez obtenida la planta (prototipo) se procede a determinar la función de


transferencia para lo cual se hace referencia a la Figura 2.10 (a) la cual muestra
un sistema del péndulo invertido.

La literatura sobre el modelado del péndulo invertido es abundante, se encuentran


modelos basados tanto en técnicas de dinámica de Lagrange, como en leyes de
Newton. Para este caso se presenta un modelo basado en las leyes de Newton.
En la Figura 2.10 (b) se ilustra un diagrama de cuerpo libre para el sistema.
44

Figura 2.10 (a) Sistema del péndulo invertido (b) Diagrama de cuerpo libre [24]

El péndulo puede girar en cualquier instante y en cualquier dirección por lo cual es


un sistema inestable, para el modelado de la planta se tomará en cuenta dos
dimensiones entonces el péndulo sólo se moverá en el plano de la hoja.

A continuación se da a conocer las ecuaciones necesarias para el modelado de la


planta.

Ec(10)

Ec(11)

La Ec(10) y la Ec(11) corresponden a las coordenadas en el eje X y en el eje Y,


respectivamente, del centro de gravedad del péndulo.

A continuación se presentan las ecuaciones que están relacionadas con el


movimiento.

Movimiento rotacional del péndulo:

Ec(12)
45

Movimiento horizontal del péndulo:

Ec(13)

Movimiento vertical del péndulo:

Ec(14)

Movimiento horizontal del carro:

Ec(15)

Las ecuaciones presentadas son no lineales ya que presentan sen(θ) y cos(θ), para
poder linealizarlas se considera el ángulo θ pequeño con lo cual se obtiene las
siguientes ecuaciones.

Ec(16)

Ec(17)

Ec(18)

Ec(19)

Ec(20)

Ec(21)

De la Ec(21) se desprecia el parámetro I (momento de inercia del cuerpo del


péndulo), el cual por lo general es muy pequeño en comparación con la masa M y
la longitud del centro de masa del cuerpo del péndulo, con lo cual se obtiene que:
46

Ec(22)

De la Ec(20) se despeja y se reemplaza en Ec(22) con lo cual se obtiene lo

siguiente:

Ec(23)

Ec(24)

Ec(25)

Una vez obtenida la expresión matemática se reemplazan valores, mostrados en


la Tabla 2.8, y así se obtiene la función de transferencia con la que se trabaja
para posteriormente obtener el controlador PID.

Ec(26)

Ec(27)

Tabla 2.8 Parámetros físicos del sistema

Parámetros Físicos del Sistema


M Masa de la rueda 0.124Kg
m Masa del cuerpo del 0.557Kg
péndulo
l Distancia del centro de 0.072m
masa al eje de las ruedas
g Aceleración de la gravedad 9.81m/s2
47

Para observar el comportamiento de la planta se utiliza el programa


computacional matlab en el cual se ingresa el comando rltool(G(s)) y este
despliega el diagrama de polos y ceros (ver Figura 2.11) el mismo que muestra
que la planta es inestable ya que se tiene un polo en la parte derecha del plano.
En la Figura 2.12 se puede observar la respuesta que tiene la planta a una
entrada paso.

Figura 2.11 Diagrama de polos y ceros

Figura 2.12 Respuesta del sistema ante una entrada paso


48

2.2.4 DISEÑO DEL CONTROLADOR PID

En el capítulo 1 se da a conocer lo que es un PID como funciona y como se lo


puede utilizar, en esta parte se lo va a diseñar, para lo cual se da a conocer la
topología que se va a considerar, donde T es el tiempo de muestreo. Ver figura
2.13

Figura 2.13 Diseño paralelo de controlador PID.

2.2.4.1 Diseño Por Software

Para la parte del diseño no se detalla la parte matemática porque gracias a


programas computacionales se puede obtener el PID. Para esto se utiliza el
comando SISOTOOL de Matlab, al estar en esta ventana se da click en la
pestaña Automated Tuning y en la parte que dice Design Metod se elige PID
Tuning. Ver Figura 2.14.

Figura 2.14 Automated Tuning


49

En la nueva ventana, Figura 2.15, se configura lo siguiente:

· Controller type: en este caso PID,


· Tuning algorithm: se elige Singular frequency based tuning
· Performance metric: se elige Integral Absolute Error (IAE)

Figura 2.15 Configuración de parámetros

Una vez configurado se da click en Ubdate Compensator y Matlab


automáticamente presenta el compensador. Ver Figura 2.16

Figura 2.16 Controlador obtenido


50

La función de transferencia del controlador es la siguiente:

Ec(28)

Ec(29)

Donde:

P=14.497

D=4.999

I=4.999

Una vez obtenido el controlador se procede a realizar la simulación del


sistema (planta con su compensador PID) en lazo cerrado, ver Figura 2.17.
Como se puede observar el tiempo de establecimiento y el sobreimpulso son
relativamente altos pero el sistema se estabiliza con error de cero, por lo cual
este PID es una buena aproximación lo cual ayuda a una pronta calibración.

Figura 2.17 Respuesta del sistema ante una entrada paso


51

2.2.4.2 Calibración Del PID

La calibración se realiza mediante el método de prueba y error llegando a valores


un poco más altos de los obtenidos anteriormente pero se obtiene una mejor
respuesta, en la Figura 2.18 se muestra el mejoramiento del tiempo de
establecimiento y el sobreimpulso. Es necesario mejorar el tiempo de
establecimiento porque al dejar 5.32 segundos el prototipo no logra el equilibrio
debido a que ese tiempo para el NXT es muy grande y el Segway simplemente se
cae.

Figura 2.18 Respuesta del sistema ante una entrada paso

Al colocar este controlador al prototipo se logra el equilibrio, se debe mencionar


que el modelo implementado tiene un rango de oscilación por lo cual se realizan
unos pequeños ajustes al controlador y se logra que el Segway oscile una
distancia más corta.
52

2.3 DISEÑO DEL SEGUNDO PROTOTIPO

En este prototipo se utiliza los siguientes elementos: ladrillo NXT, tres


servomotores, sensor RGB, sensor ultrasónico y piezas de enlace; al igual que en
el primer diseño se utilizará el programa LEGO DIGITAL DESIGNER 4.2, para
detallar paso a paso el ensamblaje. Ver la Tabla 2.9.

En este diseño se incrementa un motor debido a que este es el cuerpo del


Segway el mismo que realiza las perturbaciones al sistema, este motor hace que
el cuerpo del prototipo se incline hacia adelante o atrás atendiendo a una orden
enviada desde el NXT remoto mediante una señal Bluetooth. También se
incrementa el sensor ultrasónico el cual envía una orden de movimiento del
cuerpo del Segway hacia atrás una vez detectado un objeto a distancias menores
a 15cm.

2.3.1 DISEÑO EN EL PROGRAMA LEGO DIGITAL DESIGNER 4.2

Tabla 2.9 Diseño del prototipo en el programa LEGO DIGITAL DESIGNER 4.2

Cantidad Piezas Elemento formado


4

1
53

(15 orificios)
1

(11 orificios)
3

(Cable 35cm)
1

(11 orificios)
3

(3)
2

(7cm)
54

(5cm)
2

(3 orificios)
2

(7 orificios)
2

(5 orificios)
2

18

(7 orificios)
55

(5cm)
6

(9 orificios)
2

(cable 20cm)
4
56

(5 orificios)
1

(12cm)
2

2.3.2 CONEXIÓN DE SENSORES Y ACTUADORES

La conexión de sensores y actuadores se realiza en los puertos que vienen ya


establecidos por el fabricante, como se mostró en el capítulo 2, Tabla 2.4. Claro
está que no necesariamente deben ser colocados así ya que los sensores pueden
ser colocados en cualquiera de los cuatro puertos de entrada así como los
motores en cualquier puerto de salida. Lo que se va a mostrar es donde está
colocado cada motor y sensor, en el prototipo Figura 2.19.

Figura 2.19 Asignación de puertos en el Segway


57

2.3.3 IMPLEMENTACIÓN DEL PROTOTIPO

En la Tabla 2.10 se puede observar la implementación del prototipo, el cual está


armado siguiendo los pasos de la simulación.

Tabla 2.10 Implementación del prototipo con piezas del LEGO MINDSTORMS
NXT 2.0

Piezas Elemento formado


58

18
59

2.3.4 MODELADO DEL SISTEMA FÍSICO

La parte matemática del sistema ya se dio a conocer en el modelado del prototipo


anterior por lo cual en esta parte solo se reemplazan valores, ver Tabla 2.11, en la
función de transferencia.

Tabla 2.11 Parámetros físicos del sistema

Parámetros Físicos del Sistema


M Masa de la rueda 0.124Kg
m Masa del cuerpo del 0.7472Kg
péndulo
l Distancia del centro de 0.114m
masa al eje de las ruedas
g Aceleración de la gravedad 9.81m/s2


Ec(30)

Ec(31)

Al colocar esta función de transferencia nos da los resultados gráficos de las


Figuras 2.20 y 2.21. En la una se puede apreciar el diagrama de polos y ceros en
la siguiente su respuesta ante una entrada paso, como se puede observar son
semejantes a las obtenidas en el primer prototipo teniendo así los mismos pasos
a seguir para la compensación del sistema.
60

Figura 2.20 Diagrama de polos y ceros

Figura 2.21 Respuesta del sistema ante una entrada paso


61

2.3.5 DISEÑO DEL CONTROLADOR PID

Una vez analizado el comportamiento de la planta se procede a determinar el


controlador.

2.3.5.1 Diseño Por Software

Para el primer prototipo ya se dio los pasos que se deben seguir por lo tanto en
esta parte solo se muestran las gráficas y los datos obtenidos.

En la Figura 2.22 se muestra el controlador que entrega matlab.

Figura 2.22 Controlador PID obtenido por Matlab

La función de transferencia del controlador es la siguiente:

Ec(32)
62

Ec(33)

Donde:

P=20.34

D=5.1289

I=4.999

Una vez obtenido el controlador se realiza la simulación, para obtener la gráfica


del comportamiento del sistema ante una entrada paso. Ver Figura 2.23

. Figura 2.23 Respuesta del sistema ante una entrada paso

En la Figura 2.23 se observa que se logra estabilizar la planta pero el tiempo de


establecimiento es muy grande además se tiene un sobreimpulso bastante alto
por lo cual se lo debe calibrar.
63

2.3.5.2 Calibración Del PID

Mediante el método de prueba y error se obtiene los valores adecuados para el


compensador obteniendo así la siguientes gráfica. Figura 2.24

. Figura 2.24 Respuesta del sistema ante una entrada paso

En el programa del Segway se colocan los valores obtenidos y al realizar las


pruebas se obtiene un tiempo de muestreo de 0.0077 segundos.

2.4 DISEÑO DEL PROTOTIPO FINAL

Para este prototipo se agregan unas piezas al diseño anterior por lo cual tanto en
el diseño como en la implementación se muestra la parte extra y donde fue
colocada.
64

2.4.1 DISEÑO EN EL PROGRAMA LEGO DIGITAL DESIGNER 4.2

En la Tabla 2.12 se muestra las piezas que son añadidas y como estás
colocadas.

Tabla 2.12 Diseño del prototipo en el programa LEGO DIGITAL DESIGNER 4.2

Cantidad Piezas Elemento formado


20

(9 orificios)
2

2.4.2 IMPLEMENTACIÓN DEL PROTOTIPO

Al igual que en los demás prototipos, en esta parte se muestra la implementación


con las partes reales, ver la Tabla 2.13
65

Tabla 2.13 Implementación del prototipo con piezas del LEGO MINDSTORMS

Piezas Elemento formado

Las partes añadidas son para producir más sombra en el área de trabajo ya que
al realizar las pruebas se tiene problemas al tener luces intensas, lo que se
pretende es que no interfieran luces externas con la emisión y recepción de luz
del sensor.
66

CAPITULO 3
DESARROLLO DE LA LÓGICA DE PROGRAMACIÓN

En este capítulo se logrará obtener el movimiento del prototipo mediante la


programación; para ello se utilizará la programación NXT la cual trabaja a partir de
una interfaz gráfica.

3.1 TIPOS DE PROGRAMACIÓN

Las plataformas de LEGO pueden ser programados por distintos lenguajes,


existen los propios de la familia LEGO MINDSTORMS y los que se han ido
adaptando considerados de “libre uso”.

3.1.1 PROGRAMAR SIN UTILIZAR UN ORDENADOR

Con los iconos mostrados en la Figura 3.1 se puede programar directamente


desde el NXT claro que esta sería una programación de tareas sencillas, causa y
efecto.

Figura 3.1 a) Ícono Try Me b) Ícono programa NXT [25]

La sección Try Me tiene unos programas incorporados los cuales serán elegidos
para cada sensor.

A continuación se muestra un ejemplo de la utilización, para ello se utilizará el


sensor acústico, los pasos son los siguientes.

1. Utilizando los botones de navegación seleccione el icono de programas


Pruébame.
67

2. Pulse el botón Intro naranja


3. Aparecerá el icono de Try-Touch (Probar sensor táctil); pulse el botón de
navegación hacia la derecha hasta que aparezca el icono de Try-Sound.
4. Pulse el botón Intro de color naranja dos veces para ejecutar el programa.

Para probar el programa se tendrá que estar en completo silencio, posteriormente


realizar un sonido entonces el robot se moverá.

Lo mismo se puede realizar con los demás programas, Try-Touch (Probar sensor
táctil). Try-Ultrasonic (Probar sensor ultrasónico), Try-Light (Probar sensor
fotosensible).

En el menú de programa de NXT se puede escribir un programa sencillo de 2


pasos siguiendo el proceso de Salida Entrada, Salida, Entrada, Siguiente.

Para acceder al menú de programación se debe elegir el ícono que se observa en


la Figura 3.1b. Una vez elegido haga clic en el botón naranja La primera pantalla
muestra cómo conectar el sensor cuando aparece la pantalla de programación.

A continuación en la Tabla 3.1 se puede ver una pequeña selección de iconos de


programación disponibles.

Tabla 3.1 Íconos de programación en el NXT [25]

Salidas Entradas Siguiente


Adelante Oscuro Bucle

Adelante 5 Claro Stop


Girar a la derecha Sensor táctil
Girar a la derecha 2 Esperar 2

Girar a la izquierda Esperar 5

Girar a la izquierda 2 Esperar 10


Atrás

Atrás 5
Tono 1
68

3.1.2 ROBOLAB 2.9

Robolab es una herramienta gráfica que inicialmente fue utilizada con los
sistemas de robótica basados en Lego RCX (Robotic Command Explorer).
Robolab está escrito en LabVIEW (LabVIEW es un lenguaje de programación
gráfica de la empresa National Instruments) mediante un acuerdo entre National
Instruments, la Universidad de Tufts y Lego. Ver Figura 3.2.

Figura 3.2 Entorno de trabajo del software Robolab [26]

Inicialmente se pensaba que Robolab 2.9 era una versión de transición para que
los usuarios del RCX y Robolab 2.54 pudiesen migrar con facilidad hacia el nuevo
NXT, pero no es así ya que esta versión tiene un gran avance con respecto de la
versión 2.54 y además es una herramienta mucho más completa para un mayor
control del NXT.

Robolab incorpora su propia versión de firmware para el NXT que no es


compatible con el nuevo software para el NXT. Pero esto no es una desventaja ya
69

que la versión del firmware del NXT que viene en el Robolab 2.9 es mucho más
potente que la que viene en el propio software del NXT.

El único inconveniente que tiene Robolab es que no viene incorporado Bluetooth.


[26]

3.1.3 LABVIEW TOOLKIT

LabVIEW toolkit es un software diseñado para trabajar con las plataformas


robóticas LEGO MINDSTORMS, ofreciendo una herramienta sofisticada para la
enseñanza que ayuda a los estudiantes a programar el bloque LEGO
MINDSTORMS NXT.

Permite una programación mucho más avanzada que con NXT-G, además, con el
LabVIEW Toolkit for LEGO MINDSTORMS NXT es posible desarrollar nuevos
bloques de programación para NXT-G.

En la Figura 3.3 se puede observar el entorno de trabajo que ofrece Lab VIEW.

Figura 3.3 Programación en LabVIEW [27]


70

3.1.4 NXC (Not eXactly C)

Para dar a conocer este lenguaje primero se tiene que hacer referencia a un
lenguaje anterior, el NBC (Next Byte Codes) que es un lenguaje de programación
con una sintaxis muy parecida al ensamblador que permite programar el NXT a
bajo nivel usando el firmware standard. Este tipo de programación permite escribir
programas muy rápidos y eficaces y que además ocupan poco espacio.

A diferencia de otros lenguajes ensambladores, NBC es un lenguaje de


mayúsculas y minúsculas. Esto significa que el identificador "xYz" no es el mismo
identificador "Xyz". Del mismo modo, la instrucción de resta comienza con la
palabra clave "sub", pero "suB", "Sub" o "SUB" son sólo identificadores no
palabras clave.

En la Tabla 3,2 se muestra una lista completa de palabras clave.

Tabla 3.2Palabras clave que se usan en la programación [28]

add sub neg mul


div mod and or
xor not cmp tst
index replace arrsize arrbuild
arrsubset arrinit mov set
flatten unflatten numtostr strtonum
streat strsubset strtoarr arrtostr
jmp brcmp brtst syscall
stop exit exitto acquire
release subcall subret setin
setout getin getout wait
gettick therat endt subtoutine
follows precedes segment ends
typedef struct db byte
sbyte ubyte dw word
sword uword dd dword
sdword udword long slong
ulong void mutex waitv
call return abs sign
strindex strreplace strlen shl
shr sizeof compchk compif
compelse compend Isconst
asl asr lsl lsr
rotl rotr start stopthread
71

priority cmnt fmtnum compchkty


float wait2 sqrt waitv
arrop acos asin Atan
ceil exp floor Tan
tanh cos cosh log
log10 sin sinh trunc
frac atan2 pow muldiv
acosd asind atand tand
tanhd cosd coshd sind
sinhd atan2d addrof

NXC( Not eXactly C -No eXactamente C) es un lenguaje de programación de alto


nivel basado en C. Es un software de programación textual, ver Figura 3.4 y las
diferencias con C son mínimas dado que es una especie de lenguaje C adaptado
a la programación de robots LEGO. Está construido sobre el compilador NBC por
lo cual era primordial hablar un poco del mismo.

Figura 3.4 Programación con NXC [28]


72

3.1.5 ROBOT C

Es una programación en modo texto, basado en C, también es un software oficial


de LEGO. Los programas en modo texto ocupan mucha menos memoria que los
gráficos y eso siempre es un alivio debido a las limitaciones de memoria del
ladrillo NXT (aunque en la versión 2.0 la capacidad se ha duplicado). Los
programas son livianos y de rápida ejecución, sin embargo son necesarios
conocimientos de programación.

Robot C incluye un entorno de programación IDE (integrated development


environment) tanto para escribir como para depurar los programas. Es, de hecho,
el único lenguaje a este nivel que ofrece un depurador en tiempo real. RobotC
puede emplearse tanto para aprender a programar en C como para aplicaciones
profesionales.

El editor de código fuente dispone de un editor de textos predictivo opcional,


permite el auto-completado de funciones y variables. RobotC da soporte I2C
(Inter-Integrated Circuit), dispone de data-logging, punto flotante, comunicaciones
bluetooth (tanto entre NXTs, como de NXT a otros dispositivos).

Su interfaz de usuario se puede ver en la Figura 3.5.

Figura 3.5 Programación con Robot C [29]


73

3.1.6 SOFTWARE NXT

Lego Mindstorms NXT, es la nueva apuesta de Lego y National Instruments para


conseguir una herramienta de programación que permita de una forma rápida y
sencilla programar las diferentes plataformas realizadas con el ladrillo NXT.

La forma de programar es sencilla y muy vistosa ya que es un software gráfico (al


modo de LabVIEW) en el que se programa por medio de secuencias de bloques
por medio de arrastrar y soltar. Ver la Figura 3.6

La descarga de programas ha ganado mucho en velocidad con respecto al RCX


además gracias al uso de la tecnología Bluetooth se pueden descargar los
programas, parar y arrancar el robot sin necesidad de acercarlo al ordenador

Figura 3.6 Entorno de trabajo del software NXT [26]


74

3.2 PROGRAMACIÓN

Para comenzar este tema se explicará de forma más detallada el funcionamiento


del prototipo.

A diferencia de los robots de equilibrio que utilizan un sensor giroscópico u otros


sensores especiales, este diseño sólo utiliza el sensor de color RGB por lo cual
debe iniciar con condiciones específicas como son: tener una superficie de brillo
uniforme en este caso fomix de color blanco y lo más importante es que el
prototipo debe iniciar en total equilibrio ya que en este instante emite la luz la
misma que es tomada como valor de set-point.

Como el Segway debe comenzar en equilibrio al inicio del programa se emiten


pitidos con un intervalo de tiempo considerable permitiendo así que se tome un
valor de set-point adecuado. Posteriormente existe un pitido final que anuncia el
inicio del controlador PID, al realizar todos los cálculos respectivos del PID este
resultado es el valor de potencia que va a los motores B y C.

El motor A es el encargado de mover el cuerpo del Segway hacia atrás y hacia


adelante, esto hace respondiendo a las perturbaciones enviadas vía Bluetooth por
el NXT remoto. Este motor al inicio del programa está trabado para que el Segway
se encuentre totalmente vertical y el sensor pueda tomar una lectura adecuada.

El sensor ultrasónico también hace que se mueva el cuerpo del Segway pero sólo
hacia atrás, ya que si detecta un objeto este se hará para atrás con el afán de no
golpearse.

3.2.1 SOFTWARE UTILIZADO

El ladrillo NXT es programado con el lenguaje NXT, para lo cual se profundizará


en su manejo. En la Figura 3.7 se puede observar cada una de las prestaciones
que da LEGO MINDSTORMS NXT, posteriormente se da a conocer la utilidad de
cada uno en la Tabla 3.3.
75

Figura 3.7 Partes que conforman el área de trabajo del software NXT [20]

Tabla 3.3 Partes del entorno gráfico del programa LEGO MINDSTORMS NXT [20]

Item Nombre Reseña


Robot Educator Aquí se encuentra estructuras e
instrucciones de programa.
Mi Portal Aquí se puede acceder a
www.MINDSTORMSeducation.com
y encontrar información
herramientas y realizar descargas
Barra de herramientas Incluye los comandos de uso más
frecuente desde la barra de menús
en un formato de fácil ubicación.
Área de trabajo Aquí tiene lugar la programación, a
esta área es donde se arrastra los
bloques desde la barra de paletas.

Pequeña ventana de Aquí se puede conseguir la ayuda


ayuda necesaria para continuar con el
programa.
Mapa del área de trabajo Se encuentra en la parte inferior
izquierda, se la utiliza para tener
visión general
76

Paleta de programación Aquí se encuentran todos los


bloques de programación
necesarios para crear los
programas. En la
parte inferior de la paleta se puede
cambiar entre paleta común
[que contiene los bloques de uso
más frecuente], la paleta completa
[que contiene todos los bloques], y
el paleta personalizada [bloques
que se pueden descargar o se
pueden crear ].
Panel de configuración Cada bloque de programación
tiene un panel de configuración
que le permite personalizar el
bloque específico para la entrada y
salida que desee
Controlador Los botones del Controlador
permiten descargar programas (o
partes de programas) desde el
ordenador al NXT. Con el
controlador también puede cambiar
la configuración del NXT.
Ventana NXT Esta ventana emergente
proporciona información sobre la
configuración del NXT.

En la Tabla 3.4 se puede observar la utilidad de cada bloque presente en la paleta


de programación.

Tabla 3.4 Paletas de programación para LEGO MINDSTORMS NXT

Paleta común

Bloque de Con este bloque se puede hacer que los motores del robot se
movimiento muevan o que las lámparas se enciendan.

Bloque de Este bloque permite programar el robot con movimiento y luego


Grabación/ reproducir el movimiento en otras partes del programa.
Reproducción

Bloque de Con este bloque se puede hacer que el robot emita sonidos
sonido incluyendo sonidos pre-grabados
77

Bloque de El bloque permite controlar la pantalla en el NXT.


visualización

Bloque de Este bloque hace que el robot espere entrada del sensor.
espera

Bloque de El bloque de bucle se usa si se desea que el robot haga una


bucle acción repetitivamente

Bloque switch Este bloque permite que el robot elija una acción por ejemplo: ir a
la izquierda cuando se oye un sonido fuerte o girar a la derecha
cuando escucha un sonido suave.

Paleta completa

Bloques
comunes

Estos bloques son los mismos que se mostraron en paleta común.


Bloques de
accionamiento

Los bloques de accionamiento permiten controlar los dispositivos de salida tales


como Servo Motor, Sonidos NXT, NXT pantalla, Bluetooth (Enviar).
Bloque de
sensores

Estos bloques se utiizan para controlar el comportamiento del robot con la


utilización de cada uno de los sensores, también se puede utilizar servomotores
y temporizadores
Bloques de
bloqueo

Estos bloques permiten crear comportamientos más complejos.


Los bloques incluyen control para la repetición, espera y condicionar variables.
78

Bloques de
datos

Estos bloques se utilizan cuando se quiere trabajar con lógica booleana,


condiciones aleatorias.
Avanzado

Estos bloques se utizan para añadir texto, convertir los datos a un texto,
controlar la función de apagado del NXT, guardar archivos en el NXT, calibrar
sensores y reiniciar motores.

Cada bloque de programación tiene un panel de configuración, el mismo que


aparece en la parte inferior de la pantalla.

Al cambiar los parámetros en cada panel de configuración, este cambiará su


manera particular de comportamiento. Por ejemplo, para que el robot se mueva
más rápido, puede cambiar la potencia en el panel de propiedades bloque Mover
configuración como se puede ver en la Figura 3.8.

Figura 3.8 Panel de configuración de los motores

A continuación se presenta el controlador, en la Figura 3.9 se va a detallar el


funcionamiento de cada uno de los cinco botones.
79

Figura 3.9 Funciones del controlador en el programa LEGO MINDSTORMS NXT


[20]

3.2.2 BLOQUES UTILIZADOS EN LA PROGRAMACIÓN

En esta parte se va a dar a conocer la manera de configurar cada elemento


utilizado en la programación, tanto para el NXT del Segway como para el NXT
que está trabajando como control remoto.

3.2.2.1 Bloque Motor

Permite el control de la velocidad del motor. En la Figura 3.10(a) se muestra el


bloque del motor, en la Figura 3.10(b) se muestra el panel de configuración el cual
se detalla a continuación.

· Port: permite elegir el puerto al que está conectado el motor.


· Direction: se puede elegir si el motor girará a adelante, atrás o trabar.
· Action: el motor trabajará en forma de rampa ascendente, rampa
descendente o constante.
· Power: permite variar la potencia ya sea con el slider o escribiendo el valor
requerido, va de 0 a 100. Esta es una ventaja ya que si se le envía un valor
80

mayor, el bloque en sí solo envía el valor máximo es decir si se envía 200 o


300 el bloque sólo enviará 100 y por ende el motor sólo girará al máximo
valor.
En esta parte indirectamente se varía la velocidad, como se pudo ver en la
Figura 2.5 del capítulo 2.
· Duration: Hay cuatro opciones para establecer la duración en la que el
motor o los motores se mantienen en marcha:
o Ilimitada.- Los motores seguirán funcionando hasta que otro bloque
les indique que paren, normalmente un sensor.
o Grados.- El motor girará su eje en un número de grados.
o Rotaciones.- El motor girará su eje un número de rotaciones
completas.
o •Segundos.- El motor girará un número determinado de segundos.
· Wait por Completion: al seleccionar esta opción el programa ejecutará el
siguiente bloque una vez que el bloque motor ha arrancado al mismo.
· Next Action: se puede elegir parar o flotación.

Figura 3.10 (a) Bloque motor (b) Panel de configuración

3.2.2.2 Bloque Sound

Emite un tono o reproduce un archivo de sonido. En la Figura 3.11 se puede ver


su bloque y su panel de configuración.

· Action: tiene dos opciones archivo de sonido y tono.


· Control: se puede elegir entre reproducir y parar.
81

· Volumen: cuenta con un slider para escoger el volumen o también se lo


puede escribir directamente.
· Function: se puede escoger si se necesita que este repitiendo
constantemente.
· Note: da la opción de escoger la nota y el tiempo de duración, la nota se
escoge en el teclado que se encuentra más abajo.
· Wait: al presionar “Wait for completation” el programa no avanzará hasta
que no haya finalizado el sonido.

Figura 3.11 (a) Bloque sonido (b) Panel de configuración

3.2.2.3 Bloque Rotation Sensor

Este bloque cuenta el número de grados (un giro completo de 360 grados) o
rotaciones completas que el motor gira. A través de cables de datos, este bloque
puede enviar el número actual de grados o rotaciones, y una señal lógica
(verdadero / falso) en función de si el número de grados o rotaciones están por
encima o por debajo de un punto de activación.

· Port: permite seleccionar el puerto que desea monitorear (A, B o C).


· Action: presenta dos opciones leer el valor actual de un sensor de rotación,
o restablecer el valor de un sensor de nuevo a cero.
· Compare: permite establecer la dirección en la que desea supervisar
mediante los botones de opción: hacia delante o hacia atrás. Use el menú
desplegable para definir si el bloque debe contar el número de rotaciones o
grados.

En la Figura 3.12 se muestra el bloque y panel de control respectivo.


82

Figura 3.12 (a) Bloque sensor de rotación (b) Panel de configuración

3.2.2.4 Bloque Color Sensor

Este bloque de sensor de color tiene dos modos: uno para la detección de
diferentes colores y el otro para medir la intensidad de la luz. A continuación se da
a conocer las funciones del panel de control

· Port: se elige el puerto en el que se encuentra el sensor.


· Action: permite elegir entre modo sensor de luz y modo sensor de color. Al
elegir modo sensor de luz, el sensor de luz encenderá su propio diodo
emisor de luz (rojo emite de forma predeterminada) y detectará si esta luz
se refleja de nuevo a él.
· Compare: permite ajustar el valor de activación o escribir un valor
directamente en el cuadro de entrada. Seleccione el botón de opción
situado a la derecha del control deslizante si desea que el bloque se
dispare por los niveles de luz más altos que el valor de activación,
seleccione el botón izquierdo para disparar el bloque con los niveles de luz
más bajo que el valor de activación.
· Function: si marca la casilla "Luz", el sensor de luz se encenderá su propia
fuente de luz y detectar si esta luz se refleja de nuevo a él. La luz generada
por defecto será rojo, pero puedes elegir verde o azul dependiendo de la
superficie.
83

En la Figura 3.13 se muestra su bloque correspondiente y su panel de


configuración.

Figura 3.13 (a) Bloque sensor de color RGB (b) Panel de configuración

3.2.2.5 Bloque Variable

Una variable es un lugar para almacenar un valor en el NXT incorporado en la


memoria. Para crear una variable, primero debe seleccionar el comando Definir
variables en el menú Edición del software. En la ventana de diálogo, dar a la
variable un nombre corto, fácil de entender y establecer el tipo de dato (por
ejemplo, texto, número o lógica). A continuación se detalla el panel de
configuración.

· List: permite elegir la variable antes guardada ya que presenta una lista de
todas las variables con su nombre y tipo de dato.
· Action: permite elegir si la variable va ser de "lectura" o de escritura". La
elección de escribir en una variable le permitirá cambiar el valor de la
variable en el tiempo, sobreescribiendo su valor actual con la nueva
información. La elección de leer permite tomar el valor de otro bloque
constantemente.

A continuación se muestra su bloque y panel de configuración en la Figura 3.14.


84

Figura 3.14 (a) Bloque variable (b) Panel de configuración

3.2.2.6 Bloque Math

Este bloque realiza operaciones aritméticas simples como suma, resta,


multiplicación y división. El bloque también puede realizar valor absoluto y raíz
cuadrada. Los números de entrada se pueden escribir o suministrar de forma
dinámica por medio de cables de datos.

En la Figura 3.15 se presenta el bloque y el panel de configuración.

Figura 3.15 (a) Bloque math (b) Panel de configuración

3.2.2.7 Bloque Compare

Este bloque permite determinar si un número es mayor que (>), menor que (<) o
igual a (=) otro número. Los números de entrada se puede escribir o suministrar
de forma dinámica por medio de cables de datos.

En la Figura 3.16 se presenta el bloque con su panel de control.


85

Figura 3.16 (a) Bloque compare (b) Panel de configuración

3.2.2.8 Bloque Range

Este bloque permite determinar si un número está dentro o fuera de un rango de


números. Los números de entrada se puede escribir, fijar mediante los
reguladores, o suministrados de forma dinámica por medio de cables de datos.
Este bloque tiene la salida lógica (verdadero / falso). La Figura 3.17 muestra el
bloque con su respectivo panel de configuración.

Figura 3.17 (a) Bloque range (b) Panel de configuración

3.2.2.9 Bloque Wait

Este bloque tiene diferente panel de configuración dependiendo con el sensor


que se lo utilice, en el programa que se va a presentar sólo se ocupa como
retardo para lo cual se trabaja con la opción "Time", posteriormente solo se elige
86

el tiempo que se requiere. En la Figura 3.18 se muestra su bloque y panel de


configuración.

Figura 3.18 (a) Bloque wait (b) Panel de configuración

3.2.2.10 Bloque Loop

Este bloque se utiliza cuando se desea repetir secuencias de código. Este bucle
terminará una vez se haya cumplido con la condición como son: tiempo
transcurrido, número de repeticiones, una señal lógica o un sensor. También
puede establecer un bucle infinito.

En la Figura 3.19 se presenta el bloque y panel de configuración

Figura 3.19 (a) Bloque loop (b) Panel de configuración


87

3.2.2.11 Bloque Switch

Este bloque permite elegir entre dos secuencias de código. Por ejemplo, cuando
se configura con un sensor de contacto, el bloque conmutador podría ejecutar una
serie de bloques cuando el sensor se presiona y otro cuando el sensor de
contacto no está presionado. En la Figura 3.20 se muestra el bloque y el panel de
configuración el cual será más detallado a continuación.

· Control: aquí se selecciona si se tiene entrada desde un sensor o de un


valor.
· Type: este campo indica el tipo de entrada detectada por el bloque puede
ser lógico, numérico o de texto.
· Display: al no seleccionar "flat view", el bloque switch usará una interfaz
con pestañas para mostrar las secuencias alternativas de bloques de
programación.
· Conditions: al hacer clic en una pestaña, usted será capaz de ver y editar
los bloques y ver en qué condición hará que los bloques se ejecuten.

Figura 3.20 (a) Bloque switch (b) Panel de configuración


88

3.2.2.12 Bloque Switch (Sensor Ultrasónico)

Este bloque trabaja igual que el Switch anterior pero obedeciendo a un valor
enviado por el sensor ultrasónico. En la Figura 3.21 se muestra el bloque y el
panel de configuración el cual es más detallado a continuación.

· Control: permite seleccionar si la entrada es un valor o es un dato del


sensor.
· Sensor: permite elegir que sensor se va a ocupar, al dar un click en la
pestaña se despliega una lista de todos los sensores.
· Display: al no seleccionar "flat view", el bloque switch usará una interfaz
con pestañas para mostrar las secuencias alternativas de bloques de
programación.
· Port: se selecciona el puerto al cual está conectado físicamente el sensor
caso contrario no se obtendrá los valores, por defecto, el bloque se
encuentra en el puerto 4.
· Compare: permite utilizar el control deslizante para ajustar el valor de
activación o también permite escribir un valor directamente en el cuadro de
entrada. En la configuración por defecto de 50 (127), el programa se
ejecutará los bloques de programación en la viga secuencia superior si el
sensor ultrasónico detecta un objeto en más de 50 pulgadas (127 cm) y
ejecute los bloques en el haz de secuencia inferior si detecta un objeto a
menos de 50 pulgadas (127 cm).
· Show: permite seleccionar si se va a trabajar en pulgadas o en
centímetros.

Figura 3.21 (a) Bloque switch (b) Panel de configuración


89

3.2.2.13 Cable De Datos

Los cables de datos transportar información entre bloques de programación. Cada


cable sólo puede transportar un determinado tipo de datos (texto, número o
lógica). Si se conecta un cable de datos a un enchufe del tipo de datos incorrecto,
el cable será "roto", los programas con hilos rotos de datos no se puede
descargar ni ejecutar. Como se muestra en la Figura 3.22

Figura 3.22 Cables de conexión en un bloque

3.2.3 DIAGRAMA DE FLUJO DE LA PROGRAMACIÓN

Una vez detallada la forma de utilizar cada bloque de programación ocupado en


este programa será más fácil el ubicar cada bloque en la secuencia del siguiente
diagrama. Ver Figura 3.23.
90

INICIO

X
Colocar valores de las constantes Kp, Ki y Kd
Inicializar las variables (Error, integral,
ErrorAnt, Angulo A, control, aux) en cero

Bloquear el eje del motor A

Emitir 4 pitidos para iniciar

Tomar la lectura del sensor RGB y


guardar el valor en la variable Mid

Un pitido de tono más alto anuncia el


inicio del lazo de programa

Recibe señal NO

de Bluetooth?

Recibe señal del NO


SI sensor ultrasónico?

NO NO
Adelante? SI Control = 1?
Sumar 5 grados
SI
a AnguloA SI

Sumar 5 grados Restar 5 grados a Sumar 1 a la


a AnguloA AnguloA variable Aux
Guardar valor en
variable AnguloA
Guardar valor en
Guardar valor en variable Aux
variable AnguloA Control = 1
NO
Aux=90?

SI

Restar 5 grados a
AnguloA

Guardar valor en
variable AnguloA

Escribir Aux=0 y
Control=0

A
91

Leer el valor del tacómetro del motor A

Leer el valor actual del ángulo del motor A


(AnguloA)

Restar el valor del tacómetro con el valor


actual del motor A

NO
Valor>0?

SI

Mover motor A hacia adelante Mover motor A hacia atrás

Leer el valor actual del sensor RGB

Restar el valor actual del sensor RGB con el valor


inicial del sensor RGB (Mid) y guardar el resultado
en “Error”

Sumar “Error” con “Integral” y guardar el resultado


en “Integral”

Sumar “Error” con “ErrorAnt” y guardar el resultado


en “Derivativo”

Multiplicar “Kd” con “Derivativo”


Multiplicar “Ki” con “Integral”
Sumar los dos valores anteriores=X

Leer el valor del “Error” y escribirlo en “ErrorAnt”,


multiplicar este valor con “Kp”=Y

Z=X+Y

NO
Z>0?

SI
Mover motores By C hacia adelente, Mover motores B y C hacia atrás,
siendo la potencia el valor de Z siendo la potencia el valor de Z

NO
Z<1000?

SI
X NO
Z<-1000?

SI FIN

Figura 3.23 Diagrama de flujo del Segway


92

3.3 MANEJO DEL BLUETOOTH

Bluetooth es una tecnología de comunicación inalámbrica para la transmisión de


voz y datos por un enlace de radiofrecuencia. Los principales objetivos son:

· Facilitar las comunicaciones entre equipos móviles y fijos.


· Eliminar cables y conectores entre estos.
· Ofrecer la posibilidad de crear pequeñas redes inalámbricas y facilitar la
sincronización de los datos en ellas entre nuestros equipos personales.

En el caso del NXT de LEGO MINDSTORMS la conexión puede ser con otros
NXT (hasta tres NXT), con teléfonos móviles y con ordenadores.

En la tabla 3.5 se presenta una guía para utilizar el Bluetooth entre dos NXT.

Tabla 3.5 Pasos para el uso de Bluetooth entre dos NXT [20]

1 Seleccionar el submenú Bluetooth

2 Seleccionar el ícono Search para buscar otros


dispositivos Bluetooth, el NXT automáticamente los
buscará en un rango de 0 a 30m.

3 Dependiendo de cuantos dispositivos aparezcan en el


área se desplegará una lista en la pantalla
93

4 Seleccione el dispositivo al cual se quiere conectar ya


que a cada NXT se le puede poner un nombre

5 Seleccione la línea a la cual se quiere conectar (1,2 o


3), el NXT se puede conertar a tres NXT pero
“comunicarse” sólo con uno a la vez.

6 Si se conecta a un dispositivo por primera vez, el NXT


pide una clave. Sólo tiene que pulsar Intro para usar la
contraseña predeterminada 1234 o hacer su propio
código. El dispositivo Bluetooth debe conocer su clave
de acceso para confirmar la conexión. Esto significa
que los dos ladrillos NXT necesariamente deben tener
la misma clave para poder conectarse.

3.3.1 PROGRAMA PARA EL BLUETOOTH

Antes de ingresar en la parte del Bluetooth se va explicar lo que se va a realizar


con la ayuda de este medio de comunicación.

El NXT remoto va a contar con una leyenda en su pantalla, al presionar los


botones (flechas izquierda y derecha) de este se envía mediante Bluetooth una
señal al NXT local (Segway) el cual hace mover su cuerpo hacia adelante y hacia
atrás generando así una perturbación, esta perturbación hace que el prototipo se
mueva en la dirección correspondiente hasta lograr nuevamente el equilibrio. Al
presionar el botón del NXT remoto este emitirá un sonido.

A continuación se va a detallar la manera de configurar cada uno de los bloques


utilizados para la programación.
94

3.3.1.1 Bloque Display

Este bloque se utiliza para mostrar una imagen, escribir un texto, o dibujar una
figura en la pantalla NXT. La pantalla mide 100 pixeles de ancho por 64 píxeles de
alto. En la Figura 3.24 se observa el bloque y su panel de configuración del cual
se presenta la información a continuación.

· Action: permite elegir mostrar una imagen, un texto, o su propio dibujo, o si


lo que desea es restaurar la pantalla.
· Display: permite borrar el contenido de la pantalla del NXT, al marcar la
casilla "Clear".
· Text: la propiedad Text le permite introducir el texto que se mostrará en la
pantalla.
· Position: permite ubicar donde quiere que aparezca el texto, colocando las
coordenadas en los respectivos cuadros.
· Line: permite utilizar el menú desplegable para elegir el número de línea en
que desea que su texto se muestre.

Figura 3.24 (a) Bloque display (b) Panel de configuración

3.3.1.2 Bloque Switch

En el numeral 3.2.2.11 ya se explica el funcionamiento del bloque swich en esta


parte se va a profundizar en el manejo con la botonera del NXT pues es el que se
utiliza para enviar las señales mediante el bluetooth. Al seleccionar un botón NXT
se enviará un "verdadero" de la señal cuando se activa y al final del bucle. En la
95

Figura 3.25 se observa el bloque y su panel de configuración que se describe a


continuación.

· Control: permite elegir entre valor y sensor, para este caso sensor.
· Sensor: en la pestaña se desplegará todoslos tipos de sensores con lo que
cuenta el Kit LEGO, en este caso se escoge NXT bottons.
· Button: permite elegir botón izquierdo, botón derecho o botón enter.
· Action: nos da tres opciones, al elegir ‘Pressed’ el botón se activa al
presionarlo, al elegir ‘released’ el botón se activará al momento de soltarlo
y al seleccionar ‘bumped’ el botón se activará después de un toque y
liberación rápida.

Figura 3.25 (a) Bloque switch (b) Panel de configuración

3.3.2 DIAGRAMA DE FLUJO

En la Figura 3.26 se da a conocer el diagrama de flujo correspondiente a la


programación que se encuentra en el NXT que está trabajando como control
remoto.
96

INICIO

Colocar en el Display
la leyenda

Presionado el NO Presionado el NO

botón izquierdo? botón derecho?

SI SI

Enviar por Bluetooth


Enviar por Bluetooth
una señal de
una señal de falso
verdadero

Esperar un tiempo Esperar un tiempo

Figura 3.26 Diagrama de flujo para el NXT remoto


97

CAPITULO 4
PRUEBAS Y RESULTADOS

4.1 PRUEBAS REALIZADAS CON EL SENSOR DE COLOR RGB

Las pruebas realizadas son para determinar a qué altura debe ser colocado el
sensor. Las primeras pruebas se realizan colocando el sensor cada centímetro
por cinco centímetros, en cada centímetro se toman tres muestras por cada
corrida del programa y se las toma en tres lugares diferentes, pero sobre la misma
superficie. La superficie en la que se trabaja es de color blanco ya que por sus
propiedades esta refleja de mejor manera la luz con lo cual se trabaja de mejor
manera con el sensor. Ver Figura 4.1.

Figura 4.1 Obtención de datos con el sensor de color RGB

Los datos obtenidos se muestran en la Tabla 4.1

Tabla 4.1 Datos obtenidos con el sensor de color RGB

Centímetros Datos entregados por el sensor de color RGB


Primera Corrida Segunda Corrida Tercera Corrida
1 50 51 51 51 50 51 52 52 53
2 39 39 39 39 39 39 41 42 41
3 31 30 30 28 28 28 30 31 31
4 23 23 24 21 21 21 23 23 23
5 17 17 17 15 16 16 18 17 17
98

Se escoge colocar el sensor a 1.5 cm de distancia de la superficie porque como


se puede notar en la Tabla 4.1 en cada corrida del programa mantiene el valor
tomado. Por lo cual se procede a tomar datos a la distancia establecida (cinco
valores por cada corrida del programa). Ver Tabla 4.2.

Tabla 4.2 Datos obtenidos con el sensor de color RGB a 1.5 cm de la superficie

Datos entregados por el sensor de color RGB a 1.5 cm


Primera Corrida Segunda Corrida Tercera Corrida Cuarta Corrida
46 45 48 47
46 45 48 47
46 45 48 47
47 45 48 47
46 46 48 47

Al analizar los valores se nota que en cada corrida conserva el valor tomado pero
este varía de corrida a corrida. Al realizar las pruebas se pudo notar que el valor
varía dependiendo del lugar donde se realiza la medida, con respecto a la
iluminación, por lo cual se toma la decisión de que en la programación el valor de
set-point sea tomado cada vez que se inicie el programa, con el afán de trabajar
en cualquier tipo de ambiente.

4.2 CALIBRACIÓN DEL PID

Como ya se explicó en la parte de diseño del prototipo, el PID parte de un valor


referencial obtenido de la simulación, los valores de kp, ki y kd entregados por el
software logran compensar la planta pero presenta el siguiente inconveniente.

El tiempo de establecimiento es muy grande al igual que el sobreimpulso por lo


cual se tiene que autoajustar en la propia simulación de tal forma que el tiempo de
establecimiento disminuya, obteniendo así el siguiente resultado, ver Figura 4.2.
99

Figura 4.2 Respuesta de la planta ante una entrada paso

4.3 PRUEBAS REALIZADAS CON EL PRIMER PROTOTIPO

4.3.1 EQUILIBRIO

Como se mencionó en la parte de programación, el prototipo debe comenzar


totalmente equilibrado para tomar su valor de set-point, esto se debe a que el
programa no cuenta con un set-point establecido. La razón de esta situación es
porque la emisión y recepción de luz del sensor se ve afectada por los cambios en
la iluminación. Se consiguió el objetivo del equilibrio con la calibración del PID por
el método de prueba y error. Ver Figura 4.3

Un inconveniente a mencionarse es la superficie de trabajo ya que al tomar los


datos para el sensor RGB se trabaja con papel BOND pero al colocar el prototipo
se nota que las llantas resbalan un poco generando un vaiven del Segway y esto
genera un error que el sistema (prototipo) trata de compensar pero resbala más,
100

por lo cual se cambia la superficie y se trabaja con fomix que le da un mejor


agarre a las ruedas eliminando así este problema.

Figura 4.3 Primer prototipo equilibrado

El equilibrio se logra satisfactoriamente ya que se le somete a pequeñas


perturbaciones y el prototipo logra reaccionar rápidamente obteniendo así su
autobalanceo, una vez logrado este, el Segway mantiene una velocidad pequeña
y oscilaciones cortas.

4.3.2 EQUILIBRIO CON ENTRADA

Una vez obtenido el equilibrio se realiza la programación respectiva para mover el


Segway hacia adelante y hacia atrás obteniendo el siguiente problema.

Como el Segway utiliza las ruedas para equilibrarse al tratar de darle una
velocidad de giro este pierde el equilibrio ya que se actúa sobre las mismas
ruedas. Al enviarle a las ruedas, una velocidad de 78 rpm hacia adelante el
101

Segway deja caer su cuerpo hacia atrás y al enviarle la misma velocidad pero
ahora hacia atrás el Segway cae hacia adelante.

Para la siguiente prueba se incrementó la velocidad hasta 90 rpm pero en un


tiempo más corto, los resultados fueron los mismos porque el robot al estar en
equilibrio tiene una velocidad muy pequeña y al cambiarle a 90 rpm es un cambio
muy brusco lo que le hace perder totalmente el equilibrio.

En la siguiente prueba se midió la velocidad a la que estaban las ruedas al


momento de querer moverlas para que el movimiento sea con la misma velocidad
y no provocar cambios bruscos. Los resultados fueron similares a los anteriores,
ya que la velocidad con la que se encuentra el Segway es muy pequeña
(aproximadamente 5rpm) y hasta que las ruedas den dos revoluciones por
ejemplo el Segway ya habrá caído debido a que mientras el programa está
esperando que culminen las revoluciones, el PID no se está ejecutando.

En este prototipo no se pudo lograr el movimiento por lo cual se realiza otro


prototipo como se muestra en la parte de diseño.

4.4 PRUEBAS CON EL SEGUNDO PROTOTIPO

En este prototipo las pruebas que se realizan son para que el prototipo logre
estabilizarse pese a que se cambia su centro de masa, esto quiere decir que al
mover el cuerpo del Segway hacia adelante o atrás este debe ser capaz de lograr
el equilibrio.

4.4.1 EQUILIBRIO

El equilibrio no causa mucha dificultad debido a que en el primer prototipo ya se lo


consiguió, como se presenta en el diseño este modelo cuenta con el cuerpo que
está controlado con el motor A por lo cual para lograr el equilibrio inicial este
motor debe estar truncado en una posición totalmente vertical. Ver Figura 4.4.
102

Figura 4.4 Segundo prototipo equilibrado

En la Tabla 4.3 se muestra los datos obtenidos cuando el Segway se mantiene


equilibrado sin perturbación alguna.

Tabla 4.3 Datos obtenidos con el Segway sin perturbaciones

Set-Point Lectura del Error Potencia enviada a Velocidad de los


sensor los motores B yC motores B y C en rpm
49 49 0 0 0
49 49 0 0 0
49 49 0 0 0
49 49 0 0 0
49 49 0 0 0
49 49 0 0 0
49 49 0 0 0
49 49 0 0 0
49 49 0 0 0
49 49 0 0 0
49 50 1 56.5 0
49 49 0 -13.5 0
49 49 0 1.5 0
49 49 0 1.5 0
49 49 0 1.5 0
49 50 1 58 0
49 49 0 -12 0.01
103

49 49 0 3 0.01
49 50 1 59.5 0.01
49 49 0 -10.5 0.01
49 49 0 4.5 0.01
49 49 0 4.5 0.01
49 49 0 4.5 0.01
49 49 0 4.5 0.02
49 48 -1 -52 0.02
49 48 -1 -38.5 0.01
49 49 0 16.5 0.01
49 49 0 1.5 0.01
49 49 0 1.5 0.01
49 49 0 1.5 0.01
49 48 -1 -55 0.01
49 49 0 15 0.01
49 49 0 0 0
49 48 -1 -56.5 0
49 48 -1 -43 0
49 49 0 12 0
49 49 0 -3 -0.01
49 49 0 -3 -0.01
49 49 0 -3 -0.01
49 49 0 -3 -0.01
49 49 0 -3 -0.01
49 49 0 -3 -0.01
49 50 1 53.5 -0.01
49 49 0 -16.5 -0.01
49 49 0 -1.5 0
49 49 0 -1.5 0
49 50 1 55 0
49 49 0 -15 0
49 50 1 56.5 0
49 49 0 -13.5 0

En la Tabla 4.3 se muestran 50 valores, como se puede observar hay momentos


que pese a tener error 0 la potencia enviada a los motores es diferente de 0 esto
ocurre por la parte matemática del PID diseñado, para una mejor comprensión a
continuación se muestra un análisis con datos de las filas 10 a 13.

Error = 1 (fila 11)

Integral = integral + error = 0+1=1


104

Derivativo= error – error anterior (fila 10) = 1-0=1

Potencia = kd*derivativo + ki*integral + kp*error

Donde kd, ki, kp son valores de las constantes obtenidas para el PID

Potencia = (15*1)+(1.5*1)+(40*1) = 56.5

Error anterior = error =1

Error = 0 (fila 12)

Integral = 1+0=1

Derivativo = 0-1=-1

Potencia = (15*-1)+(1.5*1)+(40*0) = -13.5

Error anterior=0

Error = 0 (fila 13)

Integral = 1+0=1

Derivativo = 0-0=0

Potencia = (15*0)+(1.5*1)+(40*0) = 1.5

Error anterior=0

Al realizar las pruebas en el Segway no se puede notar que en momentos este


tiene velocidad cero esto es debido a que el NXT trabaja a una velocidad que no
puede percibir el ojo humano, cabe mencionar que los datos de la tabla 4.3 son
una parte de 645 datos que se tomaron en 5 segundos.
105

4.4.2 EQUILIBRIO CON ENTRADA

En este sistema la entrada que se le aplica es la señal de verdadero o falso que


entrega el NXT remoto vía Bluetooth al Segway.

Una vez logrado el equilibrio se procede a mover el cuerpo del Segway para esto
se utiliza el NXT remoto el cual presenta una leyenda en su pantalla ver Figura
4.5

Figura 4.5 NXT remoto

Al presionar el botón derecho envía un valor de verdadero al NXT local y este


hace que el motor ‘A’ gire hacia adelante un ángulo aproximado de 5o al presionar
el botón izquierdo se envía un valor de falso por lo cual el motor ‘A’ gira hacia
atrás el mismo valor de ángulo. En cualquiera de los dos casos al hacer que el
cuerpo del Segway se mueva se está haciendo un cambio en el centro de masa
esto hace que el Segway se mueva en la dirección indicada hasta lograr
nuevamente el equilibrio.

Este prototipo puede mantener su equilibrio con un ángulo de inclinación de hasta


15ohacia adelante y 10ohacia atrás, ver Figura 4.6, es importante mencionar que
para realizar esta prueba no se le inclina al cuerpo del Segway 15o o 10o a la vez
106

sino de 5o en 5o, es decir, presionar una vez esperar que se equilibre luego
presionar otra vez.

Figura 4.6 Segway con 10o de inclinación hacia adelante

4.4.3 PRUEBAS CON EL SENSOR ULTRASÓNICO

El Segway también trabaja con el sensor ultrasónico ya que si un objeto se


encuentra a menos de 15cm este hace que su cuerpo se incline hacia atrás
generando el movimiento en esa dirección, para esta prueba es necesario que el
robot este en la posición totalmente vertical porque el sensor trabaja de una mejor
manera si el objeto a ubicarse se encuentra en frente.

4.4.4 PRUEBAS CON PERTURBACIÓN EÓLICA DE BAJO CAUDAL

Para esta prueba se usa una secadora de cabello de las siguientes


características:
107

· Voltaje: 125 VAC


· Frecuencia: 60 Hz
· Potencia: 1600 W

Al acercar la secadora el aire que emite hace que el Segway pierda el equilibrio
momentáneamente, si se la ubica en la parte posterior del prototipo este tiende a
ir hacia adelante hasta lograr nuevamente su estado de equilibrio y si se la coloca
en la parte de adelante pues tiende a ir hacia atrás. Ver Figura 4.7

Figura 4.7 Segway con perturbación eólica

El prototipo logra pasar todas las pruebas satisfactoriamente incluso mientras se


está moviendo y se le somete a pequeñas perturbaciones este es capaz de lograr
el equilibrio.

En esta parte no se muestra tabla de resultados debido a que al momento de


darle una perturbación o una entrada al sistema este pierde el equilibrio y tarda
entre dos y tres segundos en retomar el equilibrio total, para mostrar esos datos
108

se necesita una tabla de 248 filas por lo tanto sólo se hará constancia de que el
prototipo funciona con las fotografías ya mostradas. Los datos obtenidos se
presentan como Anexo D.

4.5 PRUEBAS CON EL PROTOTIPO FINAL

Este prototipo se lo hace con el afán de mejorar la forma de trabajo del segundo
modelo ya que este al someterlo a luz de una lámpara incandescente pierde el
equilibrio. Esto ocurre debido a que pierde sombra en la superficie de contacto,
esto causa que el sensor de color RGB no entregue datos adecuados generando
así un error inexistente que el PID trata de compensar incrementando la velocidad
pero al contrario de obtener equilibrio provoca la caída inminente.

La estructura añadida en la base del Segway hace que la luz no elimine por
completo la sombra con esto los datos obtenidos son favorables y el Segway se
comporta adecuadamente. Cabe recalcar que este prototipo no trabaja en lugares
que se vean afectados con luz ambiente ya que el sensor entrega valores
erróneos por más sombra que se genere, por características propias del sensor
este se ve limitado.

A continuación se muestra las fotografías que corroboran el desempeño del


Segway sometiéndole a perturbaciones.

4.5.1 EQUILIBRIO

En esta parte se va a mostrar el equilibrio del Segway pese a tener


perturbaciones de diferente tipo. Para las pruebas realizamos las siguientes:
movimiento del segway con la mano, Figura 4.8, cambiando el color de la
superficie de trabajo, Figura 4.9 y la perturbación eólica de bajo caudal Figura
4.10
109

Figura 4.8 Segway sometido a movimientos con la mano

Figura 4.9 Segway sometido a cambio de color de superficie (blanco por verde)
110

Figura 4.10 Segway con perturbación eólica

4.5.2 EQUILIBRIO CON ENTRADA

Trabaja de la misma forma que el prototipo anterior, en este caso se muestra una
inclinación de 15o hacia adelante y 10o hacia atrás. Ver Figuras 4.11y 4.12
respectivamente.

Figura 4.11 Segway con 15o de inclinación hacia adelante


111

Figura 4.12 Segway con 10o de inclinación hacia atrás


112

CAPITULO 5
CONCLUSIONES Y RECOMENDACIONES

5.1 CONCLUSIONES

· El Segway logra ser estabilizado en la posición vertical, y adicionalmente


soporta perturbaciones. Como se menciona durante el desarrollo del
trabajo, el Segway se encuentra sobre una superficie de color definido por
lo cual una de las perturbaciones es el cambiarle el color de superficie
brevemente. Otra perturbación es moverle moderadamente al Segway,
además es capaz de soportar bajas corrientes de aire y la prueba mayor es
hacer que el cuerpo del Segway se mueva hacia atrás o hacia adelante
atendiendo a las órdenes del NXT remoto que son enviadas mediante
Bluetooth.

· En la implementación práctica del controlador PID fue necesario el ajuste


de los valores de las constantes por lo que estos no son los mismos que se
obtuvieron en la simulación. Estos cambios se realizan debido a que se
necesita que el Segway se estabilice en la posición vertical en el menor
tiempo posible.

· El sensor de color RGB se ve afectado por la luz ambiente y también por


luz intensa de bombillas incandescentes por lo cual es necesario que el
área donde la luz del sensor va a ser reflejada tenga la mayor cantidad de
sombra posible.

· La plataforma LEGO MINDSTORMS NXT ofrece la posibilidad de estudiar


sistemas de control a pequeña escala, ya que cuenta con todos los
elementos que se necesita, sensores, actuadores y un microcontrolador en
el cual se puede programar las estrategias de control.
113

5.2 RECOMENDACIONES

· Es recomendable que el sistema tenga el menor número de oscilaciones, si


ocurren muchas oscilaciones al tratar de estabilizar el Segway es posible
que no se logre alcanzar el objetivo de control y el sistema caiga en la
inestabilidad.

· Se recomienda que en un trabajo posterior se ocupe acelerómetros u otro


dispositivo con mayor confiabilidad, en caso de querer trabajar bajo el
mismo principio se recomienda utilizar el sensor de color HiTechnic que es
compatible con Lego Mindstorms. Según estudio presentado este sensor
no se ve afectado por la luz ambiente, queda como nuevo reto averiguarlo.

· El lenguaje de programación NXT-G es un lenguaje gráfico, amigable con


el usuario, que se recomienda utilizar si no se necesita un control fino en el
movimiento de los motores, a la hora de realizar algoritmos de control más
complejos es recomendable trabajar con NXC ya que este lenguaje es de
más bajo nivel por lo cual se detalla la programación y la acción que debe
realizar cada elemento. Existen varios lenguajes de programación para
LEGO, cada uno cuenta con ventajas y desventajas, por lo cual el usuario
debe escoger la mejor opción dependiendo de la aplicación que se está
desarrollando.
114

REFERENCIAS BIBLIOGRÁFICAS

[1] S. S. moving, 2001-2006. [Online]. Available:

http://www.segway.es/mirada.asp

[2] marzo 2003. [Online]. Available:

http://www.wired.com/wired/archive/11.03/segway.html?pg=5&topic=
&topic_set=

[3] [Online]. Available: http://www.crya.com.mx/docus/tsegway.pdf

[4] L. MINDSTORMS, 2012. [Online]. Available:

http://us.mindstorms.lego.com/en-us/history/default.aspx

[5] P. Y. DIXEL. [Online]. Available:

http://www.pixelydixel.com/2007/03/segway-con-lego-
mindstorms.html

[6] S. LegWay. [Online]. Available:

http://www.teamhassenplug.org/robots/legway/

[7] [Online]. Available: http://philohome.com/nxtway/nxtway.htm

[8] I. M. A. Moreno, 2001 ENERO. [Online]. Available:

http://jvr33.free.fr/pdf_laser/03_electronique/Control%20Pid.pdf

[9] T. A. Cantarero. [Online]. Available:

http://www.esi2.us.es/~alamo/Archivos/Certificaciones/Sec_9_Otras
_Publicaciones/Docente/AlamoPIDTotal.pdf
115

[10] F. M. García, enero 2007. [Online]. Available:

http://www.dia.uned.es/~fmorilla/MaterialDidactico/El%20controlador
%20PID.pdf

[11] españa 2011. [Online]. Available:

http://www.roboticspot.com/robotica.php

[12] [Online]. Available: http://robotica.wordpress.com/about/

[13] I. S. S. O. Peraza, febrero 2009. [Online]. Available:

http://www.profesaulosuna.com/data/files/ROBOTICA/PRESENTACI
ONES%20PWP/ROBOTICA%20PPT%20A%20PDF/ROBOTICA%20
1.pdf

[14] A. O. Baturone. [Online]. Available:

http://books.google.com.ec/books?id=TtMfuy6FNCcC&printsec=front
cover&dq=robotica&source=bl&ots=30KVG2yacP&sig=6ZBiRwn_l9bt
c0UQ4jxrSl2-c-A&hl=es&sa=X&ei=YRkGUI-
sDarA0QG_1PnICA&ved=0CC4Q6AEwAA#v=onepage&q=robotica&
f=false

[15] J. R. D. S. R. SALAZAR. [Online]. Available:

http://robotica.li2.uchile.cl/EL63G/capitulo4.pdf

[16] "Brick Link," 2000-2012. [Online]. Available:

http://www.bricklink.com/catalogItemInv.asp?S=8547-1. [Accessed
16 julio 2012]

[17] edubrick. [Online]. Available:

http://www.firstlegoleague.cl/fllfiles/docs/FLL08_Guia%20de%20Rob
otica.pdf
116

[18] M. J. C. S. Reynoso. [Online]. Available:

http://www.julio.sandria.org/archivos/docencia/2009-11-citir-nxt-
java/sandria2009-pr_nxt_j-05e.pdf

[19] U. ANDRES BELLO, 12 2011. [Online]. Available: http://www.ier-


unab.cl/home/capacit/doc/tutorial_programacion.pdf

[20] L. MINDSTORMS. [Online]. Available:

http://cache.lego.com/downloads/education/9797_LME_UserGuide_
US_low.pdf

[21] N. m. internals. [Online]. Available:

http://www.philohome.com/nxtmotor/nxtmotor.htm

[22] M. G. R. B. B. Ing. María Luisa Pinto Salamanca. [Online]. Available:


http://www.iiis.org/CDs2008/CD2008CSC/CISCI2008/PapersPdf/C09
8SE.pdf

[23] [Online]. Available:

http://www.google.com.ec/url?sa=t&rct=j&q=sensor%20de%20color
%20rgb%20de%20lego%20mindstorms&source=web&cd=1&cad=rja
&ved

[24] k. Ogata, "INGENIERÍA DE CONTROL MODERNA".

[25] R. Widger. [Online]. Available:

http://ro-botica.com/img/NXT/pdf/NXT%20Guia%20Rapida-ES.pdf

[26] C. E. Madrid. [Online]. Available:

http://complubot.educa.madrid.org/pruebas/lego_nxt_version_educat
iva/lego_nxt_version_educativa_index.php
117

[27] U. c. d. l. p. L. M. N. y. m. P. e. I. Industrial. [Online]. Available:

http://www.ehu.es/ikastorratza/6_alea/lego.pdf

[28] G. b. D. 1.6.2, Oct 2011. [Online]. Available:

http://bricxcc.sourceforge.net/nbc/doc/NBC_Guide.pdf

[29] electricBricks. [Online]. Available:

http://blog.electricbricks.com/es/2009/11/lego-mindstorms-robotc/

[30] P. I. A. P. A. P. Ing. Héctor Sánchez. [Online]. Available:

http://www.cibelec.org.ve/2010/docs/Control.pdf
ANEXOS
1

ANEXO A
Se presenta pruebas realizadas con el sensor de color RGB, las cuales muestran
la limitación del mismo al trabajar a luz ambiente.

Esta prueba se realizó con la configuración de la imagen de arriba. Seis placas de


color están montadas en un motor NXT. Las placas giran sucesivamente teniendo
muy en cuenta que el sensor de color registre la lectura. Con el fin de probar la
fiabilidad, este ciclo se repite 10 veces a cada distancia. El apoyo en forma de
triángulo permite cambiar el ángulo entre las placas y el sensor.

Para simplificar las cosas, la prueba se limita a los 6 colores básicos que el
bloque del sensor NXT-G de LEGO es capaz de detectar.

A continuación se muestra una tabla con los valores de color proporcionados por
el sensor:

Yellow Green Red White Black Blue


RGB 4 3 5 6 1 2
2

PRIMERA PRUEBA

La primera prueba se realizó en una habitación oscura, con el sensor de color


perpendicular a las placas. Prueba de distancia entre la base del sensor y las
placas es 1, 2, 3, 5 y 8 montantes.

LEGO sensor, dark room, perpendicular

--- 1 stud --- 4,3,5,6,1,2 1,1,1,1,1,1

4,3,5,6,1,2 4,3,5,6,1,2 1,1,1,1,1,1

4,3,5,6,1,2 4,3,5,6,1,2 1,1,1,1,1,1

4,3,5,6,1,2 4,3,5,6,1,2 1,1,1,1,1,1

4,3,5,6,1,2 --- 3 studs --- 1,1,1,1,1,1

4,3,5,6,1,2 4,1,5,6,1,2 1,1,1,1,1,1

4,3,5,6,1,2 4,1,5,6,1,2 1,1,1,1,1,1

4,3,5,6,1,2 4,1,5,6,1,2 1,1,1,1,1,1

4,3,5,6,1,2 4,1,5,6,1,2 --- 8 studs ---

4,3,5,6,1,2 4,1,5,6,1,2 1,1,1,1,1,1

4,3,5,6,1,2 4,1,5,6,1,2 1,1,1,1,1,1

--- 2 studs --- 4,1,5,6,1,2 1,1,1,1,1,1

4,3,5,6,1,2 4,1,5,6,1,2 1,1,1,1,1,1

4,3,5,6,1,2 4,1,5,6,1,2 1,1,1,1,1,1

4,3,5,6,1,2 4,1,5,6,1,2 1,1,1,1,1,1

4,3,5,6,1,2 --- 5 studs --- 1,1,1,1,1,1

4,3,5,6,1,2 1,1,1,1,1,1 1,1,1,1,1,1

4,3,5,6,1,2 1,1,1,1,1,1 1,1,1,1,1,1


3

1,1,1,1,1,1

El Sensor LEGO proporciona valores fiables a una distancia de 1 y 2 montantes.


A la 3ra distancia de montantes, el verde se ve igual que negro. A los 5 y 8
montantes, todos los colores son vistos como negro.

SEGUNDA PRUEBA

Cuarto oscuro, sensor de color ligeramente inclinado, aproximadamente 10 °.


LEGO sensor, dark room, 10° tilt.

--- 1 stud --- 4,3,5,6,1,2 4,1,5,6,1,2

4,3,5,6,1,2 4,3,5,6,1,2 4,1,5,6,1,2

4,3,5,6,1,2 4,3,5,6,1,2 4,3,5,6,1,2

4,3,5,6,1,2 4,3,5,6,1,2 4,1,5,6,1,2

4,3,5,6,1,2 4,3,5,6,1,2 4,3,5,6,1,2

4,3,5,6,1,2 4,3,5,6,1,2 --- 5 studs ---

4,3,5,6,1,2 4,3,5,6,1,2 1,1,1,1,1,1

4,3,5,6,1,2 4,3,5,6,1,2 1,1,1,1,1,1

4,3,5,6,1,2 --- 3 studs --- 1,1,1,1,1,1

4,3,5,6,1,2 4,1,5,6,1,2 1,1,1,1,1,1

4,3,5,6,1,2 4,1,5,6,1,2 1,1,1,1,1,1

--- 2 studs --- 4,1,5,6,1,2 1,1,1,1,1,1

4,3,5,6,1,2 4,3,5,6,1,2 1,1,1,1,1,1

4,3,5,6,1,2 4,1,5,6,1,2 1,1,1,1,1,1


4

1,1,1,1,1,1 1,1,1,1,1,1 1,1,1,1,1,1

1,1,1,1,1,1 1,1,1,1,1,1 1,1,1,1,1,1

--- 8 studs --- 1,1,1,1,1,1 1,1,1,1,1,1

1,1,1,1,1,1 1,1,1,1,1,1

1,1,1,1,1,1 1,1,1,1,1,1

El sensor de LEGO se comporta exactamente igual. Los datos son los mismos
perpendicular o inclinado.

TERCERA PRUEBA

Se usa la configuración anterior, pero esta vez se usa una lámpara de baja
tensión, halógeno 35W se colocó sobre 55 cm de distancia de las placas.

LEGO sensor, 35 W halogen lamp @ 55cm, 10° tilt

--- 1 stud --- --- 2 studs --- --- 3 studs ---

4,3,5,6,1,2 1,1,1,1,1,1 1,1,1,1,1,1

4,3,5,6,1,2 1,1,1,1,1,1 1,1,1,1,1,1

4,3,5,6,2,2 1,1,1,1,1,1 1,1,1,1,1,1

4,3,5,6,1,2 1,1,1,1,1,1 1,1,1,1,1,1

4,3,5,6,1,2 1,1,1,1,1,1 1,1,1,1,1,1

4,3,5,6,1,2 1,1,1,1,1,1 1,1,1,1,1,1

4,3,5,6,1,2 1,1,1,1,1,1 1,1,1,1,1,1

4,3,5,6,1,2 1,1,1,1,1,1 1,1,1,1,1,1

4,3,5,6,1,2 1,1,1,1,1,1 1,1,1,1,1,1

4,3,5,6,1,2 1,1,1,1,1,1 1,1,1,1,1,1


5

--- 5 studs --- 1,1,1,1,1,1 1,1,1,1,1,1

1,1,1,1,1,1 1,1,1,1,1,1 1,1,1,1,1,1

1,1,1,1,1,1 1,1,1,1,1,1 1,1,1,1,1,1

1,1,1,1,1,1 --- 8 studs --- 1,1,1,1,1,1

1,1,1,1,1,1 1,1,1,1,1,1 1,1,1,1,1,1

1,1,1,1,1,1 1,1,1,1,1,1 1,1,1,1,1,1

1,1,1,1,1,1 1,1,1,1,1,1

1,1,1,1,1,1 1,1,1,1,1,1

Esta vez, el sensor de LEGO funciona correctamente sólo a la distancia de 1


motante, devuelve "negro" para todos los colores por encima de esta distancia.

CUARTA PRUEBA

Ahora coloca la configuración de la prueba anterior, detrás de una ventana, con el


buen tiempo (con algunas nubes blancas).

LEGO sensor, bright daylight behind window , 10° tilt

--- 1 stud --- 1,3,1,1,3,2 1,1,1,1,1,1

1,3,1,1,3,2 1,3,1,1,3,1 1,1,1,1,1,1

1,3,1,1,3,2 1,3,1,1,3,1 1,1,1,1,1,1

1,3,1,1,3,2 --- 2 studs --- 1,1,1,1,1,1

1,3,1,1,3,1 1,1,1,1,1,1 1,1,1,1,1,1

1,3,1,1,3,2 1,1,1,1,1,1 1,1,1,1,1,1

1,3,1,1,3,2 1,1,1,1,1,1 --- 3 studs ---

1,3,1,1,3,2 1,1,1,1,1,1 1,1,1,1,1,1


6

1,1,1,1,1,1 1,1,1,1,1,1 1,1,1,1,1,1

1,1,1,1,1,1 1,1,1,1,1,1 1,1,1,1,1,1

1,1,1,1,1,1 1,1,1,1,1,1 1,1,1,1,1,1

1,1,1,1,1,1 1,1,1,1,1,1 1,1,1,1,1,1

1,1,1,1,1,1 1,1,1,1,1,1 1,1,1,1,1,1

1,1,1,1,1,1 1,1,1,1,1,1 1,1,1,1,1,1

1,1,1,1,1,1 1,1,1,1,1,1 1,1,1,1,1,1

1,1,1,1,1,1 1,1,1,1,1,1 1,1,1,1,1,1

1,1,1,1,1,1 1,1,1,1,1,1 1,1,1,1,1,1

--- 5 studs --- --- 8 studs ---

1,1,1,1,1,1 1,1,1,1,1,1

En este nivel de luz, sensor de LEGO es inútil, incluso a corta distancia.


1

ANEXO B
Se presenta varias recomendaciones al momento de trabajar con un Kit LEGO
MINSTORMS.

Baterías recargables

· La batería también se puede cargar cuando no se inserta en el NXT.


· La luz indicadora verde se enciende cuando el adaptador de corriente
está conectado al NXT.
· La luz roja se enciende cuando la batería se está recargando y se
apaga cuando la batería está completamente cargada.
· Recargar completamente la batería requiere aproximadamente cuatro
horas.
· El NXT se puede utilizar cuando la batería se está cargando; sin
embargo, la recarga a continuación, requiere más tiempo.
· Esta batería Li-Ion Polímero se puede recargar hasta 500 veces.
2

Otro tipo de baterías

El NXT también funciona con seis pilas AA/LR6.

· Se recomienda usar pilas alcalinas.


· Las baterías recargables AA/LR6-type se pueden utilizar; sin embargo,
el rendimiento de la potencia de la NXT puede ser reducido.
· No mezcle diferentes tipos de pilas en el NXT.
· Retire siempre las pilas antes de guardar el NXT por un largo plazo.
· Retire inmediatamente las pilas agotadas del NXT.
1

ANEXO C
MANUAL DE USUARIO

Para poder trabajar con esta plataforma se debe cumplir los siguientes
requerimientos.

1. Instalar el Software propio de LEGO MINDSTORMS. Ver Figura C.1

Figura C.1 Instalación del software

2. Una vez instalado el software se genera un acceso directo, ver Figura C.2,
al dar click se despliega una ventana la cual da dos opciones crear un
nuevo programa o abrir uno creado anteriormente, ver Figura C.3.
El entorno de trabajo es el mostrado en la Figura C.4, en la cual se tiene
los siguientes elementos, ver Tabla C.1.

Figura C.2 Acceso directo al Software LEGO MINDSTORMS NXT


2

Figura C.3 Ventana de entrada al Software LEGO MINDSTORMS NXT

Figura C.4 Área de trabajo LEGO MINDSTORMS NXT

Tabla C. 1 Entorno gráfico del programa LEGO MINDSTORMS NXT


Item Nombre Reseña
Robot Educator Aquí se encuentra estructuras e
instrucciones de programa.
Mi Portal Aquí se puede acceder a
www.MINDSTORMSeducation.com
y encontrar información
herramientas y realizar descargas
Barra de herramientas Incluye los comandos de uso más
frecuente desde la barra de menús
en un formato de fácil ubicación.
Área de trabajo Aquí tiene lugar la programación, a
esta área es donde se arrastra los
bloques desde la barra de paletas.
3

Pequeña ventana de Aquí se puede conseguir la ayuda


ayuda necesaria para continuar con el
programa.
Mapa del área de trabajo Se encuentra en la parte inferior
izquierda, se la utiliza para tener
visión general
Paleta de programación Aquí se encuentran todos los
bloques de programación
necesarios para crear los
programas. En la
parte inferior de la paleta se puede
cambiar entre paleta común
[que contiene los bloques de uso
más frecuente], la paleta completa
[que contiene todos los bloques], y
el paleta personalizada [bloques
que se pueden descargar o se
pueden crear ].
Panel de configuración Cada bloque de programación
tiene un panel de configuración
que le permite personalizar el
bloque específico para la entrada y
salida que desee
Controlador Los botones del Controlador
permiten descargar programas (o
partes de programas) desde el
ordenador al NXT. Con el
controlador también puede cambiar
la configuración del NXT.
Ventana NXT Esta ventana emergente
proporciona información sobre la
configuración del NXT.

3. Una vez creado el programa, se lo debe descargar al NXT mediante el


cable USB, ver Figura C.5.

Figura C.5 Descargar el programa al NXT


Para la descarga se lo hace mediante el controlador, ver Figura C.6.
4

Figura C.6 Descargar el programa al NXT

OPERACIÓN

El presente trabajo tiene por objetivo mantener el equilibrio de una plataforma


robótica, Segway, pese a tener perturbaciones.

En la Figura C.7 se muestra el prototipo diseñado.

Figura C.7 Puertos de asignados en el NXT


Los puertos A, B y C corresponden a los servomotores, el puerto 4 al sensor
ultrasónico y el puerto 3 al sensor de color RGB (red, green blue). La parte cuerpo
del Segway es móvil.
5

Para cumplir con los objetivos el Segway debe cumplir con requisitos previos por
lo cual a continuación se da los pasos a seguir para un buen funcionamiento:

Primer paso

Colocar las baterías de alimentación tanto en el NXT del Segway como en el NXT
remoto, colocar la superficie de trabajo (fomix blanco), presionar el botón naranja
para encender el Bloque NXT del Segway, ver Figura C.8, elegir el menú My files
(presionar el botón naranja) posteriormente elegir el submenú Software files y por
último elegir el programa a ejecutarse en este caso Segway_angulo_3 (sólo
seleccionar el programa no correrlo). Ver Figura C.9

Figura C.8 Encendido del NXT

Figura C.9 Pasos para elegir el programa


6

Segundo paso

Tomar el Segway y ponerlo en una posición totalmente vertical, recordar que en


este momento el motor del cuerpo del Segway no está energizado por lo tanto
girará obligado por el peso, por lo cual la parte 1 y la parte 2 no están a un mismo
nivel, ver Figura C.10. Para lograr la posición perfecta el cuerpo del Segway
(parte 1) debe coincidir con la referencia que sale desde la base (parte 2), ver
Figura C.11.

Figura C.10 Segway apagado, cuerpo caído hacia atrás

Figura C.11 Cuerpo del Segway vertical


7

Tercer paso

Teniendo en cuenta lo anterior, presionar el botón naranja para que corra el


programa. El usuario cuenta con un intervalo de tiempo para poner el Segway en
total equilibrio ya que este toma el valor de Set.Point al iniciar el programa.

Cuarto paso

Una vez equilibrado se le puede dar perturbaciones para comprobar su


funcionamiento. Las perturbaciones que soporta son suaves movimientos, ver
Figura C.12, cambios de color de superficie de trabajo, ver Figura C.13 y
perturbación eólica de bajo caudal, ver Figura C.14.

Figura C.12 Segway sometido a movimientos con la mano

Figura C.13 Segway sometido a cambio de color de superficie (blanco por


verde)
8

Figura C.14 Segway con perturbación eólica

Quinto paso

Presionar el botón naranja para encender el NXT remoto, conectarle mediante


Bluetooth con el NXT del Segway. Para esto primero se tiene que activar el
Bluetooth, ver Figura C.15. Posteriormente seguir los pasos que se presenta en la
Tabla C.2.

Figura C.15 Activar el Bluetooth

Tabla C. 2 Pasos para el uso de Bluetooth entre dos NXT


1 Seleccionar el submenú Bluetooth
9

2 Seleccionar el ícono Search para buscar otros


dispositivos Bluetooth, el NXT automáticamente los
buscará en un rango de 0 a 30m.

3 Dependiendo de cuantos dispositivos aparezcan en el


área se desplegará una lista en la pantalla

4 Seleccione el dispositivo al cual se quiere conectar ya


que a cada NXT se le puede poner un nombre

5 Seleccione la línea a la cual se quiere conectar (1,2 o


3), el NXT se puede conertar a tres NXT pero
“comunicarse” sólo con uno a la vez.

6 Si se conecta a un dispositivo por primera vez, el NXT


pide una clave. Sólo tiene que pulsar Intro para usar la
contraseña predeterminada 1234 o hacer su propio
código. El dispositivo Bluetooth debe conocer su clave
de acceso para confirmar la conexión. Esto significa
que los dos ladrillos NXT necesariamente deben tener
la misma clave para poder conectarse.

Una vez conectado el Bluetooth elegir el menú My files posteriormente elegir el


submenú Software files y por último elegir el programa a ejecutarse en este caso
Segway Remoto, similar a lo de la Figura C.9.

Al correr el programa aparece una leyenda, ver Figura C.16


10

Figura C.16 Leyenda en la pantalla del NXT remoto

Al presionar el botón derecho el Segway se mueve hacia adelante 5 grados y al


presionar el botón izquierdo se mueve hacia atrás los 5 grados. El prototipo
mantiene el equilibrio hasta 15o hacia adelante y 10o hacia atrás. Ver Figura C.17

Figura C.17 Segway con ángulo de inclinación

Cabe mencionar que no se le envié los 15 o o los 10o a la vez, sino de 5o en 5o es


decir; debe presionar el botón esperar que retome el equilibrio y volver a presionar
el botón.

Sexto paso

Mientras está funcionando poner el cuerpo del Segway totalmente vertical, colocar
un objeto a una distancia menor a 15 cm. El sensor ultrasónico detectará el objeto
y enviará una señal para que el cuerpo del Segway se incline hacia atrás
haciendo que toda la plataforma se mueva hacia atrás.
1

ANEXO D
Tabla de datos obtenidos al haber una perturbación.

Set-Point Lectura del Error Potencia enviada a Velocidad de


sensor RGB los motores B y C los motores B
y C en rpm
49 48 -1 0 -0.47
49 49 0 -56.5 -0.47
49 49 0 13.5 -0.47
49 49 0 -1.5 -0.48
49 49 0 -1.5 -0.48
49 49 0 -1.5 -0.48
49 49 0 -1.5 -0.48
49 49 0 -1.5 -0.48
49 48 -1 -1.5 -0.48
49 48 -1 -58 -0.48
49 49 0 -44.5 -0.48
49 49 0 10.5 -0.49
49 48 -1 -4.5 -0.49
49 49 0 -61 -0.49
49 49 0 9 -0.5
49 49 0 -6 -0.5
49 49 0 -6 -0.5
49 49 0 -6 -0.5
49 49 0 -6 -0.5
49 50 1 -6 -0.5
49 50 1 50.5 -0.5
49 50 1 37 -0.5
49 49 0 38.5 -0.5
49 50 1 -16.5 -0.5
49 50 1 55 -0.49
49 49 0 41.5 -0.49
49 43 -6 -13.5 -0.36
49 43 -6 -337.5 -0.35
49 43 -6 -256.5 -0.34
49 43 -6 -265.5 -0.34
49 43 -6 -274.5 -0.35
49 43 -6 -283.5 -0.36
49 43 -6 -292.5 -0.37
49 44 -5 -301.5 -0.38
49 44 -5 -254 -0.39
49 45 -4 -276.5 -0.41
49 46 -3 -227.5 -0.44
2

49 47 -2 -192 -0.45
49 48 -1 -155 -0.47
49 49 0 -116.5 -0.49
49 49 0 -76.5 -0.51
49 49 0 -91.5 -0.52
49 51 2 -91.5 -0.54
49 51 2 21.5 -0.56
49 51 2 -5.5 -0.58
49 52 3 -2.5 -0.59
49 52 3 57 -0.6
49 52 3 46.5 -0.61
49 51 2 51 -0.61
49 52 3 -1 -0.61
49 52 3 73.5 -0.61
49 51 2 63 -0.6
49 52 3 11 -0.6
49 51 2 85.5 -0.59
49 51 2 18.5 -0.59
49 50 1 36.5 -0.57
49 50 1 -17 -0.56
49 50 1 -0.5 -0.56
49 50 1 1 -0.55
49 50 1 2.5 -0.55
49 49 0 4 -0.54
49 50 1 -51 -0.54
49 49 0 20.5 -0.54
49 49 0 -49.5 -0.54
49 50 1 -34.5 -0.54
49 50 1 22 -0.54
49 49 0 8.5 -0.54
49 49 0 -46.5 -0.55
49 49 0 -31.5 -0.55
49 49 0 -31.5 -0.55
49 50 1 -31.5 -0.55
49 50 1 25 -0.56
49 50 1 11.5 -0.56
49 50 1 13 -0.56
49 50 1 14.5 -0.56
49 49 0 16 -0.56
49 49 0 -39 -0.55
49 50 1 -24 -0.55
49 50 1 32.5 -0.55
49 49 0 19 -0.55
49 50 1 -36 -0.55
49 50 1 35.5 -0.55
49 47 -2 22 -0.55
49 47 -2 -146 -0.47
49 47 -2 -104 -0.47
49 54 5 -107 -0.66
3

49 54 5 285.5 -0.68
49 54 5 188 -0.69
49 54 5 195.5 -0.71
49 54 5 203 -0.71
49 55 6 210.5 -0.71
49 54 5 274.5 -0.71
49 55 6 212 -0.71
49 55 6 291 -0.69
49 53 4 285 -0.68
49 54 5 181 -0.67
49 53 4 273.5 -0.66
49 52 3 209.5 -0.64
49 51 2 174 -0.62
49 50 1 137 -0.6
49 49 0 98.5 -0.58
49 48 -1 58.5 -0.55
49 47 -2 17 -0.53
49 47 -2 -26 -0.51
49 47 -2 -14 -0.49
49 47 -2 -17 -0.48
49 46 -3 -20 -0.47
49 46 -3 -79.5 -0.47
49 46 -3 -69 -0.47
49 46 -3 -73.5 -0.47
49 46 -3 -78 -0.47
49 46 -3 -82.5 -0.48
49 46 -3 -87 -0.49
49 47 -2 -91.5 -0.51
49 47 -2 -39.5 -0.52
49 48 -1 -57.5 -0.53
49 48 -1 -4 -0.54
49 49 0 -20.5 -0.56
49 49 0 34.5 -0.57
49 48 -1 19.5 -0.57
49 49 0 -37 -0.58
49 49 0 33 -0.58
49 48 -1 18 -0.58
49 48 -1 -38.5 -0.58
49 48 -1 -25 -0.58
49 49 0 -26.5 -0.58
49 49 0 28.5 -0.59
49 49 0 13.5 -0.59
49 49 0 13.5 -0.59
49 49 0 13.5 -0.59
49 48 -1 13.5 -0.58
49 49 0 -43 -0.58
49 49 0 27 -0.58
49 48 -1 12 -0.58
49 49 0 -44.5 -0.58
4

49 49 0 25.5 -0.58
49 49 0 10.5 -0.58
49 49 0 10.5 -0.58
49 48 -1 10.5 -0.58
49 49 0 -46 -0.58
49 48 -1 24 -0.58
49 48 -1 -47.5 -0.58
49 49 0 -34 -0.58
49 48 -1 21 -0.58
49 49 0 -50.5 -0.59
49 49 0 19.5 -0.59
49 49 0 4.5 -0.59
49 49 0 4.5 -0.59
49 49 0 4.5 -0.59
49 49 0 4.5 -0.59
49 49 0 4.5 -0.59
49 49 0 4.5 -0.59
49 48 -1 4.5 -0.59
49 49 0 -52 -0.59
49 48 -1 18 -0.59
49 48 -1 -53.5 -0.59
49 49 0 -40 -0.59
49 49 0 15 -0.59
49 49 0 0 -0.59
49 48 -1 0 -0.59
49 49 0 -56.5 -0.59
49 49 0 13.5 -0.59
49 48 -1 -1.5 -0.59
49 48 -1 -58 -0.59
49 49 0 -44.5 -0.6
49 49 0 10.5 -0.6
49 49 0 -4.5 -0.6
49 49 0 -4.5 -0.6
49 49 0 -4.5 -0.6
49 49 0 -4.5 -0.6
49 49 0 -4.5 -0.6
49 49 0 -4.5 -0.6
49 49 0 -4.5 -0.6
49 49 0 -4.5 -0.6
49 49 0 -4.5 -0.6
49 49 0 -4.5 -0.6
49 48 -1 -4.5 -0.6
49 49 0 -61 -0.6
49 49 0 9 -0.6
49 49 0 -6 -0.61
49 49 0 -6 -0.61
49 49 0 -6 -0.61
49 49 0 -6 -0.61
49 48 -1 -6 -0.61
5

49 48 -1 -62.5 -0.61
49 49 0 -49 -0.61
49 49 0 6 -0.61
49 49 0 -9 -0.61
49 49 0 -9 -0.62
49 49 0 -9 -0.62
49 49 0 -9 -0.62
49 49 0 -9 -0.62
49 49 0 -9 -0.62
49 49 0 -9 -0.62
49 49 0 -9 -0.62
49 48 -1 -9 -0.62
49 48 -1 -65.5 -0.62
49 48 -1 -52 -0.62
49 48 -1 -53.5 -0.63
49 49 0 -55 -0.63
49 49 0 0 -0.63
49 49 0 -15 -0.64
49 49 0 -15 -0.64
49 50 1 -15 -0.64
49 49 0 41.5 -0.64
49 49 0 -28.5 -0.65
49 49 0 -13.5 -0.64
49 50 1 -13.5 -0.64
49 49 0 43 -0.65
49 50 1 -27 -0.65
49 49 0 44.5 -0.7
49 50 1 -25.5 -0.7
49 49 0 46 -0.71
49 49 0 -24 -0.71
49 49 0 -9 -0.7
49 49 0 -9 -0.7
49 49 0 -9 -0.7
49 49 0 -9 -0.7
49 49 0 -9 -0.7
49 49 0 -9 -0.71
49 49 0 -9 -0.71
49 48 -1 -9 -0.71
49 49 0 -65.5 -0.71
49 49 0 4.5 -0.71
49 49 0 -10.5 -0.71
49 49 0 -10.5 -0.71
49 49 0 -10.5 -0.71
49 49 0 -10.5 -0.72
49 49 0 -10.5 -0.72
49 49 0 -10.5 -0.72
49 49 0 -10.5 -0.72
49 48 -1 -10.5 -0.72
49 49 0 -67 -0.73
6

49 49 0 3 -0.73
49 49 0 -12 -0.73
49 49 0 -12 -0.73
49 49 0 -12 -0.73
49 48 -1 -12 -0.73
49 49 0 -68.5 -0.73
49 49 0 1.5 -0.73
49 49 0 -13.5 -0.74
49 49 0 -13.5 -0.74
49 49 0 -13.5 -0.74
49 49 0 -13.5 -0.74
49 49 0 -13.5 -0.74
49 48 -1 -13.5 -0.74
49 49 0 -70 -0.75
49 49 0 0 -0.75
ANEXO E
Diagramas eléctricos del Hardware.

1. LEGO MINDSTORMS NXT hardware schematic.pdf


2. LEGO MINDSTORMS NXT keypad schematic.pdf
3. LEGO MINDSTORMS NXT Light Sensor hardware schematic.pdf
4. LEGO MINDSTORMS NXT Ultrasonic Sensor hardware schematic.pdf
1
2
3
4

También podría gustarte