Sie sind auf Seite 1von 211

“Diseño y programación de algoritmos de control en

robots móviles. Estudio y aplicación a


ROBOTINO - FESTO”.

Trabajo de Titulación para optar al


Título de Ingeniero en Electrónica

PROFESOR PATROCINANTE:
Sr. Pedro Rey Clericus.
Ingeniero Electrónico.
Licenciado en Ciencias de la Ingeniería.
Diplomado en Ciencias de la Ingeniería.

Felipe A. Cid Burgos – Javier A. Melillanca Cerón


VALDIVIA – Chile
2010
Comisión de Titulación II

Profesor Patrocinante:

_____________________________
Sr. Pedro Rey Clericus

Profesores Informantes:

_____________________________
Sr. Daniel Lühr S.

_____________________________
Sr. Franklin Castro R.
Agradecimientos III

Felipe Andrés Cid Burgos.

“Aprovecho esta instancia para dar gracias a todos mis profesores y compañeros
dentro de la carrera Ingeniería Electrónica, que han sido parte fundamental en la creación
de este trabajo de titulo, ya que sin ellos, no hubiese tenido el coraje ni la entereza para
haber llegado tan lejos en mi vida profesional. Y un agradecimiento especial a mis padres
y hermanos, que me han ayudado a ser el hombre que soy ahora”.

Javier Alejandro Melillanca Cerón.

“Este trabajo de titulo representa un gran paso en mi vida, del cual parte fundamental de
esto no hubiese sido posible sin el apoyo de mis padres, Ester y José, y mis hermanos,
José y Andrés, que me brindaron su sacrificio, para poder realizarme como profesional. A
quienes agradezco en forma infinita”.

“Agradezco también a mis amigos y profesores del Instituto de Electricidad y Electrónica,


que me ayudaron en este camino a ser profesional. En especial a los profesores, Sr.
Pedro Rey y Sr. Daniel Lühr, por su tiempo y ayuda, en la realización de este proyecto de
titulación”.

Dedicado a mi Padre.

José Saturnino Melillanca Nempu. (Q.E.P.D)


Índice IV

Portada I

Comisión de Titulación II

Agradecimientos III

Índice IV

Resumen X

Summary XI

Introducción XII

Contenido
Capítulo I “Robotino” 1
1.1. - Acerca de Robotino. 2
1.2.- Aspectos Físicos. 3
1.2.1.- Componentes básicos. 3
1.3.- Puesta en Marcha. 13
1.3.1.- Encendido/ Apagado. 13
1.3.2.- Uso del Display. 14
1.4.- Conectividad 15
1.4.1.- Conectividad LAN Ethernet 15
1.4.2.- Conectividad WLAN 16
1.5.- Sistema de energía. 19
1.5.1.- Baterías EFFEKTA. 19
1.5.2.- Cargador de baterías. 19
1.6.- Sensores 20
1.6.1.- Sensor inductivo 20
1.6.2.- Sensor de fibra óptica 21

Capítulo II “Robotino View” 22


2.1.- Bloques de función. 23
2.2.- Simplificación de bloques. 25
V
2.2.1.- Reducción de constantes: 25
2.2.2.- Reducción de bloques matemáticos: 27
2.3.- Control de Secuencias 29
2.4.- Escalar Sensores IR 31
2.5.- Simulación “ROBOTINO SIM”. 35
2.6.- Variables externas e internas 37
2.6.1.- Variables externas 37
2.6.2.- Variables internas: 39
2.7.- Ejemplos. 41

Capítulo III “Control de posición y movimiento” 46


3.1 Control de Posición y Recorridos por Odometría. 47
3.1.1.- Odometría por entorno grafico: 48
3.1.2.- Odometría basado en control secuencial: 51
3.2.- Control de recorrido controlado por tiempo 56
3.3.- Ejemplos de otros sistemas de control de recorrido. 62
3.3.1.- Ejemplos de control de recorrido por suma de tramos. 62
3.3.2.- Ejemplos de control de recorrido por suma de incrementos. 64

Capítulo IV “Sensores específicos” 69


4.1.- Sensores Fotoeléctricos. 70
4.1.1.- Principio de funcionamiento. 70
4.1.2.- Construcción. 72
4.1.3.- Ejemplo. 73
4.2.- Sensor de Reflexión directa. 78
4.2.1.- Principio de Funcionamiento. 78
4.2.3.- Construcción. 80
4.2.4.- Ejemplo. 80
4.3.- Sensor Inductivo. 83
4.3.1.- Principio de funcionamiento. 83
4.3.2.- Construcción. 84
4.3.3.- Ejemplo. 85

Capitulo V “Visión Artificial” 86


VI
5.1 Webcam. 87
5.2.- Detección de segmentos. 87
5.3.- Detección de Líneas. 96

Capítulo VI “Aplicaciones” 102


6.1.- Jugador de Hockey. 103
6.1.1.- Reglas del Juego. 103
6.1.2.- Campo de Juego. 105
6.1.3.- Estrategias de ataque. 106
6.1.4.- Estrategias de defensa 114
6.2.- Bodegaje Automatizado. 117
6.2.1.- Entrada de datos. 118
6.2.2.- Entrada a la sala. 118
6.2.3.- Ubicación de estantes. 118
6.2.4.- Entrega de Paquetes. 119
6.2.5. Retiro del estante y reinicio. 120

Capítulo VII “Conclusiones y Líneas de trabajo futuro” 121


Conclusiones 122
Líneas de trabajo Futuro 123

Bibliografía 125

Anexos 127

Anexo I “Datos Técnicos” 128


1.1.- Robotino. 129
1.2.- Unidad de Accionamiento. 130
1.3.- Webcam. 131
1.4.- Sensor Inductivo. 132
1.5.- Interface E/S. 133

Anexo II “Bloques de función” 134


A.2.1.- Lógica. 135
A.2.1.1.- Contador Incremental. 135
A.2.1.2.- Contador Decremental. 136
VII

A.2.1.3.- Demultiplexor. 137


A.2.1.4.- Multiplexor. 138
A.2.1.5.- AND. 139
A.2.1.6.- AND FL. 140
A.2.1.7.- NAND. 140
A.2.1.8.- NAND FL. 141
A.2.1.9.- OR. 142
A.2.1.10.- NOR. 143
A.2.1.11.- XOR. 143
A.2.1.12.- NOT. 144
A.2.1.13.- RS. 144
A.2.2.- Matemáticas. 146
A.2.2.1.- Adición. 146
A.2.2.2.- Substracción. 147
A.2.2.3.- Multiplicación. 147
A.2.2.4.- División. 148
A.2.2.5.- Máximo. 149
A.2.2.6.- Mínimo. 149
A.2.2.7.- Modulo. 150
A.2.2.8.- Mayor y Mayor Igual. 151
A.2.2.9.- Menor y Menor Igual. 151
A.2.2.10.- Igual y Desigual. 152
A.2.2.11.- Función de Transferencia. 153
A.2.2.12.- ABS. 154
A.2.3.- Cálculo de Vectores. 155
A.2.3.1.- Constante de Vector. 155
A.2.3.2.- Cartesiano según Vector. 155
A.2.3.3.- Polar según Vector. 156
A.2.3.4.- Vector Cartesiano. 156
A.2.3.5.- Vector según Polar. 157
A.2.3.6.- Adición de Vectores. 157
A.2.3.7.- Substracción de Vectores. 158
VIII

A.2.3.8.- Multiplicación de Vectores. 159


A.2.3.9.- Definir longitud. 159
A.2.3.10.- Rotar. 160
A.2.3.11.- Producto Escalar. 160
A.2.4.- Indicación. 161
A.2.4.1.- Osciloscopio. 161
A.2.4.2.- Indicación de Vectores. 163
A.2.5.- Procesamiento de imágenes. 164
A.2.5.1.- Segmentador. 164
A.2.5.2.- Extractor de segmentos. 166
A.2.5.3.- Detector de líneas. 168
A.2.6.- Generadores. 170
A.2.6.1.- Generador Rectangular. 170
A.2.6.2.- Generador de Picos. 171
A.2.6.3.- Generador Sinusoidal. 172
A.2.6.4.- Constante. 172
A.2.6.5.- Modulo de Tiempo. 173
A.2.7.- Filtros. 174
A.2.7.1.- Aplanar. 174
A.2.8.- Robotino hardware. 175
A.2.8.1.- Webcam. 175
A.2.8.2.- Distancia. 178
A.2.8.3.- Entradas y Salidas Digitales. 179
A.2.8.4.- Entrada Analógica. 180
A.2.8.5.- Relé. 180
A.2.8.6.- Motor. 182
A.2.8.7.- Salida de Potencia. 183
A.2.8.8.- Paragolpes. 184
A.2.8.9.- Omniaccionamiento. 185
A.2.8.10.- Gestión de potencia. 187
A.2.8.11.- Odometría. 187
A.2.8.12.- Entrada del transmisor giratorio. 188
IX
A.2.9.- Navegación. 189
A.2.9.1.- Indicación de la posición. 189
A.2.9.2.- Buscador de recorrido. 191
A.2.10.- Intercambio de Datos. 192
A.2.10.1.- Escritor de Valores.- 192
A.2.10.2.- Lector de Valores.- 194
A.2.10.3.- Variables Globales. 195
A.2.11.- Mando Secuencial. 196
A.2.11.1.- Salida A, B o C. 196
A.2.11.2.- Start. 197
A.2.11.3.- Sincronización Y. 197
A.2.11.4.- Sincronización O. 197
Resumen X

En este trabajo de titulación se analizan, trabajan y diseñan algoritmos basado en


el software de control Robotino View, para el Robot omnidireccional Robotino de la
empresa de automatización alemana FESTO S.A, de su división DIDACTIC. La finalidad
de diseñar algoritmos de control, se basa en la necesidad de llevar al máximo la
potencialidad del software, como el hardware construido por el fabricante, de esa manera,
explorar campos como el posicionamiento, visión artificial, el uso de sensores y la
simulación de algoritmos basados en lógica digital.

De esta manera se realiza un estudio de su software y hardware, como de sus


limitaciones, para ello se genera una serie de explicaciones, set de ejemplos de diferentes
funciones y especificaciones del equipo. Detallando varias medidas a considerar durante
la utilización y puesta en marcha, como también problemas de conectividad, precisión y
diferencias de valores en los ejemplos realizados.
Summary XI

In this final year project, we analyze and design algorithms work based on the
control software Robotino View, Omnidirectional Robot Robotino for the German
automation company Festo S.A, DIDACTIC division. The purpose of designing control
algorithms, is based on the need to maximize the potential of the software, and hardware
built by the manufacturer, thus, exploring areas such as positioning, machine vision, the
use of sensors and simulation of algorithms based on digital logic.

In this way a study of its software and hardware, and their limitations, for it
generates a series of explanations, examples of different set of features and specifications
of the equipment. Detailing several measures to be considered over the use and
implementation, as well as connectivity issues, accuracy and balance of values in the
samples made
Introducción XII

La robótica, como ciencia aplicada, representa en los tiempos actuales una


necesidad imperante. La primera revolución que presentó este tipo de tecnología, fue la
construcción de robots industriales, que a modo general ayudaron a las empresas en sus
cadenas de producción, mejorando la productividad donde se utilizan líneas de
ensamblado por ejemplo, empresas automotrices, fábricas de artículos electrónicos de
consumo (teléfonos celulares, televisores, entre otros). La segunda revolución de la
robótica, que actualmente está en desarrollo, es la de robots de servicio, en palabras
simples robots construidos para ayudar a las personas en las labores cotidianas, estas
labores incluyen desde el cuidado de enfermos o la compañía de personas solitarias
hasta asistencia en actividades profesionales.

Robotino se inserta en estas actividades al ser un sistema robotizado móvil


mecatrónico, diseñado y construido por FESTO S.A, empresa alemana dedicada a la
automatización con un énfasis en la educación técnica superior. Esta plataforma móvil, a
su vez, integra un software de control llamado Robotino VIEW, el cual usa una interfaz
visual altamente didáctica y que es diseñado para ser aplicado a entornos educativos y de
enseñanza en instituciones de formación profesional.

En el presente proyecto se propone trabajar con el diseño y la implementación de


aplicaciones basadas en robots móviles, utilizándose como plataforma de sistema
embebido un robot móvil. En concreto se trata del robot Robotino de la empresa FESTO.
Además se busca explorar sus capacidades técnicas, para la resolución de problemas
prácticos, y verificar las potencialidades del software de control Robotino VIEW, como
también las limitaciones y posibles desarrollos utilizando esta plataforma como base para
la ejecución de futuros proyectos.

Objetivos

Objetivos generales:

• Estudiar, diseñar y programar modelos de algoritmos, aplicados a una plataforma


onmidireccional Robotino FESTO, con un perfil de aplicación a tareas practicas,
basado en la utilización del software de control Robotino VIEW.
XIII
Objetivos específicos:

• Describir componentes físicos más relevantes incorporados en la plataforma.


• Formular especificaciones para el uso del software de programación de Robotino
VIEW.
• Diseñar modelos de algoritmos específicos, para aplicaciones prácticas
• Estudiar las potencialidades de conectividad de Robotino.
• Estudiar funcionalidad de webcam, en visión artificial a través de software
Robotino VIEW.
• Programar rutinas de movimientos, utilizando distintos escenarios, en un espacio
acotado, usando navegación autónoma.
• Estudiar las posibles aplicaciones de Robotino en ambiente controlado y su
factibilidad de implementación practica.
Capítulo I
“Robotino”

1
2

1.1. - Acerca de Robotino.

Robotino es un robot construido por la empresa alemana FESTO S.A, con


presencia a nivel mundial, cuya principal línea base de desarrollo, es la automatización y
control de procesos productivos, integrando dentro de sus productos un alto índice de
innovación tecnológica para la obtención de una máxima producción.

Dentro de sus divisiones de productos y soluciones tecnológicas, se deriva la


división FESTO Didactic, con 35 años de existencia dedicada a la formación y
perfeccionamiento industrial, lo que a su vez también incorpora la utilización de
equipamientos para la formación y calificación de personal en entornos productivos
industriales [1].

Robotino es un producto de la división Didactic, es un sistema de robot móvil con


actuador omnidireccional, un sistema de aprendizaje para la formación y
perfeccionamiento, e incluso una plataforma de investigación y desarrollo para escuelas
técnicas en un mismo sistema. Su operación a través de su manejo onmidireccional le
permite hacer movimientos hacia delante, atrás y lateralmente, además permitiéndole
girar sobre un punto determinado, todo esto sumado a la incorporación de sensores
analógicos y digitales y una webcam para su interacción a través de visión artificial. Todo
esto incorporado en su puente de mando, que integra un sistema embebido, con
características de computadora de prestaciones industriales PC-104, compatible con
MOPSlcdVE, 300 MHz, y sistema operativo Linux con kernel en tiempo real, a través de
disco flash de memoria (1 GB), con API C++ para control de Robotino. La distribución de
sus 3 motores, separados entre ellos por 120°, en c onjunto con las ruedas
omnidireccionales, permiten el movimiento hacia diferentes lugares en un sistemas de
coordenadas de 2 dimensiones, están sujetos a una base de acero inoxidable, cuyas
junturas tienen una terminación de soldadura láser de precisión, lo que le entrega un
diseño innovador, para su utilización en tareas prácticas.

Su operación a través del software Robotino VIEW, permite una programación


altamente didáctica, incorporando diseño de bloques secuenciales y funcionales de
programación, todo esto conectado a través de una LAN inalámbrica, que permite un
conexión permanente y continua con la operación del equipo, y con sus sensores, como
también la operación de su cámara web.
3

1.2.- Aspectos Físicos.

En base a los diferentes componentes que conforman el equipo Robotino –


FESTO, se entregará una breve descripción a cada una de las principales partes [2].

1.2.1.- Componentes básicos.

Primero nos referiremos a los componentes más básicos que permiten el


funcionamiento y forman parte de la estructura en sí como son:

1.2.1.1.- Chasis.

Estructura base de Robotino, esta base está hecha de acero inoxidable y un


soldado por laser. Ver Fig. 1.2.1.1

Fig. 1.2.1.1 - Chasis

Dentro del chasis es importante destacar las 2 Asas (1(2x) ver Fig. 1.2.1.1) que
están hechas específicamente para los momentos en los que se debe levantar o
transportar a Robotino, esto se debe a que si es sujeto desde otro de sus componentes
puede provocar un daño significativo al equipo.

Además de las Asas es importante añadir que gracias a su versátil chasis se le


permiten la conexión de otros elementos como son las baterías, unidad de accionamiento,
la banda anticolisión, la Webcam y los demás sensores, que se mencionaran mas tarde
en este texto.
4

1.2.1.2.- Baterías.

El equipo necesita de energía para su funcionamiento autónomo, por lo que posee


un sistema de alimentación de dos baterías recargables de 12 V-DC, ubicadas dentro del
chasis. Además de las dos baterías que están incorporadas, es posible intercambiarlas
por dos baterías extras, para que el equipo no pause su funcionamiento, y a su vez pueda
entregar un trabajo casi continuo, así mientras se carga el primer par de baterías se
puede cargar el segundo par.

También existe la posibilidad de cargar directamente las baterías que se


encuentran en el chasis a través de un conector integrado a este. Ver Fig. 1.2.1.2 (3(2x)).

Fig. 1.2.1.2 - Baterías

1.2.1.3.- Unidad de Accionamiento.

Para un movimiento omnidireccional Robotino consta de 3 unidades de


accionamiento omnidireccionales independientes (ver Fig. 1.2.1.2 (2(3x))), en una
posición de 120° cada una con respecto a la otra (v er Fig. 1.2.1.3.A).
5

Fig. 1.2.1.3.A – Posición de las unidades de accionamiento

Para un desplazamiento controlado cada una de las unidades de accionamiento


poseen los siguientes elementos: Ver Fig. 1.2.1.3.B

1. - Motor DC.
2. - Encoder incremental.
3. - Rodillos omnidireccionales.
4. - Reductor con una relación de reducción de 16:1.
5. - Correa dentada.

Fig. 1.2.1.3.B – Unidad de accionamiento


6

En el caso de los rodillos omnidireccionales ellos son dirigidos en una dirección por
su propio eje pero también les es posible ir en una dirección diferente que sea definida por
uno o más unidades de desplazamiento. Eso es gracias a que al trabajo de dos unidades
juntas logra crear una dirección diferente a las establecidas por el funcionamiento de un
solo eje.

Los datos técnicos de los elementos que componen la unidad de accionamiento se


encuentran en el anexo 1 (1.2.- Unidad de Accionamiento).

1.2.1.4.- Cámara (Webcam).

El robot Robotino trabaja en un entorno de programación que le permite trabajar


con imágenes y video en tiempo real, todo esto es posible con una cámara de color VGA
CMOS de conexión USB 1.1 con la que captura imágenes que puede procesar para
ciertas rutinas, así también como la detección en modo video de una línea y separar
segmentos todo a través del software del equipo. Ver Fig. 1.2.1.5 (A)

Los datos técnicos de la cámara en el anexo 1 (1.3.- Webcam).

Fig. 1.2.1.4.- Webcam del equipo


7

1.2.1.5.- Unidad de Control.

La unidad de control es la que ordena y distribuye las instrucciones del programa a


las diferentes partes, como también trasmite los datos de los sensores y la cámara a un
PC. Ver Fig. 1.2.1.5.A (B).

Fig. 1.2.1.5.A – Unidad de control

Esta unidad de control está conformada por los siguientes elementos:

 Procesador PC104 de 300 Mhz., Con un S.O. Linux con kernel en tiempo real y
un SDRAM 128 MB.
 Punto de Acceso LAN inalámbrico.
 Tarjeta Compact Flash (1 GB)
 Interfaces.
 Teclado y Display
 Interface E/S

Se realizará un breve análisis a algunos de estos elementos para explicar brevemente


su funcionamiento.
8

Fig. 1.2.1.5.B – Elementos unidad de control

A.- Tarjeta Compact Flash.

Tarjeta de PC que contiene el sistema operativo del equipo, las librerías de


funciones y los programas, esto permite la actualización a través del cambio de esta
tarjeta por otra.

La tarjeta que está en el Robotino y es usada en esta tesis tiene una capacidad de
1 GB de memoria. Ver Fig. 1.2.1.5.B (A)

B.- Las Interfaces.

Esta unidad para su configuración y conectividad trae una serie de interfaces que son:

1.- Conexión VGA.

2.- 2 entradas USB.

3.- Conexión Ethernet.


9

Fig. 1.2.1.5.C.- Interfaces

Estas interfaces están creadas para la conexión de un ratón, un teclado y una


pantalla para acceder al sistema operativo, también existe una entrada de Ethernet en
caso de fallos en la comunicación WLAN. Ver Fig. 1.2.1.5.B (B) y Fig. 1.2.1.5.C

C.- Teclado membrana y Display.

Se puede apreciar en la parte superior de la unidad de control un teclado y un


display, a través de ellos se puede observar información e incluso seleccionar las
opciones necesarias para ejecutar un programa de forma manual.

En el display al prender el equipo sale el nombre del equipo, la dirección IP y la


versión del S.O. Ver Fig. 1.2.1.5.D.
10

Fig 1.2.1.5.D.- Teclado membrana

D.- Interface E/S.

Es una interface para la conexión de sensores y actuadores adicionales, a través de:

 8 entradas analógicas (0 a 10 V) (AIN0 hasta AIN7)


 8 entradas digitales (DI0 hasta DI7)
 8 salidas digitales (DO0 hasta DO7)
 2 relés para actuadores adicionales (REL0 y REL1). Los contactos de los relés
pueden utilizarse como NA, NC o conmutados.

Para ver la asignación de estos bornes en la Interface E/S ir al Anexo 1 (1.5.- Interface
E/S).
11

1.2.1.6.- Sensores.

Se hará una descripción de los sensores más simples que ayudan al equipo a
encontrar y medir las distancias de otros objetos u obstáculos al equipo.

A.- Sensor anticolisión.

Está conformado por una banda de detección que circunda el chasis y contiene
una cámara con dos superficies conductoras, estas superficies mantienen una
determinada distancia entre sí, por lo cual permite que hagan contacto a la mínima
cantidad de presión en la banda. Todo esto permite que sea capaz de detenerse a la
mínima colisión con algún obstáculo. Ver Fig. 1.2.1.6.A (A)

Fig. 1.2.1.6.A - Sensor anticolisión

B.- Sensores infrarrojos.

El equipo cuenta con 9 sensores de medición de distancia por sensores infrarrojos,


colocados en una Angulo de 40° entre sí. Lo que le permite monitorear obstáculos o
elementos en su zona circundante. Ver Fig. 1.2.1.6.A (B)

Una de las mejores capacidades es la medición de distancias desde el sensor al


obstáculo con un rango entre 4 y 30 cm.
12

Los sensores son llamados IR1-9 pero en el software son direccionados como:
“IR1 en Distance 1” de la misma forma de IR2 a “Distance 2” hasta llegar a “Distance 9”.
Ver Fig. 1.2.1.6.B y Fig. 1.2.1.6.C.

Fig. 1.2.1.6.B.- Grados de ubicación sensores.

Fig. 1.2.1.6.C.- Disposición de sensores.


13

1.3.- Puesta en Marcha.

Después de saber que es Robotino y los componentes que lo conforman se dará


inicio a cómo poner en marcha a el equipo, primero se dará como recomendación colocar
sobre a Robotino sobre el dispositivo elevador que trae el equipo para verificar el
funcionamiento de los motores, sensores y la cámara.

Recomendaciones:

1.- Recuerde coger el equipo desde las Asas y nunca de la unidad de control.

2.- Los obstáculos siempre deben llegar hasta el suelo para que la banda anticolisión y los
sensores infrarrojos lo detecten.

3.- Para evitar arranques inesperados si se encuentra encendido pero con el display
desactivado no presione la tecla “Enter” sino que presione otra tecla como los
direccionales para volver a activarlo.

4.- Si se ejecutan los programas de demostración (Demo’s) debe ser un suelo plano y
bien nivelado.

1.3.1.- Encendido/ Apagado.

Para activar el equipo se debe presionar la tecla ON/OFF por un tiempo hasta que
el display se active. Apareciendo dos barras que cruzarán la pantalla dando arranque al
PC de Robotino.

Después de 30 segundos cuando se encuentre en pleno funcionamiento el display


mostrara su nombre “Robotino”, su IP, su S.O. y el estado de las baterías.

Para un uso eficiente de la energía Robotino al estar sin actividad durante 10


segundos desactiva el display para bajar el consumo de corriente. Por lo que al volver a
presionar una de las teclas direccionales se vuelve a activar.

