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 algunos ejemplos que implican mecanizado robótico. Algunos de estos ejemplos utilizan un plugin para mostrar cómo generar la trayectoria de herramienta CAM. Sin embargo, puede cargar cualquier trayectoria de herramienta genérica de 5 ejes en RoboDK, como archivos APT, NC o G-code.
Obtenga más información sobre proyectos de ejemplo en la sección de ejemplos.
Visite la sección de Addins CAD/CAM de nuestra documentación para ver más ejemplos de proyectos de mecanizado robótico, como Mastercam, MecSoft/RhinoCAM, Inventor, FeatureCAM o Fusion 360.
Este ejemplo le ayudará a comprender los conceptos básicos del mecanizado robótico en RoboDK y cómo convertir un trabajo de mecanizado robótico de 3 ejes en una simulación de mecanizado robótico y un programa de robot.
Obtenga más información sobre este ejemplo de mecanizado robótico.
Este ejemplo le ayudará a comprender cómo puede configurar los ajustes de mecanizado robótico en RoboDK y cómo convertir un trabajo de mecanizado robótico de 5 ejes en una simulación de mecanizado robótico y un programa de robot.
Este ejemplo también le ayudará a crear movimientos seguros de acercamiento/retracción entre distintas operaciones del trabajo de mecanizado.
Obtenga más información sobre este ejemplo.
Este ejemplo muestra cómo utilizar un robot KUKA con 3 ejes externos adicionales para mecanizado robótico. La célula incluye un brazo robótico de 6 ejes, un carril de un eje y una mesa giratoria de 2 ejes.
Más información disponible en la sección de ejemplos de RhinoCAM. La integración entre RhinoCAM y RoboDK carga automáticamente los archivos APT de RhinoCAM a RoboDK.
Este ejemplo muestra cómo utilizar un robot Yaskawa/Motoman para una aplicación de corte por láser. La trayectoria de corte del robot se define utilizando el Addin de RoboDK para Autodesk Fusion.
Obtenga más información sobre este ejemplo de corte por láser.
Este ejemplo muestra cómo utilizar un robot Yaskawa/Motoman para mecanizado robótico y el Addin de RoboDK para Mastercam. RoboDK admite la carga automática de archivos NCI o NC generados por Mastercam.
Visite el ejemplo de mecanizado robótico de 3 ejes con Mastercam para obtener más información.
Obtenga más información sobre este ejemplo de mecanizado de moldes.
Este ejemplo muestra cómo utilizar un robot ABB para desbarbado. Este ejemplo incluye una operación de recogida y colocación (pick and place).
Obtenga más información sobre este ejemplo de desbarbado de plástico.
Este ejemplo muestra cómo utilizar un robot KUKA para pulido.
Obtenga más información sobre este ejemplo de desbarbado de plástico.
Esta sección muestra cómo preparar un proyecto de RoboDK simple, sin conexión, para mecanizado robótico. La célula de mecanizado robótico debe tener al menos un robot, una herramienta (EOAT) y un sistema de referencia (también conocido como sistema de coordenadas, referencia de pieza o datum). Más información sobre cómo construir una nueva estación en RoboDK en la sección primeros pasos.

