Beruflich Dokumente
Kultur Dokumente
PROFESOR PATROCINANTE:
Sr. Pedro Rey Clericus.
Ingeniero Electrónico.
Licenciado en Ciencias de la Ingeniería.
Diplomado en Ciencias de la Ingeniería.
Profesor Patrocinante:
_____________________________
Sr. Pedro Rey Clericus
Profesores Informantes:
_____________________________
Sr. Daniel Lühr S.
_____________________________
Sr. Franklin Castro R.
Agradecimientos III
“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”.
“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”.
Dedicado a mi Padre.
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
Bibliografía 125
Anexos 127
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
Objetivos
Objetivos generales:
1
2
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.
1.2.1.2.- Baterías.
1. - Motor DC.
2. - Encoder incremental.
3. - Rodillos omnidireccionales.
4. - Reductor con una relación de reducción de 16:1.
5. - Correa dentada.
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.
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
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)
Esta unidad para su configuración y conectividad trae una serie de interfaces que son:
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.
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)
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.
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.
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.
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
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.
El Robotino trae una serie de programas de demostración con rutinas como formar
un círculo, seguir una línea, etc
Aquí se indica la IP actual con la que trabaja Robotino, esta puede ser cambiada
usando las teclas direccionales.
1.4.- Conectividad
Con un acceso frontal desde el puente de mando ubicado en la parte frontal lado
izquierdo (Fig.1.4.1)
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
Para una conexión correcta, es indispensable realizar los siguientes ajustes en la red:
.C:\›ping 172.26.1.1
Cmd ipconfig
C:\›ipconfig
........................................................ card
DHCP habilitado..............................: Sí
Autoconfiguración habilitada..........: Sí
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.
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).
22
23
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.
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
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.
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”.
1.- Primero se trabaja en función a un programa con constantes por bloques (Ver Fig.
2.2.1.A).
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.
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
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).
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
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.
5.- A través de los anteriores pasos y a las rutinas de movimiento se llegara a esta
secuencia (Ver Fig. 2.3.E):
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
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.
Y= MX + B
Ec. 2.1 – Ecuación de la recta.
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
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
5 7,57 2,13
5 16,1241 21,12
7,57 21,12
Ec. 2.3 – Ecuación de la curva.
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).
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.
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:
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).
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).
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
2.7.- Ejemplos.
• 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.
• 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.
• 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.
• 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.
• La secuencia (Ver Fig. 2.7.E): con estas rutinas se crea la secuencia “Cruz”.
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.
46
47
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.
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.
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.
A) Primer movimiento:
B) Segundo movimiento:
A) Tercer movimiento:
metros y en el eje –Y es de 148 (cm) de 1.5 metros. Demostrando ser los mejores
valores de posición.
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.
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).
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.
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.
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.
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).
2000 1500
1 100
Ecuación 3.2.E.
1 133, 3 [mm/s]
Ecuación 3.2.F.
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.
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.
0,023
Ecuación 3.3.1.A.
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.
S= W x sin (60°)
Ecuación 3.3.2.A. – Tramo de recorrido por las ruedas (S).
(S)
Ejemplo:
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)
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.
.Los problemas más básicos de todos los tipos de control de movimiento son:
69
70
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
4.1.2.- Construcción.
.
Fig. 4.1.2.A – Estructura interna.
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.
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
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.
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.
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.
4.2.3.- Construcción.
4.2.4.- Ejemplo.
a) Detección de objetos y seguimiento.
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.
4.3.3.- Ejemplo.
86
87
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.
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.
3.- Cuando se desee seleccionar y se eligió la forma, se debe arrastrar el mouse sobre el
color.
5.- Se pueden agregar uno o más segmentos siguiendo nuevamente los pasos anteriores.
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).
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).
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.
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.
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.
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
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.).
En la modalidad RGB:
En la modalidad YCbCr:
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).
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.
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.
Esta rutina se puede simplificar incluyendo las constantes dentro de los bloques de
función para su entendimiento y uso.
102
103
Capítulo VI – Aplicaciones.
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:
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.
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.
El juego se inició
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:
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
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.
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.
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.
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.
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
Para ello se diseño el siguiente escenario basado en una sala con 3 estantes.
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.
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
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.
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
Bibliografía
[1] www.festo.com
Página web oficial empresa FESTO S.A, accesado el 15.4.2010.
[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.
[8] http://es.wikipedia.org/wiki/Corriente_de_Foucault
Ley de Foucault, Wiki pedía, León Foucault, 1851, accesado el 20.6.2010.
[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 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.
127
Anexo I
“Datos Técnicos”
128
129
1.1.- Robotino.
1.3.- Webcam.
Modulo de la Cámara:
134
135
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
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.
Entradas.
Entrada Entrada del contador
Reset Resetea el contador si el valor es <=0.
Salida.
Salida Valor del contador
Fig. 2.1.1.B
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.
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.
Fig. 2.1.3.B
A.2.1.4.- Multiplexor.
Este bloque “Multiplexor” tiene la función de crear un enlace entre una salida y una
entrada seleccionable.
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
Fig. 2.1.4.B
A.2.1.5.- 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.
Fig. 2.1.5.B
Selección de tipo Se puede cambiar a una compuerta AND, AND FL, NAND, NAND
FL
140
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.
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.2.1.7.- 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
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.
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.2.1.9.- 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.
Fig. 2.1.9.B
A.2.1.10.- 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.
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.
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.
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:
A.2.2.- Matemáticas.
A.2.2.1.- 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.
Fig. 2.2.1. B
A.2.2.2.- 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.
Fig. 2.2.2 B
A.2.2.3.- 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
Fig. 2.2.3 B
A.2.2.4.- 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.
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 )
Fig. 2.2.5. B
A.2.2.6.- Mínimo.
Salida.
A1 Señal de salida = mín. ( E1, E2, …, En )
Fig. 2.2.6. B
A.2.2.7.- 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
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.
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
Salidas.
A1 Señal de salida = 1 , si E1 >= E2, de lo contrario = 0
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.
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
Salida.
A1 Señal de salida = 1, si E1 <= E2, de lo contrario = 0
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.
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
Salida.
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.
Entrada.
E1 Señal de entrada 1
Salida.
A1 Señal de salida1
Fig.2.2.11. B
A.2.2.12.- ABS.
Entrada.
A Señal de entrada 1
Salida.
B b = abs( a )
155
Salida.
A1 Vector de salida en coordenadas cartesianas
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
Entradas.
R Longitud
phi Orientación expresada en grados
Salida.
A1 Vector = r * (cos phi, sin phi)
Entrada.
Vector Vector
Salidas.
X Proyección del vector sobre el eje X
Y Proyección del vector sobre el eje Y
157
Entrada.
Vector Vector
Salidas.
R Longitud
phi Orientación expresada en grados
Entradas.
E1 Vector 1
E2 Vector 2
En Vector n
Salida.
A1 Vector = E1+E2+…+En
Fig. 2.3.6. A
158
Entradas.
E1 Vector 1
E2 Vector 2
En Vector n
Salida.
A1 Vector = E1-E2-…-En
Fig. 2.3.7. A
Entradas.
E1 Vector
E2 Valor (escalar)
Salida.
A1 Vector = E2 * E1
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°.
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.
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.
Entradas.
A Vector a
B Vector b
Salida.
a*b a1*b1+a2*b2
161
A.2.4.- Indicación.
A.2.4.1.- Osciloscopio.
Entradas.
E1 Valor de entrada 1
E2 Valor de entrada 2
E3 Valor de entrada 3
Fig. 2.4.1. B
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
Entradas.
E1 Valor de entrada 1
E2 Valor de entrada 2
En Valor de entrada n
Fig. 2.4.2. B
A.2.5.1.- Segmentador.
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.
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.
5.- Se pueden agregar uno o más segmentos siguiendo nuevamente los pasos anteriores.
165
Figura 2.5.1.B
Imagen segmentada:
Figura 2.5.1.C
166
El extractor recibe la imagen con los segmentos ya seleccionados, por lo cual con
este modulo seleccionamos y ordenamos los segmentos a identificar.
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.
Figura 2.5.2.B
167
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
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.
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
Figura 2.5.3.B
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
A.2.6.- Generadores.
Salida.
Fig. 2.6.1. B
171
Fig. 2.6.2. B
172
Fig. 2.6.3. B
A.2.6.4.- Constante.
Salida.
Salida Valor constante
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.
Entrada:
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.
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,
Fig. 2.7.1. B
A.2.8.1.- Webcam.
Figura 2.8.1.B.
176
Opciones de ajuste:
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.
• 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.
Salidas
Salidas
A1 Valor 0 ó 1
Entradas
Salida digital Pone la salida elegida en 0 en caso de valores <0.5; de lo contrario,
en 1
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.
Salidas.
A1 Valor desde 0 hasta 10. Tensión medida en Voltaje.
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.
Entradas.
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.
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.
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
Fig. 2.8.6. B
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.
Salida.
A= Paragolpes Valor =1 se produjo un impacto; Valor =0 no hay impacto.
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.
Entradas
Salidas
Ejemplo:
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.
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.
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
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.
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.
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
Figura 2.9.1.B
Entradas.
Salidas.
vx Velocidad X
vy Velocidad Y
Omega Velocidad angular
Figura 2.9.2.B
192
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:
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.
Fig. 2.10.1.B
Ejemplo:
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:
Si una línea contiene menos valores que salidas, en las salidas sin el correspondiente
dato en el archivo se entrega el valor 0.
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
Fig. 2.10.2.B
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:
• 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:
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.
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.
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.
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.