Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Laboratorio de Robótica Industrial Facultad de Ingeniería en Electricidad y Computación PRACTICA #6 TEMA: PROGRAMACION PICK AND PLACE EN ROBODK CON LENGUAJE DE PROGRAMACION PYTHON 1. Objetivos • Familiarización del lenguaje Python en RoboDk. • Aprender a programar en Python para realizar diferentes acciones en la estación de trabajo con el robot. • Realizar un pick and place mediante funciones de Python. • Interpretar funciones que proporciona el software Robodk. 2. Marco teórico • RoboDK es un software para simulación y programación fuera de línea. La programación fuera de línea significa que los programas de robot se pueden crear, simular y generar fuera de línea para un brazo de robot y un controlador de robot específicos. RoboDK contiene un menú principal, una barra de herramientas, una barra de estado y la pantalla principal. El árbol de la estación en la pantalla principal contiene todos los elementos disponibles en la estación, como robots, marcos de referencia, herramientas, programas, etc. El robot que se usará en la práctica será Kawasaki RS03N, para realizar varias pruebas con el software RoboDK • La programación fuera de línea no tiene límites con RoboDK. Este software proporciona una interfaz gráfica de usuario fácil de usar para simular y programar robots industriales. RoboDK te ayudará a evitar singularidades y límites de ejes. No se requiere experiencia en programación. Más información disponible en la sección de Programación fuera de línea de la documentación (https://robodk.com/doc/en/Getting-Started.html). • Con la API de RoboDK también puede programar y simular robots usando Python. Python es un lenguaje de programación que le permite trabajar más rápido e integrar sus sistemas de manera más efectiva. Python permite expresar conceptos en menos líneas de código en comparación con otros idiomas, por lo que es fácil y fácil de aprender. • Más información disponible en la sección de RoboDK API de la documentación. La API de RoboDK también está disponible para C # y Matlab. https://robodk.com/doc/en/Robot-Programs.html#OfflineProgramming https://robodk.com/doc/en/Robot-Programs.html#OfflineProgramming https://robodk.com/doc/en/Robot-Programs.html#OfflineProgramming https://robodk.com/doc/en/Robot-Programs.html#OfflineProgramming https://robodk.com/doc/en/Robot-Programs.html#OfflineProgramming https://robodk.com/doc/en/Robot-Programs.html#OfflineProgramming https://www.python.org/ https://www.python.org/ https://robodk.com/doc/en/RoboDK-API.html#RoboDKAPI https://robodk.com/doc/en/RoboDK-API.html#RoboDKAPI https://robodk.com/doc/en/RoboDK-API.html#RoboDKAPI https://robodk.com/doc/en/RoboDK-API.html#RoboDKAPI https://robodk.com/doc/en/RoboDK-API.html#RoboDKAPI https://robodk.com/doc/en/RoboDK-API.html#RoboDKAPI https://robodk.com/doc/en/RoboDK-API.html#CsAPI https://robodk.com/doc/en/RoboDK-API.html#CsAPI https://robodk.com/doc/en/RoboDK-API.html#CsAPI https://robodk.com/doc/en/RoboDK-API.html#CsAPI https://robodk.com/doc/en/RoboDK-API.html#CsAPI Laboratorio de Robótica Industrial Facultad de Ingeniería en Electricidad y Computación 3. Descripción. En esta práctica se realizará un movimiento Pick and Place mediante programación Python en RoboDK. Además, se interpretarán algunas funciones que el programa proporciona con el objetivo de aprender a interpretar un código externo. 3.1 Seleccionar un Robot Se pueden agregar nuevos robots desde un disco local o desde la biblioteca en línea: 3. Abrir. El robot debería aparecer automáticamente en la estación en unos segundos. Desde la biblioteca en línea: 1. Seleccione Archivo ➔ Abrir biblioteca en línea (Ctrl + Shift + O). Aparecerá una nueva ventana anidada que muestra la biblioteca en línea. También es posible seleccionar el botón correspondiente en la barra de herramientas. Desde un disco local: 1. Seleccione Archivo ➔ Abrir 2. Escoger uno de los Robot disponibles en el di s co local. Figura 1. Disco Local Laboratorio de Robótica Industrial Facultad de Ingeniería en Electricidad y Computación 2. Use los filtros para encontrar su robot por marca, carga útil, etc. En este ejemplo, usaremos un robot Kawasaki RS03N. 3. Seleccione Descargar. El robot debería aparecer automáticamente en la estación en unos segundos. 4. La biblioteca en línea se puede cerrar una vez que se carga el robot Alternativamente, también es posible descargar los archivos del robot (extensión .robot) desde el sitio web: https://robodk.com/library y abrirlos en RoboDK arrastrando y soltando el archivo en la ventana principal o mediante seleccionando Archivo➔ Abrir. 3.2 Interfaz • El menú principal se encuentra en la parte superior. Todas las acciones y opciones disponibles están disponibles en este menú. • La barra de herramientas contiene iconos gráficos que permiten un acceso rápido a las acciones utilizadas con frecuencia en el menú. Más información disponible en la sección de la barra de herramientas . • El árbol de la estación enumera todos los componentes (elementos) que están presentes en la estación. Estos elementos pueden ser robots, herramientas, objetos, objetivos o configuraciones específicas para fines de fabricación o calibración. El árbol permite comprender y modificar la dependencia que existe en el entorno real. Por ejemplo, un objetivo se puede adjuntar a un marco de referencia específico, este marco de referencia se puede adjuntar al marco base del robot, las herramientas del robot generalmente se adjuntan al robot, etc. • La barra de estado se encuentra en la parte inferior y puede mostrar consejos útiles para ciertas operaciones. • La vista 3D (Pantalla principal) muestra la vista en un entorno virtual 3D y reproduce el Árbol de estaciones con su jerarquía. • Al hacer doble clic en un elemento (en el árbol o en la vista 3D) se mostrará una nueva ventana con las propiedades del elemento. Por ejemplo, al hacer doble clic en un robot se mostrará el Panel de robots. Estas ventanas se pueden cerrar seleccionando la cruz en la parte superior derecha de la ventana secundaria. https://robodk.com/library https://robodk.com/library https://robodk.com/library https://robodk.com/library https://robodk.com/library https://robodk.com/doc/en/Interface.html#MainMenu https://robodk.com/doc/en/Interface.html#MainMenu https://robodk.com/doc/en/Interface.html#MainMenu https://robodk.com/doc/en/Interface.html#MainMenu https://robodk.com/doc/en/Interface.html#MainMenu https://robodk.com/doc/en/Basic-Guide.html#Toolbar https://robodk.com/doc/en/Basic-Guide.html#Toolbar https://robodk.com/doc/en/Basic-Guide.html#Toolbar https://robodk.com/doc/en/Interface.html#RobotPanel https://robodk.com/doc/en/Interface.html#RobotPanel https://robodk.com/doc/en/Interface.html#RobotPanel https://robodk.com/doc/en/Interface.html#RobotPanel Laboratorio de Robótica Industrial Facultad de Ingeniería en Electricidad y Computación 4. Procedimiento Se procederá con el ejemplo Pick and place with Laser Sensor de RoboDK. El ejemplo cuenta con cuatro secciones de códigos. A continuación, se dará una breve explicación de las funciones más importantes de cada uno. • SetSimulationParams Esta sección es la encargada de solicitarle información al usuario para el funcionamiento del programa. Como se observa en la Figura 2, a través del comando mbox se le solicita al usuario que ingrese: 1. El tamaño de las cajas indicando: largo, ancho y alto. 2. El tamaño del pallet. Esto será un arreglo de 3 valores en donde se detallará la siguiente información en el orden mostrado: numero de columnas del lote, numero de filas del lote y numero de pisos dellote. 3. Velocidad de la banda transportadora en mm/s. Observación: El comando mbox permite la aparición de una ventana en la pantalla principal de RoboDK donde el usuario podrá ingresar la información que se le solicite. Figura 1: Interfaz Robodk Laboratorio de Robótica Industrial Facultad de Ingeniería en Electricidad y Computación Figura 2: Código – SetSimulationParams • PrepareSimulation Esta sección de código se encarga de adquirir la información del apartado anterior para procesarla y empezar con el proceso. En la Figura 3 se muestra la parte del código encargada de adquirir la información del código anterior. Figura 3: Adquisicion de datos de la seccion SetSimulationParams En la Figura 4 se encuentra la función “box_calc” que tiene como parámetros de entrada las dimensiones de la caja y del tamaño del pallet. Esta función, se encarga de crear un arreglo de posiciones de las cajas a partir de la información ingresada. Finalmente, el valor que retorna es una lista donde se detalla la posicion de cada caja en el pallet. Figura 4: Funcion box_calc Laboratorio de Robótica Industrial Facultad de Ingeniería en Electricidad y Computación En la Figura 5 se detalla la función “parts_setup” encargada de la configuración de los objetos. Esta sección tiene como parámetros de entrada el sistema de referencia de donde se encuentran ubicadas las cajas, las posiciones de las cajas y sus dimensiones. Como se observa, a partir del parámetro positions (que es el arreglo de posiciones calculado en la función anterior) se le calcula su tamaño para así, definir cuantas cajas tiene el lote de producción. Se realiza una secuencia for para ir modificando los parámetros de cada caja en función del numero que se calculó previamente. La última línea de código es para configurar el color de las cajas en función del código RGB (Red-Green-Blue). El parámetro A representa la visibilidad de las cajas. Figura 5: Funcion - parts_setup • RobotA_GetParts Esta sección será la encargada de tomar las cajas del PalletA y colocarlas en la banda transportadora. Se asignan los elementos involucrados para este procedimiento (Robot, herramienta y los sistemas de referencia) Figura 6: Asignación de elementos asociados al procedimiento. Laboratorio de Robótica Industrial Facultad de Ingeniería en Electricidad y Computación Tanto para la parte del código del Robot A como del Robot B se empieza con la adquisición de los datos obtenidos por la función SetSimulationParams y una inicialización de las funciones descritas anteriormente La Figura 7 muestra las funciones encargadas de abrir y cerrar la pinza para sostener los objetos. Esto se realizará en función de la herramienta que se le ingrese como parámetro de entrada. Figura 7: Funciones TCP_On y TCP_Off La figura 8 muestra el código principal para esta parte del procedimiento. Se empieza calculando el número de cajas del lote de producción que será la condición del lazo while para determinar el número de iteraciones del procedimiento. Luego, se encuentra el segmento encargado de adquirir la pieza en el pallet y finalmente dejarla en la banda transportadora. Figura 8: Código principal - RobotA_GetParts Laboratorio de Robótica Industrial Facultad de Ingeniería en Electricidad y Computación • RobotB_GetParts Esta sección será la encargada de tomar las cajas de la banda transportadora y colocarlas en el PalletB El código utilizado en esta sección es muy parecido al del RobotA con la diferencia que cuenta con la función WaitSensor que se describe en la Figura 9; la cual será la encargada de detectar la presencia de un objeto en la banda transportadora para posteriormente recogerlo y dejarlo en el PalletB Figura 9: Funcion - WaitSensor
Compartir