Para apagar el equipo se debe presionar la tecla ON/OFF hasta que se apague el
LED. Después se debe soltar la tecla para que se apague completamente.
14

1.3.2.- Uso del Display.

Al estar Robotino encendido se debe presionar la tecla “Enter” para ir al menú


principal, para moverse dentro de este menú use las teclas direccionales:

 Flecha Arriba (↑): permite ir a la opción superior a la seleccionada por defecto.


 Flecha Abajo (↓): Permite ir a la opción inferior a la seleccionada por defecto
 Tecla (Enter): Permite activar la opción seleccionada.
 Flecha Izquierda (←). Permite regresar de un menú al anterior.

Ahí aparecerán los siguientes elementos: lenguajes (Languages), Estado de Carga


(State of Charge), Demostraciones (Demo’s), Red (Network), por lo que se le dará una
breve explicación de cada uno:

A.- Lenguajes (Lenguages).

Esta opción permite elegir el idioma que se desea en el display, entre los
siguientes idiomas: Alemán (Deutch), Ingles (English), Francés (Francais) y Español
(Spanish). Siendo el alemán su idioma predefinido.

B.- Estado de Carga (States of Charge).

Es el estado de carga de las baterías como lo son su corriente y voltaje.

C.- Demostraciones (Demo’s).

El Robotino trae una serie de programas de demostración con rutinas como formar
un círculo, seguir una línea, etc

 Las rutinas incluidas son las siguientes:


 Círculo: Se mueve en forma circular con un diámetro de un metro por 10
segundos.
 Avance: Avanza en línea recta un metro por 10 segundos.
 Cuadrilátero: se mueve siguiendo un rectángulo y gira sobre su eje.
 Explorar: Se mueve en línea recta y evade obstáculo en su trayectoria.
 Seguir una línea: se mueve usando la cámara y siguiendo una línea de aprox. 5
cm de grosor.
15

D.- Red (Network).

Aquí se indica la IP actual con la que trabaja Robotino, esta puede ser cambiada
usando las teclas direccionales.

1.4.- Conectividad

Robotino incorpora 2 modalidades de conectividad para la transmisión de datos,


incorporado a través de Live 1 WAP 0004, que en sus opciones de conexión esta:

- LAN Ethernet, a través de un acceso de cable RJ-45.


- WLAN, a través de WIFI 802.11 b/g.

1.4.1.- Conectividad LAN Ethernet

Con un acceso frontal desde el puente de mando ubicado en la parte frontal lado
izquierdo (Fig.1.4.1)

Fig. 1.4.1 – Puerto Ethernet RJ-45.

Utilizando su AP, se adapta al protocolo TCP IP, como una red LAN, utilizando una
extensión RJ – 45 para su conexión, después su acceso de PC Ethernet, se configura la
red como una IP predeterminado en Robotino, usando su AP incorporado al robot.
16

1.4.2.- Conectividad WLAN

La mayor potencialidad de Robotino, es su conectividad a través de WLAN


Standard IEEE 802.11b (11 Mbits a 2.4 Ghz) y 802.11g (54 Mbits a 2.4 Ghz), con un limite
de alcance de hasta 100 Mts. dentro de edificios, con una encriptación de red segura
WEP o WPA-PSK, la cual permite una interacción con el software de control, continua e
ininterrumpida para la trasmisión de datos y su navegación autónoma con libertad e
independencia.

1.4.2.1.- DHCP e IP estática

DHCP (sigla en inglés de Dynamic Host Configuration Protocol - Protocolo


Configuración Dinámica de Servidor) es un protocolo de red que permite a los nodos de
una red IP obtener sus parámetros de configuración automáticamente. Se trata de un
protocolo de tipo cliente/servidor en el que generalmente un servidor posee una lista de
direcciones IP dinámicas y las va asignando a los clientes conforme éstas van estando
libres, sabiendo en todo momento quién ha estado en posesión de esa IP, cuánto tiempo
la ha tenido y a quién se la ha asignado después.

Sin DHCP, cada dirección IP debe configurarse manualmente en cada


computadora y, si la computadora se mueve a otra subred, se debe configurar otra
dirección IP diferente. El DHCP le permite al administrador supervisar y distribuir de forma
centralizada las direcciones IP necesarias y, automáticamente, asignar y enviar una
nueva IP si fuera el caso en la computadora es conectada en un lugar diferente de la red.

El protocolo DHCP incluye tres métodos de asignación de direcciones IP:

• Asignación manual o estática: Asigna una dirección IP a una máquina


determinada. Se suele utilizar cuando se quiere controlar la asignación de
dirección IP a cada cliente, y evitar, también, que se conecten clientes no
identificados.
• Asignación automática: Asigna una dirección IP de forma permanente a una
máquina cliente la primera vez que hace la solicitud al servidor DHCP y hasta que
el cliente la libera. Se suele utilizar cuando el número de clientes no varía
demasiado.
17

• Asignación dinámica: el único método que permite la reutilización dinámica de


las direcciones IP. El administrador de la red determina un rango de direcciones IP
y cada computadora conectada a la red está configurada para solicitar su dirección
IP al servidor cuando la tarjeta de interfaz de red se inicializa. El procedimiento usa
un concepto muy simple en un intervalo de tiempo controlable. Esto facilita la
instalación de nuevas máquinas clientes a la red.

1.4.2.2.- Conexión con Robotino VIEW

La utilización de WLAN con Robotino VIEW, es a través de la red SSID “Robotino®


X.X”, en las redes disponibles.

Para una conexión correcta, es indispensable realizar los siguientes ajustes en la red:

- Asignar automáticamente una clave de red (SSID)

- Obtener una dirección IP automáticamente

Dentro de las principales pruebas de conectividad a realizar para verificar un envío y


recepción de datos efectiva se realizan 2 pasos a través de MS-DOS, ping e ipconfig

Cmd ping. Conexión correcta

.C:\›ping 172.26.1.1

Haciendo ping a 172.26.1.1 con 32 bytes de datos:

Respuesta desde 172.26.1.1: Bytes=32 tiempo=4ms TTL=64

Respuesta desde 172.26.1.1: Bytes=32 tiempo=2ms TTL=64

Respuesta desde 172.26.1.1: Bytes=32 tiempo=3ms TTL=64

Respuesta desde 172.26.1.1: Bytes=32 tiempo=6ms TTL=64

Paquetes: enviados = 4, recibidos = 4, perdidos = 0 (0% perdidos),


18
Cmd ping. Conexión incorrecta.
Haciendo ping a 172.26.1.1 con 32 bytes de datos::

Tiempo de espera agotado para esta solicitud.

Tiempo de espera agotado para esta solicitud

Tiempo de espera agotado para esta solicitud

Tiempo de espera agotado para esta solicitud

Paquetes: enviados = 4, recibidos = 0, perdidos = 4 (100%


perdidos),

Cmd ipconfig

C:\›ipconfig

Ethernet adaptador conexión de área local:

Sufijo DNS específico de la conexión :

Descripción .....................................: Dell Wireless 1470 Dual Band WLAN Mini-PCI

........................................................ card

Dirección física................................: 00-14-A5-44-A4-D6

DHCP habilitado..............................: Sí

Autoconfiguración habilitada..........: Sí

Dirección IP .....................................: 172.26.201.1

Máscara de subred .........................: 255.255.0.0

Puerta de enlace predeterminada...:

Servidor DHCP.................................: 172.26.101.8


19

1.5.- Sistema de energía.

1.5.1.- Baterías EFFEKTA.

Su sistema de energía incorpora un dúo de baterías, de 12 V (Volts), 5 Ah


(Ampere hora) Effekta 12 -5, conectado en serie (Fig. 1.5.A), lo cual aporta un voltaje total
de 24 Volts, para el uso de Robotino.

Fig 1.5.1.A - Ley Kirchoof de voltaje

Fig. 1.5.1. B - Ubicación de baterías.

1.5.2.- Cargador de baterías.

Para la restitución de los valores de energía acumulada en las baterías, se utiliza


un cargador eléctrico ANSMANN alct 24-2, con una conversión de voltaje de 220 (V)-1,2
(A) a 24 (V) – 2(A), con un conector adaptador de conexión de 2,4 [mm]. de espesor (Fig.
1.5.2).
20

Fig. 1.5.2 - Conector cargador.

1.6.- Sensores

En esta sección se trabajará con los sensores más específicos al ser considerados
sensores opcionales, como lo son el sensor inductivo y el sensor de fibra óptica. Estos
sensores dan una mayor gama de aplicaciones específicas.

1.6.1.- Sensor inductivo

Este sensor es conocido como “Sensor inductivo de proximidad” y es caracterizado


por su capacidad de detectar objetos metálicos en el suelo, lo que permite su aplicación
en control filoguiado al leer una línea metálica debajo del equipo que le permite seguir un
patrón definido de movimiento. (Ver Fig. 1.6.1.A)

Para lo cual Robotino normalmente detecta franjas metálicas sobre el suelo,


dependiendo de su cercanía al sensor dando valores de 0- 10 V para las experiencias.

Datos técnicos del sensor en Anexo 1 (1.4.- Sensor Inductivo).


21

Fig. 1.6.1.A – Posición sensor inductivo

1.6.2.- Sensor de fibra óptica

Para que Robotino pueda seguir una ruta se puede implementar con la ayuda de
los dos sensores de reflexión directa (de luz difusa). Por lo que los cables de fibra óptica
se deben conectar a la unidad óptica que funciona con luz roja visible. A través de estos
elementos se puede detectar la luz reflejada, ya que diferentes superficies y colores
producen diferentes grados de reflexión. Sin embargo, no pueden detectarse diferencias
graduales en la luz reflejada. (Ver Fig. 1.6.1.B).

Fig. 1.6.1.B.- Sensores de reflexión directa.


Capítulo II
“Robotino View”

22
23

Capítulo II - Robotino View.

En este capítulo se verán algunos aspectos sobre el programa y los bloques, y


sobre como poder dar un mejor uso, eficiencia y simplificación a las rutinas, a través de
varios análisis a las diferentes herramientas incluidas dentro de los bloques, como por
ejemplo la reducción de constantes.

Así También hacer un análisis al uso del software extra del robot, como es el uso
de su simulador, para poder recrear el funcionamiento de las rutinas en un medio virtual
controlado. Todo esto acompañado de varios ejemplos de diagramas de programas que
pueden crearse con el software.

2.1.- Bloques de función.

Los bloques de función cumplen el papel de comandos en cualquier lenguaje


computacional, por lo cual cada una de estos debe tener opciones de configuración y de
respuesta. También cada bloque contiene un número limitado de entradas y salidas,
además de los parámetros internos.

Estos bloques a través de las ventanas de diálogo, permiten al usuario modificar


los parámetros internos, como también asignar valores de entrada en forma directa. La
estructura básica de estas ventanas de diálogo en todos los bloques de función es
idéntica, por lo cual solo se utilizará una en modo de ejemplo para explicar su análisis.

A continuación se mostrara un ejemplo usando la Ventana de diálogo del bloque


“Seguimiento de línea”:

En cada una de las ventanas de diálogo, se puede apreciar tres opciones que se
pueden seleccionar haciendo click sobre los botones [1], [2] o [3]. El color verde sobre
estas opciones indica cual se encuentra activada.

Opción [1]: Dentro de esta opción se muestran los parámetros internos más importantes,
como también el trabajo sobre una imagen entre otros.
24

Figura 2.1.A.- Opción [1]

Opción [2]: En esta segunda opción, se pueden ver y modificar los datos de las
diferentes entradas y salidas del bloque. En esta opción se puede dar directamente un
valor a una de las entradas o salidas, como también asignar una función matemática a
esta. Todo tipo de funciones se pueden trabajar con los parámetros a, b, c ó d.

Figura 2.1.B.- Opción [2]

Opción [3]: Esta opción nos permite asignar un nombre al bloque de función, como
también nos permite decidir si dejamos el bloque activado o no. Si se desean guardar los
cambios en el nombre o si se desactiva el bloque es necesario presionar la opción
“Ejecutar”, en el caso que no se desee guardar los cambios se debe presionar la opción
“Cancelar”.

Figura 2.1.C.- Opción [3]


25

Iconos en el software de los bloque de función del “Seguimiento de línea” cuando


esta desactivado y cuando esta activo.

Figura 2.1.D.- Desactivado Figura 2.1.E.- Activo

Los bloques de función con sus respectivas características, entradas, salidas y


otros, se encuentran en el Anexo 2.

2.2.- Simplificación de bloques.

Para una mayor eficiencia en el uso y la cantidad de bloques de función, se


trabajará en la simplificación de estos bloques. La forma de simplificar se explicará a
continuación a través de las siguientes indicaciones:

2.2.1.- Reducción de constantes:

La primera forma de simplificación de bloques, es la eliminación de los


generadores de constantes, las contantes generan valores fijos que permiten enviar
valores predefinidos a las entradas de bloques (Ver Fig. 2.2.1.A), pero también es posible
definir esas constante a través de las ventanas de diálogo en la opción [2] o [1] (Ver Fig.
2.2.1.B). A continuación se explicara paso a paso el proceso de simplificación:

1.- Primero se trabaja en función a un programa con constantes por bloques (Ver Fig.
2.2.1.A).

Fig. 2.2.1.A.- Con constante.

2.- Para simplificar esta constante, se definirá directamente en la ventana de diálogo, no a


través de un bloque diferente, por lo cual se utilizará la opción [2] dentro de la ventana o la
opción [1] según corresponda (Ver Fig. 2.2.1.B). Dentro de ella se elige la función “Y=a”
26

que provoca que la constante de entrada sea definida por el valor de “a” (Ver Fig.
2.2.1.C), cambiando de la función “Y=x” que indica que la entrada está definida por el
valor entregado por un bloque diferente.

Fig. 2.2.1.B.- Ventana de diálogo.

Fig. 2.2.1.C.- Ventana de diálogo.

3.- Así para terminar el bloque, al tener definida una constante en forma directa, presenta
una indicación de color morado en la entrada, que da a entender que esta entrada ya está
con un valor definido en forma directa (Ver Fig. 2.2.1.D).
27

Fig. 2.2.1.D.- Entrada con constante interna.

2.2.2.- Reducción de bloques matemáticos:

Siguiendo la misma línea del anterior método de reducción de constantes, en esta


sección se trabajará en la reducción de bloques matemáticos. A continuación se explicara
a través de un ejemplo el mejor método:

1.- En primer lugar, se trabaja en función a un programa con constantes y bloques


matemáticos (Ver Fig. 2.2.2.A).

Fig. 2.2.2.A.- Con bloques matemáticos y constantes.

2.- Para la reducción de los bloques matemáticos, se utilizara la ventana de diálogo en


la opción [2] generalmente o la opción [1] en algunos casos (Ver Fig. 2.2.2.B). En ella se
elige la función “Y=a*x+b”, que provoca que la constante de entrada sea multiplicada por
el valor de “a” y sumada al valor de “b” (Ver Fig. 2.2.2.C), cambiando de la función “Y=x”
por una función donde el valor de entrada es modificado.
28

Fig. 2.2.2.B.- Ventana de diálogo

Fig. 2.2.2.C.- Ventana de diálogo

3.- Así para terminar, se puede apreciar la reducción de los bloques matemáticos y las
constante definidas en forma directa, por lo cual se presenta una indicación de color
morado en la entrada, que da a entender que esta entrada se encuentra en función a un
ecuación matemática y no a un valor definido en forma directa sin modificaciones (Ver
Fig. 2.2.2.D).

Fig. 2.2.2.D.- Con bloques matemáticos y constantes reducidos.


29

2.3.- Control de Secuencias

Para la creación de secuencias es necesario crear rutinas claras, con un tiempo y


una velocidad definida. Por lo cual es necesario controlar en que instante de tiempo
comienza y termina cada rutina. A través del siguiente ejemplo, explicaremos el proceso
para crear una secuencia que cumpla una función de recorrido programado.

El ejemplo a utilizar, es la creación de un movimiento en forma de cruz en sentido


anti-horario. Por lo cual cada uno de los movimientos servirá para crear la secuencia:

1.- Se deben crean los diferentes programas con sus recorridos, es importante mencionar
que el eje x e Y están dados de forma que la cámara indica el eje X positivo (Ver Fig.
2.3.A).

Fig. 2.3.A.- Eje de posición (© Festo Didactic GmbH & Co. KG • 548606/2).

2.- Al Tener en cuenta el eje de posición, se debe empezar por avanzar en sentidos del
eje Y positivo por unos segundos, para luego volver al punto de partida. Después de eso
el segundo movimiento debe ser el que avanza en sentido al eje X negativo y regresar al
punto de partida. Y así sucesivamente en el eje Y negativo como en el eje X positivo
dando por resultado el movimiento en forma de cruz. Todos los movimientos deben ser
creados en diferentes programas con un nombre acorde y un bloque “Salida A” que
detenga esa rutina.

3.- Al tener los programas que forman parte de la secuencia, se debe crear un “Programa
de control de flujo” (Ver Fig. 2.3.B). El cual denominaremos “cruz” por motivos de orden.
30

Fig. 2.3.B.- Crear nuevo “Programa control de flujo”.

4.- En este programa secuencial, utilizaremos el bloque “Inicio” (Ver Fig. 2.3.C) que
coordinara el inicio de la secuencia dando comienzo a la primera rutina, al terminar el
primer bloque de programa se utiliza la “Salida A” (Ver Fig. 2.3.D) en cada rutina se
detiene y da comienzo a la siguiente. Así se crea una secuencia que permite crear un
movimiento a la vista continuo pero conformado por varias partes separadas.

Fig. 2.3.C.- Bloque “Inicio”

Fig. 2.3.D.- Bloque “Salida A”.

5.- A través de los anteriores pasos y a las rutinas de movimiento se llegara a esta
secuencia (Ver Fig. 2.3.E):

Fig.2.3.E.- Secuencia de cuatro bloques.

 El programa que genera este movimiento en forma de cruz, en solo un solo bloque
de programa, se encuentra la sección 2.7 - Ejemplos.
31

2.4.- Escalar Sensores IR

Cuando se trabaja con los valores de voltaje en forma directa, como en el caso de
los sensores IR, se puede crear una escala de valores que represente la distancia del
sensor al obstáculo. Se debe crear una recta que represente matemáticamente en forma
aproximada la equivalencia entre ambas medidas. Esta representación matemática suele
llamarse línea característica. Esta línea existe por la relación entre dos magnitudes,
expresada mediante una línea que se encuentra en un sistema de coordenadas
bidimensional.

En palabras simples, para obtener esta línea se necesitan medir las dos
magnitudes e introducirlos en un sistema de coordenadas y una tabla. Las magnitudes de
una se atribuyen a la magnitud de la otra. Por lo que se crean pares de puntos que se
unen mediante una línea/curva, con lo cual se obtiene la curva característica del sensor.

Es importante saber los rangos de funcionamiento de estos sensores, por lo cual


se asumirá que los valores de voltaje están en el rango de 0 a 2,54 Volts, a los 0 (V) el
sensor no está localizando un obstáculo y así mientras más cerca está el obstáculo al
sensor va aumentando el voltaje hasta un máximo de 2,54 (V), que es la distancia de
impacto del sensor. La distancia desde donde el sensor es capaz de sentir el obstáculo es
de aproximadamente de 40 centímetros según datos técnicos.

Para representar esa línea característica, se puede lograr a través de la ecuación


de una recta (Ver Ec. 2.1), donde los valores de la recta serán los siguientes [3]:

Y= MX + B
Ec. 2.1 – Ecuación de la recta.

Y= Distancia al obstáculo (Cm.).


M= Pendiente.
X= Valor del sensor (Volts)
B= Desfase.

Sabiendo esto es necesario saber los valores desconocidos que son M y B, por lo cual los
calcularemos usados los valores del Cuadro 2.1.
32

Por lo cual usaremos la siguiente tabla de valores para la relación entre las
magnitudes (Ver Cuadro 2.1):

Cuadro 2.1 – Relación Voltaje- Distancia. (© Festo Didactic GmbH & Co. KG •
548606/2)

Al utilizar los valores de distancia y de voltaje para crear una recta se llegaría a la
siguiente curva característica (Ver Fig. 2.4.A).
33

Fig. 2.4.A – Curva característica.

Para la obtención del parámetro M (Pendiente), se utilizará dos pares de


magnitudes la cual consideraremos puntos en nuestra recta. Por lo que se utilizará la
ecuación de la pendiente de una recta.

Usando las magnitudes:

Punto Distancia Voltaje


P 5 cm. 2.13 (V)
Q 15 cm. 0.81 (V)

Tabla de conversión:
 P(X1; Y1) = P (Voltaje; Distancia)= P (2,13; 5).
 Q(X2; Y2) = Q (Voltaje; Distancia)= Q (0,81; 15).
 Punto P (0,81; 15); Punto Q (0,41; 30).

2  1 15  5 10
    7, 57

2  1 0,81  2,13  1,32
Ec. 2.2 – Pendiente de una recta

  7, 57

34

Al conseguir un valor aproximado de pendiente en nuestra curva, se puede


calcular el desfase en nuestra ecuación de la siguiente forma:

 Con nuestra ecuación de la recta: Y= MX + B.


 La pendiente m= -7,57.
 El punto P (2,13; 5).

Reemplazando los valores en nuestra ecuación:

    

5  7,57  2,13  

  5  16,1241  21,12

Por lo cual la ecuación de la curva seria:

  7,57   21,12
Ec. 2.3 – Ecuación de la curva.

Al tener la ecuación, es posible hacer que el bloque de función que representa al


sensor IR nos entregue la distancia en la salida, esto se logró a través de la inserción del
la ecuación en la ventana de diálogo del bloque (Ver Fig. 2.4).

Fig. 2.4.B – Ventana de diálogo.


35

2.5.- Simulación “ROBOTINO SIM”.

El robot denominado “Robotino”, además del programa “Robotino View” que le


permite crear rutinas, además trae consigo un programa en su versión ”DEMO” para
poder simular bloques de programas. Este programa llamado “Robotino Sim”, funciona en
forma paralela al software de programación “Robotino view”, ya que se crea una conexión
entre el software de programación y el de simulación, a través del puerto 8080 para poder
ver el funcionamiento de este. El proceso para la simulación es el siguiente:

1.- Se debe ejecutar el programa “Robotino Sim”, a un tamaño pequeño ya que la


velocidad de la simulación es directamente proporcional a la capacidad de video del
computador a utilizar (Ver Fig. 2.5.A).

Fig. 2.5.A. - “Robotino Sim”.

2.- Se procede a ejecutar el programa “Robotino View”, en la IP de conexión se ingresa


la siguiente 127.0.0.1:8080 (Ver Fig. 2.5.B) que permite la conexión entre el simulador y el
programa, por lo cual se acciona el icono de conexión que los conecta (Ver Fig. 2.5.C).

Fig. 2.5.B- IP “Robotino View”.


36

Fig. 2.5.C – Icono conexión.

3.- Se abre o se crea la rutina a simular en el programa “Robotino View”, con todo esto
preparado se puede dar comienzo a la simulación accionando el icono “Play” (Ver Fig.
2.5.D). Se puede ver a través del simulador el funcionamiento del programa (Ver Fig.
2.5.E).

Fig. 2.5.D – Icono “Play”.

Fig. 2.5.E – Funcionamiento del simulador- Rutina seguidor de Línea.

4.- Este es el método de simulación de rutinas en un computador, es importante


mencionar que solo se debe trabajar con la modalidad de cámara “RGB” para que pueda
funcionar la cámara en la simulación.
37

2.6.- Variables externas e internas

En esta sección analizaremos las variables externas e internas que pueden ser muy
útiles en algunas rutinas o secuencias, estas variables son entregadas por los bloques de
función que pertenecen al grupo denominado “Intercambio de datos”, que pueden
intercambian datos entre programas de Robotino y aplicaciones externas. Los bloques de
funciones que analizaremos serán: “Lector de Valores”, “Escritor de Valores”, “Entrada
Global” y “Salida Global”, donde dividiremos estos bloques en dos grupos.

2.6.1.- Variables externas

Las variables externas sirven para almacenar y cargar datos, en forma externa al
programa a través de la creación de un archivo de texto que almacena la información, a
través de los dos primeros bloques de función antes mencionados, a continuación se verá
en forma más específica los dos procesos:

i) El proceso de almacenamiento de los datos se logra a través del bloque


“Escritor de Valores”, con el cual creamos el archivo de texto y guarda los
datos de cada entrada en una columna propia.
ii) Para luego lograr el proceso inverso a través del bloque “Lector de Valores”,
nos permite cargar la información del archivo de texto y utilizarla en otra rutina
mucho tiempo después sin tener ningún problema.

