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

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

Tema 2. El lenguaje JAVA

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

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

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

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

Principios de Computadoras II

Resultados: Aplicación al desensamblado de PC s

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA

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

Herramientas interactivas para la enseñanza de robótica

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

Java para no Programadores

4. Operadores Operador asignación

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

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

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

TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote METODOS CONSTRUCTORES Y LA REFERENCIA THIS

LABORATORIOS VIRTUALES Y REMOTOS BASADOS EN EJS PARA LA ENSEÑANZA DE ROBÓTICA INDUSTRIAL

Taller #1: Logisim PARTE 1:

JAVA 7 Los fundamentos del lenguaje Java

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

Práctica 2. Control de velocidad mediante el autómata CP1L y el variador MX2 de Omron

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

Bitbloq 2: Entorno de programación

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

Índice general. Agradecimientos Resumen Abstract

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Funciones básicas del depurador

FACULTAD DE INGENIERÍA

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

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Pasos a seguir para crear una aplicación visual en el lenguaje de programación Java con Netbeans IDE.

TEMA 3: El proceso de compilación, del código fuente al código máquina

Práctica 5MODBUS: Bus Modbus

Apunte JAVA + SVN. Emi Höss

PRÁCTICA 4. CONTADORES

GUÍA DE ESTILO EN JAVA

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

Bloque III. Herramientas

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

Introducción a Protégé

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Lenguaje de programación con JAVA

INSTALACION Y PRUEBA DEL PLUGIN WindowBuilder para trabajar Swing en Eclipse

Es un programa educativo Los alumnos podrán desarrollar su creatividad

5. Sentencias selectivas o condicionales

Tema II:Evaluación de los entornos virtuales CÓMO EVALUAR EL E-LEARNING?

ENTORNO DE DESARROLLO Y COMPILACIÓN DE PELLES C

Programación en Visual Basic Ricardo Rodríguez García

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Bloque II. Herramientas

Enteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal.

Descripción y Contenido del Curso. Programación C++ Capacity Academy.

Procesos Fin de Ejercicio Contabilidad

uitécnico SUPERIOR UNIVERSITARIO EN MECATRÓNICA ÁREA SISTEMAS DE MANUFACTURA FLEXIBLE

PROGRAMACION EN VISUAL BASIC

Aquí se declaran los. Aquí se declaran los métodos de la clase. *Atributos de la clase

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

CLASES QUE UTILIZAN OBJETOS. RELACIÓN DE USO ENTRE CLASES JAVA. CONCEPTO DE DIAGRAMA DE CLASES. (CU00641B)

Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A)

PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Guía - Taller # 2 (JAVA)

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Desarrollo de aplicaciones de acceso a base de datos con JBuilder 7

Procesamiento de documentos XML.

QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B)

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

USO DEL OBJETO JTABLE

REPASO ARRAYS MULTIDIMENSIONALES EN JAVA. DECLARACIÓN Y USO. EJEMPLOS Y EJERCICIOS RESUELTOS. (CU00905C)

Manual de turbo pascal

APD SATCA 1 : Carrera:

media = ( temp0 + temp1 + temp2 + temp3 + temp temp23 ) / 24; printf( "\nla temperatura media es %f\n", media );

Declaración anual de operaciones con terceras personas (MOD.347)

MANUAL DE INSTALACIÓN DEL DIMM FORMULARIOS. Macintosh. IMPORTANTE: Su computador debe contar con el entorno de ejecución JAVA versión 1.6.

Expresiones y sentencias

Introducción a Java LSUB. 30 de enero de 2013 GSYC

MANUAL PARA ACCEDER A LA PLATAFORMA VIRTUAL DE LA PUCESA EVAE

LABORATORIO 3. PROGRAMACIÓN CON EL LENGUAJE JAVA

Tema: Introducción al IDE de Microsoft Visual C#.

3. Selección del paquete termodinámico de fluidos: Para las propiedades de los componentes se usará el paquete NRTL. Dar clic en Fluid Packages (figur

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual.

Práctica 14 Movimiento del robot Fanuc M16i usando el método JOINT

TÉCNICO SUPERIOR UNIVERSITARIO EN MECATRÓNICA ÁREA AUTOMATIZACIÓN EN COMPETENCIAS PROFESIONALES ASIGNATURA DE LENGUAJE DE PROGRAMACIÓN

Práctica 3.4 Movimiento Circular. MVC

SISTEMAS ELECTRÓNICOS DIGITALES

fundamentos de programación (unidad 4) programación estructurada en Java

Cómo usar VNC y RDP a través de SSL VPN

Tema: Clases y Objetos en C#. Parte II.

DECLARACIONES INFORMATIVAS

Primeros pasos y conceptos básicos de la simulación de circuitos electrónicos utilizando Proteus.

Tema 3: Programación orientada a objetos (I)

Métodos que devuelven valor Dado el siguiente triángulo rectángulo:

<tipo> Tipo de dato de los elementos del vector

Utilización de CERMA para Cumplir el DB HE-0 Sección y DB HE-1 Sección Cumplimiento CTE DB-HE 0 y HE-1

Flujos (streams) Programación. Licenciatura Lingüística y Nuevas Tecnologias Nadjet Bouayad-Agha

Manual de usuario de configuración de Navegadores para Sede Electrónica del SEPE

Transcripción:

Prácticas con RobUALab Programación de un brazo robot II 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 II 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 mediante 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 II: 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 aprenda a utilizar la programación del robot para manipular objetos, conocer la relación entre los distintos sistemas de coordenadas y saber transformar las posiciones cartesianas de los objetos a posiciones del robot, así como la manera de llevar el robot hasta dichas posiciones. 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 llevar a cabo la programación de una aplicación que permita, una vez reconocidos mediante la cámara remota, las posiciones y orientaciones de los objetos existentes en el entorno, llevar a cabo su manipulación para formar una estructura con las piezas. Para ello se dispone de un manual de usuario del entorno y otro de programación. 8

4. Tareas a realizar 4.1. Tareas de simulación El alumno debe realizar el código de programación necesario para que el robot recoja las piezas existentes en el entorno, tal y como se muestra en la siguiente figura: En base a las piezas existentes y a su localización, se debe construir un muro, que en el entorno real quedaría como se muestra la siguiente figura: Las piezas se encuentran distribuidas sobre la mesa de trabajo pudiendo estar en cualquier orientación, sin superposición entre ellas pero podrán existir piezas fuera del área de trabajo del robot, estas piezas no deberán manipularse ni impedir la correcta realización de la tarea designada. Para realizar la estructura 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 9

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. Cabe indicar que para la realización de la estructura puede ser necesario despejar de piezas alguna parte de la mesa para poder construir libremente en dicha parte la estructura, para ello habrá que buscar posiciones donde poder depositar temporalmente las piezas necesarias, así como, realizar la construcción de la estructura siguiendo un orden adecuado de manipulación de las piezas. El alumno entregará una memoria con el código resultante. A. Programación de la tarea. El alumno realizar la programación de la tarea. B. Simular la tarea. Introducir el código en el simulador para que este realice la trayectoria deseada. 4.2. Tareas en modo remoto C. Conectar con el robot remoto y reconocer los objetos existentes en el entorno. D. Introducir de nuevo el código realizado, como en el apartado B del punto 4.1. Ejecutar el código. E. Visualizar y analizar los valores reales del movimiento del robot real. Comparar el resultado de la tarea simulada con la real. 10