Prácticas con RobUALab Programación de un brazo robot I

Documentos relacionados
Interfaz: el entorno RobUAlab.Ejs

REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C)

Manual de Usuario RoboticSAD. Universidad Pedagógica Nacional Licenciatura en Electrónica. Elaborado por: Yuli Marcela Marín Peña

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Para crear un arreglo de cualquier tipo de elementos la sintaxis es:

Java Avanzado Facultad de Ingeniería. Escuela de computación.

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

INTRODUCCIÓN A LA MECÁNICA DEL ROBOT. Curso de Extensión. Tema 2. Laboratorio de Robótica Aplicada (LABRA) 1

Estructuras de control selectivas

INTRODUCCIÓN A RAPID Programación con el IRB-140

nuestro robot se realizan por medio del movimiento de las articulaciones, podemos plantear

SimuRob Simulador del Robot IRB-1400

Funciones básicas del depurador

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Examen de Programación II (Ingeniería Informática)

Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota:

NETBEANS JAVA PROGRAMACIÓN ORIENTADA A OBJETOS

IMPORTAR Y USAR CLASES DEL API DE JAVA. EJEMPLO CLASE MATH Y MÉTODO POW. CONSTRUCTORES PRIVADOS. (CU00647B)

AUTOMATIZACIÓN INDUSTRIAL

Introducción a la Programación en C Funciones

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

SOFTWARE DE DESARROLLO WinIDE

PROGRAMACIÓN DE FRESADORAS DE CNC.

Práctica de Arquitectura de Computadores Sistemas de Entrada/Salida: Entrada/Salida Programada Curso 2016/2017

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

Examen de Prácticas de Programación Ingeniería Informática

Movimientos del brazo

KARELEANDO Jugando a programar Por: Fernando Guzmán

Introducción a Protégé

Guía del Entorno de Desarrollo de Java. Eclipse

PROGRAMA JAVA SE (Standard Edition) MODALIDAD ONLINE

Herramientas interactivas para la enseñanza de robótica

Principios de Computadoras II

Programación Orientada a Objetos en C++

Examen Teórico Convocatoria de Junio de 2012

Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL

Tipos Recursivos de Datos

Tema 2. El lenguaje JAVA

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

PROGRAMACIÓN EN JAVA

Curso de Java Introducción a la Programación II

INGRESAR DATOS CON UN CONTROL VISUAL EN JAVA. CLASE JTEXTFIELD Y MÉTODO GETTEXT. EJEMPLOS (CU00928C)

INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C)

Fusión de la planificación y del generador de movimientos

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON

Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++

En Java, un arreglo es un grupo de variables (llamados elementos o componentes) que contienen valores, todos del mismo tipo.

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Formato para prácticas de laboratorio

SISTEMAS ROBOTIZADOS Asignatura optativa

I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein --Javier Navarro

Introducción a Java. Dr. (c) Noé Alejandro Castro Sánchez

Programación de autómatas

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Control Cinemático. Funciones de control cinemático Tipos de trayectorias Interpolación de trayectorias. Robotica Industrial- Control cinemático 2

Práctica 1. Entorno de Trabajo e Introducción a Java. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos. Versión 1.0.

TSTC. Dpt. Teoría de la Señal, Telemática y Comunicaciones Tema 1 INTRODUCCIÓN A LA ROBÓTICA

INGENIERÍA PROFESIONAL EN INOCUIDAD ALIMENTARIA EN COMPETENCIAS PROFESIONALES ASIGNATURA DE ROBÓTICA

Manual de Desarrollador RoboticSAD. Universidad Pedagógica Nacional Licenciatura en Electrónica. Elaborado por: Yuli Marcela Marín Peña

Cuáles son los lenguajes que pueden utilizarse para programar Karel?

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

JavaScript: Introducción

Grado en Ingeniería Informática. Estructura de Datos y Algoritmos, Grupo 84M, 2014/ de Marzo de

Universidad Nacional del Santa FACULTAD DE INGENIERIA E.A.P. Ingeniería de Sistemas e Informática NETBEANS 7.0 MI PRIMER PROYECTO

FACULTAD DE INGENIERÍA

