PRÁCTICA 3: ROBOT DIDÁCTICO SCORBOT-ER V+ MANIPULACIÓN DE OBJETOS 1. Introducción El robot SCORBOT-ER V plus es estructuralmente idéntico al modelo ER III. La principal diferencia entre ambos modelos está en el tipo de control realizado, que permite un control continuo de la trayectoria. Para ello, se ha sustituido el microprocesador del controlador, que ahora es un Motorola 68010. Además se permite la ejecución simultánea de hasta 20 programas distintos. Aunque es posible realizar programas en una versión avanzada de SCORBASE (nivel 5), para obtener un máximo aprovechamiento de todas las posibilidades que ofrece este sistema es aconsejable usar el lenguaje ACL (Advanced Control Language). Mediante ACL es posible manejar de forma directa una serie de rutinas escritas en las EPROMs del controlador. El interfaz de usuario que acompaña al ACL se denomina ATS (Advanced Terminal Software). Este software implementa un emulador de terminal que permite el acceso a las rutinas del ACL desde un ordenador PC. Incluye un editor que permite desarrollar programas ACL. 1.1. Acceso al ATS Para arrancar el interfaz ATS debe ejecutarse el siguiente comando: > i:\elect\scorbot5\ats\ats /c2 Una vez dentro del ATS, para comenzar a operar se debe realizar la operación de HOME (comando home), para que el sistema robótico sitúe el robot en una posición inicial conocida. Además, pueden comprobarse las funciones E/S del controlador con el comando test. En este momento el control sobre el robot está activado, y es posible acceder a cualquiera de las rutinas del controlador. En caso de producirse algún error o accidente en movimiento, la tecla de EMERGENCIA interrumpirá el movimiento inmediatamente. También puede desactivarse el controlador desde la lı́nea de comando del ATS mediante el comando coff, y volver a activarse con el comando con. Es posible interrumpir cualquier programa mediante la ejecución del comando, > a <programa> Comprobar el funcionamiento de este comando mientras se está ejecutando test. Sin argumentos, el comando a abortará todos los programas en ejecución. Pulsar la combinación shift+f10 y cargar el fichero de demos demo.dnl, seleccionando la opción ERASE memoria. También puede comprobarse el funcionamiento de este comando ejecutando el programa de demostración picp mediante el comando: > run picp 1 2. Modo Manual Hasta ahora se visto como mover el robot mediante programas o comandos (modo directo). El software ATS dispone de un modo manual que permite al usuario realizar directamente movimientos en el brazo articulado. Para entrar en este modo hay que pulsar la combinación de teclas alt+m. Al entrar en este modo nos encontraremos, a su vez, en modo de ejes, es decir, que podemos mover independientemente cada una de las articulaciones de la siguiente manera: teclas Movimiento 1-Q Mueve el eje 1 (base) 2-W Mueve el eje 2 (hombro) 3-E Mueve el eje 3 (codo) 4-R Mueve el eje 4 (inclinación) 5-T Mueve el eje 5 (balanceo) 6-Y Abre/Cierra la pinza (eje 6) También pueden usarse las combinaciones 7-U, 8-I, 9-O, 0-P y -[, para activar los ejes 7-11, si es que estos tienen conectado algún otro dispositivo. Existe, también, en modo manual un modo cartesiano mediante el que puede moverse el robot en las direcciones XYZ. Para pasar a este nuevo modo hay que pulsar la tecla x. Ahora tendremos disponibles los siguientes movimientos: teclas Movimiento 1-Q X+, X2-W Y+, Y3-E Z+, Z4-R inclinación arriba/abajo mientras el extremo de la pinza mantiene su posición El resto de los ejes se manejan como en el modo de ejes. Para volver a este último modo, debe pulsarse la tecla j. Otras posibilidades del modo manual son: Ajuste de la velocidad en la escala de 1 (mı́nimo) a 100 (máximo): comando s. Activar/Desactivar control: c (activar) y f (desactivar). Finalmente, para salir al modo directo, basta con volver a pulsar la secuencia alt+m. 3. Gestión de Posiciones y Movimiento Para definir y grabar una posición, debe procederse de la siguiente forma: 1. Entrar en modo manual y llevar al robot a la posición deseada. Salir después del modo manual. 2. Hay que definir la posición, igual que si se tratase de una variable. Ésto se hace con el comando defp: > defp <posición> 2 3. La posición actual queda grabada en la variable <posición> mediante el comando: > here <posición> Mediante el comando listp pueden listarse todas las posiciones pregrabadas (la posición 0 está reservada a home). Es conveniente obtener un listado de posiciones antes de grabar nuevas posiciones, con el objeto de conocer que números de posición se encuentran disponibles. El comando listpv es similar al anterior, pero además proporciona las coordenadas XYZ de la posición (en décimas de milı́metro), ası́ como los ángulos de pitch y roll del robot (en décimas de grado). Para borrar una posición es necesario ejecutar el comando: > delp <posición> Una vez grabadas las posiciones, es posible realizar movimientos entre ellas. Para ello, se tienen las siguientes opciones: move <posición> [<duración>] Mueve el brazo desde la posición actual hasta <posición>. Opcionalmente, puede incluirse la duración del movimiento (en centésimas de segundo) en la lı́nea de comando. moved <posición> [<duración>] Este comando es idéntico al anterior, salvo por el hecho de que se garantiza que no se continúa la ejecución hasta que no se ha alcanzado la posición final. Sólo puede usarse en programas. Evita movimientos inesperados. movec <pos1> <pos2> Realiza un movimiento cartesiano circular desde la posición actual hasta <pos1>, pasando por <pos2>. También existe la variante movecd que asegura la conclusión del movimiento. movel <pos> [<duración>] Realiza un movimiento cartesiano lineal desde la posición actual hasta <pos>. También existe la variante moveld que asegura la conclusión del movimiento. IMPORTANTE: las posiciones implicadas por los comandos movec, movecd, movel y moveld deben grabarse cuidadosamente para asegurar la obtención de un movimiento posible y no forzado. En caso contrario, pueden encontrarse obstáculos o limitaciones mecánicas que pueden dañar el sistema. Como medida de precaución, deberá reducirse la velocidad a 20. El comando para la modificación de la velocidad es speed. open y close Comandos para abrir/cerrar la pinza. NOTA: Todas las unidades de longitud y duración son las indicadas anteriormente. 4. Edición y Ejecución de Programas El software ATS dispone de un editor de programas. Para crear un programa, hay que ejecutar: > edit <programa> 3 tras lo cual se entra en el modo de edición. En cada lı́nea hay que introducir un comando. Por ejemplo: 373: 374: 375: 376: moved 11 moved 12 moved 13 exit Con el comando exit se abandona el modo de edición. Los números de lı́nea son asignados por el propio editor (no son accesibles al usuario). La ejecución del programa se realiza mediante el comando run, como ya se ha comentado anteriormente. La ejecución puede ser suspendida, continuada o abortada: > suspend <programa> > continue <programa> > a <programa> Para borrar un programa de la memoria del controlador se usa el comando remove seguido del nombre del programa. El lenguaje ACL permite la definición y manipulación de variables. Existen dos tipos de variables: Locales: sólo pueden ser usadas por el programa especı́fico en el que fueron definidas. Se declaran como: define <var> Globales: pueden utilizarse en modo directo y por cualquier otro programa. Se declaran como: global <var> Las intrucciones básicas para el manejo de variables son: Adjudicación de valores a variables: set <var> = <valor> Control de flujo: if (condición) ... else ... endif También se pueden etiquetar lı́neas de programa y realizar saltos a ellas: 4 Y 4 (300,100) (300,0) (200,0) (400,0) 3 X 1 (300,−100) 2 Figura 1: Movimiento circular. label <n> goto <n> Bucles: for <var>=<valor1> to <valor2> ... endfor El controlador del SCORBOT-ER V dispone de 16 salidas y 16 entradas que permiten la comunicación del sistema con otros dispositivos. Dentro de un programa ACL, las entradas y salidas se consideran como variables. Estas variables son in[1-16] y out[1-16], y toman los valores [0,1]. Para más información, sobre niveles de tensión en las entradas y salidas, consultar el manual del usuario. 5. Posicionamiento y Manipulación Además de definir posiciones manualmente mediante el comando here, es también posible definirlas mediante sus coordenadas cartesianas (x, y, z) y los ángulos de pitch P (elevación) y roll R (giro). Para ello puede usarse el comando teach. Éste comando sólo funciona en modo directo y no dentro de programas. Las posiciones también pueden definirse relativas a una dada mediante teachr. Vamos a desarrollar un ejemplo en el que se desea que el robot realice un movimiento circular en el plano XY de radio 100 mm y centro en (300,0) mm a una altura de Z = 200 mm. Dicho movimiento se representa en la figura 1. La posición inicial (1) la definiremos en coordenadas absolutas, fijando X = 2000, Y = 0, Z = 2000, P = −900 y R = 0. El resto de las posiciones se definirán en coordenadas relativas a la posición 1, según se indica en la siguiente tabla: 5 HOME P1R1 P1R2 P1R3 P1R4 P2R4 P3R4 25 cm P4R4 P1 P2 P3 P4 Figura 2: Diagrama de posiciones para apilar cubos. Posición 2 3 4 X 1000 2000 1000 Y -1000 0 1000 Z 0 0 0 P 0 0 0 R 0 0 0 Para mayor mayor comodidad editaremos el programa en fichero (con extensión dnl) que contenga todos los comandos que se especifican a continuación, en lugar de introducirlos con el editor edit. program circ ************** label 1 moved 1 movecd 3 2 movecd 1 4 goto 1 end Tras editar el programa hay que llamar a la utilidad ACL-offline (en el mismo directorio que el ATS): > offline /c2 Una vez dentro del offline, pulsando f1 podemos transferir el programa al controlador a la vez que se depuran los posibles errores del programa. Después podemos entrar en el ATS pulsando f4 y ejecutar los programas. Con shift+f9 volvemos al offline. Ejecutar ambos programas y comprobar su funcionamiento. Como ejercicio se desarrollará un programa que apile 4 cubos situados inicialmente sobre la mesa. Para ello habrá que grabar manualmente las posiciones de los 4 cubos (P1,P2,P3,P4). A continuación se grabarán otras 4 posiciones relativas a las de los cubos que queden en la vertical de las anteriores y a 25 cm sobre las mismas (P1R1,P1R2,P1R3,P1R4), que servirán como posiciones intermedias para desplazar los cubos linealmente desde su posición original hasta ellas. Los cubos se irán apilando sobre el cuarto de ellos. Para llevarlos hasta sus posiciones finales (P2R4,P3R4,P4R4), habrá que pasar previamente sobre la posición vertical sobre el cubo 4 (P1R4). El esquema de posiciones se representa en la figura 2. 6