Entradas Tipo Predet Ermin Ado Descripción: © Festo Didactic GMBH & Co. KG 91
Entradas Tipo Predet Ermin Ado Descripción: © Festo Didactic GMBH & Co. KG 91
Salidas
Salida imag La imagen de salida es aumentada con la información ROI. El posterior
en procesamiento de la imagen se realiza sólo en la región o zona señalada
como ROI.
[Link] Diálogo
La región de interés puede determinarse con el ratón. Haga clic en un punto y arrastre para delimitar una
región.
[Link] Ejemplo
El lector de imagen genera una secuencia de test de imágenes. El detector de línea inferior utiliza toda la
imagen, mientras que el detector de línea superior busca sólo en la ROI.
Salidas
Ancho int Ancho de la imagen en píxeles
Alto int Alto de la imagen en píxeles
[Link] Diálogo
[Link] Ejemplo
La imagen de la secuencia de test generada por el lector de imagen tiene una resolución de 320 x 240
píxeles.
Salidas
Salida imag Imagen convertida
en
[Link] Diálogo
En el diálogo de la conversión del espacio de color puede seleccionarse el espacio de color de destino.
5.6 Generadores
Esta categoría contiene diversos bloques de función para generar señales.
Salidas
Salida float La señal generada.
[Link] Diálogo
Además, el generador de forma de onda arbitraria tiene los siguientes parámetros y botones:
[Link] Ejemplo
El Motor 1 del Robotino gira controlado por una onda de forma senoidal.
5.6.2 Constante
Generación de un valor constante El tipo de constante, así como su visualización gráfica, cambian según
el tipo de entrada a la que se halla conectada su salida.
La introducción del valor puede realizarse directamente dentro del programa. No se abre un cuadro de
diálogo. El valor puede editarse directamente .
Salidas
Valor float, 0 / El valor visualizado.
int, bool false
5.6.3 Temporizador
Mide el tiempo en milisegundos desde el inicio del programa. Si la entrada de Reset es verdadera (true),
el conteo de tiempo se pone a cero.
Salidas
Tiempo float Tiempo en milisegundos desde el inicio del programa o desde que Reset
cambió de verdadero (true) a falso (false).
[Link] Ejemplo
Salidas
Valor float 0 Número aleatorio entre Mínimo y Máximo.
5.7 Filtro
Esta categoría contiene bloques de función para filtrar y suavizar señales.
Salidas
Salida float Valor medio
[Link] Diálogo
Profundidad es el número pasos de tiempo previos que se consideran para calcular el valor medio.
5.8 Navegación
Esta categoría comprende los bloques de función utilizados para la navegación.
El controlador de posición genera los valores de consigna de velocidad y velocidad angular para llevar al
Robotino desde su posición actual a la posición fijada.
Salidas
vx float mm/s ajustar velocidad en dirección x en el sistema local de coordenadas del
Robotino
vy float mm/s ajustar velocidad en dirección y en el sistema local de coordenadas del
Robotino
omega float gra/s velocidad angular ajustada.
Posición bool Es verdadero (true) si vx=vy=0, es decir, se ha alcanzado la posición
alcanzada ajustada.
Orientación bool Es verdadero (true) si omega=0, es decir, se ha alcanzado la orientación
alcanzada ajustada.
Pose bool Es verdadero (true) si se ha alcanzado la posición y la orientación (la
alcanzada pose).
[Link] Diálogo
La parte superior refleja la asignación de la distancia a la posición de destino d (en mm) respecto a la
velocidad de accionamiento v (en mm/s).
La parte media refleja la asignación de la distancia angular a la orientación de destino d (en 1°)
respecto a la velocidad angular omega (en 1°/s). La distancia angular está en el margen [0°,
180°]. Las rotaciones en sentido horario y antihorario son tratadas de forma similar. La rotación se
realizará en sentido horario o antihorario, de forma que la distancia a recorrer sea la mínima.
[Link] Ejemplo
[Link] Movimientos
Son posibles cuatro clases de movimientos diferentes. Dos de ellos son aplicables para vehículos
holónomos y no-holónomos cada uno de ellos. Como sea que Robotino tiene un accionamiento holónomo
los tres grados de libertad (x, y, giro) pueden ser alterados independientemente Robotino puede
realizar las cuatro clases de movimiento. Para los movimientos no-holónomos, la salida vy es 0.
En el campo de entrada se especifica la pose. Las coordenadas se separan con espacios en blanco.
Ejemplo:
10.5 20 120
Salidas
Pose pose Pose La constante del valor de la pose. El valor de la orientación se muestra en
inválid radianes en la salida.
a
Salidas
Pose pose (0, 0, La pose (x, y, phi) compuesta a partir de sus valores individuales. El valor
0) de la orientación se muestra en radianes en la salida.
[Link] Diálogo
Pose válida Especifica si la pose es válida. Las poses inválidas serán ignoradas en las rutas.
Orientación Especifica si la orientación es válida y sus unidades (grados o radianes).
Salidas
x float 0 El componente x de la pose.
y float 0 El componente y de la pose.
phi float Grad 0 La orientación de la pose en grados. La unidad puede pasarse a
os radianes en el Diálogo 105 .
Pose válida bool false Especifica si la pose es válida.
Orientación bool false verdadero (true) si la orientación guardada en la pose es válida.
válida
[Link] Diálogo
Salidas
Ruta ruta ruta La ruta compuesta a partir de las sub-rutas Ruta 1 + ... + Ruta 20
vacía
[Link] Diálogo
Corta una sub-ruta de una ruta. Una ruta consta de una lista de poses.
Índice Pose
1 p1
2 p2
...
N pN
Las entradas Inicio y Longitud especifican la pose inicial y la longitud de la ruta descompuesta. Inicio
debe estar en [1;N]. Si Inicio < 1, se utiliza el valor 1 internamente. Si Inicio > la longitud de la ruta, el
resultado será una ruta vacía. Longitud debe estar en [0;N-Inicio+1]. Si Longitud <= 0 el resultado será
una ruta vacía.. Si Longitud > N-Inicio+1, el resultado será una subruta empezando en el índice Inicio.
Ejemplos:
Ruta = p1, p2, p3, p4, p5, p6, p7, p8, p9, p10
Inicio = 3
Longitud = 5
Subruta = p3, p4, p5, p6, p7
Ruta = p1, p2, p3, p4, p5, p6, p7, p8, p9, p10
Inicio = 0
Longitud = 1
Subruta = p1
Ruta = p1, p2, p3, p4, p5, p6, p7, p8, p9, p10
Inicio = 11
Longitud = 1
Subruta = ruta vacía
Ruta = p1, p2, p3, p4, p5, p6, p7, p8, p9, p10
Inicio = 1
Longitud = 0
Subruta = ruta vacía
Ruta = p1, p2, p3, p4, p5, p6, p7, p8, p9, p10
Inicio = 2
Longitud = 20
Subruta = p2, p3, p4, p5, p6, p7, p8, p9, p10
Longitud int 1 La ruta descompuesta consiste en Longitud poses empezando en la pose del
índice Inicio de la ruta a descomponer.
Salidas
Subruta ruta ruta La ruta resultante empieza con la pose del índice Inicio y consta de Longitud
vacía poses.
A partir de la ruta y de la pose actual, se calculan la velocidad y la velocidad angular, de forma que
Robotino sea conducido de forma rectilínea a lo largo de las poses individuales de la ruta.
Salidas
Velocidad float mm/ Velocidad de avance.
s
Velocidad float gra/s Velocidad angular
angular
Posición bool Verdadero (true) si la ruta está vacía.
alcanzada De contrario, true cuando el punto virtual se halla localizado en el último
segmento de la ruta y v(d) = 0.
Siguiente pose El siguiente punto objetivo en el recorrido.
punto en el
recorrido
Arriba a la izquierda
Correlación entre velocidad angular y error angular dφ.
Arriba a la derecha
Correlación entre velocidad de avance y error angular dφ.
Abajo a la izquierda
Correlación entre velocidad de avance y distancia al siguiente punto del recorrido.
Abajo a la derecha
Correlación entre velocidad de avance y el ángulo al siguiente segmento de la ruta.
Arriba a la izquierda
Correlación entre la distancia del robot hasta el punto virtual en el recorrido y el ángulo al siguiente
segmento de la ruta.
Arriba a la derecha
Correlación entre la distancia del robot hasta el punto virtual en el recorrido y la distancia al siguiente
punto del recorrido.
Abajo
Correlación entre velocidad de avance y distancia al final de la ruta.
Arriba
Adaptación del factor de acoplamiento entre la velocidad calculada debida a la configuración de los
diálogos 1 y 2, y la velocidad real.
Abajo
Adaptación del factor de acoplamiento entre la velocidad angular calculada debida a la configuración de
los diálogos 1 y 2, y la velocidad angular real.
[Link] Estrategia
El bloque de función controlador de ruta crea una ruta que primero conecta los puntos a recorrer con una
línea recta.
El robot es conducido con un punto de recorrido virtual (indicado con un punto rojo en la figura superior).
Dada la posición actual del robot, el punto de recorrido virtual se colocará en la ruta de forma que la
distancia entre el robot y el punto virtual del recorrido sea dp (distancia al punto virtual). El punto virtual
del recorrido sólo puede moverse a lo largo de la ruta hacia el final, es decir, si el robot se mueve
alejándose del punto virtual del recorrido, permanece inalterable. Debido a la regulación en el punto
virtual, la ruta es alisada (suavizada). Cuando mayor sea dp, mayor será el alisamiento.
Parametrización de la velocidad
La velocidad también se especifica dependiendo de dφ y se denomina v(dφ). Así que es posible ralentizar
el movimiento si el robot no está correctamente orientado.
Para poder reducir la velocidad si la ruta tiene una curva, la velocidad también viene especificada como
una función v(dn) de la distancia entre el punto virtual y el siguiente punto virtual del recorrido. Una típica
curva de v(dn) es
Es decir, la velocidad disminuirá si el robot está cerca del punto del recorrido.
Pero queremos hacer andar más despacio al robot según el ángulo α n. α n es el ángulo entre el segmento
actual y el siguiente en la ruta. Si α n = 180° (es decir, la ruta discurre de forma recta a lo largo del
punto en el recorrido) la velocidad no va a reducirse. Si α n se acerca a 0° (una curva muy
pronunciada) el robot debe reducir su velocidad drásticamente. Por lo tanto, la función v(α n) es necesaria.
Una típica curva de v(α n) se parece a esto
Estos tres perfiles de velocidad (dφ), v(dn) y v(α) se utilizan para calcular la velocidad total V(dφ,dn,α):
El subíndice t significa el valor en el tiempo t. t-1 significa el valor un paso de tiempo antes de t.
Al reiniciar vCC se incializa a 0 y aumenta a 1 dentro del tiempo especificado por el acoplamiento de
velocidad.
Al reiniciar omegaCC se incializa a 0 y aumenta a 1 dentro del tiempo especificado por el acoplamiento de
velocidad angular.
Si el punto virtual salta a un nuevo segmento de la ruta, vCC y omegaCC son restablecidos a 0.
[Link] Ejemplo
El módulo de Evasión de obstáculos calcula un recorrido para hacer un rodeo que circunde un obstáculo
circular.
Salidas
Rodeo ruta ruta Rodeo alrededor del obstáculo.
vacía
[Link] Diálogo
[Link] Diálogo
[Link] Ejemplo
5.9.2 Corredera
[Link] Diálogo
El lector de imagen lee imágenes JPEG de una secuencia de fotografías tomadas del sistema de archivos.
Puede especificare la ruta y el prefijo en el diálogo 123 .
Salidas
Salida imag Imagen JPEG del archivo "<Directorio>/<Prefijo><Número>.jpg" o bien
en "<Directorio>/<Prefijo>_<Número>.jpg".
Si el archivo no existe, se antepondrán ceros al número hasta una longitud
total de 4, hasta que se encuentre el archivo de imagen.
[Link] Diálogo
[Link] Ejemplo
El grabador de imágenes escribe una secuencia de imágenes JPEG en el sistema de archivos. Puede
especificare la ruta y el prefijo en el diálogo 125 . El número de la imagen es incrementado en 1 a cada
paso, empezando con 0.
Cada imagen (foto) es guardada como "<Directorio>/<Prefijo>_<Número>.jpg". El número tiene por lo
menos 4 dígitos, incluyendo los ceros a la izquierda.
[Link] Diálogo
[Link] Ejemplo
5.11 Variables
Las variables globales son de un tipo especial. Para todas las variables globales hay bloques de función
para leer y escribir, disponibles en todos los subprogramas.. Estos bloques de función siempre muestran
el nombre de la variable.
Es posible añadir, renombrar y quitar variables globales en el Administrador de variables (vista del
programa principal) 15 . Además, se les puede asignar un valor inicial.
También es posible añadir, quitar o renombrar variables globales en la librería de bloques de función
haciendo clic con el botón derecho en el dispositivo "Variables" y eligiendo "Añadir", o haciendo clic con
el botón derecho en el lector o el escritor de la variable y seleccionando "Quitar" o "Renombrar".
6 Dispositivos
Los Dispositivos establecen la conexión entre Robotino View y el mundo exterior. El dispositivo
"Robotino" puede comunicarse con un Robotino real o con uno de simulado. El dispositivo "Joystick"
puede leer las posiciones de los ejes de un joystick conectado al ordenador.
Bajo la librería de bloques de función, pueden añadirse dispositivos utilizando el botón "Añadir". El
dispositivo elegido aparecerá debajo del dispositivo "Robotino" en la librería de bloques de función.
A los nuevos dispositivos se les asigna un nombre único. Este nombre puede cambiarse utilizando el
botón "Renombrar...", si previamente se ha seleccionado el dispositivo en la librería de bloques de
función.
El botón "Quitar" se utiliza para quitar dispositivos del proyecto actual. Esta función sólo está disponible
si en el proyecto no se utiliza el bloque de función del dispositivo.
6.3 Robotino
El dispositivo Robotino proporciona acceso a los sensores y actuadores del Robotino®.
6.3.2 Diálogo
El diálogo del dispositivo Robotino aparecerá tras un doble clic en el dispositivo correspondiente.
Esta carpeta contiene bloques de función para controlar el sistema de accionamiento del Robotino.
[Link].1 Motor
Salidas
Velocidad float rpm La velocidad actual del motor.
actual
Posición int El número de pulsos contados desde que se ha aplicado tensión al
actual Robotino o desde que "Restablecer posición" ha sido verdadero (true) y
luego falso (false). Los pulsos son generados por el encoder del motor,
que genera 2000 pulsos por vuelta.
Intensidad float A La intensidad (corriente) medida en el puente H del motor.
[Link].1 Diálogo
Parámetro Descripción
Kp
Ki = 1/Tn
Kd
A partir de los valores establecidos en el diálogo, los parámetros de regulación se calculan de la siguiente
manera:
Kp= kp / 2
Ki= ki / 1024
Kd= kd / 2
[Link].2 Omniaccionamiento
Calcula los valores de consigna de la velocidad de los motores 1, 2 y 3, según las velocidades de
consigna vx, vy y omega.
Salidas
m1 float rpm Valor de consigna de velocidad motor 1
m2 float rpm Valor de consigna de velocidad motor 2
m3 float rpm Valor de consigna de velocidad motor 2
El bloque de función "Onmiaccionamiento (inverso)", calcula vx, vy y omega a partir de las velocidades
de rotación de los motores.
La figura muestra el sistema de coordenadas local de Robotino. Una velocidad de rotación positiva
omega, genera una rotación en sentido antihorario mirando el Robotino desde arriba.
Aquí puede encontrar bloques de función relacionados con sensores para detectar obstáculos.
[Link].1 Paragolpes
El paragolpes tiene integrado un sensor táctil. Al tocarlo, el sensor emite una señal de salida.
Salidas
Valor bool Verdadero (true) si hay contacto.
Salidas
Valor float Volt Lectura analógica de un sensor de distancia en V. El escalado y la
conversión del valor debe ser realizado por el usuario.
Orientación float Grado La orientación del sensor en el sistema de coordenadas local de
s Robotino (ver imagen siguiente). La orientación se calcula a partir del
número del sensor como sigue:
Orientación = 40° x (Número -1)
[Link].2 Ejemplo
La hoja de datos del sensor de distancia (es un Sharp GP2D120) muestra la correlación entre la distancia
a un objeto en cm y la señal de salida analógica del sensor en Voltios.