Supervisor v4.6. Apéndice 1. Herramientas automatizadas de gestión remota

Definición de clase: Una clase es un prototipo que define las variables y los métodos de todos los objetos con características comunes.

Definición de clase: Una clase es un prototipo que define las variables y los métodos de todos los objetos con características comunes.

Programación 1 Grado de ingeniería Robótica

Manual de usuario de Kiva

Colegio Agustiniano Ciudad Salitre Área de Tecnología e Informática Guía de Apoyo 2017 Bimestre: III Grado: Cuarto Docente: Jorge Torres

Simuladores incluidos en el compilador MSWLogo versión 6.5a

MÓDULO de MANTENIMIENTO de VEHÍCULOS MANUAL

Tema 6: Memoria dinámica

Seleccione en el escritorio el programa Sucosoft S40 y darle doble click.

SIMULACIÓN DE UNA CALCULADORA DE MATEMÁTICA

Objetivos y Temario CURSO JAVA 7

EJERCICIO GUIADO. JAVA: DISEÑO DE FORMULARIOS DESDE CÓDIGO

Control y programación de robots

Desarrollar un applet/aplicación para la simulación del llenado de un depósito

Una Interfaz Grafo-Matriz

Apunte JAVA + SVN. Emi Höss

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Unidad Didáctica 1. Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos

MICROSOFT EXCEL 2007 NIVEL AVANZADO. Contenido

INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C)

Examen Junio- Grupo B Lunes 17 de Junio - Programación en C++ Pág. 1

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.

PROGRAMACIÓN GENÉRICA

Tema 3. Magnitudes escalares y vectoriales

7.3. Estructura de un programa

PRÁCTICAS DE ROBÓTICA INDUSTRIAL [ABB 140] Práctica 2: Integración del IRB 140 en un sistema flexible de fabricación

Java Avanzado Facultad de Ingeniería. Escuela de computación.

INTELIGECIA EN REDES DE COMUNICACIONES 5º ING TELECOMUNICACIÓN TRABAJO FINAL DE LA ASIGNATURA EL DOMINÓ AUTORES

Laboratorio de Diseño de Robots Móviles Practica No. 2 Sistema mínimo del microcontrolador PIC16F877

INGENIERÍA DEL SOFTWARE II Práctica 1. Univ. Cantabria Fac. de Ciencias Carlos Blanco, Juan Hernández

3.1. Resumen de la arquitectura propuesta

Transcripción:

Prácticas con RobUALab Programación de un brazo robot I Carlos A. Jara Bravo (carlos.jara@ua.es) Santiago T. Puente Méndez (santiago.puente@ua.es) Jorge Pomares Baeza (jpomares@ua.es) Grupo de Innovación Educativa en Automática 2009 GITE IEA 1

Protocolo de tareas: programación de un brazo robot I A continuación se enumeran las distintas tareas que constituyen la práctica sobre programación de un brazo robot industrial: Tareas a realizar Tareas de introducción a la simulación. Se realizarán las tareas A a G del punto 4 del guión de la práctica. Tareas de simulación. Se realizarán las tareas H e I del punto 4 del guión de la práctica. Tareas en modo remoto. Se realizarán las tareas J y K del punto 4 del guión de la práctica. 2

Manual de programación 1. Introducción RobUALab.Ejs posee una herramienta para la programación del entorno virtual utilizando lenguaje Java. Mediante ella, podemos diseñar y ejecutar distintas tareas a partir de una serie de líneas de código. El entorno de programación se puede ejecutar pulsando el control Programación situado en la parte superior la ventana principal del applet. Figura 1. Entorno de programación de RobUALab.ejs El entorno se basa en un sencillo editor de texto donde se encuentra el programa principal de la aplicación, denominado main(). Dentro de este método, el usuario debe introducir las líneas de código Java de la tarea que desea ejecutar en el entorno virtual. Posteriormente, para la compilación y ejecución del programa, el entorno de programación posee los controles Compilar y Ejecutar. En el caso de existir un error en la tarea programada, el entorno de programación posee una salida de texto donde aparecerá el error junto con la línea/s del programa que lo han producido para que el usuario las pueda corregir. 2. El lenguaje de programación Java El lenguaje utilizado por la consola de programación del entorno RobUALab es el lenguaje Java. Por lo tanto, el usuario podrá utilizar cualquier método o tipo de variable de este lenguaje. Por ejemplo, se podrá declarar e inicializar cualquier tipo de variable primitiva (int, float, double, boolean) o arrays dentro de la función main(). 3

