El mecanizado robótico es el proceso donde una materia prima se corta en una forma y un tamaño finales deseado por un proceso controlado de retiro de material, usando un brazo robot. Maquinar abarca diversos usos de remoción de materiales, tales como fresado, taladrado, chaflanado, y el quitar rebabas, típicamente realizado por máquinas-herramienta automatizadas (CNC). Se pueden utilizar robots industriales como un máquina herramienta (CNC de 3-ejes o de 5 ejes) usando RoboDK.
Para lograr los mismos o mejores resultados que las máquinas CNC, los robots industriales requieren una tecnología de programación de software fuera de línea como RoboDK para convertir programas de máquina a programas de robots.
Las dimensiones de las partes se definan mediante software de diseño asistido por ordenador (CAD) y, luego, se traducen en programas de fabricación (como Código G) por software de manufactura asistida por ordenador (CAM). Los programas de fabricación se pueden convertir en programas de robots usando las herramientas de programación fuera de línea de RoboDK.
Los ejes adicionales, como una mesa giratoria y un riel lineal, pueden sincronizarse con el robot para extender el espacio de trabajo.
Esta sección muestra cómo preparar una estación de RoboDK simple sin conexión para mecanizado robótico. Una estación RoboDK contiene todos los robots, herramientas, sistemas de referencia, objetos y otros ajustes. Más información sobre la construcción de una estación de RoboDK en la sección empezar.
Se requiere tener un robot con una herramienta y el objeto 3D en un sistema de referencia para configurar un proyecto de mecanizado de robots:
1-Seleccione un robot:
a.Seleccione Archivo➔ Abrir Biblioteca en Línea
b.Use los filtros para encontrar su robot por marca, carga útil,...
Por ejemplo, seleccione el ABB IRB 2600-20/1.65 (carga útil de 20 kilogramos, alcance de 1, 65 m).
c.Seleccione Descargar y el robot debería aparecer automáticamente en la pantalla principal.
2-Seleccione una herramienta:
a.De la misma biblioteca en línea, filtrar por Tipo➔Herramienta
b.Descargue una herramienta giratoria
c.La herramienta debe estar conectada automáticamente al robot
Una vez cargada la herramienta la Biblioteca en línea puede cerrarse
3-Agregar un sistema de referencia:
a.Seleccione Programa➔Añadir Sistema de Referencia
b.Seleccione el nuevo sistema de referencia en el árbol y seleccione F2 para cambiarle el nombre a Referencia de Fresado
4-Agregar un objeto:
a.Seleccione Archivo➔ Abrir
b.Seleccione un objeto denominado Object wooden bowl.sld
c.Arrastrar y soltar el objeto a la referencia de fresado (dentro del árbol de la estación)
Siga estos pasos para configurar un nuevo proyecto de mecanizado de robots dado un archivo NC generado usando CAM software (como código G o APT):
1.Seleccione Utilidades➔ Proyecto de Mecanizado de robots (Ctrl + M).
Aparecerá una nueva ventana, como se muestra en la imagen.
2.Seleccione Seleccionar Archivo NC en la sección de Ruta de entrada
3.Proporcione un archivo NC, como una desde la biblioteca predeterminada de RoboDK:
C:/RoboDK/Library/Milling Bowl 3x.nc
Seleccione el robot, el sistema de referencia y la herramienta en la sección superior izquierda del menú, como se muestra en la siguiente imagen:
La trayectoria de herramienta de mecanizado se muestra en verde y las normales de la ruta se muestran como vectores blancos. Desmarque la trayectoria de herramienta visible para ocultar la trayectoria de la herramienta.
La entrada de trayectoria nos permite seleccionar diferentes maneras de proporcionar una trayectoria de herramienta. La trayectoria de herramienta se puede definir mediante:
●Seleccione el archivo NC: Como un archivo NC (obtenido de Cam software), como se describe en esta sección.
●Seleccionar curva: Como una o más curvas, como se describe en la sección de Proyecto de Seguimiento de Curvas.
Es posible importar curvas como una lista de coordenadas en RoboDK.
●Seleccionar puntos: Uno o más puntos, como se describe en la sección Proyecto de seguimiento de puntos.
Es posible importar puntos como una lista de coordenadas en RoboDK.
●Impresión de Objeto 3D: Como un objeto para la impresión 3D. Se utiliza un rebanador para convertir la geometría en una trayectoria de herramienta
Los movimientos de aproximación/retracción se pueden proporcionar en la parte superior derecha del menú.
Seleccione Añadir para añadir un movimiento adicional. La ruta verde se actualizará en consecuencia. Es posible seleccionar entre un movimiento normal (a lo largo de la normal blanca), tangente (a lo largo del camino Verde) o a lo largo de ejes específicos con respecto a la pieza.
Haga doble clic en el valor para modificar la longitud o seleccione Remover para quitar un movimiento específico.
La compensación de ruta de herramienta permite cambiar la orientación preferida de la herramienta a lo largo de la trayectoria. Esta opción se utiliza principalmente para girar la herramienta alrededor del eje Z del TCP.
Debido a que se usa un robot de 6 ejes para ejecutar un programa de fabricación con CNC de 3 ó 5 ejes, tenemos un grado adicional de libertad para definir. Este grado de libertad es usualmente la rotación alrededor del eje Z del TCP.
De forma predeterminada, la compensación de la ruta de herramienta muestra una transformación Rotz(0). Este valor puede ser modificado para establecer la orientación preferida de la herramienta, modificando la orientación alrededor del eje Z del TCP o en combinación con otros ejes. La orientación preferida es la orientación que el robot tratará de mantener mientras sigue la trayectoria de herramienta.
De forma predeterminada, RoboDK utiliza el algoritmo de Cambio Mínimo de orientación de herramienta. Esto significa que la orientación de la herramienta se mantiene lo más constante posible a lo largo de la trayectoria. En general, esta opción es apta para operaciones de fresado ya que minimiza los movimientos de articulaciones de robots. Alternativamente, otros algoritmos/métodos están disponibles, como la orientación de la herramienta siguiendo la trayectoria (útil para aplicaciones de corte), o el robot tomando el objeto si es necesario seguir la trayectoria de herramienta conectada a la máquina robot (por ejemplo, para aplicaciones de dispensación o pulido).
Dada una orientación preferida, el robot puede tener una cierta libertad para dar la vuelta al eje Z de la herramienta. Esto permite al robot realizar el programa evitando singularidades de robots y restricciones de ejes. De forma predeterminada, RoboDK permite que la herramienta gire hasta +/-180 grados alrededor del eje TCP por pasos de 20 grados.
Se recomienda restringir esta rotación en función de la aplicación. Por ejemplo, es posible introducir +/-90 grados para restringir el Permitido Rotación por la mitad.
Si no se alcanzan algunos puntos de la ruta, se recomienda mover el sistema de referencia o ser más permisivo con la rotación de la herramienta Z. El sistema de referencia se puede mover manteniendo pulsada la tecla Alt.
Seleccione actualizar para obtener el programa de acuerdo con los ajustes proporcionados. Se muestra una marca de verificación verde si el programa se puede crear con éxito. A continuación, veremos un nuevo programa en la estación.
Haga doble clic en el programa generado o seleccione Simular para iniciar la simulación del mecanizado robótico.
Haga clic derecho en el programa y seleccione Generar programa de robot (F6) para obtener el programa. Más información sobre la generación de programas en la sección Programa.
RoboDK selecciona automáticamente la configuración de inicio que está más cerca de las articulaciones de inicio preferidas (Articulaciones preferidas para el punto de partida). A partir de ese punto, el robot seguirá movimientos lineales, por lo que la configuración del robot no cambiará.
Un menú desplegable mostrará todas las posibles soluciones para iniciar el programa. Si es necesario, seleccione una configuración preferida y seleccione Actualizar para recalcular el programa.
Es posible mantener la orientación de la herramienta constante a lo largo de la trayectoria. Este comportamiento es útil para aplicaciones de corte o soldadura, por ejemplo.
Seleccione Seguimiento de trayectoria de orientación de la herramientas en el desplegable Seleccionar algoritmo para recalcular la trayectoria de la herramienta preferida. Los otros ajustes son los mismos que tener un Proyecto de mecanizado con una orientación constante de la herramienta.
Es posible programar un robot cuando sostiene el objeto/trayectoria con la herramienta con el robot mientras se realiza la operación de manufactura. Esto es útil para los usos de dispensado de pegamento o de pulido por ejemplo.
Seleccione Agarre Robótico de Objeto en el desplegable Seleccionar algoritmo para colocar correctamente la trayectoria de herramienta en la referencia TCP. Los otros ajustes son los mismos que en el Proyecto de mecanizado con una orientación constante de la herramienta.
Es posible hacer que un robot siga curvas en el espacio 3D con RoboDK. Las curvas en RoboDK se pueden seleccionar desde aristas de objeto o Importados como una lista de puntos en archivos CSV. Esta opción es útil para aplicaciones de soldadura por robot, por ejemplo.
Seleccione Utilidades➔Proyecto de Seguimiento de Curva para abrir los ajustes de seguimiento de curvas. Estos ajustes son los mismos que para Proyecto de Mecanizado Robótico, la única diferencia es que la Entrada de Trayectoria está preajustada para Seleccionar curva.
Seleccione Seleccione Curva para seleccionar la(s) curva(s) en la pantalla.
Seleccione las curvas con el clic izquierdo del ratón. Al seleccionar la misma curva dos veces cambiará la dirección del movimiento. Además, hacer clic derecho en una curva seleccionada previamente permite cambiar el sentido o anular la selección de una curva seleccionada previamente.
Haga clic derecho en la pantalla y seleccione Hecho o pulse la tecla Esc para volver al menú de ajustes. El camino verde mostrará el movimiento del robot con respecto al objeto.
Algunas opciones adicionales están disponibles en la parte superior derecha de los ajustes, como la velocidad de la herramienta y si se deben aplicar los movimientos de aproximación/retracción para cada curva. La configuración predeterminada se muestra en la siguiente imagen:
Las curvas se pueden importar en RoboDK desde un archivo CSV o un archivo de texto seleccionando Utilidades➔Importar curvas. Aparecerá un nuevo elemento en la estación que muestra la curva como un objeto.
El archivo puede ser un archivo de texto con las coordenadas 3D de cada punto de la curva. Opcionalmente, la orientación del eje Z de la herramienta se puede proporcionar como un vector I,J,K.
Opcionalmente, las curvas existentes de un objeto se pueden exportar como un archivo CSV (haciendo clic con el botón derecho en una curva, luego, seleccionando exportar curva), modificado y reimportado de nuevo en RoboDK.
Es posible hacer que un robot siga los puntos en el espacio 3D con RoboDK. Los puntos en RoboDK pueden ser extraídos de objetos, curvas o Importados como una lista de puntos en archivos CSV. Esta opción es útil para la soldadura por puntos o aplicaciones de perforación, por ejemplo. El siguiente vídeo muestra un ejemplo para configurar una aplicación de soldadura por puntos: Ver vídeo.
Seleccione Utilidades➔Proyecto de Seguimiento de Punto para abrir la configuración de seguimiento de punto. Estos ajustes son los mismos que para Proyecto de Maquinado Robótico, la única diferencia es que la Entrada de ruta está preajustada para Seleccionar Puntos.
Seleccione Seleccionar Puntos para seleccionar el (los) punto (s) en la pantalla.
Seleccione los puntos con un clic izquierdo del ratón. Seleccionando el mismo punto dos veces intercambiará la dirección de aproximación. También, haciendo clic con el botón derecho permite seleccionar los puntos que siguen seleccionando Seleccionar siguiente.
Haga clic derecho en la pantalla y seleccione Hecho o pulse la tecla Esc para volver al menú de ajustes. El trazado verde mostrará el movimiento del robot con respecto al objeto.
Algunas opciones adicionales están disponibles en la parte superior derecha de la configuración, como la velocidad de la herramienta y la distancia de aproximación. La configuración predeterminada se muestra en la siguiente imagen:
Una lista de puntos puede ser importado de un archivo de texto o un archivo CSV seleccionando Utilidades➔Importar Puntos. Un nuevo elemento aparecerá en la estación que muestra los puntos como un objeto.
El archivo puede ser un archivo de texto con las coordenadas 3D de cada punto de la curva. Opcionalmente, la orientación del eje Z de la herramienta se puede proporcionar como un vector I,J,K.
Opcionalmente, las curvas existentes de un objeto se pueden convertir en puntos haciendo clic derecho en una curva, luego, seleccionando Extraer puntos de curva.
La impresión 3D o fabricación aditiva es el proceso de hacer objetos sólidos tridimensionales desde un archivo digital. Los brazos robots industriales pueden ser utilizados como una impresora 3D de 3 ejes o como una impresora 3D de 5 ejes con RoboDK. El siguiente vídeo muestra una visión general de cómo configurar la impresión 3D con RoboDK fuera de línea: Ver vídeo.
La impresión 3D con los robots es posible en una de las siguientes formas:
●Convierta directamente programas de código G (archivo NC) a programas de robot con RoboDK, como se muestra con el Proyecto de mecanizado de robots. La tasa de flujo de material (directiva E de extrusora) está correctamente tenida en cuenta para cada movimiento y se puede integrar en el programa generado como un Evento del programa. El código G es un tipo de archivo del NC soportado por RoboDK y es también un formato soportado por muchas impresoras 3D. La mayoría de los softwares rebanadores pueden generar el código G dado un archivo de STL.
●Seleccione Utilidades➔Proyecto de Impresión 3D para abrir la configuración de impresión 3D. Estos ajustes son los mismos que para el Proyecto de Mecanizado Robótico, la única diferencia es que el Entrada de ruta está preajustada para imprimir objeto 3D. Seleccione Seleccionar Objeto para seleccionar el objeto en la pantalla principal y obtenga automáticamente la trayectoria de herramienta. Seleccione opciones de impresión 3D para abrir Slic3r.
De forma predeterminada, RoboDK traduce la directiva E como una llamada de programa a un programa llamado Extrusora y pasando el valor E como parámetro. Seleccione Eventos del programa para cambiar este comportamiento.
El valor de la Extrusora (E) presenta la cantidad de material que necesita ser sacado antes de cada movimiento. Este valor se puede utilizar para impulsar la alimentación de la extrusora desde el robot teniendo en cuenta la velocidad del robot y la distancia entre los puntos.
Alternativamente, es posible calcular la alimentación de la extrusora utilizando un post-procesador y generar el código apropiado en consecuencia. La siguiente sección proporciona un ejemplo.
Esta sección muestra cómo modificar un post-procesador robótico para calcular la alimentación de la extrusora antes ejecutar cada movimiento. Alternativamente, estos cálculos se pueden hacer en el controlador del robot.
El primer paso es interceptar las llamadas de la Extrusora y leer los nuevos valores de Extrusora (valores E) desde la sección RunCode en el postprocesador:
def RunCode(self, code, is_function_call = False):
if is_function_call:
if code.startswith("Extruder("):
# Intercept the extruder command.
# if the program call is Extruder(123.56)
# extraemos el número como una cadena
# y convertirlo a un número
Self.PRINT_E_NEW = float(code[9:-1])
# Skip the program call generation
return
else:
self.addline(code + "()")
else:
# Output program code
self.addline(code)
El valor de la Extrusora (longitud) se guarda como ela variable PRINT_E_NEW. Entonces, necesitamos definir un nuevo procedimiento que genere comandos de alimentación de extrusoras según la Distancia entre movimientos, la velocidad del robot y la aceleración del robot. Este asume que la alimentación de la extrusora es conducida por una salida analógica específica desde el controlador del robot (salida analógica número 5 en este ejemplo).
def new_move(self, pose2):
'''Output the Extruder signal to have a constant flow
Dada la cantidad de material que necesita ser extruido,
la distancia entre los 2 puntos y la velocidad del robot ' ' ' '
if self.PRINT_POSE_LAST is None:
self.PRINT_POSE_LAST = pose2
return
def Calculate_Time(Dist, Vmax, Amax):
'''Calculate the time to move Dist with Amax acceleration and Vmax speed'''
tacc = Vmax/Amax;
Xacc = 0.5*Amax*tacc*tacc;
if Dist <=2*Xacc:
# Vmax is not reached
tacc = sqrt(Dist/Amax)
Ttot = tacc*2
else:
# Vmax is reached
Xvmax = Dist -2*Xacc
Tvmax = Xvmax/Vmax
Ttot = 2*tacc + Tvmax
return Ttot
add_material = self.PRINT_E_NEW - self.PRINT_E_LAST
self.PRINT_E_LAST = self.PRINT_E_NEW
if add_material >0:
distance_mm = norm(subs3(self.PRINT_POSE_LAST.Pos(), pose2.Pos()))
# calculate movement time in seconds
time_s = Calculate_Time(distance_mm, self.SPEED_MMS, self.PRINT_ACCEL_MMSS)
# add material
Señal = Min(Automático.PRINT_FLOW_MAX_SIGNAL , Automático.PRINT_FLOW_2_SIGNAL * add_material/time_s)
self.setDO(self.PRINT_E_AO,"%.3f" %(signal))
else:
# DO not add material
self.setDO(self.PRINT_E_AO,"0")
# Remember the last position
self.PRINT_POSE_LAST = pose2
Debemos añadir las siguientes variables en la cabecera del postprocesador para que el código anterior funcione:
# Clase de objeto que maneja las instrucciones/Syntax del robot
Clase RobotPost(Objeto):
"""Robot post object"""
...
# 3D Printing Extruder Setup Parameters:
PRINT_E_AO =5# Analog ID de salida para ordenar el flujo de extrusora
PRINT_FLOW_2_SIGNAL =0,05# Ratio para convertir el flujo a una señal analógica
PRINT_FLOW_MAX_SIGNAL =24# Señal máxima para proporcionar a la extrusora
PRINT_ACCEL_MMSS =1E9# Acceleration (asuma la velocidad constante si utilizamos el redondeo/la mezcla)
# Internal 3D Printing Parameters
PRINT_POSE_LAST =Ninguno# Última pose impresa
PRINT_E_LAST =0# Última longitud del estirador
PRINT_E_NEW =0# Nueva longitud del estirador
...
Finalmente, también necesitamos disparar el comando new_move con cada nueva instrucción de movimiento. Podemos añadir esta llamada en el principio del comando MoveL:
def MoveL(self, pose, joints, conf_RLF=None):
"""Add a linear movement"""
self.new_move(pose) # used for 3D printing