El bloque tiene una gran utilidad, para almacenar datos y tener un registro de ellos,
utilizar valores registrados mucho tiempo después de ser guardados y el uso entre rutinas
de varias variables.

Para crear el archivo donde se registran los datos, se debe presionar el icono
indicado en la imagen (Ver Fig. 2.6.1.A), para que aparezca la siguiente ventana que nos
pide dar un nombre al archivo para crear el archivo (Ver. Fig. 2.6.1.B).

Fig. 2.6.1.A - Ventana de diálogo- “Escritor de Valores”.


38

Fig. 2.6.1.B – Ventana para crear archivo de texto.

En el caso que se desee utilizar el bloque “Escritor de Valores” en una aplicación


para el intercambio de datos con otro equipo, hardware, sensores y otros, utilizando al
equipo con Robotino View como mediador de los valores es bastante útil. Por ejemplo, en
el caso de un sistema embebido que utilice sensores para determinar una variable
específica, es posible registrar esos datos en un archivo de texto en el equipo que
controla a Robotino, para que luego estos datos puedan ser utilizados en alguna rutina
como variables de decisión o para controlar en que orden dará a una secuencia.

Para llamar al archivo de texto que guarda los datos, es necesario que en la
ventana de diálogo del bloque “Lector de Valores” se presione el icono indicado (Ver
Fig.2.6.1.C), lo cual permite elegir el archivo de texto desde su ubicación (Ver
Fig.2.6.1.D).

Fig. 2.6.1.C – Ventana de diálogo “Lector de Valores”.


39

Fig. 2.6.1.D – Ventana para elegir archivo de texto.

2.6.2.- Variables internas:

Las variables internas son las que trabajan guardando y cargando datos en memorias
del mismo programa Robotino View. Para lograr esto se utilizan las siguientes funciones:

i) El bloque de función “Entrada Global” que nos permite guardar un dato en una
memoria de las 19 entradas de memoria.
ii) El bloque de función “Salida Global” que nos permite cargar los datos de las 19
memorias del bloque “Entrada global”.

Este proceso de guardar datos, para que sean utilizados en un bloque de programa
actual de una rutina anterior en una secuencia, solo es posible si el software Robotino
View sigue abierto, ya que al cerrar el software las memorias se resetean. En otras
palabras estas memorias solo son temporales, ya que los datos deben ser guardados y
cargados dentro de la misma sesión del software, por lo que su mayor aplicación de estas
memorias es el intercambio de variables entre rutinas de una secuencia. (Ver Fig. 2.6.2.E
y Fig.2.6.2.F).
40

Fig. 2.6.2.E – Guardar datos- Rutina 1.

Fig. 2.6.2.F – Cargar datos- Rutina 2.


41

2.7.- Ejemplos.

a) Movimiento secuencial en forma de Cruz:

Analizaremos el movimiento de esta secuencia por cada una de las rutinas:

• Y Positivo (Ver Fig. 2.7.A): La rutina dura un tiempo de 16 segundos, por lo cual
al comenzar avanza a una velocidad de 200 mm/s en sentido al eje Y positivo por
un tiempo de 8 segundos. Al llegar a los 8 segundos la velocidad cambia a -200
mm/s lo que lleva a cambiar el sentido del movimiento al eje Y negativo por un
tiempo de 8 segundos que es cuando acaba la rutina y la salida A da comienzo a
la siguiente. Es importante mencionar que el Bumper debe ser conectado a la
salida B para que detenga todo la secuencia en caso de colisión.

Fig. 2.7.A - Eje Y positivo.


42

• X Negativo (Ver Fig. 2.7.B): La rutina dura un tiempo de 16 segundos, por lo cual
al comenzar avanza a una velocidad de -200 mm/s en sentido al eje X negativo
por un tiempo de 8 segundos. Al llegar a los 8 segundos la velocidad cambia a 200
mm/s lo que lleva a cambiar el sentido del movimiento al eje X positivo por un
tiempo de 8 segundos que es cuando acaba la rutina y la salida A da comienzo a
la siguiente. Es importante mencionar que el Bumper debe ser conectado a la
salida B para que detenga todo la secuencia en caso de colisión.

Fig. 2.7.B - Eje X negativo.

• Y negativo (Ver Fig. 2.7.C): La rutina dura un tiempo de 16 segundos, por lo cual
al comenzar avanza a una velocidad de -200 mm/s en sentido al eje Y negativo
por un tiempo de 8 segundos. Al llegar a los 8 segundos la velocidad cambia a 200
mm/s lo que lleva a cambiar el sentido del movimiento al eje Y positivo por un
tiempo de 8 segundos que es cuando acaba la rutina y la salida A da comienzo a
la siguiente. Es importante mencionar que el Bumper debe ser conectado a la
salida B para que detenga todo la secuencia en caso de colisión.

Fig. 2.7.C - Eje Y negativo.


43

• X Positivo (Ver Fig. 2.7.D): La rutina dura un tiempo de 16 segundos, por lo cual
al comenzar avanza a una velocidad de 200 mm/s en sentido al eje X positivo por
un tiempo de 8 segundos. Al llegar a los 8 segundos la velocidad cambia a -200
mm/s lo que lleva a cambiar el sentido del movimiento al eje X negativo por un
tiempo de 8 segundos que es cuando acaba la rutina y la salida A da comienzo a
la siguiente. Es importante mencionar que el Bumper debe ser conectado a la
salida B para que detenga todo la secuencia en caso de colisión.

Fig. 2.7.D - Eje X positivo.

• La secuencia (Ver Fig. 2.7.E): con estas rutinas se crea la secuencia “Cruz”.

Fig. 2.7.E - Secuencia “Cruz”.


44

b) Movimiento en forma de cruz sin secuencia:

Es posible crear un movimiento en forma de cruz a través del control de


tiempo, ya que se controlan las velocidades y direcciones de movimiento, con lo cual es
posible realizar el mismo movimiento pero en una forma un poco diferente optimizando el
movimiento y la cantidad de rutinas utilizadas a solo una.

El movimiento inicial es al eje y positivo, después va al eje Y negativo sin


pausar en el centro para luego dirigirse al centro de movimiento, y dirigirse al eje X
negativo e irse al eje X positivo y luego al centro de movimiento (Ver Fig. 2.7.F).

Fig. 2.7.F - Rutina en forma de cruz.


45

c) Contador de Impactos:

Cuenta los impactos en la banda protectora y por cada uno realiza una rutina
diferente. Comenzando por un giro en 90°, formar un rectángulo con su movimiento y
luego avanzar y detenerse después de un tiempo predeterminado. Este tipo de contador
permite asignar diferentes rutinas según la cantidad de impactos contabilizados, con la
limitante de la cantidad máxima de entradas en el selector.

Fig. 2.7.G - Contador de impactos.


Capítulo III
“Control de posición y
movimiento”

46
47

Capítulo III – Control de posición y movimiento.

En este capítulo se analizarán las diferentes opciones de control de posición y


movimiento. Utilizando diferentes rutinas, combinaciones de bloques y variados ejemplos
de control.

3.1 Control de Posición y Recorridos por Odometría.

En lo que concierne al control de posición se utilizará una función específica del


software como es la Odometría (viene de hodos "trayecto" y metrón "medida"), es la
estimación de la posición de vehículos durante la navegación, para una explicación más
detallada ver Anexo 2- Bloque de “Odometría”.

Es importante mencionar que cada rutina basada en el sistema de Odometría del


equipo, demuestra una gran exactitud basada en milímetros, solo siendo limitada por
errores dados constantes como el suelo, la inclinación del terreno, patinaje de las ruedas,
sobre aceleración, derrapes, otros elementos externos que pueden encontrarse en su
camino y por último las grandes distancias. Estos errores se pueden clasificar en errores
sistemáticos (Relacionados directamente al equipo) y los errores no sistemáticos
(relacionados al terreno donde el equipo fue utilizado y condiciones externas).

Dentro de estos dos tipos de errores hay un error que se mencionara brevemente
por su importancia, como es el uso de grandes distancias en el movimiento. Ya que al
trabajar con grandes distancias aumenta el llamado “Elipse de error característica” [4],
que se produce en cada medición de posición y que indica la región de incertidumbre,
para la actual posición del robot. Por lo cual para no aumentar mucho este “Elipse de
error” se recomienda crear rutinas con distancias limitadas y menores a 1 o 3 metros.

El software puede controlar la posición del robot en forma remota en un entorno


grafico usando una combinación de varios bloques de función. Por lo cual se utilizan los
siguientes bloques y con sus respectivas características:

 Odometría: Calcula el recorrido del robot en función de cada unidad de tiempo y


según la velocidad de giro de las ruedas. Se suman los recorridos (muy pequeños)
en cada una de las unidades de tiempo, de manera que se obtiene la posición
actual en función del punto de partida.
48

 Indicador de Posición: Muestra la posición de dos robots en un mapa


bidimensional. Este bloque funcional puede utilizarse para la visualización de las
posiciones de robots y para definir posiciones mediante interacción con el usuario.

 Buscador de recorrido: Calcula la velocidad y la velocidad angular en función de


una posición nominal y una posición real, de modo que Robotino avanza desde la
posición real hacia la posición nominal.

Utilizando los siguientes elementos aquí mencionados, se pueden crear un par de


rutinas basadas en la Odometría, donde el control del movimiento es definido por
diferentes métodos:

i. Por medio de un entorno gráfico y en tiempo real.

ii. Por medio de un control secuencial de las variables de distancia y dirección en


función del tiempo.

3.1.1.- Odometría por entorno grafico:

Se comenzará analizando la Odometría, donde el movimiento de Robotino es


controlado por medio de un entorno gráfico, en esta rutina se utilizará las tres funciones
antes definidas que crean el sistema de Odometría. Como se puede apreciar en la fig.
3.1.1.A.

Fig. 3.1.1.A.- Odometría por entorno gráfico.


49

La rutina aquí propuesta sigue el siguiente orden, primero comienza por el bloque
de “Odometría” que calcula la posición inicial con respecto a las nuevas posiciones, para
luego enviar esta posición al bloque “Indicador de Posición”, que nos permite visualizar la
posición actual del Robotino, a través del icono del robot de color blanco y controlar la
posición de este con el icono del robot de color azul (Ver Fig.3.1.1.B). En la ventana de
diálogo siempre el icono del robot de color azul esta sobrepuesto al de color blanco, y el
sacado muestra la posición de la cámara y nos permite controlar el giro de Robotino, los
márgenes de la ventana están en un eje de dos dimensiones con centro en la posición de
inicio de la rutina, cada eje esta en milímetros (mm.) en una escala de 500 mm.

Fig. 3.1.1.B.- Ventana de diálogo- Indicador de posición.

Como se menciono anteriormente en este bloque de función llamado “Indicar de


posición”, el usuario puede definir y visualizar dentro de la rutina la posición espacial de
Robotino, a través de un icono de un robot blanco. Además de solo poder visualizar se le
permite también modificar esa posición, a través del movimiento de otro icono de color
azul. El método para dirigir al robot de la posición inicial a la nueva, se logra arrastrando
con el botón derecho del mouse al robot azul a la nueva posición espacial, en la que se
desea colocar al robot (Ver Fig. 3.1.1.C). Al realizar ese cambio de posición el icono del
robot blanco, se moverá en dirección a la nueva posición del icono del robot azul,
provocando que el robot en la realidad siga el patrón de movimiento del icono del robot
blanco, logrando que el movimiento sea igual tanto en el software como en la realidad.
50

Fig. 3.1.1.C.- Ventana de diálogo- Indicador de movimiento- Desplazamiento.

Además de lo antes mencionado se puede controlar el giro del robot de la


siguiente forma, primero se debe tomar el sacado del Icono del robot azul con el botón
derecho del mouse y girarlo en la dirección del giro deseado. Al haber hecho eso el icono
del robot de color blanco avanzará en dirección del icono del robot azul hasta coincidir en
la posición, al mismo tiempo el robot en la realidad va a seguir el patrón de movimiento
del icono de robot blanco. (Ver Fig. 3.1.1.D.)

Fig. 3.1.1.D.- Ventana de diálogo- Indicador de movimiento- Giro.

Para después llegar al bloque “Buscador de Recorrido” que comprende la función


de cambiar la posición real del robot a la que posee el robot azul en el bloque “Indicar de
posición”, calculando la dirección y las revoluciones para llegar a la posición espacial del
robot azul.
51

3.1.2.- Odometría basado en control secuencial:

En esta sección analizaremos la Odometría que controla el movimiento de


Robotino a través de una secuencia, que le permite determinar la dirección y la distancia
que recorrerá en cada una de estas. Este tipo de rutinas son una adaptación a la
Odometría basada por entorno gráfico, por lo cual siguen el mismo esquema al utilizar
como base los tres bloques de función antes mencionados. Primero se utiliza el bloque de
Odometría para calcula la posición inicial y las nuevas posiciones, enviándole la
información de posición actual al bloque “Indicar de Posición”, que en este caso no se
utilizará como un entorno gráfico, si no que se controlará el movimiento de Robotino a
través de contantes externas. Para lo cual utilizaremos la siguiente rutina que es variable
al recorrido que deseemos (Ver Fig. 3.1.2.A). Donde el recorrido es el siguiente (Ver Fig.
3.1.2.B).

Fig. 3.1.2. A – Rutina de Odometría en control secuencial.

Fig. 3.1.2.B. – Recorrido en la rutina.


52

A través de las entradas externas del bloque “Indicar de posición” es posible dar la
posición que queremos que se encuentre nuestro robot. Por lo cual se creó una secuencia
de posiciones en las que el robot debe encontrarse en relación al punto inicial y al tiempo,
haciendo posible el recorrido visto en la figura anterior.

Para los movimientos de esta rutina que son: Primero el avanzar 2 metros hacia
delante (eje X del robot), Segundo el moverse 1,5 metros hacia la izquierda (eje Y del
robot) y Tercero el moverse 2,5 metros con un Angulo de 45 grados a la derecha para
encontrarme a 4 metros del punto de partida (Ver fig.3.1.2.B). Lo cual se logra ingresando
al mismo tiempo que avance hacia adelante 2 m. y 1.5 m. a la derecha de la posición
actual, creando un triangulo cuya hipotenusa es la distancia 2.5 m. que será recorrida.

Por lo cual en la teoría se ingresar el valor distancia en la rutina de “Odometría” en


que debería moverse, contando con el leve error de posición generado por los errores
sistemáticos y no sistemáticos mencionados al inicio del capítulo.

A) Primer movimiento:

En este primer movimiento de avance de 2 metros hacia adelante, se debe


ingresar la distancia a realizar en la rutina y el programa debería realizarlo sin
problemas, pero en la practica la distancias son muy diferentes a la teoría, como
se observan en el Cuadro 3.1.2.A donde se puede apreciar que al ingresar 2
metros, la distancia real de avance es alrededor de 176 a 188 centímetros. de
avance. Por lo cual se ingresaron diferentes valores demostrando que la mejor
distancia para que llegue a los dos metros es de 2.1 metros en la constante de
distancia.

Dirección Distancia Ingresada /mm Distancia Real /cm


Adelante (eje X) 1000 92-90-88
Adelante 2000 176-186-188-178-184
Adelante 2050 194-192-193
Adelante 2100 201-200-200
Adelante 2150 207-208-206
Adelante 2200 208-210-211
Cuadro 3.1.2.A. – Prueba de Distancias.
53

B) Segundo movimiento:

En el segundo movimiento de 1,5 metros hacia la izquierda, se produce el


mismo problema que en el primer movimiento en donde la distancia en teoría es
un poco diferentes a la real, como se observan en el Cuadro 3.1.2.B donde se
puede apreciar que al ingresar 1,5 metros, la distancia real a la izquierda es
alrededor de 146 a 148 (cm), El eje Y demuestra mejores resultados de
movimiento que el eje X del robot. Se decidió ingresar diferentes valores para
mejor la distancia y llegue a los 1,5 metros con algunos milímetros de diferencia.

Dirección Distancia Ingresada /mm Distancia Real /cm


Izquierda 1500 146-147-148
Izquierda 1600 156-154-156
Izquierda 1550 152-153-150
Izquierda 1525 150-149-150
Cuadro 3.1.2.B. – Prueba de Distancias.

Es importante mencionar que al ingresar 1,525 (cm), el robot muestra una


respuesta de corrección de posición.

A) Tercer movimiento:

En el tercer movimiento de 2,5 metros con un ángulo de 45° a la derecha,


este movimiento se logra ingresando dos distancias las cuales son: 2 metros en el
eje X y -1.5 en el eje Y del robot produciendo un movimiento de 2.5 m (Ver Fig.
3.1.2.B.), Como se observo en los anteriores movimientos el problema principal de
este sistema es su exactitud por lo cual en este caso donde se ingresan dos
distancias para crear otra el error aumento en forma exponencial. Ya que al
ingresar esos valores nos dieron una distancia que varía de 237 y 256 (cm) en vez
de 2.5 metros, en el eje X varia de 210 y 226 (cm) en vez de 2 metros y en el eje
–Y varia de 82 a 100 (cm) en vez de 1.5 metros. Demostrando un margen de error
demasiado grande principalmente en el eje Y, es importante mencionar que estos
valores incluyen detenciones leves y derrapes.
Por lo cual se probaran varias combinaciones de distancias como se
observan en el Cuadro 3.1.2.C para encontrar las valores reales que nos permitan
encontrar la posición real, donde se puede apreciar que al ingresar 1750 y 1900
(mm), la distancia real recorrida es de 2,5 metros, en el eje X de 203 (cm) de 2
54

metros y en el eje –Y es de 148 (cm) de 1.5 metros. Demostrando ser los mejores
valores de posición.

Fig. 3.1.2.C. – Distancias de la rutina.

Distancias Distancia Distancia Distancia


Dirección Ingresadas (X,-Y) eje X / cm. eje Y /cm. Recorrida
/mm. /cm.
Derecha y Adelante 2.5 (m)= 2 y 1.5 (m)* 210 90 237
Derecha y Adelante 2000 y 1500 212 100 256
Derecha y Adelante 2000 y 1500 226 82 246
Derecha y Adelante 2000 y 1525 223 104 250
Derecha y Adelante 1900 y 1600 220 106 250
Derecha y Adelante 1500 y 2000 179 168 252
Derecha y Adelante 1700 y 1800 199 143 246
Derecha y Adelante 1600 y 1700 187 129 223
Derecha y Adelante 1700 y 1850 200 143 248
Derecha y Adelante 1700 y 1900 197 152 249
Derecha y Adelante 1750 y 1900 203 148 250
Derecha y Adelante 1725 y 1925 203 144 248
Derecha y Adelante 1775 y 1950 204 150 254
Cuadro 3.1.2.C. – Prueba de Distancias (* distancia en metros).

Los valores de las pruebas con valores de distancia diferentes a 200 y 1500 (mm),
son la media de 3 pruebas en condiciones óptimas, sin contar las pruebas con derrapes
significativo o problemas de conectividad que provocaban problemas de funcionamiento y
desviaciones.

Es importante dar a conocer que lo que se realiza es una suma de posiciones, ya


que el robot calcula todas los posiciones en referencia de su punto inicial, por lo que se
debe tomar en cuenta que el elige el mejor y más eficiente desplazamiento en relación a
la posición que se le indique debe ir el robot. Lo anterior se puede demostrar a través del
siguiente ejemplo que demuestra lo importante que es lo forma en que se ingresan las
variables de posición.
55

Rutina de ejemplo:

En esta rutina de ejemplo (Ver Fig. 3.1.2.D) el robot debería seguir el mismo
movimiento que la rutina de la figura anterior (Ver Fig. 3.1.2.A), pero a diferencia de la
anterior aquí los datos son ingresados en secuencia sin sumar las posiciones anteriores a
la siguiente posición que adopta el robot, por lo cual el robot se moverá en función de la
posición ingresada en relación a la posición inicial y no a la posición real. Provocando que
el robot regrese en su recorrido hasta encontrarse en la distancia indicada pero en
relación al punto inicial (Ver Fig. 3.1.2.E).

Fig. 3.1.2.D – Ejemplo de mal ingreso de constantes.

Fig. 3.1.2.E. – Recorrido del robot en relación al punto inicial.

Po último es necesario ver que la más importante limitante además de la pérdida


de certeza en la posición en grandes distancia que varía desde 20 a 40 [cm], es la falta de
control en tiempo real en este tipo de rutinas, ya que las constantes deben ser entregadas
antes de poner en marcha la rutina.
56

3.2.- Control de recorrido controlado por tiempo

Existe otro tipo de control bastante básico, muy usado en robot con una baja
capacidad y en este tipo de rutinas el tiempo es la variable de control. Ya que se calcula la
distancia que debe recorrer el robot en base a la velocidad de movimiento y el tiempo, a
través de la siguiente ecuación (Ver Ecuación. 3.2.A) [5]:



  

 
Ecuación. 3.2.A.- Ecuación de Tiempo.

A través de esta ecuación se puede calcular el tiempo de desplazamiento del robot


en función de la velocidad y la distancia que va a recorrer. Para demostrar este método se
le pedirá al robot que realice un movimiento predeterminado idéntico que los vistos en la
sección 3.1.2. (Ver Fig.3.2.A)

Fig. 3.2.A. – Recorrido a realizar

Para realizar el recorrido antes indicado se creó la siguiente rutina (Ver Fig.3.2.B),
la cual debería realizar el desplazamiento con una exactitud no tan precisa como la
demostrada en las secciones 3.1.1. y 3.1.2. en las cuales su base era la Odometría.

Fig. 3.2.B. – Secuencia de recorrido controlado por tiempo


57

A lo cual se explicará brevemente como se programaron los movimientos:

i) Para realizar el primer movimiento en donde el robot avanza hacia adelante, se


utilizó la Ecuación. 3.2.A, con una velocidad de 100 (mm/s) y la distancia de 2
metros. Llegando a una tiempo de realización de 20 segundos. (Ver Ecuación
3.2.B.).


   2000
 20  
  100
Ecuación. 3.2.B.- Ecuación de Tiempo

Fig. 3.2.C. – Rutina de recorrido de 2 metros en el eje X controlado por tiempo.

Las distancias recorridas son muy diferentes a las calculadas, ya que en la


práctica en vez de recorrer 2 (m), la distancia real recorrida a los 20 segundos fue
de 165 a 167 (cm.). Por lo cual, se hicieron una gran cantidad de pruebas para
determinar la constante de tiempo, que permita llegar a la distancia requerida. Así
se llegó a la respuesta de aumentar la constante tiempo de 20 a 24 segundos, lo
cual nos da unos valores entre 196-200 (m) a una velocidad de 100 [mm/s], y a
una distancia de 1 metro a los 12 segundos.

El siguiente cuadro (Cuadro 3.2.A.) demuestra los rangos de distancia


incluyendo derrapes y momentos de no funcionamiento del robot. A distintas
velocidad, tiempos y distancias.
58

Velocidad Distancias Tiempo Distancias reales


/mm/seg. /m. /seg. /cm.
100 1 10 82-84-85
200 1 5 87-90-83
100 2 20 165-167-167
200 2 10 174-181-177
100 1 12 103-100-101
200 1 6 105-106-108
100 2 24 201-196-200
200 2 12 214-215-209
Cuadro 3.2.A. – Prueba de distancias (Primer Movimiento).

ii) Para el segundo movimiento el robot avanza a la izquierda, se utilizará la


Ecuación. 3.2.A, con una velocidad de 100 (mm/s) y una distancia de 1,5
metros. Lo cual se logra con un tiempo de 15 segundos (Ver Ecuación 3.2.C).



   1500
 15  
  100
Ecuación. 3.2.C.- Ecuación de Tiempo.

Fig. 3.2.D. – Rutina de recorrido de 1,5 metros en el eje Y controlado por tiempo.

Como se explicó antes en la práctica, los valores de distancia no corresponden


a la realidad, ya que distancia real recorrida a los 15 segundos fue de 115 a 133
(cm.) y no de 1,5 metros, Por lo cual se aumento el tiempo dos segundos más,
logrando que llega a distancias de 144 a 147 (cm) a los 17 segundos a una
velocidad de 100 [mm/s]. Logrando además una distancia 146 a 148 metros, a los
8 segundos a una velocidad de 200 [mm/s].

El siguiente cuadro (Cuadro 3.2.B.) demuestra que los rangos de distancia,


incluyendo derrapes y momentos de no funcionamiento del robot.
59

Velocidad Distancia Tiempo Distancias reales