Las directivas de importación de clases y paquetes import no se pueden utilizar en la programación. La primera línea del programa debe ser void main (){ y la última }//End siendo válido todo el código Java existente entre ambas líneas. Una característica que también se debe tener en cuenta es que en el cuadro de programación deben usarse caracteres anglosajones ya que la utilización de otro tipo de caracteres puede dar lugar a errores en la compilación del código. Figura 2. Uso del lenguaje Java dentro del entorno RobUALab.ejs 3. Métodos y clases para el movimiento del robot El entorno de programación posee una serie de clases y métodos desarrollados para la programación del movimiento robot. Las dos clases principales existentes son posj y posc, que definen un objeto posición en el espacio articular o cartesiano, respectivamente. Ambos poseen los mismos constructores y métodos, que a continuación se exponen (se explicará mediante la clase posj): Constructores: public posj() Crea un objeto posj para un robot de 5 grados de libertad. public posj(int dimp) Crea un objeto posj para un robot de dimp grados de libertad. public posj(double[] valuesp) Crea un objeto posj a partir de un array de valores tipo double. public posj(double valp1,double... valuepn) Crea un objeto posj a partir de una serie de valores tipo double. 4

Métodos: public boolean setvalue(double[] valuesp) Establece los valores de posición en el objeto posj a partir de un array de valores tipo double. public boolean setvalue(double value, int pos) Establece el valor value en la posición pos del objeto posj. public int getdimension() Toma el valor del tamaño del objeto posj. public double getvalue(int pos) Obtiene el valor de la posición pos del objeto posj. public double[] getvalues() Obtiene el array de valores del objeto posj. Estas dos clases se utilizan para poder programar movimientos en el robot. El método principal para la programación un movimiento articular en el robot es movej, que posee la siguiente declaración: movej (String tipo, posj pos, int mano, double... params) Parámetro tipo: este parámetro String indica el tipo de trayectoria a ejecutar. Las posibles trayectorias son: Tipo Syn : trayectoria síncrona. Tipo DSyn : trayectoria asíncrona. Tipo S3 : trayectoria interpolador o spline cúbico. Tipo S5 : trayectoria interpolador o spline quíntico. Tipo 434 : trayectoria interpolador 434. Parámetro pos: variable tipo posj que especifica el punto final de la trayectoria. Parámetro mano: variable tipo int que especifica que se abra o cierre la pinza al principio de la trayectoria. El valor de 0 abre la pinza y el valor de 1 cierra la pinza. Parámetro params: especifica el tiempo de la trayectoria en segundos. Para las trayectorias Syn (síncrona), S3 (spline cúbico) y S5 (spline quíntico), el parámetro params es un valor o variable tipo double. Para la trayectoria DSyn, params es un array de tamaño 5 tipo double con el valor de tiempo de cada una de las articulaciones del robot. Y finalmente, para la trayectoria 434, params especifica el valor del tiempo de aceleración y deceleración de la trayectoria en dos variables tipo double. Existen otras funciones que también se ocupan de la programación de las trayectorias del robot: 5