Los siguientes pasos muestran cómo preparar una configuración de mecanizado robótico con un robot KUKA KR210 y un husillo de fresado Teknomotor (este ejemplo está disponible en la biblioteca como Sample-New-Project.rdk).
1.Seleccione un robot:
a.Seleccione Archivo
b.Use los filtros para encontrar su robot por marca, carga útil, ...
Por ejemplo, seleccione el KUKA KR210 R2700 (carga útil de 210 kg, alcance de 2,7 m).
c.Seleccione Descargar y el robot debería aparecer automáticamente en la pantalla principal.
2.Seleccione una herramienta:
a.Desde la misma biblioteca en línea, seleccione Restablecer para quitar los filtros y filtre por TipoHerramienta.
b.Seleccione Descargar para cargar una herramienta de husillo como el husillo Teknomotor ATC71-C-LN.
c.El husillo se conectará automáticamente al robot.
d.Cierre la ventana de la Biblioteca en línea.
3.Agregar un sistema de referencia:
a.Seleccione el sistema de referencia base del robot (llamado KUKA KR210 R2700 Base).
b.Seleccione Programa
c.Haga doble clic en la referencia e introduzca las coordenadas:
XYZABC = [1500,1000,500,0,0,0] (mm-deg)
d.Cambie el nombre del nuevo sistema de referencia a Referencia de Fresado introduciendo un nuevo nombre o seleccionando F2.
4.Agregue el objeto que utilizará para el mecanizado robótico (opcional):
a.Seleccione Archivo
b.Seleccione un objeto llamado Object Chess Rook.sld desde la biblioteca de RoboDK:
C:/RoboDK/Library
c.Arrastre y suelte el objeto sobre la Referencia de Fresado si no se colocó allí automáticamente (dentro del árbol de la estación)
5.Haga doble clic en el robot para ver el panel del robot (opcional). El panel del robot muestra la herramienta activa y el sistema de referencia activo. Al seleccionar y actualizar la herramienta y el sistema de referencia, deberíamos ver las mismas coordenadas visibles en el controlador del robot. De forma predeterminada, el husillo Teknomotor tiene el TCP en la raíz del portaherramientas. La herramienta (TCP) tendrá una determinada longitud. En este ejemplo, actualizaremos el TCP para representar la longitud de la fresa:
a.Actualice la coordenada X de la herramienta (TCP) a 375 mm. Verá que el TCP se mueve a lo largo del eje.
b.(opcional) también podría crear una segunda herramienta y definir un TCP relativo con respecto a la primera añadiendo una traslación a lo largo del eje Z.
c.Cierre la ventana del panel del robot.

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➔
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
Cambie el nombre del proyecto de mecanizado robótico a Machining Settings haciendo clic derecho en el nuevo elemento del árbol y seleccionando Cambiar nombre (F2).

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.
Puede seleccionar Actualizar para ver si es posible crear un programa de mecanizado robótico con la configuración predeterminada. Si el programa se generó correctamente, verá una marca de verificación verde. Después puede seleccionar Simular o hacer doble clic en el programa generado para ver el inicio de la simulación.

Si ve una cruz roja con un mensaje de advertencia, significa que su programa de mecanizado robótico no es viable. Es posible que deba cambiar algunos ajustes, como la orientación de la herramienta, los parámetros de optimización, el punto de inicio o la ubicación de la pieza.
Las siguientes secciones proporcionan más información sobre cómo personalizar la configuración de mecanizado robótico.
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


Seleccione Eventos de programa para mostrar eventos especiales que deben tenerse en cuenta al generar programas de robot. Esto incluye activar un cambio de herramienta, establecer la velocidad del husillo en RPM o activar programas específicos al inicio o al final del programa.
Puede especificar un valor de redondeo en Eventos de programa. Esto creará automáticamente una instrucción de redondeo al principio de su programa y ayudará a que los programas de mecanizado robótico sean más suaves, evitando que el robot vibre. Por ejemplo, en un robot ABB esto establecerá el valor ZoneData en mm, en un robot Fanuc esto establecerá el valor CNT como un porcentaje y en los controladores de Universal Robots establecerá el valor de blending en mm.
Si utiliza archivos G-code o NCI, los códigos M personalizados se activarán de forma predeterminada como llamadas a la función M_RunCode (el código M se pasa como parámetro). Puede eliminar las llamadas M personalizadas borrando la llamada a M_RunCode.

Mueva el cursor del ratón sobre el campo correspondiente para obtener más información sobre cómo personalizar cada sección.
Por ejemplo, al cambiar la herramienta puede usar el valor %1 para representar el ID de herramienta proporcionado por su software CAM. Si prefiere activar funciones estáticas en lugar de pasar argumentos, puede reemplazar SetTool(%1) por SetTool%1. Al usar la herramienta 2, esto generaría SetTool2 en lugar de SetTool(2).
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 objetosi 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.

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.

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 
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.

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.

Más información disponible en la sección Addin de RoboDK para Autodesk Fusion.
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.
Para trabajar con un CFP, siga este procedimiento:
1.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.
2.Seleccione Seleccione Curva para seleccionar la(s) curva(s) en la pantalla.

3.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.

4.Puede seleccionar Actualizar para ver si es posible crear un programa de robot con la configuración predeterminada. Si el programa se generó correctamente, verá una marca de verificación verde. Después puede seleccionar Simular o hacer doble clic en el programa generado para ver el inicio de la simulación.
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:

El programa se puede personalizar y optimizar aún más utilizando las mismas funciones que se muestran en la sección de mecanizado robótico.
Las curvas se pueden extraer de las características de objetos 3D importados a RoboDK seleccionando Herramientas Crear Curvas.

Aparecerá un panel en el lado izquierdo de la ventana de RoboDK; podrá extraer curvas mientras este panel esté activo y la opción "Extraer curvas automáticamente" esté habilitada.

Puede pasar el cursor sobre el objeto 3D del que desea extraer la curva. Aparecerá una línea fina de color azul claro que representa la curva. Las flechas blancas en distintos puntos representan la normal de la curva; esta es la dirección desde la que se aproximará la herramienta.