/mm/seg. /m. /seg. /cm.
100 1,5 15 133-115-123
200 1,5 7,5 134-120-132
100 1,5 17 147-145-144
200 1,5 8 148-146-147
Cuadro 3.2.B. – Prueba de distancias (Segundo Movimiento).

iii) Para el tercer movimiento del robot hacia delante, con una inclinación de 45° a
la derecha con una distancia de 2.5 metros, ya que no es posible asignar una
velocidad directamente por su inclinación, se deben ingresar dos velocidades
una en el eje X (Vx) y una en el eje -Y (Vy), que nos permita crear ese
movimiento. Por lo cual, para calcular esas velocidades utilizaremos la
Ecuación. 3.2.B. y la Ecuación 3.2.C. para crear una igualdad basado en que
ambas velocidades poseen el mismo tiempo de funcionamiento, llegando a la
siguiente ecuación:


1
2

1 2
Ecuación 3.2.D. Igualdad en tiempo.
Donde:
• D1= 2000 [mm], Distancia en el eje X.
• D2= 1500 [mm], Distancia en el eje Y.
• V1= Velocidad en el eje X (Vx).
• V2= Velocidad en el eje -Y (Vy).

Si se observa las distancias a recorrer, son idénticas a las del primer


movimiento y con un sentido contrario al segundo movimiento. Se utilizará la
velocidad y tiempo utilizados para el segundo movimiento, ya que presenta una
mejor respuesta de movimiento y una menor desviación que el presentado por el
primer movimiento.

Para ello se implementará el tiempo de 15 segundos y la velocidad V2 de -


100 [mm/s] en el eje –Y, esta velocidad es negativa. Al ser contraria a la velocidad
del segundo movimiento, pero al incluirla en la ecuación, se ingresa solo 100
[mm/s], que se incluyen estos datos a la Ecuación 3.2.D.
60

2000 1500

1 100
Ecuación 3.2.E.

1 133, 3 [mm/s]
Ecuación 3.2.F.

Con el valor de V1 obtenido de la Ecuación 3.2.F, se sabe que las


velocidades son V1 (Vx) ≈ 133 [mm/s] y V2 (Vy) = - 100 [mm/s], en una rutina que
posee un tiempo de duración de 15 segundos.

Fig. 3.2.E. – Rutina de recorrido de 2.5 metros en el eje X e –Y controlado por


tiempo.

El recorrido de la rutina, como se menciono antes no es igual al que se calcula


matemáticamente, ya que en la práctica la distancia real recorrida a una velocidad
de 133 [mm/s] en el eje X, y a una velocidad de -100 [mm/s] en el eje Y a los 15
seg. Dando distancias en la pista de x =117 (cm) e Y de =160 (cm), y una distancia
de 207 de avance.

Por lo cual se realizó una serie de pruebas para verificar si el tiempo es la


constante que causa fallas en el recorrido (Ver Cuadro 3.2.C).
61

Velocidades eje X e Y Avance Adelante Derecha Tiempo


/mm/seg. /cm. /cm. /cm /cm
Vx= 133 y Vy= -100 269 210 168 18
Vx= 133 y Vy= -100 251 195 152 17
Vx= 133 y Vy= -100 280 220 170 19
Vx= 133 y Vy= -100 237 189 137 16
Cuadro 3.2.C. – Prueba de Tiempo (Tercer Movimiento).

Si se prueban diferentes combinaciones de velocidad se llegan a los


siguientes valores (Ver Cuadro 3.2.D.).

Velocidades eje X e Y Distancias Tiempo Distancias reales


/mm/seg. /cm. /cm. /cm.
Vx= 133 y Vy= -75 2,5 20 204-205-202
Vx= 133 y Vy=-100 2,5 15 216-219-223
Vx= 266 y Vy=-200 2.5 7,5 235-232-233
Vx= 133 y Vy= -75 2.5 17 251-251-250
Vx= 266 y Vy=-200 2.5 8.5 265-157-266
Cuadro 3.2.D. – Prueba de Velocidad (Tercer Movimiento).

Después de analizar estos datos se llego a la conclusión que las


velocidades de Vx= 133 y Vy= -100 [mm/s], nos entrega la mejor relación de
distancia y posición que pudimos obtener después de una serie de pruebas.
Logrando llegar a una valor de distancias en el eje X de 195 (cm) de 2 (m), en el
eje Y de 152 (cm) de 1,5 (m) y en avance de 251 (cm) de 2,5 (m). Presentando
diferencias aceptables de distancias, que demuestran un buen resultado en la
búsqueda de corrección de valores de posición.

En esta parte, se llegó a varias conclusiones en cuanto a los errores de cálculo en


el software, que son asociados directamente a problemas como la conexión del PC con el
robot, ya que el robot deja de funcionar si se detiene la conexión, se pierde o presenta
problemas de respuesta tardía, creando errores en los resultados. Además de varios
problemas asignados a fallos en los motores como: Desvíos en sus recorridos, problemas
y errores de giros, detenciones y arranques con derrapes.
62

3.3.- Ejemplos de otros sistemas de control de recorrido.

En esta sección se harán un análisis matemático para poder saber las distancias
recorridas a través de método de diferentes a los antes presentados.

3.3.1.- Ejemplos de control de recorrido por suma de tramos.

Se trabajará con un método que nos permite calcular su recorrido, a través de las
velocidades reales en los motores que son entregadas por la primera salida del bloque de
función de cada motor, las cuales son utilizadas de la siguiente forma:

En Primer lugar la velocidad real [rpm] de las salidas de los bloques de cada
motor, se ingresan al bloque omnidireccional por las entradas externas que son utilizadas
para asignar una velocidad real [rpm] a cada motor. Al hacer esto se habilitan las salidas
Vx [mm/s], Vy [mm/s] y Phi [grados/s], que nos entregan las velocidades reales en el eje
X e Y y el giro. Estas salidas se multiplican por una constante de tiempo, que nos da el
valor de recorrido por un tramo, que puede ser explicada por la ecuación 3.3.1.A, donde
el valor de tiempo de 0.023 [ms] es entregado por los manuales del equipo.

Por lo cual Robotino avanza un tramo de:

0,023     
Ecuación 3.3.1.A.

Al saber cuánto es el recorrido por tramo por unidad de tiempo, y sumarlos a


través de un bucle, para luego utilizar convertir esa suma de tramos en cada eje para
formar un vector, cuya longitud es la distancia real recorrida. Todo este proceso, fue
introducido en la siguiente rutina que tiene como utilidad recorrer 1 metro de distancia. La
siguiente figura muestra la rutina:
63

Fig. 3.3.1.A.- Rutina de ejemplo.

Al hacer una serie de pruebas para verificar la eficiencia del intervalo de tiempo
por tramo de 0,023 [ms] si era el valor más adecuado o no, me dieron los siguientes
resultados que se pueden apreciar en el cuadro.

Distancia a recorrer /m. Distancia recorrida /m. Intervalo de Tiempo /mseg.


1 1,18 -1,20 -1,21 0,0225
1 1,12- 1,11- 1,13 0.0230
1 1,12- 1,13 -1,14 0,0250
1 0,98- 0,96 -0,99 0,0280
1 0,99- 1,0 –0,97 0,0290
1 0,96- 0,97 -0,95 0,0300
Cuadro 3.3.1.A – Tabla de pruebas.

Según lo visto en el cuadro la mayor respuesta de distancia recorrida en función


de la distancia recorrer fue en los intervalos de 0,028 y 0,029 [ms].

Errores en la conexión con el computador, provocan problemas en los cálculos que


realiza el programa principalmente en la suma de tramos, ya que este modelo se basa en
el uso de las velocidades reales de los motores. Estos errores pueden ser significativos
desde 2 a 15 cm en las pruebas realizadas anteriormente.
64

3.3.2.- Ejemplos de control de recorrido por suma de incrementos.

En este tipo de ejemplos, la constante que utilizaremos para calcular la distancia


son los incrementos, ya nos da una relación directa entre los incrementos y el recorrido a
través del diámetro de las ruedas y el giro.

Para calcular la relación entre incrementos y recorrido, se hará uso de los


siguientes datos y ecuaciones:

i) Cálculo de cantidad de giros por las ruedas para avanzar un tramo:

Cuando Robotino avanza un tramo de recorrido (W), las ruedas de Robotino


avanzan un tramo de recorrido (S) como se puede apreciar en la figura (Ver
Fig.3.3.2.). En esta figura se puede apreciar las distancias y direcciones en la que
se mueve Robotino para avanzar un tramo en el eje X.

Fig. 3.3.2.A – Tramos de recorrido.

Para calcular la relación de los tramos (W) y (S), se deben tener en


consideración las siguientes observaciones como son:

 El ángulo entre las ruedas de 120°.


 La distancia del tramo M-M’ es igual a la distancia del tramo A-A’ (W).
 El ángulo entre los tramos AA’ y el tramo MA’ es de 60 °.
 El punto de referencia para calcular el tramo (S) es el punto A’.
65

En base a lo anterior se pudo llegar a la siguiente ecuación (Ecuación 3.3.2.A.).

S= W x sin (60°)
Ecuación 3.3.2.A. – Tramo de recorrido por las ruedas (S).
(S)

La siguiente ecuación se obtuvo del ángulo de 60° e n el punto A’ (Ver Fig.


3.3.2.B), ya que a través del ángulo es posible calcular el tramo utilizando el
“Teorema de Pitágoras” [6] como se puede observar en la ecuación
ecuaci (Ecuación
3.3.2.B).

Figura 3.3.2.B. – Ángulos de los tramos.

Ecuación 3.3.2.B. – “Ecuación para calcular seno del ángulo”

A través de la Ecuación 3.3.2.


3.3.2.A, se puede calcular lo realmente importante como
son los giros para el tramo (S). Por lo cual se utilizar
utilizará la ecuación de diámetro de
las ruedas (Ver Ecuación 3.3.2.C)

U = d · ∏ (d = diámetros de las ruedas = 80 mm)


Ecuación 3.3.2.C.
3.3.2.C.- “Ecuación diámetro de las ruedas”.

Con el valor de este diámetro es posible calcular la cantidad de giros por


tramo (S), a través de la Ecuación 3.3.2.D.

Ecuación 3.3.2.D. – “Ecuación Cantidad de giros”.


66

ii) Cálculo de incremento del motor en función del recorrido:

Para calcular los incrementos utilizaremos la información antes obtenida,


por lo cual se hará uso de la Ecuación para calcular la cantidad de giros por tramo
(S) (Ver Ecuación 3.3.2.D), al utilizar en esta explicación un movimiento en el eje
X solo se están utilizando dos motores por lo cual la relación en el reductor es de
1:16, y un giro del motor representa 2048 incrementos.

Al tener claro lo anterior es posible hacer uso de la ecuación 3.3.2.D para


calcular la cantidad de incrementos para las ruedas en relación con el tramo (S).