Función home_robot(int mano): lleva al robot a la posición de inicio. El parámetro mano, se comporta de una manera similar que en la función movej explicada anteriormente. Función set_speed(double[] v): configura la velocidad máxima del robot. El array v debe tener un tamaño de 5 y especifica el valor de la velocidad en rad/s. Función open() y close(): abre y cierra la pinza del robot. Función belt(): pone en funcionamiento la cinta transportadora del entorno hasta encontrar un objeto virtual. Figura 3. Ejemplo de programación 4. Métodos para obtener información del entorno virtual La aplicación permite otras funciones para obtener información del entorno virtual. A continuación las funciones que el usuario puede utilizar en el entorno de programación: public double[] getposobj(string name) Obtiene el valor de la posición del objeto del entorno virtual en coordenadas del mundo cuyo nombre es el pasado a la función. public double[] getposobj(int number) Obtiene el valor de la posición del objeto del entorno virtual en coordenadas del mundo cuyo número es el pasado a la función. public double[] getposrobot() Obtiene el valor de la posición del robot en coordenadas del mundo. public int getnumberobj() Obtiene el número de objetos existentes en el entorno virtual. public posc getdirect(posj pos) Obtiene un objeto posc con las coordenadas (X,Y,Z,Roll,Pitch,Yaw) del extremo final del robot en coordenadas de mundo a partir del objeto posj pasado a la función. En el caso de no obtener solución, devuelve null. 6