Puede cambiar la orientación de las normales de la curva (dirección de aproximación) desplazando ligeramente el ratón en vertical u horizontal. El tamaño de paso predeterminado es de 15 grados y se controla mediante la opción "Paso de inclinación (grados)" en el Panel de creación de curvas.
Cuando haya identificado la curva correcta, haga clic en ella sin mover el ratón. Repita esto hasta que haya seleccionado todas las curvas que desea usar en un Proyecto de Seguimiento de Curva.

RoboDK incluye distintas herramientas para ayudarle a modificar curvas incluso después de extraerlas. Si simplemente desea modificar la normal, puede hacerlo yendo a Herramientas Modificar Curvas. Esta función le permitirá cambiar las normales en cualquier curva creada previamente.
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.

Las curvas se pueden importar en RoboDK desde un archivo CSV o un archivo de texto seleccionando Utilidades Importar Curva. 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, se puede proporcionar la orientación del eje Z de la herramienta como un vector i,j,k. Todas las coordenadas deben ser relativas al sistema de coordenadas de la pieza.
Opcionalmente, las curvas existentes de un objeto se pueden exportar como un archivo CSV (haga clic derecho en una curva y seleccione Exportar curva), modificarlas y volver a importarlas en RoboDK.

Más información y ejemplos sobre cómo personalizar la importación de archivos CSV o TXT como curvas o puntos está disponible en la sección de ejemplos de la API de 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 postprocesador de robot para calcular la velocidad de la extrusora antes de ejecutar una instrucción de movimiento para impresión 3D. Alternativamente, estas operaciones se pueden realizar en el controlador del robot con la llamada de programa Extruder (comando predeterminado para controlar la extrusora).
Personalizando un postprocesador de robot, es posible facilitar la integración de una extrusora para impresión 3D antes de enviar el programa al robot. Para lograr esta tarea, necesitamos realizar algunos cálculos y generar código personalizado cuando se genera el programa en el postprocesador del robot.
El primer paso es interceptar las llamadas a Extruder y leer los nuevos valores de Extruder (valores E) dentro de la sección RunCode del postprocesador. La siguiente sección procesa todas las llamadas de programa generadas para un programa:
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)
# we extract the number as a string
# and convert it to a number
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 Extruder (longitud/E) se guarda como la variable PRINT_E_NEW en el postprocesador del robot.
Necesitamos activar una llamada a la función new_move con cada nueva instrucción de movimiento lineal. Podemos añadir esta llamada al principio del comando MoveL:
def MoveL(self, pose, joints, conf_RLF=None):
"""Add a linear movement"""
# Handle 3D printing Extruder integration
self.new_move(pose)
...
También debemos añadir las siguientes variables en la cabecera del postprocesador para calcular los incrementos de la extrusora:
# 3D Printing Extruder Setup Parameters:
PRINT_E_AO = 5 # Analog Output ID to command the extruder flow
PRINT_SPEED_2_SIGNAL = 0.10 # Ratio to convert the speed/flow to an analog output signal
PRINT_FLOW_MAX_SIGNAL = 24 # Maximum signal to provide to the Extruder
PRINT_ACCEL_MMSS = -1 # Acceleration, -1 assumes constant speed if we use rounding/blending
# Internal 3D Printing Parameters
PRINT_POSE_LAST = None # Last pose printed
PRINT_E_LAST = 0 # Last Extruder length
PRINT_E_NEW = None # New Extruder Length
PRINT_LAST_SIGNAL = None # Last extruder signal
Finalmente, necesitamos definir un nuevo procedimiento que genere los comandos de alimentación de la extrusora adecuados según la distancia entre movimientos, la velocidad del robot y la aceleración del robot. Esto asume que la alimentación de la extrusora se controla mediante una salida analógica específica o una llamada de programa personalizada.
Necesitamos añadir el siguiente código antes de la definición del programa def MoveL.
def calculate_time(self, distance, Vmax, Amax=-1):
"""Calculate the time to move a distance with Amax acceleration and Vmax speed"""
if Amax < 0:
# Assume constant speed (appropriate smoothing/rounding parameter must be set)
Ttot = distance/Vmax
else:
# Assume we accelerate and decelerate
tacc = Vmax/Amax;
Xacc = 0.5*Amax*tacc*tacc;
if distance <= 2*Xacc:
# Vmax is not reached
tacc = sqrt(distance/Amax)
Ttot = tacc*2
else:
# Vmax is reached
Xvmax = distance - 2*Xacc
Tvmax = Xvmax/Vmax
Ttot = 2*tacc + Tvmax
return Ttot
def new_move(self, new_pose):
"""Implement the action on the extruder for 3D printing, if applicable"""
if self.PRINT_E_NEW isNone or new_pose is None:
return
# Skip the first move and remember the pose
if self.PRINT_POSE_LAST isNone:
self.PRINT_POSE_LAST = new_pose
return
# Calculate the increase of material for the next movement
add_material = self.PRINT_E_NEW - self.PRINT_E_LAST
self.PRINT_E_LAST = self.PRINT_E_NEW
# Calculate the robot speed and Extruder signal
extruder_signal = 0
if add_material > 0:
distance_mm = norm(subs3(self.PRINT_POSE_LAST.Pos(), new_pose.Pos()))
# Calculate movement time in seconds
time_s = self.calculate_time(distance_mm, self.SPEED_MMS, self.PRINT_ACCEL_MMSS)
# Avoid division by 0
if time_s > 0:
# This may look redundant but it allows you to account for accelerations and we can apply small speed adjustments
speed_mms = distance_mm / time_s
# Calculate the extruder speed in RPM*Ratio (PRINT_SPEED_2_SIGNAL)
extruder_signal = speed_mms * self.PRINT_SPEED_2_SIGNAL
# Make sure the signal is within the accepted values
extruder_signal = max(0,min(self.PRINT_FLOW_MAX_SIGNAL, extruder_signal))
# Update the extruder speed when required
if self.PRINT_LAST_SIGNAL isNone or abs(extruder_signal - self.PRINT_LAST_SIGNAL) > 1e-6:
self.PRINT_LAST_SIGNAL = extruder_signal
# Use the built-in setDO function to set an analog output
self.setDO(self.PRINT_E_AO, "%.3f" % extruder_signal)
# Alternatively, provoke a program call and handle the integration with the robot controller
#self.addline('ExtruderSpeed(%.3f)' % extruder_signal)
# Remember the last pose
self.PRINT_POSE_LAST = new_pose
La fabricación aditiva (o impresión 3D) con robots se puede lograr preparando trayectorias de herramienta en un laminador (slicer) como Ultimaker Cura y convirtiendo el código G generado en programas de robot con RoboDK.
Este ejemplo muestra cómo utilizar Cura con RoboDK para la impresión 3D a gran escala de un molde de casco de barco utilizando un robot ABB IRB 6640, una extrusora CEAD y un carril lineal ABB IRBT 6004.