2048 & 16 & ( & sin60°


   !"   #     
80-

409,6 & ( & sin60°


#           
-
Ecuación 3.3.2.E. – Cantidad de incrementos para los motores.

Ejemplo:

Para este ejemplo usaremos un recorrido de 1 metro de largo para saber la


cantidad de incrementos para los motores, donde utilizaremos lo antes visto. Ya que
nuestra distancia es de 1000 [mm], primero se calculará el tramo de recorrido por las
ruedas(S):

/ 1000 & sin60° 866,025 

( & sin 60° 1000 & sin 60°


#      3,446 
80 - 80-

La cantidad de giros para un recorrido de 1000 [mm] es de 3,446 giros, y en el


caso de los incrementos seria de:

409,6 & ( & sin60° 409,6 & 1000 & sin60°


#      
- -

#       112912,16  

Se necesitan una cantidad de 112912,16 incrementos en cada motor para avanzar


1 metros hacia adelante en el eje X.
67

Para que Robotino pueda ser controlado, por este método se necesitan rutinas que
controlen su movimiento en función de los incrementos, como por ejemplo de esta rutina
que usa los datos antes adquiridos para que se recorra una distancia de 1 metro en el eje
X. (Ver Fig. 3.3.2.C)

Fig.3.3.2.C. – Rutina de Control por Incrementos.

Ya que se desea calcular la posición real a través del motor, se necesita reponer a
cero el contador incremental antes de comenzar el movimiento. Por lo cual se utiliza la
entrada “Reset” del bloque del Motor 1.

Para calcular los recorridos, se suman los incrementos y se comparan con la


cantidad de incrementos para recorrer la distancia de 1 metro, que son una cantidad de
112912,16 incrementos en cada motor. Por lo que al alcanzar esa cantidad se termina el
programa.

En la realidad por ciertas condiciones esta rutina demuestra diferencias entre la


teoría y la práctica, una condición puede ser el simple hecho que los motores no están a
una distancia exacta de 120 grados, sino que es aproximada. El siguiente cuadro (Cuadro
3.3.2.A) demuestra lo dicho anteriormente.

Distancia a recorrer /cm. Incrementos Distancia recorrida /cm.


100 112912 117 [
100 110912 103
100 110012 100
Cuadro 3.3.2.A.- Resultados de las Pruebas.

Por lo cual para recorrer una distancia de 1 metro se necesitan aproximadamente


110012 incrementos en cada uno de los motores 1 y 3.
68

.Los problemas más básicos de todos los tipos de control de movimiento son:

 Las pérdidas de tiempo en los cálculos.


 La pérdida de tiempo e información en la transmisión de datos.
 Las pérdidas por fricción, dependientes del suelo.
 Los motores DC no se pueden detener de inmediato por tener ciertos
puntos de encastre fijos.
 Las altas velocidades necesitan más tiempo para frenar que velocidades
bajas, crean imprecisiones en los cálculos.
Capítulo IV
“Sensores específicos”

69
70

Capítulo IV - Sensores Específicos.

4.1.- Sensores Fotoeléctricos.

Un sensor fotoeléctrico es un dispositivo usado para detección de posición. Los


sensores fotoeléctricos usan un rayo de luz modulado que es interrumpido o reflejado por
un objeto. El control consiste de un emisor (fuente de luz), un receptor para detectar la luz
emitida y la electrónica asociada que evalué y amplifique la señal detectada que hace que
la salida del interruptor fotoeléctrico cambie de estado [7].

La luz modulada aumenta la gama de detección mientras que reduce el efecto de


la luz ambiente. La frecuencia modulada se genera a una frecuencia especifica entre 5 y
30 Khz. El sensor puede distinguir la luz modulada de la luz ambiente. Las fuentes de luz
usadas por estos extiende el espectro de luz del verde visible al infrarrojo invisible. Como
fuente se utiliza un diodo emisor.

El sensor utilizado en Robotino es el “Sensor Infrarrojo tipo SHARP” que se


analizara a continuación.

4.1.1.- Principio de funcionamiento.

Los sensores IR Sharp, utilizan para la ubicación de objetos, un Sensor Detector


de Posición (PSD) lineal para determinar la distancia o la presencia de los objetos dentro
de su campo de visión. Básicamente su modo de funcionamiento consiste en la emisión
de un pulso de luz infrarroja, que se transmite a través de su campo de visón que se
refleja contra un objeto o que por el contrario no lo hace. Si no encuentra ningún
obstáculo, el haz de luz no refleja y en la lectura que se hace indica que no hay ningún
obstáculo. En el caso de encontrar un obstáculo el haz de luz infrarroja se reflecta y crea
un triangulo formado por el emisor, el punto de reflexión (obstáculo) y el detector.

La información de la distancia se extrae midiendo el ángulo recibido. Si el ángulo


es grande, entonces el objeto está cerca, por que el triangulo es ancho. Si el ángulo es
pequeño, entonces el objeto está lejos, por que el triangulo formado es estrecho. Por lo
tanto, si el ángulo es pequeño, quiere decir que el objeto está lejos, porque el triangulo es
largo y delgado (Ver Fig. 4.1.1.A).
71

Fig. 4.1.1.A – Principio de funcionamiento.

El LED infrarrojo, emite el haz de luz a través de una pequeña lente convergente
que hace que el haz emisor llegue de forma paralela al objeto. Cuando la luz choca con
un obstáculo, una cierta cantidad de luz se refleja, si el obstáculo fuera un espejo
perfecto, todos los rayos del haz de luz pasarían, y sería imposible medir la distancia. Sin
embargo, casi todas las sustancias tienen un grado bastante grande de rugosidad de la
superficie que produce una dispersión hemisférica de la luz (la llamada reflexión no
teórica). Alguno de estos haces de esta luz rebota hacia el sensor que es recibido por la
lente.

La lente receptora también es una lente convexa, pero ahora sirve para un
propósito diferente, Actúa para convertir el ángulo de posición. Si un objeto se pone en el
plano focal de una lente convexa y los otros rayos de luz paralelos en otro lado, el rayo
que pasa por el centro de la lente atraviesa inalterado o marca el lugar focal. Los rayos
restantes también enfocan a este punto.
72

Fig. 4.1.1.B – Principio de funcionamiento.

4.1.2.- Construcción.

La medida de distancia por infrarrojos se indica mediante una salida analógica. La


tensión de salida varía de forma no lineal cuando se detecta un objeto en una distancia
entre 1,9 cm y 40 cm. La salida está disponible de forma continua y su valor es
actualizado cada 32 ms. Al contar con esta salida puede ser usada en un circuito
analógico o conectarlo a un circuito de conversión digital a un microprocesador.

.
Fig. 4.1.2.A – Estructura interna.

El sensor se comunica con la unidad central, a través de una línea de salida.


Además, cuenta con su respectiva alimentación unido en un conector de 3 pines, y utiliza
una tensión de funcionamiento de 5V. y una temperatura de trabajo entre -10ºC y 60ºC.
73

4.1.3.- Ejemplo.

a) Seguidor de Paredes.

Para realizar esta rutina, se implemento una secuencia de tal manera que
Robotino, pudiese tomar decisiones autónomas, al encontrarse en el vacio (lugar sin
paredes, hasta encontrar alguna) y el movimiento de seguir una pared manteniendo la
cámara siempre hacia delante, como también manteniendo una distancia pre terminada
del muro.

Fig. 4.1.3.A – Seguidor de paredes.

El diseño debe cumplir con el mínimo de 3 condiciones.

1.- Capaz de establecer una pared (lado derecho del Robotino), estando en un lugar sin
tener el contacto directo con ella, por ej. En la mitad de una sala.

2.- Ya teniendo esta pared reconocida con los sensores de distancia, pueda mantener una
distancia predeterminada con esta.

Y 3.- una vez establecida la pared, que sea capaz de mantener la cámara al frente del
movimiento, en el contexto que pueda enviar imágenes en vivo, del movimiento y además
sea capaz de esquivar posibles obstáculos, que pueda encontrar en su recorrido con
conjunto con la pared.

Así se obtuvo la siguiente solución, desglosada por bloque y su funcionalidad dentro del
programa.
74

Fig. 4.1.3.B Ubicación sensores.

La elección de los sensores se realizo discriminando por las condiciones


establecidas anteriormente, de tal manera que podamos cubrir todas las necesidades de
movimiento.

• Identificación de pared. Robotino avanza en un movimiento de 45° hacia la


derecha hasta encontrar la pared, esto lo realiza manteniendo el sensor derecho
en un rango de valores.

Fig. 4.1.3.C – Identificación de pared.


75

El sensor 8, entrega el valor que debe estar entre 0.5 y 2 Volt (entre 10 y 20 Cm.),
si está afuera de ese rango, se aleja o se acerca para obtener ese valor. De igual forma
los sensores frontales 1 y 2, si están menores de 2 y 2.4 Volt (distancia mayor a 7 Cm.)
avanza, así se obtiene el movimiento en 45° grados hasta llegar a una pared.

• Seguimiento de pared y corrección de dirección. Una vez identificada la pared,


se realiza una comparación de 2 sensores para la corrección de la dirección, esto
se realiza para mantener la cámara siempre apuntando hacia delante y en la
posibilidad de enviar imágenes a través del AP de Robotino.

Fig. 4.1.3.E – Seguimiento de pared y corrección de dirección.

Si los valores están dentro del rango del sensor 8 (entre 10 y 20 Cm), se desactiva
el movimiento hacia el costado y solo realiza el movimiento de avance.

La corrección de la posición la realiza con una substracción de 2 sensores del lado


derecho (7 y 9), si la resta es menor que 0.15 entre ambos realiza la multiplicación de
rotación, en sentido negativo o positivo, según la resta de ambos sensores muestre.

Fig. 4.1.3.E – Simulación.


76

De esta manera se mantiene la cámara siempre enfocada hacia delante, además


como tenemos varias salidas a solicitar, se integro un demultiplexor para evitar que la
rotación y el movimiento de costado se realicen en conjunto.

• Pared u obstáculo frontal. En el caso de que existiera un obstáculo frontal que


entorpezca el movimiento del equipo, se integra otra rutina ajena a la del
seguimiento de pared, respondiendo a la condición que si los 3 sensores frontales
entreguen datos de presencia de obstáculo.

Fig. 4.1.3.E – Pared u obstáculo frontal.

Si nuestros sensores detectan presencia del obstáculo, a una distancia relativa


(Menor a 11 Cm.) envía directamente a la salida el programa y comienza el siguiente
programa, que es una rotación sobre su propio eje. Esta rotación se detiene hasta que el
sensor frontal quede con una línea vista despejada mayor a 20 centímetros, teniendo esta
condición cumplida, envía a la salida al comienzo del primer programa para que pueda
seguir la pared, con las correcciones de trayectoria y la distancia definida.
77

Fig. 4.1.3.F – Secuencia de rutinas.

Fig. 4.1.3.G – Simulación.


78

4.2.- Sensor de Reflexión directa.

En estos sensores, el emisor y el receptor están incluidos en un mismo cuerpo. El


haz de luz emitido es reflejado por la pieza a detectar y vuelve al receptor. A continuación,
se evalúa la intensidad de la luz reflejada. La distancia de detección puede regularse
modificando la sensibilidad del receptor (con un potenciómetro o Teach-In).

Los sensores de reflexión directa son económicos y pueden instalarse de modo


sencillo. Sin embargo, estos sensores no son apropiados para determinadas aplicaciones
como, por ejemplo, objetos que se encuentran delante de un fondo muy refletivo. Además,
los objetos que tienen superficies irregulares (por su material o color) se detectan a
diferentes distancias debido a las diferencias en la reflexión.

4.2.1.- Principio de Funcionamiento.


Los sensores de reflexión directa difusa, tienen la particularidad de tener emisor y
receptor dentro del mismo encapsulado, basándose en un diodo emisor de luz, como
emisor y un fototransistor como receptor. Además, son sensores cuyo ángulo de emisión
es muy grande y los rayos de luz se reflejan en múltiples direcciones. Por ello solo una
parte de los salen del emisor alcanzan el receptor después de reflejarse en el objeto a
detectar.

Al tener un haz de luz muy grande reflecta muy poca luz infrarroja en la recepción,
por lo cual mayoritariamente se utilizan como sensores discretos (Salida Lógica). Existe
una zona muerta en la que no se garantiza la detección del objeto (Fig.4.2.1.A). Dicha
zona debe ser tomada en cuenta cuando se pretende detectar objetos que están situados
muy próximos a la fotocélula.

Fig. 4.2.1.A – Principio de funcionamiento.


79

Para aumentar la precisión y disminuir la zona muerta para la detección de


objetos, se utiliza una extensión de polímero (fibra óptica) (Ver Fig.4.2.1.B), que debido a
sus características (bajas perdidas, flexibilidad y pequeño tamaño) permiten la
introducción en lugares en donde debería colocar una fotocélula, pero por su tamaño se
hace imposible (Fig.4.2.1.C).

Fig. 4.2.1.B. Extensión fibra óptica.

Fig. 4.2.1.C Aplicación sensor difuso.


80

4.2.3.- Construcción.

Fig. 4.2.3. A – Construcción.

La modulación de la luz del LED simplemente significa encenderlo y apagarlo en


alta frecuencia. Su eficiencia se basa en que el fototransistor del sensor y el amplificador
estén sintonizados a la frecuencia de modulación, dando como resultado, que únicamente
la luz modulada es amplificada, y toda la otra luz que alcanza al fototransistor es ignorada.

4.2.4.- Ejemplo.
a) Detección de objetos y seguimiento.

El diseño del programa a utilizar se baso solamente en el uso de los 2 sensores de


reflexión directa, que trae como accesorios el equipo Robotino. Para ello se conecto en su
parte frontal a la entrada digital que el sistema tiene para estos accesorios.

• Entrada de sensores. El inicio de la secuencia se inicia al tener en contacto los 2


sensores (ubicados c/u al costado de Robotino), si uno de ellos detecta la
presencia de algún objeto o si bien ambos están con nivel lógico bajo, lo que
indica que no existe presencia de algún objeto.

Fig. 4.2.4.A – Entrada de sensores.


81

Entrada digital 0: Representa el sensor incorporado al lado derecho.


Entrada digital 1: Representa el sensor incorporado al lado izquierdo.

Si detecta algo el sensor derecho, activa la salida A. a su vez si el sensor izquierdo


detecta envía a la salida B, y finalmente si en conjunto ambos sensores no registran
actividad, direcciona el programa a la salida C.
En el caso que ambos sensores marcaran presencia de objetos, no se direcciona y
simplemente el robot se queda inmóvil en el punto.

Fig. 4.2.4.B – Secuencia de rutinas.

• Detección sensor Derecho. Si este sensor activa la señal de entrada digital, se


direcciona al giro derecho, el cual solamente realiza el giro sobre su propio eje,
hasta que ambos sensores obtengan valores lógico alto. En ese caso vuelve al
inicio del programa a la espera que el objeto se mueva o permanece inmóvil.

Fig. 4.2.4.C – Detección sensor derecho.


82

• Detección sensor izquierdo. Al igual que en el caso del sensor derecho, al


detectar el sensor izquierdo, realiza un giro hacia la izquierda sobre su propio eje,
hasta que ambos sensores entreguen valores lógicos altos. En ese caso vuelve al
principio del programa a la espera que el objeto se mueva o se queda inmóvil.

• Sin detección de ambos sensores. En este caso que no se tenga presencia en


la distancia de los sensores, o que ninguno pueda discriminar algún objeto, se
inicia el subprograma de avance, lo que hace el realizar un movimiento en el eje X-
Positivo (hacia delante), hasta que alguno de los sensores entregue algún dato de
obtención de obstáculo o objeto. De esta forma, se tiene 3 opciones de sensado.

1.- Sensor derecho: Inicia giro derecha.


2.- Sensor izquierdo: Inicia giro izquierda.
Y 3.- Ambos sensores: Se envía al inicio del programa de entrada de sensores.

Fig. 4.2.4.D – Sin detección de varios sensores.


83

4.3.- Sensor Inductivo.

4.3.1.- Principio de funcionamiento.

Un sensor inductivo corresponde a un tipo de sensor de proximidad utilizado para


detectar la presencia de materiales metálicos conductores y que ignora la presencia de
materiales no metálicos. Este sensor utiliza el principio de inducción a través de una
bobina incorporada la cual genera un campo magnético que detecta el objeto en cuestión.

Cuando un metal conductor o placa metálica se mueven dentro de un campo


magnético, sobre la placa o el metal se generan unas corrientes eléctricas conocidas
como corrientes de Eddy o corrientes de Foucault [8]. Se produce cuando un conductor
atraviesa un campo magnético variable, o viceversa. El movimiento relativo causa una
circulación de electrones, o corriente inducida dentro del conductor. Estas corrientes
circulares de Foucault crean electroimanes con campos magnéticos que se oponen al
efecto del campo magnético aplicado Cuanto más fuerte sea el campo magnético
aplicado, o mayor la conductividad del conductor, o mayor la velocidad relativa de
movimiento, mayores serán las corrientes de Foucault y los campos opositores
generados.

Fig. 4.3.1.A - Principio de funcionamiento.

Este es el principio que usan la mayor parte de los sensores inductivos empleados
en la industria. En ellos la bobina sensor está provista de un núcleo descubierto hacia el
lado de detección, al aplicar tensión al sensor la bobina produce un campo magnético
alterno de alta frecuencia, dirigido hacia el lado activo o sensible.
84

4.3.2.- Construcción.

Fig. 4.3.2.A – Construcción.

Al acercarse un metal al lado activo, y el objetivo entra al campo, circulan


corrientes de eddy dentro del objetivo, las cuales influyen en el circuito oscilador,
reduciendo la amplitud de oscilación y reduciendo el consumo de corriente del sensor.
Estas señales son tratadas por el circuito rectificador y comparador, emitiendo la
correspondiente señal de salida.

Conforme el objetivo se aleja del sensor, la amplitud del oscilador aumenta. A un


nivel predeterminado, el circuito trigger conmuta el estado de la salida del sensor de
nuevo a su condición normal.
85

4.3.3.- Ejemplo.

a) Detección de metales e incremento de velocidad.

La rutina a implementar es a través del sensor inductivo un detector de metales y


asignarle un incremento moderado de velocidad de tal forma que en el último tramo se
detenga y termine la ejecución del programa.

Fig. 4.3.3.A - Detección de metales e incremento de velocidad.

• Detección de metales. Utiliza un demultiplexor de tal manera que el contador


incremental, vaya automáticamente seleccionando la salida según las veces que
pasa por algún tipo de metal, en este caso zinc con aluminio que a una distancia
de 2 cm, tiene un valor de volt cercano a 6 volt. Como en esta configuración el
sensor de metales entrega un valor descendiente desde 9.96 Volt, se integro un
comparador con un límite menor que 9 volt, así se asegura que alguna variación
de voltaje, sea identificado e incremente la salida demultiplexor, hasta que el
ultimo metal, lo envíe directamente a la salida y detenga el programa.
Capitulo V
“Visión Artificial”

86
87

Capitulo V - Visión Artificial.

En este capítulo, se analizarán las diferentes funciones de Robotino en el área de


la Visión Artificial. Dando a conocer las diferentes modalidades de la cámara, la detección
de segmentos con un determinado color y la detección de líneas en un color negro.

5.1 Webcam.

La cámara que utiliza el equipo es una webcam del tipo USB, para este
componente existe una completa explicación de sus características técnicas en el Anexo
1 (Cuadro 1.5), y sobre su funcionamiento y modalidades en el Anexo 2 (A.2.8.1). Al tener
esa información de antemano, se dará comienzo al análisis de los diferentes métodos de
reconocimiento de líneas, segmentos y formas, a través del software. Además de dar a
conocer varios aspectos importantes, como son el alcance de estos métodos, sus
falencias y las condiciones óptimas para su uso.

5.2.- Detección de segmentos.

La detección de un segmento de un color específico en Robotino, nos permite


localizar objetivos con un grado bastante bueno de exactitud, ya que trabaja con la
recolección de una muestra de color del segmento. Al poseer un tono de color específico
de una sección del segmento, el programa nos entregará la posición en la imagen de la
cámara, además del área en pixeles de la sección del segmento encontrada.

Para realizar este proceso la cámara usara tres bloques de función:

i. Cámara: Nos entrega la imagen y video.


ii. Segmentador: Nos permite elegir el segmento que deseamos de la
imagen.
iii. Extractor de segmentos: Identifica el segmento antes seleccionado y nos
entrega información de la identificación del segmento.

Para conocer las principales características de estos bloques se pueden buscar


en el Anexo 2 (A.2.5.1. “Segmentador” y A.2.5.2. “Extractor de Segmentos”).

Primero se necesita la información de la webcam que es entrega por el bloque de


función “Cámara” para luego elegir el segmento a través del bloque “Segmentador” como
se aprecia en la imagen. (Ver Fig. 5.2.A).
88

Fig. 5.2.A – Conexión de Bloques.

El bloque “Cámara” nos entregara la imagen en diferentes modalidades (Ver. Fig.


5.2.B) [9] y resoluciones. Por lo cual usaremos la modalidad RGB y una resolución de
320x240 (Recomendada para reconocer segmentos).

Fig. 5.2.B – Modalidades de la cámara.

Con la imagen lista del elemento (Fig. 5.2.C), se debe elegir el segmento a
reconocer utilizando el bloque “Segmentador”, los pasos a seguir son los siguientes:

Seleccionar colores:

Para seleccionar los colores se deben seguir los siguientes pasos (Ver Fig. 5.2.D.):

1.- Hacer click en el símbolo de la cámara para así fijar la imagen con la que se desea
trabajar.

2.- Para seleccionar el segmento de color, se debe elegir la forma de la herramienta


dependiendo de la imagen, las formas que ofrece el programa son un rectángulo y un
círculo.
89

3.- Cuando se desee seleccionar y se eligió la forma, se debe arrastrar el mouse sobre el
color.

4.- Para guardar el segmento seleccionado se debe presionar el símbolo en el bloque.

5.- Se pueden agregar uno o más segmentos siguiendo nuevamente los pasos anteriores.

Fig. 5.2.C. – Imagen a segmentar. Fig. 5.2.D. – Imagen segmentada.

Al tener la imagen segmentada, es posible ver solo el segmento que


seleccionamos (Ver Fig. 5.2.E), es posible verlo presionando el botón indicado con (1) en
la imagen. Si no está completo el segmento total y solo se ve una parte es posible filtrar el
segmento haciendo un doble click en la posición (2), haciendo aparecer la ventana donde
es posible modificar los canal del segmento (Ver Fig. 5.2.F).

Fig. 5.2.E – Segmento de la imagen.


90

Fig. 5.2.F. – Parámetros del canal.

En esta ventana, es posible modificar los parámetros de los canales RGB para
cambiar el color del segmento. Por ejemplo, al colocar al máximo todos los canales nos
darían una imagen como esta (Ver Fig. 5.2.G), Sin embargo, con un buen uso de los
canales es posible llegar a un filtrado, en donde el segmento a mejorado un poco en
comparación a su estado inicial (Ver Fig. 5.2.H).

Fig. 5.3.G – Imagen de referencia.

Fig. 5.2.H. - Imagen segmento filtrado.


91

Al poseer el segmento filtrado, se pasa al siguiente paso que es enviarlo al bloque


de función “Extractor de segmentos”, el cual identificará el segmento en la imagen de la
cámara.

La conexión de los bloques para la detección de segmentos es la siguiente:

Fig. 5.2.I- Conexión de bloques.

El bloque “Extractor de Segmentos”, posee la característica de identificar el


segmento en la imagen del video. Eso es posible ya que el bloque “Segmentador” le envía
la información de la imagen actual y de todos los segmentos antes seleccionados por el
bloque.

Los pasos para elegir el segmento a identificar por el bloque “Extractor de


Segmento” son los siguientes (Ver Fig. 5.2.I):

1.- Primero se debe elegir el segmento a identificar de la lista de segmentos antes


seleccionados (A).

2.- Al elegir el segmento se observa en la imagen una cruz roja que indica el centro de
gravedad del segmento (B).

3.- Para poder ver la imagen completa se debe tener activo el icono (C) de la figura (Fig.
5.2.I.), ya que al no estar activo, solo se observa el segmento detectado de la imagen
como se observa en la otra figura (Fig. 5.2.J).

Fig. 5.2.I. – Ventana de diálogo del bloque “Extractor de Segmentos”.


92

Fig. 5.2.J. – Ventana de diálogo del bloque “Extractor de Segmentos”.

El bloque de función además de indicar que el segmento fue encontrado, dará a


conocer el área en pixeles del segmento encontrado (como se observa en la Fig.5.2.J la
imagen del lado izquierdo) y la posición del centro de gravedad en función del eje X e Y,
con valores en referencia a pixeles con un valor del eje Y positivo y negativo máximo de
120 y un valor de eje X positivo y negativo máximo de 160 si se trabaja con una
resolución de 320x240 y que se detalla en la Fig.5.2.L.

Fig. 5.2.L. – Eje de posición del centro de gravedad.

Además como el bloque “Segmentador” permite seleccionar varios segmentos, es


posible identificar varios segmentos con la cámara, dándole a cada extractor de
segmentos la orden de identificar un segmento específico (Ver Fig. 5.2.L).
93

Fig. 5.2.L. – Ejemplo de rutina.

Ejemplo uso de la cámara:

Esta secuencia realiza la acción de avanzar en línea recta y para luego, detenerse
y girar 360° en busca del segmento, al encontrar el segmento se acerca o alejarse a una
distancia predefinida, para después enfocarlo en el centro de la cámara (A). Pero al no
encontrarlo continúa avanzando en línea recta (B) y vuelve a comenzar la secuencia.

Fig. 5.2.M. – Secuencia de la rutina.

1.- Buscador de Segmentos en Rutina.

Al iniciar la rutina busca el segmento girando 360° sobre su eje, al encontrar el


segmento este indica su posición y llama a la rutina “Acercarse y alejarse del segmento” a
través del bloque “Salida A”. Pero al no encontrarlo llama a la siguiente rutina “Avanzar
en Eje X” a través del bloque “Salida B”.
94

Fig. 5.2.N. – Rutina “Buscador de segmentos en rutina”.

2.- Acercarse y alejarse del segmento.

Esta rutina hace que el robot avance hasta el segmento localizado por la rutina
anterior, al llegar a una distancia prudente se detiene, en caso de estar muy cerca del
segmento se aleja a una distancia predefinida.

Fig. 5.2.Ñ. – Rutina “Acercarse y Alejarse del segmento”.


95

3.- “Enfoca el Segmento”.

Esta rutina tiene como fin lograr que el segmento se encuentre en el centro de la
imagen entregada por la cámara, se logra girando al robot de derecha a izquierda para
lograr una mejor posición de visión.

Fig. 5.2.O. – Rutina “Acercarse y alejarse del segmento”.

4.- “Avanzar en eje X”

Esta rutina cumple la función de hacer al robot avanzar, ya que al no encontrar el


segmento en la zona de búsqueda de la anterior rutina “Buscador de segmentos en rutina”
se avanza en el eje X, para volver a detenerse e intentar encontrar el segmento
nuevamente una y otra vez hasta encontrarlo.

Fig. 5.2.P. – Rutina “Avanzando en eje X”.

Esta es una rutina muy simple en un ambiente muy controlado, ya que se creó con
el fin de explicar conceptos básicos del funcionamiento de la cámara, algunos
movimientos útiles y la mejor velocidad de búsqueda de segmentos que es de 100 [mm/s].
96

5.3.- Detección de Líneas.

La detección de líneas es una característica muy especial en Robotino, ya es muy


similar a la detección de segmentos en el uso de la cámara y los valores de posición que
entrega el bloque de función. Esta detección se logra a través del reconocimiento de la
diferencia de colores en relieves, lo cual le permite distinguir con facilidad una línea de un
color negro si esta sobrepuesta sobre una superficie de un color claro.

Para esta acción se utiliza la combinación del bloque “Cámara” que entrega la
imagen a procesar y el bloque de función “Detector de líneas” el cual procesará la imagen
para identificar la línea y encontrar su posición en la imagen (Ver Fig. 5.3.A.).

Fig.5.3.A. – Conexión de bloques.

Al procesar una imagen de la cámara es importante utilizar la modalidad correcta,


por lo cual se mostrará la detección de línea en cada modalidad, ordenando las imágenes
desde los mejores resultados a los peores.

Fig.5.3.B. – Detección de líneas en modalidad YCbCr.

Fig.5.3.C. – Detección de líneas en modalidad RGB.


97

Fig.5.3.D. – Detección de líneas en modalidad HLS.

Fig.5.3.E. – Detección de líneas en modalidad HLV.

Después de ver las diferentes modalidades se llegó a la conclusión que la modalidad


“YCbCr” y “RBG”, son las que presentaron mejores resultados. Por lo cual analizaremos la
respuesta de estas dos modalidades en función a una línea y un relieve en la imagen.

En la modalidad RGB:

Fig.5.3.F. – Detección de línea en modalidad “RGB”.


98

En la modalidad YCbCr:

Fig.5.3.G.- Detección de línea en Modalidad “YCbCr”.

También es posible modificar la detección de línea para filtrar la imagen, a través


del “tipo de canto”. Ya que esta indica la dirección de la luz desde donde se comienza a
rastrear la línea: Si es de la zona oscura a la clara una línea; o de la zona clara a la
oscura una línea. Se puede apreciar en la figura como la línea de relieve no es marcada al
cambiar el tipo de canto (Ver Fig.5.3.H).

Fig.5.3.H.- Detección de línea según el tipo de canto.

La detección de la línea nos permite ver en la ventana de diálogo del bloque, las
líneas detectadas de color blanco y la línea reconocida como tal con un una cruz de color
rojo (Ver Fig.5.3.I (A)). Así también el bloque nos dará la información de la posición de la
99

línea en función del eje X, con valores en referencia a pixeles con un valor del eje X
positivo y negativo máximo de 120 si se trabaja con una resolución de 320x240 y que se
detalla en la Fig.5.3.I (B).

Fig.5.3.I.- Ventana de diálogo “Detector de Líneas”.

Ejemplos “Detector de Líneas”:

Ejemplo 1:

Esta es una rutina simple que nos permite seguir una línea que sea ancha y con
una curvatura pequeña, ya que su control sobre el giro es muy básico. Por lo cual en
variadas condiciones de giro puede perder de vista la línea.

Aquí la velocidad de giro es el inverso numérico de la posición de la línea en la


cámara.

Fig.5.3.J – Rutina de ejemplo.


100

Fig.5.3.K - Simulación de Detección de línea.

Ejemplo 2:

Este ejemplo intenta demostrar que al aumentar el control del rango de posición de
línea, es posible tener un control más acabado del movimiento del robot. Además de darle
velocidad constantes de movimiento y giro, que le permiten seguir líneas con una mayor
curvatura a una velocidad uniforme y mayor.

Aquí la velocidad de giro siempre es de 20 [mm/s] y la velocidad en el eje X puede


ser de 100 a 200 [mm/s] (Recomendable), aunque puede ser mayor todo depende de la
pista y la línea a detectar.

Fig.5.3.L – Ejemplo de detección de líneas.

Esta rutina se puede simplificar incluyendo las constantes dentro de los bloques de
función para su entendimiento y uso.

Fig.5.3.M -Ejemplo con constantes internas en los bloques.


101

Fig.5.3.N -Simulación de detección de línea.


Capítulo VI
“Aplicaciones”

102
103

Capítulo VI – Aplicaciones.

6.1.- Jugador de Hockey.

En la actualidad la empresa FESTO S.A, a través de su división didáctica, se


encuentra en desarrollo de posibles competencias a nivel internacional, para que
universidades interesadas en la práctica de la robótica, tenga un incentivo al objetivo de la
enseñanza a través de demostrar sus cualidades y su nivel de aprendizaje, utilizando el
pretexto de un concurso, en este caso, el hockey [10].

Basándose en las reglas de juego oficiales, pero adaptadas a la utilización de


robots en este caso Robotino, para el juego, se pretende en esta aplicación, crear rutinas
y estrategias de ataque, como para defensa en la faena de juego colectivo, pero debidos
a la imposibilidad de implementar un equipo completo (3 unidades), se entregaran las
directrices hacia la conformación, en caso futurista, para el diseño de juego colaborativo
para la participación en competencias de esta índole.

6.1.1.- Reglas del Juego.

Las normas siguen las normas de la IHF (Internacional de hockey sobre hielo
Federación), pero se simplifican. Los reglamentos se dividen en las siguientes secciones:

• Reglas del juego


• Jugadores y equipos
• Equipos
• Campo de juego
• Sanciones
• Normas complementarias

Cada partido será controlado por un árbitro, quien tendrá plena autoridad para hacer
cumplir las normas del juego en relación con el partido. Un árbitro puede tener árbitros
asistentes.

El tiempo de juego regular de un partido se divide en tres tercios, de 10 minutos.


Después de cada tercio hay una pausa de 5 minutos. El tiempo de juego se detendrá al
final del tercer tiempo o debido a una irregularidad señalada por el árbitro. El tiempo de
104

reproducción debe mantenerse si el árbitro vuelve a iniciarse el juego. Así, el tiempo real
de un juego puede una duración de más de 40 minutos.

Uno de los objetivos sólo será reconocido si se cumple las siguientes:

• El disco ha rebasado completamente la línea de meta y se encuentra dentro del área


de portería.
• El último jugador que ha tocado el disco debe estar en la zona defensiva del objetivo
correspondiente.

El juego se inició

• al principio de cada tercio


• o después de una interrupción debido a una irregularidad
• o después de un gol

El inicio del juego se llevará a cabo en el punto de saque-off (el punto central de la
campo de juego) al principio de cada tercio o después de un gol. De lo contrario el árbitro
tiene estas opciones para comenzar:

• El árbitro lanza el disco entre los jugadores.


• El árbitro coloca el disco en uno de los puntos de-bully. Entonces sólo un jugador de
cada equipo se le permite estar cerca para coger el disco.

Fuera de juego:

• Si un jugador atacante sin provocar que el disco está en el área de defensa del
oponente del equipo antes de que el disco ha rebasado completamente la zona de la
defensiva azul, entonces el jugador está off-side.

• El árbitro detendrá el juego y se reiniciará el juego con en el próximo saque punto fuera
de la zona defensiva
105

6.1.2.- Campo de Juego.

El campo de juego se distribuye de la siguiente forma.

Fig. 4.1.1.A - Campo de Juego.

Se distribuye en 2 zonas, que según la orientación del equipo, se subdivide en


zona de ataque y en zona de defensa. Ambos arcos se encuentra a la misma distancia del
punto central, pero en esta ocasión con diferente fondo de arco para evitar confusión en la
detección del arco contrario, con la utilización de visión artificial y detección de colores.

Además, cada área de subdivide a través de la línea azul (cinta metálica) en 2


áreas, y los puntos de penales definidos en color rojo para su ejecución.

La distribución de los jugadores se realizara según la conformidad de la estrategia


de juego a implementar, que pueda o no integrar un jugador a las funciones de arquero, o
de manera contraria, todo el equipo (Máx. 3 unidades) en faenas de ataque, como de
defensa, ante el ataque del equipo contrario o la recuperación del disco.
106

6.1.3.- Estrategias de ataque.

6.1.3.1.- Inicio del Juego.

Al iniciar el juego, según reglamento el jugador que inicia el juego tiene en su


tenaza (accesorio Robotino) el disco y tiene la primera opción de ataque al arco contrario.
De esta forma, al tener esta opción de ataque se implementa la rutina de ataque.

Fig. 6.1.3.1.A - Configuración inicio juego.

Fig. 6.1.3.1.B - Vista cámara Robotino.

La lógica diría que ante el escenario inicial es el ataque directo hacia el arco y esta
será la primera estrategia, ataque directo.

1. Ataque frontal. Lo primero que realiza Robotino es ubicar el arco contrario con el
color de fondo, e inicia la secuencia con un avance directo, hasta que detecta la
presencia de metal que es la zona de defensa del equipo contrario.

2. Entrada zona de defensa equipo contrario. Al actuar el sensor inductivo,


entrega el dato que ingreso a la zona de defensa del equipo contrario, de tal
manera que se prepara la hacer el lanzamiento.
107

3. El lanzamiento. El disco de desplaza de manera que Robotino lo golpee en la


dirección correcta, además, de que el golpe se realice en forma rápida. Para ello
se ajusta el equipo, para que golpee en forma lateral con la tenaza, con un giro
sobre su propio eje.

4. Termino de la ejecución. Al terminar el lanzamiento, si este es efectivo, se


detiene y se posiciona en forma manual al punto de inicio (mitad de la cancha), y
se elige la próxima estrategia, en forma manual.

5. Si el lanzamiento es fallido, realiza un escaneo de su nueva posición, detecta el


arco contrario, y retrocese hasta llegar hasta la línea de defensa del oponente y
realiza una estrategia de defensa (más adelante se mostrara esta técnica).

Fig. 6.1.3.1.C - Resumen movimientos ejecutados.

Fig. 6.1.3.1.D - Rutina ataque frontal.


108

Fig. 6.1.3.1.E - Lanzamiento disco.

Fig. 6.1.3.1.F - Escaneo y retroceso linea de defensa.


109

6.1.3.2.- Inicio del Juego, con deslizamiento lateral.

Se la misma forma que realiza el ataque frontal, se integra una nueva variante en
el hecho que en el arco exista un jugador implementado como arquero.

1. Movimiento lateral. Teniendo la opción de ataque, el equipo se mueve en un


ángulo de 45°, manteniendo la dirección de la cámar a en forma frontal,
aprovechando el movimiento omnidireccional del equipo, hasta detectar la
presencia de la línea de defensa del oponente.

2. Entrada zona de defensa equipo contrario. Al actuar el sensor inductivo,


entrega el dato que ingreso a la zona de defensa del equipo, sin embargo, la
posición para realizar el avance hacia el arco no es la mas efectiva, de tal manera
que se activa la cámara, realiza un escaneo para encontrar el arco, avanza hacia
el arco y se prepara para el lanzamiento.

Fig. 6.1.3.2.A - Vista lateral y detección del arco.

3. El lanzamiento. El disco de desplaza de manera que Robotino lo golpee en la


dirección correcta, además, de que el golpe se realice en forma rápida. Para ello
se ajusta el equipo, para que golpee en forma lateral con la tenaza, con un giro
sobre su propio eje.

4. Termino de la ejecución. Al terminar el lanzamiento, si este es efectivo, se


detiene y se posiciona en forma manual al punto de inicio (mitad de la cancha), y
se elige la próxima estrategia, en forma manual.
110

5. Si el lanzamiento es fallido, realiza un escaneo de su nueva posición, detecta el


arco contrario, y retrocese hasta llegar hasta la línea de defensa del oponente y
realiza una estrategia de defensa (más adelante se mostrara esta técnica).

Fig. 6.1.3.2.B - Vista superior.

Fig. 6.1.3.2.C - Resumen movimientos ejecutados.


111

Fig. 6.1.3.2.C - Avance 45°.

Fig. 6.1.3.2.D - Reconocimiento de arco y avance.

• Lanzamiento ver Fig. 6.1.3.1.E


• Retroceso y posicion linea de defensa ver Fig. 6.1.3.1.F
112

6.1.3.2.- Inicio del Juego, con ataque entre contendores.

Hasta ahora solo se han generado rutinas, con oponentes “inmóviles”, sin embargo
esto en una competencia real, no existe, por lo cual, ahora se integrará un sistema de
esquivar obstáculos y avance hacia el arco contrario, para evitar el daño del equipo, como
los posibles quites de disco por parte de los jugadores del equipo contrario.

1. Inicio del juego. Al dar el árbitro, inicio al juego, Robotino inicia su ataque
manteniendo siempre un movimiento de avance hacia el arco, sin embargo
sus sensores frontales (exceptuando el frontal directo, sensor 1, obstruido por
el disco, además de ser un indicador de tenencia de este), estiman la
ubicación de los obstáculos, para poder realizar maniobras de deslizamiento.

Fig. 6.1.3.2. A - Inicio de juego y detección de oponentes.

2. Maniobras para obstáculos.

• Obstáculo derecho. Para la presencia de oponentes al costado frontal


derecho, se tiene el sensor 8 – 9, para a una cierta distancia (menor a 10 Cm.)
si alguno de estos sensores, a esto sumando el avance hacia el arco
contrario, realiza un deslizamiento a la izquierda, mientras detecta presencia
de los sensores. Sin detener el avance.
• Obstáculo izquierdo. Para la detección de oponentes al costado frontal-
izquierdo, se tiene a los sensores 3 -2, para la presencia de obstáculos a una
distancia menor a 10 Cm. Conjuntamente con el avance al arco contrario,
113

realiza un deslizamiento a la derecha, mientras detecte presencia en los


sensores. Sin detener el avance.

Fig. 6.1.3.2. B - Detección de obstáculos, Avance – izquierda.

• Obstáculos a ambos lados. En este caso si existe presencia de oponentes a


ambos lados, mientras se realiza el movimiento de avance. Si Ambos lados
laterales envían información de oponentes, ignora cualquier instrucción de
desvió y avanza hacia la zona de defensa del equipo contrario.

Todas estas rutinas terminan cuando, Robotino llega a la zona de defensa.

Las demás rutinas se realizan de igual forma que las anteriores

3. Entrada zona de defensa equipo contrario. Ver Fig. Fig. 6.1.3.2.D


4. El lanzamiento. ver Fig. 6.1.3.1.E
5. Termino de la ejecución. Ver Fig. Fig. 6.1.3.1.F.

Fig. 6.1.3.2.C - Detección de obstáculos.


114

6.1.4.- Estrategias de defensa

Después de haber analizado varias estrategias de ataque teniendo la preferencia


de inicio, ahora se creara las posibles rutinas para la defensa del arco propio, ya no
teniendo el disco en su posición.

6.1.4.1.- Defensa a cancha completa.

La defensa a realizar a cancha completa, consiste en el recorrido a cancha


completa de Robotino en busca de recuperar el disco, ya sea una vez hecho el
lanzamiento o bien que haya perdido el disco en una ofensiva.

1. Perdida del disco. Al perder el disco se realiza una rotación sobre su propio eje
en busca del disco. Al tener el disco un color particular en el escenario (rojo), se
puede distinguir debido al color sobresaliente. Utilizando la cámara segmenta la
imagen y detecta la imagen del disco en la cancha.

2. Avanza hacia el disco. Una vez detectado el segmento de imagen, realiza un


acercamiento al disco de juego a través de la utilización de la cámara, utilizando
un rango de pixeles acotado para el avance y para el desplazamiento lateral, de
esta forma, acotamos la imagen encontrada para comandar el movimiento de la
unidad.

Fig. 6.1.4.1.A - Vista cámara disco de juego.

3. Recuperación del disco. Una vez cerca del disco, activa el sensor frontal (sensor
1), para la detección del disco y así poder verificar que efectivamente el disco está
en posesión de Robotino y así comenzar el ataque al arco contrario.
115

Fig. 6.1.4.1.B - Rango acotado de pixeles para movimiento.

Fig. 6.1.4.1.C - Rango acotado de pixeles para movimiento.


116

6.1.4.1.- Modo Arquero.

Una de los requerimientos, en especial para la ejecución de penales, es el uso de


un jugador de arquero para la recepción del tiro o el entorpecimiento de este.

1. Movimiento en el área. En el hockey al igual que el futbol, existe una area


exclusiva para el movimiento del arquero. Para ello, se controla el movimiento
en secuencia laterales para cubrir el mayor espacio del arco.

2. Movimiento en un penal. Desde los punto establecidos, se realiza el tiro por


parte del equipo contrario, se activa la cámara, segmenta la imagen en busca
del disco y siempre la cámara da al disco, con esto se procura tener el disco
siempre a la vista para una posible recuperación para un ataque.

Fig. 6.1.4.1.A - Arquero con seguimiento de disco.


117

6.2.- Bodegaje Automatizado.

Una de las posibles aplicaciones que pudiesen implementar, es un sistema de


bodegaje automatizado con un vehículo autónomo sin conductor, para se establecieron
algunos requerimientos para un funcionamiento, no optimo, pero bueno.

• Tener una entrada de datos ya sea a través de software o bien directamente a


la unidad.

• Almacenamiento con prioridad según estantes y espacio destinados.

• Tener un movimiento autónomo basado en sensado y evitar posibles choques.

Para ello se diseño el siguiente escenario basado en una sala con 3 estantes.

Fig. 6.2. A - Vista simulación Robotino SIM.

En donde las marcas negras representas, huinchas metálicas pegadas sobre el


piso, que indican la dirección del estante, entrada de estante y posición de entrega de
paquetes, y de igual manera, la salida y entrada a la sala.
118

6.2.1.- Entrada de datos.

La entrada de datos pueden ser variables internas o externas al programa


Robotino View, en el Capítulo II (2.6.1) se hace referencia a estas entradas y se explica
su funcionamiento, también en el Anexo 2 (A.2.10) se identifican las características de sus
bloques.

Para la aplicación se utilizarán las entradas de datos de tipo externas para dar a
conocer una variable de posición a Robotino, indicándole el lugar donde debe dejar el
paquete. Esto es posible ya el programa lee un archivo de texto dentro del PC que
contiene y ejecuta Robotino View, este archivo de texto posee un código único de
ubicación dentro de la sala, que dará a las instrucciones a la secuencia de que
movimiento debe realizar.

6.2.2.- Entrada a la sala.

La entrada a sala la realiza con avance, hasta encontrar la primera huincha


metálica, en este punto se detiene y destina el estante asignado según la entrada de
datos realizada.

6.2.3.- Ubicación de estantes.

Estando dentro de la sala, antes de realizar deslizamiento horizontal, efectúa una


maniobra de corrección de ubicación, a través de sus sensores laterales para reducir
posibles recorridos erróneos o bien, alguna mala maniobra antes de moverse. Lo realiza
realizando una resta entre los sensores, si esta substracción es mayor a 0.09 Volt realiza
un giro hasta que ese valor lo más cercano o igual a 0.09 Volt.

Una vez hecha este acomodo del vehículo autónomo, se direcciona en forma
horizontal al destino de algunos de los 3 estantes, presentes delimitados e identificados
por huinchas metálicas a la entrada de estos, de manera que se reduzcan las opciones de
error y facilitar la navegación de Robotino al interior de la sala.
119

Fig. 6.2.3. A - Substracción de sensores (corrección de posición).

Fig. 6.2.3. B - Movimiento horizontal hacia la ubicación del estante.

6.2.4.- Entrega de Paquetes.

Una vez identificado el estante, a través de un contador e identificación de metales


con el sensor inductivo, vuelve a realizar una corrección de posición a través de la
substracción de sensores.

Ya corregido la ubicación hacia el estante, realiza un avance con el contador de


metales, según la entrada de datos la compara con el número de huinchas detectadas, y
envía a la salida del programa. Esta salida de programa independiente del contador de
metal envía al inicio del posicionamiento de entrega/retiro de paquetes.

La entrega como el retiro de los paquetes la realiza, efectuando un giro hacia la


posición del estante, verifica a través de sensores frontales que la ubicación con respecto
al estante es la correcta y engancha el paquete a un soporte adosado al estante, de tal
forma que, quede sujeto a la superficie y evitar su desplazamiento en la maniobra. De
igual manera, el retiro de paquetes lo realiza desenganchando el paquete del soporte y
liberándolo para su traslado a borde del vehículo autónomo sin conductor.
120

Fig. 6.2.4. A - Entrega/retiro de paquetes con corrección de posición.

Estas secuencias las realizan con tiempo para evitar una confusión entre
sensores, lo único que realiza el sensado, es la ubicación frontal con respecto al estante,
para así asegurar su entrada al estante en la posición correcta.

6.2.5. Retiro del estante y reinicio.

Una vez hecho la entrega/retiro del paquete, de su misma posición retrocede hasta
tener una distancia con el otro estante igual a 7 Cm, con sus sensores traseros. Una vez
hecha esta maniobra, realiza hacia la entrada del estante un giro sobre su eje en 90
grados, para perfilarse hacia la entrada con su webcam hacia ella e inicia en forma
consecutiva el avance hacia la entrada, pero en forma análoga al inicio.
Capítulo VII
“Conclusiones y Líneas
de trabajo futuro”

121
122

Conclusiones

• Analizando el trabajo realizado, se puede decir que Robotino es un robot


multidisciplinario muy didáctico, que puede ser utilizado para la enseñanza de
variadas áreas de la robótica como es la Visión Artificial, Inteligencia
Computacional, aplicaciones a Redes Neuronales y otros. Que permiten
desarrollar en el usuario desde un conocimiento básico hasta uno avanzado, a
través de una herramienta de programación muy sencilla como es su software
Robotino View, que permite crear rutinas en un ambiente muy simple, pero a la
vez bastante limitado con el uso de bloques de función lógicos.

• La conectividad por WiFi de Robotino, permite tener una gran capacidad de


intercambio de datos en tiempo real: como video, valores de los encoders y
sensores, logrando crear una potente interacción por parte del usuario en el
control del equipo. Pero esa misma conectividad es también un problema, ya que
el equipo al encenderse se conecta con todos los equipos que se encuentran a su
alrededor. Además de una serie de fallas en la comunicación e intervalos de
conexión nula por parte del access point de Robotino, para lo cual rutinas en
donde el cálculo es realizado por el programa presentan un error muy grande si la
conexión no es la adecuada, para ello se propone modificar su Access Point con
una configuración de seguridad WEP o WPA [11], según los niveles de seguridad
que requiera el usuario, además de una acertada elección de una tarjeta
compatible para el uso del equipo, y así reducir las interferencias, mejorar la
conexion y errores en la ejecución.

• En lo referente al movimiento, al estar los motores de cada rodillo (rueda) en una


ángulo de 120° entre ellos, es posible crear un mov imiento omnidireccional. Pero
en la práctica estos motores no están a un ángulo con tanta exactitud, logrando
una serie de desviaciones en su recorrido que son más significativas a mayores
distancias, pero hay que integrar a cada rutina que necesite precisión a largas
distancias (mayores a 1 metro) un lazo de control en el motor que muestre mayor
desviación de trayecto, a través de conteo de incrementos o de velocidades
reales.
123

• Al hablar de Visión artificial, es necesario tomar conciencia que la cámara presenta


un serio problema de interferencia por luz, además que el alcance de la cámara a
un objetivo no es mayor a 90 [cm], ya que a mayor distancia tiene problema en la
identificación de colores. Para ello se recomienda, manejar el equipo en ambientes
de luz controlada, para la reducción de sobras y zonas oscuras que entorpezcan la
capacidad de la cámara, de igual la utilización de sensores de colores ayudarían a
la detección de colores en la navegación autónoma.

• En referencia a los problemas del equipo se pueden hablar de falencias, ya que


presenta múltiples fallas cómo la conectividad, la transmisión de datos y el desvió
movimiento lineal, que provocan problemas en la creación, precisión y realización
de las rutinas. Con lo cual se sugiere, utilización de sensores o actuadores
externos, aprovechando la entrada de dispositivos que permite tanto señales
análogas y digitales. Con esto, se mejoraría y se potencia el uso de Robotino para
aplicaciones prácticas como plataforma omnidireccional.

Líneas de trabajo Futuro

Dentro de las líneas de trabajo futuro con Robotino se encuentran:

o La creación de trabajos de titulación en lógica difusa y redes neuronales utilizando


a Robotino como modelo de Investigación.

o Trabajos de estudiantes en cursos o Tesis a través de la programación de


Robotino en el Lenguaje C++.

o La implementación de una conexión entre Robotino y el PLC Siemens 7, para la


realización de múltiples rutinas en experiencias de cursos de Control Automático y
Robótica.

o La creación de una serie de experiencias y actividades, utilizando la programación


de Robotino a través de varios programas que presentan compatibilidad del
fabricante Festo Didactic como es: Matlab y Labview.
124

o La creación de líneas de investigación basadas en trabajos de titulación para


realizar técnicas robóticas en trabajo colaborativo con los diferentes equipos del
Instituto de Electricidad y Electrónica como: E-Puck y Khepera III.

o La realización de una serie de pruebas que le permitan a Robotino incorporar una


variedad mucho mayor de sensores que los incorporados por el fabricante para
darle al equipo un nuevo mundo de aplicaciones. A través de sensores de: Color,
temperatura, gas, acelerómetros y otros.
125

Bibliografía

[1] www.festo.com
Página web oficial empresa FESTO S.A, accesado el 15.4.2010.

[2] Robotino Manual.


544305 ES/FR, Ralph-Christoph Weber, Festo Didactic GmbH & Co. KG,
73770 Denkendorf, Germany, 2007.

[3] http://es.wikipedia.org/wiki/Recta
Ecuación de la recta, Euclides, Grecia, 200 A.C, accesado el 20.5.2010.

[4] http://es.wikipedia.org/wiki/Odometr%C3%ADa
Odometría, wiki pedía, S/autor, accesado el 27.6.2010.

[5] http://es.wikipedia.org/wiki/Velocidad#Velocidad_en_mec.C3.A1nica_cl.C3.A1sica
Cinemática, Wiki pedía, S/autor, accesado el 10.7.2010.

[6] http://es.wikipedia.org/wiki/Teorema_de_Pit%C3%A1goras
Teorema de Pitágoras, Wiki pedía, S/autor, accesado el 15.7.2010.

[7] Chávez C. Antonio, Sensores analógicos utilizados en la Automatización


Industrial, Escuela de Ingeniería Eléctrica de la Facultad de Ingeniería de la
Universidad de Costa Rica, Costa Rica, Diciembre 2008.

[8] http://es.wikipedia.org/wiki/Corriente_de_Foucault
Ley de Foucault, Wiki pedía, León Foucault, 1851, accesado el 20.6.2010.

[9] García M. Ginés, Procesamiento Audiovisual, Dpto. de Informática y Sistemas,


Universidad de Murcia, España, Julio de 2008.

[10] Ulrich Karras, Robotino – An Open Learning Mobile Robot System for
Robocup, Festo Didactic, Denkendorf, Germany, Junio 2009.

[11] http://es.wikipedia.org/wiki/Wi-Fi_Protected_Access
Acceso Protegido Wifi, Wiki pedía, S/autor, accesado el 1.9.2010.

o Chidentree Treesatayapun, Arturo Guzman-Carballido, Linearization based on


Fuzzy Rules Emulated Networks for nonaffine discrete-time systems controller,
Department of robotic and a manufacturing CINVESTAV-IPN, Mexico, Junio
2006.

o Martin Wojtczyk, Alois Knoll, UTILIZATION OF A MOBILE MANIPULATOR


FOR AUTOMATING THE COMPLETE SAMPLE MANAGEMENT IN A
BIOTECH LABORATORY. A REAL WORLD APPLICATION FOR SERVICE
ROBOTICS. Department of Informatics, Technische Universitat Aanchen,
Alemania, Enero 2004.
126

o zeynep Yucel, Albert Ali Salah, Cetin Merich, Tekin Merich,Joint Visual
Attention Modeling for Naturally Interacting Robotic Agents, Electrical and
electronics engineering, Bilkent University-Ankara, Turkia. Abril 2007.

o Michael Marszalek, Martin Eder, Andreas Tropschug, Alois Knoll, Mobile


Robots for the Simultaneous Exploration and 2D Determination of Radioactivity,
Department of Informatics, Technische Universitat Munchen, Alemania.
Febrero 2009.

o Simon Kracht, Carsten Nielsen, Robots in Everyday Human Environments - On


Platform Development and Behaviour Dependent Control, Automation &
Control. Aalborg, Dinamarca. Enero 2010.
Anexos

127
Anexo I
“Datos Técnicos”

128
129

Anexo I - Datos técnicos

En este anexo se incluirán las tablas y figuras de los diferentes componentes


presentados en el Capítulo 1. Que pueden ser útiles a fin de entender las características
físicas y técnicas de Robotino.

Esta información fue obtenida de:

 (Información del manual 544305_Robotino_ESFR.pdf)


 (© Festo Didactic GmbH & Co. KG • 544305)

1.1.- Robotino.

Datos técnicos Robotino:

Cuadro 1.1 – Datos Robotino.


130

1.2.- Unidad de Accionamiento.

Datos rendimiento del motor:

Cuadro 1.2. -. Datos Motor

Datos Técnicos del Reductor:

Cuadro 1.3 – Datos Reductor


131

Datos del Rodillo Omnidireccional:

Cuadro 1.4 – Datos Omnidireccional

1.3.- Webcam.

Modulo de la Cámara:

Cuadro 1.5 – Modulo Cámara.


132

1.4.- Sensor Inductivo.

Sensor de Proximidad Inductivo Analógico

Cuadro 1.6 – Sensor Inductivo.


133

1.5.- Interface E/S.

Asignación de Bornes del Interface E/S

Fig. 1.1 – Interface E/S

(Información del manual 544305_Robotino_ESFR.pdf)

(© Festo Didactic GmbH & Co. KG • 544305)


Anexo II
“Bloques de función”

134
135

Anexo II - Bloques de función.

En este Anexo se incluirán los bloques de función del software incluido en el


paquete de Robotino llamado “Robotino View”, Estos bloques poseen gran importancia al
ser citados en varios capítulos del trabajo de titulación. Por lo cual se analizarán los
principales tipos de bloques que se encuentran en el software, para simplificar la
búsqueda de un bloque específico use el software para ver su ubicación en este anexo y
vea el cuadro más abajo.

El orden a utilizar en este anexo será el que muestra el cuadro (Cuadro 2.1):

A.2.1. Lógica
A.2.2. Matemática
A.2.3. Calculo de Vectores
A.2.4. Indicación
A.2.5. Procesamiento de Imágenes
A.2.6. Generadores
A.2.7. Filtros
A.2.8. Robotino Hardware
A.2.9. Navegación
A.2.10. Intercambio de Datos
A.2.11. Mando Secuencial

Cuadro 2.1- Orden bloques de función

A.2.1.- Lógica.

En este campo del software se van a representar todas las funciones en bloques
que aplican a la lógica electrónica, como son las compuertas, contadores y otros.

A.2.1.1.- Contador Incremental.

El bloque “Contador incremental” cumple la función de llevar un conteo o registro


de los eventos de la entrada del bloque, el conteo es a través de la suma de los eventos.
Es bastante útil en aplicación en donde se debe llevar un registro exacto del número de
eventos, para así realizar acciones predeterminadas.

Fig. 2.1.1.A Icono Contador Incremental.


136

Entradas.
Entrada Entrada del contador
Reset Resetea el contador si el valor es <=0.

Salida.
Salida Valor del contador

Ventana de diálogo en el software:

Fig. 2.1.1.B

Dentro de la ventana de diálogo:

Selección de tipo Contador incremental: aumenta el valor del contador.


Contador decremental: disminuye el valor del contador.
Conteo en flanco Cambio del valor de conteo si se cumple lo siguiente:
ascendente E1(t)<1 y E1(t+1)>1
Conteo en flanco Cambio del valor de conteo si se cumple lo siguiente:
descendente E1(t)>1 y E1(t+1)<1
Reponer a cero al final Coloca el valor en 0 al iniciar el programa

A.2.1.2.- Contador Decremental.

El bloque “Contador Decremental” realiza la misma función que el “Contador


Incremental” de llevar un conteo o registro de eventos, pero con la única diferencia que el
valor es disminuido o restado en una unidad por evento ocurrido.

Es posible cambiar de contador incremental a decremental a través de la ventana


de diálogo en la opción “Selección de tipo”.

Fig. 2.1.2 Icono Contador Decremental.


137

A.2.1.3.- Demultiplexor.

El bloque “Multiplexor” realiza una función que nos permite distribuir una señal de
entrada entre más de 20 salidas conmutables con un mínimo de 2 salidas.

Fig. 2.1.3.A Icono Demultiplexor.

Entradas.
E1 Señal de entrada
Determina la señal de salida que se envía hacia la entrada. Todas las
demás salidas están en 0.
Selección Si la selección es < a la cantidad de salidas, la señal de entrada se envía
hacia A1.
Si la selección es < n + 0,5 y > n – 0,5, la señal de entrada se envía hacia
An.
Si la selección es > a la cantidad de salidas, la señal de entrada se
envíahacia la última salida.

Salidas.
A1 Señal de salida 1.
A2 Señal de salida 2.
An Señal de salida n.

Ventana de diálogo en el software:

Fig. 2.1.3.B

Dentro de la ventana de diálogo:

Salidas Modificar la cantidad de salidas: Min. 2; Máx. 20


138

A.2.1.4.- Multiplexor.

Este bloque “Multiplexor” tiene la función de crear un enlace entre una salida y una
entrada seleccionable.

Fig. 2.1.4.A Icono Multiplexor.

Entradas.
Selección Determina la señal de entrada que se envía hacia la salida.
Si la selección es < a la cantidad de entradas, la señal de entrada E1 se envía
hacia la salida.
Si la selección es < n + 0,5 y > n – 0,5, la señal de entrada En se envíahacia la
salida.
Si la selección es > a la cantidad de entradas, la última señal de entrada se
envía hacia la salida.
E1 Señal de entrada 1
E2 Señal de entrada 2
En Señal de entrada n

Salida.
A1 Señal de salida

Ventana de diálogo en el software:

Fig. 2.1.4.B

Dentro de la ventana de diálogo:

Entradas Modificar la cantidad de entradas: Min. 2; Máx. 20


139

A.2.1.5.- AND.

El Bloque “AND” que simula el funcionamiento de una compuerta AND se


caracteriza por usar la función Booleana de producto lógico, o sea que su salida es 1 solo
si todas sus entradas son 1, de lo contario la salida es 0.

Fig. 2.1.5.A Icono AND.

Entradas.
1 Si el valor es < 0,5, se atribuye a «a» el valor lógico 0. De lo contrario, a «a»
se le atribuye el valor lógico 1.
2 Si el valor es < 0,5, se atribuye a «a» el valor lógico 0. De lo contrario, a «b»
se le atribuye el valor lógico 1.
3 Si el valor es < 0,5, se atribuye a «a» el valor lógico 0. De lo contrario, a «c»
se le atribuye el valor lógico 1.
4 Si el valor es < 0,5, se atribuye a «a» el valor lógico 0. De lo contrario, a «d»
se le atribuye el valor lógico 1.

Salida.
Q Si todas las entradas poseen un lógico 1 la salida es 1, de lo contrario es 0.

Ventana de diálogo en el software:

Fig. 2.1.5.B

Dentro de la ventana de diálogo:

Selección de tipo Se puede cambiar a una compuerta AND, AND FL, NAND, NAND
FL
140

A.2.1.6.- AND FL.

El Bloque “AND FL” realiza una simulación del comportamiento de una compuerta
AND FL, o sea que realiza la misma función booleana de producto lógico que la
compuerta AND, pero no solo con la condición de que todas las entradas deben ser un
valor lógico 1 para que la salida así lo sea, sino que también existe una evaluación de
flanco que impone que si todas las entradas son de valor 1 y que en el ciclo anterior por lo
menos una de las entradas se encontraba en el valor lógico 0.

Fig. 2.1.6. Icono AND FL.

Las entradas, las salidas y las parámetros son iguales a los de AND. Excepto en el
concepto de considerar los flancos en la salida.

A través de la ventana de diálogo es posible pasar de una compuerta AND a una


AND FL, una NAND y una NAND FL.

A.2.1.7.- NAND.

Este bloque simula el funcionamiento de una compuerta NAND y se caracteriza


por usar la función Booleana de producto lógico negado, o sea que su salida es valor
lógico 0 solo si todas sus entradas son un valor 1, de lo contario la salida es un valor 1. Es
lo inverso a la compuerta AND.

Fig. 2.1.7. Icono NAND.

Las entradas siguen las mismas condiciones que en la función AND, pero en el
caso de las salidas siguen el patrón, de que si el valor lógico es 0 en todas las entradas
eso da un valor es 1, de lo contario la salida es un valor 1.
141

A.2.1.8.- NAND FL.

Este bloque “NAND FL” simula el funcionamiento de una compuerta NAND FL, o
sea que realiza la misma función booleana de producto lógico negado que la compuerta
NAND, pero no solo con la condición de que todas las entradas deben ser un valor lógico
0 para que la salida así lo sea, sino que también existe una evaluación de flanco que
impone que si todas las entradas son de valor 0 y que en el ciclo anterior por lo menos
una de las entradas se encontraba en el valor lógico 1.

Fig. 2.1.8. Icono NAND FL.

Las entradas, las salidas y las parámetros son iguales a los de NAND. Excepto en
el concepto de considerar los flancos en la salida.

A través de la ventana de diálogo es posible pasar de una compuerta AND a una


AND FL, una NAND y una NAND FL.
142

A.2.1.9.- OR.

Este bloque “OR” simula el funcionamiento de una compuerta OR se caracteriza


por usar la función Booleana de suma lógica, o sea que su salida es 1 si una de todas sus
entradas son 1, de lo contario la salida es 0.

Fig. 2.1.9.A Icono OR.

Entradas.
1 Si el valor es < 0,5, se atribuye a «a» el valor lógico 0. De lo contrario, a «a» se le
atribuye el valor lógico 1.
2 Si el valor es < 0,5, se atribuye a «a» el valor lógico 0. De lo contrario, a «b» se le
atribuye el valor lógico 1.
3 Si el valor es < 0,5, se atribuye a «a» el valor lógico 0. De lo contrario, a «c» se le
atribuye el valor lógico 1.
4 Si el valor es < 0,5, se atribuye a «a» el valor lógico 0. De lo contrario, a «d» se le
atribuye el valor lógico 1.

Salida.
Q Si al menos una de todas las entradas posee un lógico 1 la salida es 1, de lo
contrario es 0.

Ventana de diálogo en el software.

Fig. 2.1.9.B

Dentro de la ventana de diálogo:

Selección de tipo Se puede cambiar a una compuerta OR, NOR


143

A.2.1.10.- NOR.

Este bloque “NOR” simula el funcionamiento de una compuerta NOR se


caracteriza por usar la función Booleana de suma lógica negada, o sea que su salida es
valor lógico 0 solo si como mínimo una de todas sus entradas posee un valor lógico 1, de
lo contario la salida es un valor 1. Es lo inverso a la compuerta OR.

Fig. 2.1.10. Icono NOR.

Las entradas siguen las mismas condiciones que en la función OR, pero
considerando el caso de las salidas siguen el patrón, de que si el valor lógico es 1 en
alguna de todas las entradas eso da un valor es 0, de lo contario la salida es un valor 1.

A.2.1.11.- XOR.

Este bloque “XOR” simula el funcionamiento de una compuerta XOR se


caracteriza por ser llamada compuerta exclusiva o excluyente, esta función se rige por la
reglas que si solo una y no ambas de sus entradas es de valor lógico 1, la salida es de
una valor lógico 1. Se puede decir en otras palabras que si las dos entradas tienen el
mismo valor lógico en la salida el valor será 0.

Fig. 2.1.11 Icono XOR.

Entradas.
1 Si el valor es < 0,5, se atribuye a «a» el valor lógico 0. De lo contrario, a «a»
se le atribuye el valor lógico 1.
2 Si el valor es < 0,5, se atribuye a «a» el valor lógico 0. De lo contrario, a «b»
se le atribuye el valor lógico 1.

Salida.
Q Si solo una y no ambas entradas posee un lógico 1 la salida es 1, pero si
ambas entradas son de valor del mismo valor la salida es de valor 0.
144

A.2.1.12.- NOT.

Este bloque “NOT” simula el funcionamiento de una compuerta NOT, en otras


palabras quiere decir que su entrada es negada en salida, por ejemplo si su entrada es
valor 1 la salida es valor 0. Esta función de negación o inversión Booleana.

Fig. 2.1.12 Icono NOT.

Entrada.
1 Si el valor es < 0,5, se atribuye a «a» el valor lógico 0. De lo contrario, a «a»
se le atribuye el valor lógico 1.

Salida.
Q Entrada Q, si el valor de entrada es 0 la salida es 1. Si el valor de entrada es 1 la
salida es 0.

A.2.1.13.- RS.

Este bloque “RS” simula el funcionamiento de un Flip-Flop RS, las características


de este Flip Flop que posee dos estados estables, es la capacidad de guardar 1 bit de
información.

Fig. 2.1.13.A Icono RS.

Entradas.
Set A través de la entrada Set se puede un estado “1” en la salida Q.
Reset A través de la entrada Reset se resetea cambiando a un valor lógico “0” en Q.
Si R y S son de valor “1” entonces la salida Q es un valor “0”.
Par Es la remanencia del estado: si es un valor “0” no hay remanencia, si es un
valor “1” el flip-flop esta guardando la información.

Salida.
Q Se activa con S en un valor “1” y se resetea con un valor “1” en R (Reset).
145

Diagrama de funcionamiento

Fig. 2.1.13.B

Recomendación importante:

Es importante tener en cuenta que si uno de las entradas en las funciones de


compuerta esta sin ser definida, esta automáticamente pasa tener un valor lógico de 1. Es
relevante principalmente en la función “AND”, “NAND”, “OR” y “NOR”.
146

A.2.2.- Matemáticas.

En esta sección se representan módulos de bloques básicos, que realizan


operaciones matemáticas para la construcción de diagramas de programación de
Robotino.

A.2.2.1.- Adición.

Este bloque realiza la operación de SUMA de hasta 20 valores de entrada.

Fig. 2.2.1. A Icono Adición.

Entradas.
E1 Señal de entrada 1
E2 Señal de entrada 2
En Señal de entrada n

Salida.
A1 Señal de salida = Suma de las señales de entrada E1, E2…. En.

Ventana de diálogo en el software:

Fig. 2.2.1. B

Dentro de la ventana de diálogo, nótese que es idéntica para Adición, Substracción,


multiplicación, mínimo y máximo.

Selección de tipo Adición, substracción, multiplicación, mínimo y máximo.


Entradas Modificación de cantidad de entradas.
Mínimo: 2.
Máximo: 20.
147

A.2.2.2.- Substracción.

Este bloque realiza la operación de RESTA de hasta 19 valores de entrada.

Fig. 2.2.2 .A Icono Substracción.

Entradas.
E1 Señal de entrada 1
E2 Señal de entrada 2
En Señal de entrada n

Salida.
A1 Señal de salida = Resta de las señales de entrada E1, E2…. En.

Ventana de diálogo en el software:

Fig. 2.2.2 B

A.2.2.3.- Multiplicación.

Este bloque realiza la operación de MULTIPLICACION de hasta 20 valores de


entrada.

Fig. 2.2.3 A Icono Multiplicación.

Entradas.
E1 Señal de entrada 1
E2 Señal de entrada 2
En Señal de entrada n
148

Salidas.
A1 Señal de salida = E1 x E2 x … x En

Ventana de diálogo en el software:

Fig. 2.2.3 B

A.2.2.4.- División.

Este bloque realiza la operación de DIVISION entre 2 valores de entrada.

Fig. 2.2.4. Icono División.

Entradas.
E1 Señal de entrada 1
E2 Señal de entrada 2
En Señal de entrada n

Salida.

A1 Señal de salida = E1 / E2
Si E2=0, entonces
A1 = Infinito, si E1 > 0
A1 = 0, si E1 = 0
A1 = -Infinito, si E1 < 0
149

A.2.2.5.- Máximo.

Este bloque indica el máximo de hasta 20 entradas.

Fig. 2.2.5. A Icono Máximo.

Entradas.
E1 Señal de entrada 1
E2 Señal de entrada 2
En Señal de entrada n

Salida.
A1 Señal de salida = máx. ( E1, E2, …, En )

Ventana de diálogo en el software:

Fig. 2.2.5. B

A.2.2.6.- Mínimo.

Este bloque indica el mínimo de hasta 20 entradas.

Fig. 2.2.6. A Icono Mínimo.


Entradas.
E1 Señal de entrada 1
E2 Señal de entrada 2
En Señal de entrada n
150

Salida.
A1 Señal de salida = mín. ( E1, E2, …, En )

Ventana de diálogo en el software:

Fig. 2.2.6. B

A.2.2.7.- Modulo.

Este bloque tiene sentido para valores de 2 entradas de números enteros


positivos.

Fig. 2.2.7 Icono Modulo.

Entradas.
E1 Señal de entrada 1
E2 Señal de entrada 2

Salida.
A1 Señal de salida = E1 % E2 = E1 - E2 x valor mayor de número entero <=
E1/E2
151

A.2.2.8.- Mayor y Mayor Igual.

Este bloque compara entre 2 entradas y representa a la salida con una respuesta
lógica (1) si es verdadero o (0) si es falso.

Fig. 2.2.8 A Icono Mayor.

Entradas.
E1 Señal de entrada 1
E2 Señal de entrada 2

Salida.
A1 Señal de salida = 1 , si E1 > E2 , de lo contrario = 0

Fig. 2.2.8. B Icono Mayor Igual.

Salidas.
A1 Señal de salida = 1 , si E1 >= E2, de lo contrario = 0

A.2.2.9.- Menor y Menor Igual.

Este bloque compara entre 2 entradas y representa a la salida con una respuesta
lógica (1) si es verdadero o (0) si es falso.

Fig. 2.2.9. A Icono Menor.

Entradas.
E1 Señal de entrada 1
E2 Señal de entrada 2
152

Salida.
A1 Señal de salida = 1 , si E1 < E2, de lo contrario = 0

Fig. 2.2.9. B Icono Menor Igual.

Salida.
A1 Señal de salida = 1, si E1 <= E2, de lo contrario = 0

A.2.2.10.- Igual y Desigual.

Este bloque compara entre 2 entradas y representa a la salida con una respuesta
lógica (1) si es verdadero o (0) si es falso.

Fig. 2.2.10. A icono Igual.

Entradas.
E1 Señal de entrada 1
E2 Señal de entrada 2

Salida.
A1 Señal de salida = 1, si E1 = E2 , de lo contrario = 0

Fig. 2.2.10. B Icono Desigual.

Salida.

A1 Señal de salida = 1 , si E1 != E2, de lo contrario = 0


153

A.2.2.11.- Función de Transferencia.

Este bloque permite graficar y obtener la respuesta de salida de un bloque con una
entrada definida. De tal manera que puede ser visual la respuesta de la señal.

Fig. 2.2.11. A Icono Función Transferencia.

Entrada.
E1 Señal de entrada 1

Salida.

A1 Señal de salida1

Ventana de diálogo en el software:

Fig.2.2.11. B

Descripción Primero deben definirse el margen de definición de la función, por


de la ejemplo -2 < x < 2, y el margen de valores, por ejemplo -2 < y < 2.
función
La definición de una función lineal parcial está constituida de la
indicación de una cantidad limitada de valores de funciones. Por defecto,
se proponen dos valores de funciones. Si usted desea definir valores
adicionales de funciones, ponga el puntero del ratón en el punto de la
gráfica de funciones que corresponda al nuevo valor. Haciendo clic con
el botón derecho del ratón, se abre un diálogo con la opción de
«Agregar». Confirme la opción y se agregará un nuevo punto. Este punto
puede desplazarse indistintamente con el puntero del ratón, dentro del
margen de valores definido
154

A.2.2.12.- ABS.

Este bloque entrega el valor absoluto de una entrada.

Fig. 2.2.12 Icono ABS.

Entrada.
A Señal de entrada 1

Salida.
B b = abs( a )
155

A.2.3.- Cálculo de Vectores.

En este modulo se encuentran los bloques esenciales para el cálculo de vectores


bidimensional, para el desplazamiento de Robotino, a través del software de control
Robotino view.

A.2.3.1.- Constante de Vector.

Este bloque genera un valor de vector constante.

Fig. 2.3.1. Icono Constante de Vector.

Salida.
A1 Vector de salida en coordenadas cartesianas

Sistema de Cartesiano, polar


coordenada
X o longitud Indicación de la coordenada X o de la longitud del vector
Y o Phi Indicación de la coordenada Y o del ángulo de orientación Phi,
expresado en grados

A.2.3.2.- Cartesiano según Vector.

Este bloque crea un vector a base de los componentes de entrada cartesianos.

Fig. 2.3.2. Icono Cartesiano según Vector.

Entradas.
X Proyección del vector sobre el eje X
Y Proyección del vector sobre el eje Y

Salida.
A1 Vector = (X,Y)
156

A.2.3.3.- Polar según Vector.

Este bloque crea un vector a base de los componentes de longitud y orientación


como entradas.

Fig. 2.3.3. Icono Polar según Vector.

Entradas.
R Longitud
phi Orientación expresada en grados

Salida.
A1 Vector = r * (cos phi, sin phi)

A.2.3.4.- Vector Cartesiano.

Este bloque descompone un vector en sus componentes cartesianos.

Fig. 2.3.4. Icono Vector Cartesiano.

Entrada.
Vector Vector

Salidas.
X Proyección del vector sobre el eje X
Y Proyección del vector sobre el eje Y
157

A.2.3.5.- Vector según Polar.

Este bloque descompone el vector de entrada en sus componentes polares.

Fig. 2.3.5. Icono Vector según Polar.

Entrada.
Vector Vector

Salidas.
R Longitud
phi Orientación expresada en grados

A.2.3.6.- Adición de Vectores.

Este bloque SUMA hasta 20 vectores de entrada, entregando a la salida su


resultado en forma de vector.

Fig.2.3.6 Icono Adición de Vectores.

Entradas.
E1 Vector 1
E2 Vector 2
En Vector n

Salida.
A1 Vector = E1+E2+…+En

Ventana de diálogo en el software:

Fig. 2.3.6. A
158

Selección de tipo Adición, substracción


Entradas Modificación de la cantidad de entradas: Mínimo: 2; Máximo: 20

A.2.3.7.- Substracción de Vectores.

Este bloque RESTA hasta 20 vectores de entrada, entregando a la salida su


resultado en forma de vector.

Fig. 2.3.7. Icono Substracción de Vectores.

Entradas.
E1 Vector 1
E2 Vector 2
En Vector n

Salida.
A1 Vector = E1-E2-…-En

Ventana de diálogo en el software:

Fig. 2.3.7. A

Selección de tipo Adición, substracción, multiplicación, mínimo y máximo.


Entradas Modificación de cantidad de entradas: Mínimo: 2; Máximo: 20.
159

A.2.3.8.- Multiplicación de Vectores.

Este bloque multiplica un vector de entrada con un escalar, entregando su


resultado en forma de vector a la salida.

Fig. 2.3.8. Icono Multiplicación de Vectores.

Entradas.
E1 Vector
E2 Valor (escalar)

Salida.
A1 Vector = E2 * E1

A.2.3.9.- Definir longitud.

Este bloque define la longitud de un vector según el valor absoluto del valor
determinado y dependiendo del valor, si es negativo cambia su orientación en 180°.

Fig. 2.3.9. Icono Definir Longitud.

Entradas.
E1 Vector
E2 Valor numérico real

Salida.
A1 Vector = E2 * (cos phi, sin phi) , suponiendo que ( r, phi) son las
coordenadas polares de E1.
160

A.2.3.10.- Rotar.

Este bloque hace rotar un vector según un valor predeterminado.

Fig. 2.3.10. Icono Rotar.

Entradas.
E1 Vector
E2 Valor = Ángulo de rotación

Salida.
A1 Vector = r*(cos (phi+E2), sin (phi+E2)), siendo (r , phi) las coordenadas
polares de E1.

A.2.3.11.- Producto Escalar.

Este bloque realiza la operación de producto escalar entre 2 vectores de entrada.

Fig. 2.3.11. Icono Producto Escalar.

Entradas.

A Vector a
B Vector b

Salida.

a*b a1*b1+a2*b2
161

A.2.4.- Indicación.

En esta sección, se encuentran bloques de funciones para la visualización de


datos de manera grafica y con interpretación de valores.

A.2.4.1.- Osciloscopio.

Este bloque representa un instrumento de visualización de señales, emulando un


instrumento real, con 2 canales de entrada y de visualización independiente, además
integrando a esto una memoria de datos.

Fig. 2.4.1. A Icono Osciloscopio.

Entradas.
E1 Valor de entrada 1
E2 Valor de entrada 2
E3 Valor de entrada 3

Ajustes canal 1 Escala del eje Y


Posición cero en el eje Y
Definición de las condiciones del impulso trigger: flanco
descendente, ascendente
Posición de trigger
Ajustes canal 2 Análogos al canal 1
Ajustes canal 3 Análogos al canal 1
Base de Definición de la base de tiempo para todos los canales. Un casillero
tiempo corresponde al valor ajustado en sentido X.

Mínimo: 20ms, Máximo: 500s

Copiar a la memoria intermedia el valor actual en calidad de bitmap.


162

Ventana de diálogo en el software:

Fig. 2.4.1. B

1 Amplía el diálogo para los ajustes del canal 1


2 Amplía el diálogo para los ajustes del canal 2
3 Amplía el diálogo para los ajustes del canal 3
4 Amplía el diálogo para los ajustes de la base de tiempo y para la copia del
valor indicado
5 Muestra la posición cero en Y de cada uno de los canales
6 Escala de cada canal en sentido Y (C0 – C2) y resolución de tiempo

Ventana de diálogo en el software:

Fig. 2.4.1. C

1 Activación/Desactivación de canal 1
2 Ajuste de la posición cero en Y de canal 1
3 Ajuste de la escala Y de canal 1. El valor indicado corresponde a la separación
de los números entre las líneas horizontales.
4 Ajustes del trigger del canal 1
Off / Flanco descendiente / Flanco ascendente
Desplazamiento de la función de trigger ( indicación de la posición del trigger
en el lado derecho de la indicación)
5 Ajuste de la base de tiempo para todos los canales. El valor indicado se refiere
a la distancia entre las líneas verticales.
6 Copiar la indicación en calidad de bitmap a la memoria intermedia para su
utilización en otros programas.
163

A.2.4.2.- Indicación de Vectores.

Este bloque tiene la funcionalidad de registrar gráficamente hasta 20 vectores en 2


dimensiones.

Fig. 2.4.2. A Icono Indicación de Vectores.

Entradas.

E1 Valor de entrada 1
E2 Valor de entrada 2
En Valor de entrada n

Ventana de diálogo en el software:

Fig. 2.4.2. B

Cantidad Modificación de la cantidad de entradas.


Mínimo: 2 ; Máximo: 20
164

A.2.5.- Procesamiento de imágenes.

A.2.5.1.- Segmentador.

El Segmentador encuentra superficies del mismo color en una imagen esta es la


descripción más básica, pero para ser precisos este bloque de función es una herramienta
que procesa una imagen de la webcam del equipo, con la cámara encendida se
selecciona una imagen fija (se fotografía), con la herramienta de selección en forma
Circular o cuadrada con la que se marca la zona a seleccionar con el color deseado (debe
ser una zona con un color dominante). Cuando la zona es seleccionada entra en la lista
de segmentos, en esta lista se pueden incluir varios segmentos, retirar segmentos y
también cambiar su orden.

Todo eso es para tener una lista de segmentos que pueden ser usados de variables
de identificación y reconocimiento para alguna función exacta, la ventaja directa de este
extractor es que al ser más de un segmento esto permite una mayor exactitud al cambio
de luz y a las sombras.

Figura 2.5.1.A Icono Segmentador unido a la cámara.

Seleccionar colores:

Para seleccionar los colores se deben seguir los siguientes pasos (Ver Figura 2.5.1.B):

1.- Hacer click en el símbolo de la cámara para así fijar la imagen con la que se desea
trabajar.

2.- Para seleccionar el segmento de color se debe elegir la forma de la herramienta


dependiendo de la imagen, las formas que ofrece el programa son un rectángulo y un
círculo.

3.- Cuando se desee seleccionar y se eligió la formad de la herramienta se debe arrastrar


el mouse sobre el color.

4.- Para guardar el segmento seleccionado se debe presionar el símbolo en el bloque.

5.- Se pueden agregar uno o más segmentos siguiendo nuevamente los pasos anteriores.
165

Figura 2.5.1.B

Imagen segmentada:

Para ver la imagen procesada por el segmentador se presiona el símbolo (ver


figura 2.5.1.C(A)), con lo que se podrá ver el segmento seleccionado en la imagen. El
porcentaje (ver figura 2.5.1.C (B)), se refiere al tamaño representado de la imagen dentro
de la ventana.

Figura 2.5.1.C
166

A.2.5.2.- Extractor de segmentos.

El bloque “extractor de segmento” tiene una función con la cual ve el tamaño y la


posición del segmento en la imagen que fue procesada por el segmentador.

El extractor recibe la imagen con los segmentos ya seleccionados, por lo cual con
este modulo seleccionamos y ordenamos los segmentos a identificar.

Figura 2.5.2.A Icono Extractor de segmentos.

Entradas.
Imagen Imagen de la cámara con informaciones sobre los segmentos
segmentada
Selección de Elección de un segmento a analizar.
segmentos

Salidas.
X Posición “X” del centro de gravedad del segmento en relación
con el centro de la imagen.
Y Posición “Y” del centro de gravedad del segmento en relación
con el centro de la imagen.
Superficie El tamaño del segmento completo en la imagen. (el numero de
pixeles de esa superficie)
Encontrado Da una valor lógico “1” si se encuentra en la imagen de la
cámara un segmento con la mínima superficie necesaria.

Ventana de diálogo en el software:

Figura 2.5.2.B
167

Dentro de la ventana de diálogo:

Selección de segmentos Selección de segmentos a ver, si no se está ocupada la


entrada de selección de segmentos
Tamaño mínimo Cantidad mínima de pixeles que se extraen

Ejemplo de extractor de segmento

Figura 2.5.2.C
En este ejemplo la imagen de la cámara pasa al segmentador para ser procesada,
para luego ser usada por el extractor para reconocer un segmento a través de la imagen
en tiempo real.
168

A.2.5.3.- Detector de líneas.

Este bloque puede reconocer una línea en una imagen y procesarla, indicando su
dirección a través de un simple proceso.

El proceso de detección Utiliza como base la parte inferior de la imagen como eje
“X” de coordenadas para la detección de la línea, utilizando la mitad de la imagen como
origen de ese plano.

Es importante mencionar que suele tener problemas a ciertas condiciones de


relieve y luz, la cámara la identificar otros elementos como una línea.

Figura 2.5.3.A Icono Detector de Líneas.

Entradas.
Bild Entrada de imagen.
Valor Limite Es la cantidad de líneas que deben existir para que se considere al
segmento una línea.
Indica la dirección de la luz desde donde se comienza a rastrear la
Tipo de Canto línea: 0 es de la zona oscura a la clara una línea; 1 es de la zona clara
a la oscura una línea.

Salidas.
X Posición en el eje X de la línea en la parte inferior de la imagen.
Indica con una valor lógico “1” si se detecto una línea y un valor lógico
Encontrar “0” se no se detecto una línea en la imagen.
169

Ventana de diálogo en el software:

Figura 2.5.3.B

Dentro de la ventana de diálogo:

Ajuste manual del Elije el valor limite en caso de estar libre la entrada
valor limite
Inicio Comienza a busca en la parte inferior de la imagen.
Ajuste manual del Elije el tipo de canto en caso de estar libre la entrada
tipo de canto

Ejemplo detector de línea

Figura 2.5.3.C Ejemplo.

La cruz roja indica la detección de la línea (Figura 2.5.3.B), pero es recomendable


colocar la cámara en visión YCbCr al poseer esta una imagen más nítida en relación a la
línea en el detector.
170

A.2.6.- Generadores.

En esta sección de encuentran diversos generadores de señales para el uso en


Robotino View.

A.2.6.1.- Generador Rectangular.

En este bloque se obtiene un generador de pulsos rectangular de ancho variable.


En la representación gráfica del impulso rectangular se muestra la amplitud elegida y al
duración (ms) del impulso.

Fig. 2.6.1. A Icono Generador Rectangular.

Salida.

Salida Impulso rectangular

Dentro de la ventana de vinculo al generador. Nótese que es idéntica para generador de


rectángulos, generador de picos y generador sinusoidal.

Ventana de diálogo en el software:

Fig. 2.6.1. B
171

Selección de tipo Generador de señales rectangulares, de picos, sinusoidales


Amplitud Amplitud
Frecuencia Máx. 25 Hz. La frecuencia máxima de transmisión es de 50 Hz. Por
ello, sólo es posible emitir señales que son partes de esta
frecuencia máxima, es decir: 25 Hz , 10 Hz, 5 Hz, 2 Hz, 1 Hz, 0.5
Hz, 0.2 Hz y 0.1 Hz.
Ancho del El ancho del impulso se mide en ms y, por supuesto, depende de
impulso la frecuencia.

A.2.6.2.- Generador de Picos.

Este bloque se obtiene un generador de impulsos en forma de picos. En la


representación gráfica de la curva con picos se muestra la amplitud y la duración (ms) del
impulso.

Fig. 2.6.2. A Icono Generador de Picos.

Ventana de diálogo en el software:

Fig. 2.6.2. B
172

A.2.6.3.- Generador Sinusoidal.

Este bloque se obtiene un generador de ondas sinusoidales. En la representación


gráfica de la curva sinusoidal se muestra la amplitud elegida y la duración (ms) del
impulso.

Fig. 2.6.3. A Icono Generador Sinusoidal.

Ventana de diálogo en el software:

Fig. 2.6.3. B

A.2.6.4.- Constante.

Este bloque tiene la particularidad de generar un valor constante predeterminado


por el usuario.

Fig. 2.6.4. Icono Constante.

Salida.
Salida Valor constante

Valor Ajuste del valor de salida


173

A.2.6.5.- Modulo de Tiempo.

Este bloque integra un contador de tiempo, teniendo que si existe una entrada
lógica “0”, comienza la medición de tiempo en ms y con una entrada lógica “1” se detiene
el contador y se repone a tiempo = 0.

Fig. 2.6.5. Icono Modulo de Tiempo.

Entrada:

Entrada Si = 1, se detiene la medición del tiempo y se repone a 0.


Si = 0, empieza la medición de tiempo en ms.

Salida.
Salida Duración en ms
174

A.2.7.- Filtros.

A.2.7.1.- Aplanar.

Este bloque tiene la funcionalidad de crear el valor medio de una señal de entrada,
con una cantidad máxima de 100 pasos de tiempo.

Fig. 2.7.1. A Icono Aplanar.

Entrada.

E1 Señal de entrada

Salida.

A1 Señal de salida
Siendo n = la profundidad de filtración y t1,..,tn los últimos ciclos
temporizados, entonces es válido lo siguiente:
A1 = (E1(t1)+E1(t2)+…+E1(t=tn))/n,

Ventana de diálogo en el software:

Fig. 2.7.1. B

Profundidad Número entero positivo < 100


de filtración
175

A.2.8.- Robotino hardware.

A.2.8.1.- Webcam.

La función “Cámara” permite acceder a imágenes y video en tiempo real a través


de una webcam conectada a un puerto USB, es necesario decir que la nitidez de la
imagen depende del ajuste manual del lente.

Figura 2.8.1.A Icono Webcam.

Este modulo además de entregar la imagen y video para su procesamiento, trae


consigo 3 opciones de ajuste como son las pertenecientes al tamaño de la imagen, los
espectros cromáticos y por último la resolución con la cual se trabajara.

Ventana de diálogo del software

A) Tamaño de la imagen; B) Espectro cromático; C) Resolución