public posj getinverse(posc pos) Obtiene un objeto posj con las coordenadas articulares (q1,q2,q3,q4,q5) a partir del objeto posc pasado a la función. En el caso de no obtener solución, devuelve null. 5. Ejemplo de programación A continuación se muestra un programa que ejecuta un proceso que pone en marcha la cinta transportadora y ordena al robot a coger el objeto que la cinta transportadora ha detectado. Para las trayectorias, se ha utilizado el planificador 434. Para ello, antes de compilar el programa debe existir un objeto en la cinta transportadora. void main () { //Vectores con las posiciones articulares double[] p1={26,77,28,-9,-63}; double[] p2={26,96,12,-12,-63}; double[] p3={26,64,26,4,-63}; double[] p4={95,54,26,4,-63}; double[] p5={95,65,26,4,-63}; //Objetos posicion posj pos1 = new posj(p1); posj pos2 = new posj(p2); posj pos3 = new posj(p3); posj pos4 = new posj(p4); posj pos5 = new posj(p5); //Pone en funcionamiento la cinta hasta detectar un objeto belt(); //Trayectorias del robot movej( 434",pos1,-1,0.1,0.1); movej( 434",pos2,0,0.1,0.1); movej( 434",pos3,1,0.1,0.1); movej( 434",pos4,-1,0.1,0.1); movej( 434",pos5,-1,0.1,0.1); home_robot(0); }//End 7

Programación de un brazo robot I: guión de prácticas 1. Introducción Para llevar a cabo la práctica es conveniente leer detenidamente todos los apartados e ir realizando todas aquellas tareas que se proponen. Las tareas de la práctica se realizarán con la ayuda del simulador del robot Scorbot ER- IX descrito en la sección Interfaz, que se utilizará por una parte como herramienta para realizar los cálculos cinemáticas, la programación, y las simulaciones para comprobar visualmente los resultados obtenidos, y por otra parte para evaluar los resultados sobre el robot real mediante operación remota. Las primeras tareas de la práctica se realizarán de forma teórica y en modo simulación, previas a la utilización del robot real, y posteriormente se realizarán las comprobaciones sobre el robot real en modo remoto. Al finalizar las tareas teóricas y de simulación, el alumno deberá enviar un informe al profesor con las experiencias realizadas, en el que también deben incluirse las tareas teóricas. Después, puede proceder a realizar las tareas de modo remoto, tras lo cual deberá enviar otro informe. El alumno deberá contrastar los resultados obtenidos en modo simulación con los resultados obtenidos en modo remoto. 2. Objetivos de la práctica En esta práctica se pretende que el alumno se familiarice con la programación de un robot industrial para realizar tareas sencillas. Así, se abordará el posicionamiento del robot y la manipulación de objetos. Todo ello trabajando sobre el entorno virtual RobUALab y el robot Scorbot ER-IX. 3. Descripción de la práctica El alumno debe utilizar el entorno RobUALab dentro del proyecto AutomatL@bs (http://lab.dia.uned.es/automatlab/) para familiarizarse con un brazo robot industrial de cinco grados de libertad. Además de conocer las distintas opciones que ofrece en entorno: movimientos, introducción de objetos en el entorno, manipulación de objetos, programación de movimientos mediante código, etc. Para todo ello se dispone, de un manual en la web sobre el entorno y otro manual sobre el lenguaje de programación del robot. En el caso de querer introducir objetos en el plano inclinado se debe realizar mediante un fichero, en el que las coordenadas de posición y orientación de un objeto rectangular son: 1,76 0,85 0,175 {1.57,0,0,1}, los tres primeros valores indican la posición del objeto en el mundo en coordenadas globales del sistema y los valores entre llaves la orientación, de 8

manera que la orientación se expresa como un giro, el primer valor, y los tres siguientes representan el vector unitario que define el eje de giro. Por ejemplo: si deseamos introducir tres objetos rectangulares, de tamaño 60x30x30mm, en el plano inclinado, uno rojo, otro verde y otro azul, se deberá crear un fichero con las siguientes líneas: Object1 1,76 0,85 0,175 {1.57,0,0,1} 255,0,0 Rectangle Object2 1,76 0,85 0,175 {1.57,0,0,1} 0,255,0 Rectangle Object3 1,76 0,85 0,175 {1.57,0,0,1} 0,0,255 Rectangle 4. Tareas a realizar 4.1. Tareas de introducción a la simulación Las tareas de este apartado tienen como objetivo la familiarización con el simulador, con ayuda del manual que describe el interfaz de usuario del mismo. No se requiere entregar informe o memoria sobre estas tareas. A. Entrar en el entorno emersion con los datos de usuario y contraseña asignados. Practicar para mover el robot en su entorno usando primero los controles de movimientos articulares, y luego los controles para mover el extremo del robot en coordenadas cartesianas. Observar cómo se corresponden ambos movimientos, esto es, la cinemática directa e inversa del robot. B. Probar a introducir trayectorias, usando distintos interpoladores de valores articulares. Será necesario especificar una posición de destino a la que llegar, el tiempo para el movimiento y la velocidad. C. Observar cómo es la evolución de posición y de velocidad para las diferentes articulaciones cuando se ejecutan las trayectorias. Observar también la evolución en el espacio cartesiano (opción Control del menú). D. Concatenar varias trayectorias, usando la opción Save con cada una, y ejecutar la lista completa. E. Probar a introducir objetos en el entorno y manipularlos con el robot. F. Almacenar objetos en un fichero y recuperarlo. G. Realizar un programa sencillo para ver como se comporta la programación. 4.2. Tareas de simulación El alumno debe realizar el código de programación necesario para que el robot recoja las piezas existentes en plano inclinado y las posiciones sobre la mesa formando un muro, tal y como muestra la siguiente figura: 9

Para ello el robot colocará la primera pieza en la posición que se desee de la mesa, a continuación la siguiente junto a esta, a derecha o izquierda según se prefiera, la siguiente la pondrá encima de estas, en el medio de las dos. La siguiente pieza se colocará a la derecha o a la izquierda de las dos piezas de la base, la siguiente en el segundo nivel, ocupando la mitad de la pieza del nivel base que se ha colocado previamente. La siguiente en un tercer nivel, en el medio de las dos piezas del nivel segundo. Y así de manera similar mientras queden piezas disponibles en el plano inclinado. La posición de colocación de cada pieza en la estructura se debe calcular en el momento de manipular dicha pieza, no se permite el cálculo previo de todas las posiciones, hay que suponer que el número total de piezas existentes no es conocido a priori para el cálculo de posiciones. Hay que indicar, que debido a que el robot coge la pieza en el plano inclinado por los extremos, se deberá utilizar un punto en la mesa para dejar la pieza, girar la pinza y volver a coger la pieza antes de colocarla en la estructura, ya que sino la manipulación será imposible, por colisionar la pinza del robot con una la pieza puesta anteriormente. El alumno entregará una memoria con el código resultante. H. Programación de la tarea. El alumno realizar la programación de la tarea. I. Simular la tarea. Introducir el código en el simulador para que este realice la trayectoria deseada, para ello se deberán introducir en el plano inclinado varias piezas con las que pueda realizar la estructura. 4.3. Tareas en modo remoto J. Introducir de nuevo el código realizado, como en el apartado I del punto 4.2. Conectar con el robot remoto y ejecutar la trayectoria. K. Visualizar y analizar los valores reales del movimiento del robot real. Comparar el resultado de la tarea simulada con la real. 10