La impresión 3D con Cura y RoboDK es posible de una de las siguientes formas:
1.Crear una impresora FFF personalizada en Cura que coincida con el espacio de trabajo del robot.
2.Importar el modelo 3D (archivo STL) en Cura y aplicar una inclinación de 45° antes de laminar.
3.Laminar el STL rotado y generar un programa de código G.
4.Convertir el código G de Cura en un programa de robot en RoboDK.
5.Simular el proceso de extrusión inclinado en RoboDK y exportar código ABB RAPID.
Abra Ultimaker Cura → Ajustes → Impresora → Añadir impresora, después seleccione Personalizada → Impresora FFF personalizada.

Configure el volumen de impresión para que coincida con el robot y el carril:
6.X: 6000 mm
7.Y: 2500 mm
8.Z: 2000 mm
Desactive los controles del calentador porque la extrusora CEAD gestiona el calentamiento externamente.

El modelo STL debe rotarse 45° en Cura antes de laminar.
9.Seleccione el objeto.
10.Utilice la herramienta Rotar de Cura para inclinar la pieza 45°.
11.Lamine el STL rotado.


Después de inclinar el modelo, lamínelo en Cura y guarde el programa como un archivo .gcode.
En RoboDK, seleccione Utilidades → Convertir programa NC y elija el archivo de Cura.

En el cuadro de diálogo de importación NC:
12.Seleccione el robot ABB IRB 6640.
13.Añada el carril ABB IRBT 6004 como eje externo.
14.Seleccione la extrusora CEAD como herramienta.
15.Defina el sistema de referencia (plataforma del casco del barco).
De forma predeterminada, RoboDK traduce la directiva E de Cura como una llamada de programa a un programa llamado Extruder, pasando el valor E como parámetro.
Esto se puede modificar en Herramientas → Opciones → Eventos de programa.

Cuando se importa el código G de Cura, RoboDK simula el proceso de extrusión inclinado:
16.El ABB IRB 6640 sigue la trayectoria de herramienta de Cura.
17.La extrusora CEAD se sincroniza con el movimiento del robot.
18.La orientación de la herramienta refleja la inclinación de 45° aplicada en Cura.