Figura 2.8.1.B.
176

Opciones de ajuste:

• Tamaño de la imagen: El tamaño de la imagen mostrada en el cuadro es definida por


esta opción la cual da el tamaño en porcentajes. Con lo cual al ir aumentando y
reduciendo el tamaño de la ventana en forma manual, el porcentaje cambia.

• Espectros Cromáticos: Con este equipo se pueden trabajar diferentes espectros


cromáticos como son RGB, YCbCr, YUV, HSV y HLS. Que examinaremos más a
fondo a continuación:

 RGB: Es la representación natural y convencional de los colores, como se ve en


cualquier cámara comercial. Esta modalidad en lo que son ciertas aplicaciones
suele tener defectos al ser muy sensible a la luz.

 YCbCr: Es una modalidad que diferencia lo que es la claridad e intensidad en los


colores al representarlos, lo cual los hace ver menos naturales. Pero cuenta con la
ventaja de ser menos sensible a los cambios en la luz.

 YUV: Es una modalidad que trabaja con la Luminancia “Y” (la información en
blanco y negro) y la Crominancia “U” y “V” (información con respecto al color) por
separado.

 HSV: En esta variante se distingue lo que son los colores dependiendo de su


saturación, el tono y su valor gris, si se le compara con el RGB demuestra ser
mucho menos nítida en su imagen.

 HLS: Aquí la variante distingue lo que son los colores dependiendo de su


saturación, el tono y la luminosidad del color.

Cada una de estas modalidades es necesaria para dar mejores resultados


dependiendo de la aplicación del equipo y las condiciones en su entorno.
177

Imágenes de las diferentes modalidades:

Figura 2.8.1.C. Modalidades.

• Resolución: La cámara trabaja con dos resoluciones que son 320x240 y 640x480.
Pero es importante tener en consideración que para las aplicaciones como la
detección de colores se suele recomendar el trabajar con una menor resolución que
tiene menos información cromática, con lo cual es más fácil reconocer superficies de
un solo color.
178

A.2.8.2.- Distancia.

Este bloque representa los sensores infrarrojos (IR), incorporados al Robotino,


separados por 40°, alrededor de su circunferencia, ubicados en la parte inferior del chasis.

Fig. 2.8.2. A Icono Distancia.

Salidas

A1 Indica en V la tensión analógica proveniente del detector. El usuario


deberá encargarse de la definición de la escala y de la conversión en
un valor correspondiente a la distancia. Tensión medida en Voltaje.

Selección del 1 hasta 9


detector

Fig. 2.8.2. B Distribución de Sensores de Distancia en el chasis.


179

A.2.8.3.- Entradas y Salidas Digitales.

Este bloque se encuentras las entradas y salidas digitales, ubicadas en el frente


del puente de mando de Robotino (Ver Fig. 2.8.5. B), para la utilización de sensores y
actuadores externos.

Fig. 2.8.3. A Icono Entrada Digital.

Salidas
A1 Valor 0 ó 1

Selección de la Desde 1 hasta 8


entrada

Fig. 2.8.3. B Icono Salida Digital.

Entradas
Salida digital Pone la salida elegida en 0 en caso de valores <0.5; de lo contrario,
en 1

Selección de Desde 1 hasta 8


Salida
180

A.2.8.4.- Entrada Analógica.

Este bloque se encuentra las entradas analógicas, ubicadas en el frente del puente
de mando de Robotino (Ver Fig. 2.8.5. B), para la utilización de sensores y actuadores
externos.

Fig. 2.8.4. Icono Entrada Analógica.

Salidas.
A1 Valor desde 0 hasta 10. Tensión medida en Voltaje.

Selección de la Desde 1 hasta 8


entrada

A.2.8.5.- Relé.

Este bloque se encuentra las entradas a los 2 relés que tiene al interior, ubicadas
en el frente del puente de mando de Robotino (Ver Fig. 2.8.5. B.), para la utilización de
sensores y actuadores externos.

Fig. 2.8.5. A Icono Relé.

Entradas.

Relé Desconecta el relé seleccionado si el valor es <0.5; de lo contrario, lo


conecta.
181

Distribución de entradas y salidas, en el puente de mando Robotino:

Fig. 2.8.5. B
182

A.2.8.6.- Motor.

Este bloque integra las salidas y entradas asociadas a los motores incorporados a
Robotino.

Fig. 2.8.6. A Icono Motor.

Entradas.
Velocidad Velocidad nominal del motor, expresada en revoluciones por minuto
nominal (r.p.m.). Deberá tenerse en cuenta que entre el motor y la rueda hay un
engranaje con relación de 16:1.
Prioridad Prioridad de la velocidad nominal. Si no está ocupada la entrada, se
selecciona la prioridad 1.

Si diversos bloques funcionales hacen indicaciones sobre la velocidad


nominal del motor, la velocidad nominal definitiva se calcula como valor
promedio de las velocidades nominales consideradas prioritarias. Si el
valor prioritario es 0, se activa la velocidad nominal 0.
Reponer Pone el valor de inicio para el conteo de los incrementos en 0.
posición
Freno Si el valor es 1, se frena el motor. Si el valor es 0, no se frena. Si no
está ocupada la entrada, se activa el valor 0.

Salidas.
Velocidad Velocidad real del motor, expresada en revoluciones por minuto
real (r.p.m.).
Posición Suma de los incrementos provenientes del encoder óptico del motor
real (2.000 por cada revolución del motor). Puede utilizarse para el
posicionamiento real de la rueda motriz.
Intensidad La intensidad consumida por el motor, expresada en mA.
del motor
183

Ventana de diálogo en el software:

Fig. 2.8.6. B

Selección del 1 hasta 3


motor
Kp Parte proporcional del regulador PID antepuesto al motor
Ki Parte integral del regulador PID antepuesto al motor
Kd Parte diferencial del regulador PID antepuesto al motor
Reset con Start Inicialización del valor del los incrementos en 0 cada vez que se
activa el programa

A.2.8.7.- Salida de Potencia.

En este bloque se obtiene un puente H, con una salida de corriente máxima de 5


A, se activa con una entrada de señal PWM y con bit direccional. El valor nominal incide
en la señal PWM. Un valor nominal 0 no genera señal PWM, lo que significa que el puente
en H no entrega corriente. Un valor nominal de 50 regula la relación entre high y low en la
señal PWM en 50%. Un valor nominal 100 no genera señal high constante, lo que
significa que el puente en H entrega la máxima intensidad.

Fig. 2.8.7. Icono Salida de Potencia.

Entradas.
Valor nominal Pone el bit direccional y la señal PWM. Margen desde -100 hasta
100

Salidas.
Corriente La corriente que fluye a través del puente H, expresada en A.
184

A.2.8.8.- Paragolpes.

El bloque “paragolpes” trabaja en función del detector de impacto, en otras


palabras funciona en base al sensor anticolisión que envía a su salida un valor lógico “1”
si colisiona con un obstáculo. En cambio si no encuentra ningún obstáculo tiene un valor
lógico “0” en la salida del bloque.

Figura 2.8.5.A Icono Paragolpes.

Salida.
A= Paragolpes Valor =1 se produjo un impacto; Valor =0 no hay impacto.

Ejemplo:

Figura 2.8.5.B Ejemplo.

Se utiliza para detener los motores de Robotino en caso de tener una colisión a
través de esta configuración de bloques
185

A.2.8.9.- Omniaccionamiento.

Esta función del programa sirve para calcular y definir las velocidades nominales
de los motores (1,2 y 3) en r.p.m (revoluciones por minuto) en función a los sentidos de
dirección (X) e (Y), a través de la variable “velocidad nominal” en mm/s (Milimetros por
segundo) que debe ser definida al crearse un programa y a la velocidad nominal del giro
de las ruedas.

También es posibles calcular la velocidad real de movimiento en los sentidos (X) e


(Y) y la velocidad real de los giros. Esto permite un movimiento a lo largo del eje X como
del eje Y.

Figura 2.8.9.A Icono Omniaccionamiento.

Entradas

Vx_set Velocidad Nominal en sentido X en mm/s.


Vy_set Velocidad Nominal en sentido Y en mm/s.
Omega_set Velocidad de giro en grados/s.
V1 Velocidad real motor 1 en r.p.m.
V2 Velocidad real motor 2 en r.p.m.
V3 Velocidad real motor 3 en r.p.m.

Salidas

V1_set Velocidad nominal motor 1 en r.p.m.


V2_set Velocidad nominal motor 2 en r.p.m.
V3_set Velocidad nominal motor 3 en r.p.m.
Vx Velocidad real en sentido X (Avanzar, retroceder) en mm/s.
Vy Velocidad real en sentido Y (lateralmente en ambos sentidos) en mm/s.
Omega Velocidad real giro (rotación) en grados/s.
186

Figura 2.8.9.B Diagrama entradas y salidas

Ejemplo:

Figura 2.8.9.C Ejemplo.

En este ejemplo se puede apreciar que la constante (100) envía la velocidad en


sentido del eje x para un movimiento uniforme.
187

A.2.8.10.- Gestión de potencia.

Este bloque “Gestión de potencia” se utiliza para controlar la electricidad en


Robotino.

Figura 2.8.10. Icono gestión de potencia.

Salidas.
I Consumo de corriente en Ampere [A].
U Tensión de las celdas de las baterías 1 y 2

A.2.8.11.- Odometría.

Este Bloque trabaja en función de la odometría. Que se entiende como el cálculo


de la posición del robot en función del anterior giro de cada una de sus ruedas, este giro
se mide a través de una exacta medición en relación al tiempo.

Todo este proceso funciona calculando el movimiento del robot en relación a cada
unidad de tiempo y la velocidad de giro de las ruedas, sumando los pequeños recorridos
en cada unidad de tiempo se puede obtener la posición natural con respecto a las
posición inicial. Este método de medición es bastante eficaz a nivel de cortas distancias y
un medio controlado, ya que el trabajo en diversas condiciones de terreno con polvo o una
superficie resbaladiza tiende a mostrar desviaciones. Para compensar estos errores se
trabaja la odometría con otros métodos.

Figura 2.8.11. Icono Odometría.

Entradas.
X Posición X unidad en milímetros.
Y Posición Y unidad en milímetros.
Phi Orientación. Unidad en grados
SET Si valor =1, La posición de X, Y y phi son considerados la posición odométrica
actual.
Si valor =0, La posición odométrica cambio por el movimiento de Robotino.
188

Salidas.
X La posición X actual, calculada mediante odometría. Unidad en milímetros
Y La posición Y actual, calculada mediante odometría. Unidad en milímetros
Phi La orientación actual, calculada mediante odometría. Unidad en grados

A.2.8.12.- Entrada del transmisor giratorio.

Este bloque de función activa la entrada del transmisor giratorio en Robotino, con
esta entrada se mide la señal del transmisor giratorio, considerando todos los flancos
ascendentes como descendentes, para así producir una resolución cuatro veces mayor en
comparación con la resolución normal del transmisor.

Icono 2.8.12. Icono Entrada del transmisor giratorio.

Entrada.
Recuperar posición 1= Recuperar posición en 0; 0= No modificar posición.

Salidas.
Velocidad Velocidad del transmisor giratorio, expresada en impulsos por
segundos.
Posición Integral de todos los impulsos medidos desde la activación del
robot o desde que “Recuperar posición” =1
189

A.2.9.- Navegación.

A.2.9.1.- Indicación de la posición.

La función “Indicación de posición” nos permite observar la posición en un mapa


bidimensional de dos robots. A través del uso de esta función es posible visualizar la
posición real del robot y definir la posición que debe tomar en relación a la interacción con
el usuario.

Figura 2.9.1.A Icono Indicación de la posición.

Entradas.
X Real Coordenada X de la posición real.
Y Real Coordenada Y de la posición real.
phi Real Coordenada phi de la posición real.
Si es “0”, Las entradas “X externa”, “Y externa” y “phi externa”
Activación externa no se activan.
Si es “1”, Las entradas “X externa”, “Y externa” y “phi externa” se
activan para el posicionamiento del segundo robot.
X Externa Coordenada X para el segundo robot
Y Externa Coordenada Y para el segundo robot
phi Externa Coordenada phi para el segundo robot

Salidas.
X Nominal Coordenada X de la posición nominal
Y Nominal Coordenada Y de la posición nominal
phi nominal Coordenada phi de la posición nominal
190

Ventana de diálogo en el software:

Figura 2.9.1.B

En esta ventana de diálogo el primer robot es representado con el color blanco y


muestra su posición espacial real siendo definido por las coordenadas “X Real”, “Y real” y
“phi Real”. Mientras que el segundo robot que es representado por el color azul nos
permite desplazar y girar a través del puntero del ratón al primer robot (blanco), el
segundo robot al realizar su desplazamiento en el software envía su nueva posición a
través de las coordenadas de “X Nominal”, “Y Nominal” y “phi Nominal”.

También es posible desplazar y girar al primer robot usando las entradas de


posición “X Externa”, “Y Externa” y “phi Externa”. Para lo cual es necesario tener la
entrada “Activación Externa” en un estado lógico “1”.
191

A.2.9.2.- Buscador de recorrido.

Esta función “Buscador de recorrido” se utiliza para calcular la velocidad y la


velocidad angular en función a la posición real y una posición nominal, este cálculo es
necesario para el desplazamiento del robot desde la posición real a la posición nominal.

Figura 2.9.2.A - Icono Buscador de recorrido.

Entradas.

X Nominal Coordenada X de la posición nominal


Y Nominal Coordenada Y de la posición nominal
phi Nominal Coordenada phi de la posición nominal
X Real Coordenada X de la posición real
Y Real Coordenada Y de la posición real
phi Real Coordenada phi de la posición real

Salidas.

vx Velocidad X
vy Velocidad Y
Omega Velocidad angular

Ventana de diálogo en el software

Figura 2.9.2.B
192

A.2.10.- Intercambio de Datos.

Son bloques de función que trabajan intercambiando datos en Robotino® View o


con aplicaciones externas. A través de estos bloques es posible trabajar con datos entre
rutinas y con datos de elementos externos al software.

A.2.10.1.- Escritor de Valores.-

A través del bloque “Escritor de valores” se pueden escribirse entre uno y veinte
valores de entrada. Aunque los datos del archivo deben tener la siguiente estructura:

• A1\tB1\tC1\t…T1\n
• A2\tB2\tC2\t…T2\n
• etc.

En esta estructura:

• \n indica el inicio de una nueva línea (ASCII 0x0A).


• \t indica el tabulador (ASCII 0x09).
• A1: Valor puesto en la primera entrada durante la primera unidad de tiempo.
• B1: Valor puesto en la segunda entrada durante la primera unidad de tiempo.
• A2: Valor puesto en la primera entrada durante la segunda unidad de tiempo.

Fig. 2.10.1.A – Icono “Escritor de Valores”

Al iniciarse el programa se crea un nuevo archivo que recibe el nombre que es


indicado en la ventana de diálogo del bloque. Si ya existe el archivo, se cancela su
contenido. Al terminar el programa, se cierra el archivo.

Si se desactiva el bloque funcional mientras el programa está activo, se cierra el


archivo. Y Si se activa el bloque funcional mientras el programa está activo, se abre el
archivo o se crea uno nuevo. Además es posible editar con el programa Documento de
texto (.txt) al archivo que ha sido creado con esa extensión.
193

Entradas
1 Se memoriza en la primera columna (A) del archivo.
2 Se memoriza en la segunda columna (B) del archivo.

20 Se memoriza en la columna 20 (T) del archivo.

Ventana de diálogo en el software

Fig. 2.10.1.B

Dentro de la Ventana de diálogo:

Entradas Modificación de la cantidad de entradas; Mínimo 1; Máximo 20.


Selección
de Se crea y/o abre al iniciar el programa o al activar el bloque funcional.
Archivo Se cierra al terminar el programa o al desactivar el bloque funcional.

Ejemplo:

Fig. 2.10.1.C. – Ejemplo “Escritor de Valores”


194

A.2.10.2.- Lector de Valores.-

El Bloque de función “Lector de Valores” lee entre uno y veinte valores de un archivo
por unidad de tiempo y los entregas a sus salidas. El archivo se lee por líneas. En la
primera unidad de tiempo se lee y evalúa la primera línea, en la segunda unidad de
tiempo se lee la segunda línea y así sucesivamente. Al llegar al final, se mantienen los
últimos valores leídos. El archivo debe tener la siguiente estructura:

• A1xB1xC1x…T1\n
• A2xB2xC2x…T2\n
• etc.

En esta estructura:

• \n: indica el inicio de una nueva línea (ASCII 0x0A)


• X: indica el tabulador (ASCII 0x09), el espacio (ASCII 0x20), la coma (ASCII 0x2C)
o el punto y coma (ASCII 0x3B)
• A: se entrega en la primera salida.
• B: se entrega en la segunda salida, etc.

Si una línea contiene menos valores que salidas, en las salidas sin el correspondiente
dato en el archivo se entrega el valor 0.

Fig. 2.10.2.A- Icono Lector de Valores

Salidas
1 Valores de la primera columna (A) del archivo.
2 Valores de la segunda columna (B) del archivo.

20 Valores de la columna 20 (T) del archivo.
195

Ventana de diálogo del software:

Fig. 2.10.2.B

Dentro de la Ventana de diálogo:

Salidas Cambio de la cantidad de entradas; Mínimo 1; Máximo 20.


Selección
de Se abre al iniciar el programa o al activar el bloque funcional. Se cierra
Archivos al terminar el programa o al desactivar el bloque funcional.

A.2.10.3.- Variables Globales.

Las variables globales permite el intercambio de datos más allá de los límites del
programa. Así, el cálculo obtenido mediante un programa puede utilizarse en otros
programas, Para escribir y leer variables globales se dispone de los bloques funcionales:

Fig. 2.10.3.A – Icono Global In Fig. 2.10.3.B – Icono Global In

Las Variables globales son:

• Global In: Guarda los datos en 1 de las 20 memorias disponibles, enumeradas del
0 al 19.
• Global Out: Lee los datos en 1 de las 20 memorias disponibles, enumeradas del 0
al 19.

Mediante la ventana de diálogo los bloques, A través de “Global In" y “Global Out" es
posible elegir la posición de memoria para guardar o leer. La posición de memoria elegida
se indica en la gráfica del bloque de función.
196

Ventana de diálogo:

Fig. 2.10.3.C – Ventana de Diálogo.

A.2.11.- Mando Secuencial.

En esta sección se encuentran bloques de funciones para crear programas con


mando secuencial, con varios diagramas de funciones preestablecidos por el usuario.
Para utilizar esta funcionalidad es necesario haber cargado previamente, los diagramas
de bloques creados, para el mando secuencial. Estos programas se muestran como
módulos de funciones con una entrada y tres salidas A, B y C.

Para activar estas salidas, el diagrama de bloques de funciones debe contener uno de los
tres módulos de salidas A, B o C.

A.2.11.1.- Salida A, B o C.

Este bloque define la salida A, B o C para un diagrama de bloques de funciones.

Si el valor puesto en la entrada de este módulo es >=0.5, finaliza el diagrama de bloque


de funciones al que está conectado el módulo. Si la salida A, B o C del mando secuencial
está conectada a otro diagrama de bloque de funciones, se inicia dicho diagrama.

Observación: estos bloques de funciones únicamente pueden incluirse en diagramas de


bloques de funciones y no en un mando secuencial.

Fig. 2.11.1. Icono Salida A, B o C.

Entradas.
X Finaliza el estado, si x >= 0.5
197

A.2.11.2.- Start.

Este bloque marca el punto de inicio del mando secuencial, por lo cual se inician
los programar creados con diagramas de bloques de funciones. que están conectados al
bloque START.

Fig. 2.11.2. A Icono Start.

Salidas.
S Inicio de mando secuencial.

A.2.11.3.- Sincronización Y.

Este bloque sincroniza los diagramas de bloques de funciones dentro del mando
secuencial, iniciando los diagramas que están a su salida, solo si, los diagramas
conectados a su entrada han terminado.

Fig. 2.11.3. Icono Sincronización Y.

A.2.11.4.- Sincronización O.

Este bloque sincroniza los diagramas de bloques de funciones dentro del mando
secuencial, terminando todos los diagramas conectados a su entrada, solo si uno de esos
diagramas de bloques, a terminado. Seguido de aquello, haber terminado todas las
entradas, a su salida activa, los diagramas conectados a ella.

Fig. 2.11.4. Icono Sincronización O.

Das könnte Ihnen auch gefallen