G4781 - Toro Coronado
G4781 - Toro Coronado
G4781 - Toro Coronado
Autor:
David Toro Coronado
Tutor:
Dr. Federico Cuesta Rojo
Profesor titular
iii
Trabajo Fin de Grado: Desarrollo de Estación de Impresión 3D con Arcilla para un Robot ABB IRB 4600
El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros:
Presidente:
Vocales:
Secretario:
Sevilla, 2023
v
A mis padres
A mis compañeros
A Enrique y Juan Carlos
A David Gómez
vii
Agradecimientos
En el transcurso de esta enriquecedora experiencia por la Escuela de Ingeniería, deseo expresar mi profundo
agradecimiento a quienes han sido mi inquebrantable apoyo a lo largo de este camino académico. En primer
lugar, quiero destacar la importancia de mis padres, cuya dedicación constante y fe inquebrantable en mí han
sido la fuente de inspiración detrás de cada logro alcanzado. Asimismo, deseo agradecer a mis amigos,
compañeros de viaje en esta emocionante etapa académica, sus palabras de aliento, su amistad y apoyo moral
que han sido un pilar sobre el que apoyarse.
Además, mi gratitud se extiende a dos figuras fundamentales en mi desarrollo académico y el de este proyecto:
Federico Cuesta, mi tutor, cuyas orientaciones y enseñanzas han sido cruciales para la culminación de este
proyecto y, también, a Enrique Vázquez, director del FabLab, a quien le estoy profundamente agradecido por
confiar en mí y brindarme la libertad necesaria para abordar de manera independiente este desafío. Esta
autonomía no solo ha permitido mi crecimiento como profesional, sino que también ha sido un motor que
impulsó mi creatividad y mi capacidad para asumir la responsabilidad de mis propias decisiones. Su confianza
ha sido un factor determinante en el éxito de este trabajo y en mi desarrollo personal y académico.
ix
Resumen
Este proyecto, nace de la necesidad de crear una estación de fabricación aditiva con arcilla en el Laboratorio de
Fabricación de la Facultad de Arquitectura de la Universidad de Sevilla
Los equipos que se adquirieron para este proyecto son, primero, un Robot ABB IRB4600 con capacidad de
carga de 60Kg, gobernado por un control IRC5 de ABB y, segundo, un extrusor WASP3D XL para impresoras
3D de arcilla.
El desafío surge cuando se busca integrar ambos equipos, ya que ninguno de los fabricantes proporciona una
compatibilidad nativa, lo que implica la necesidad de una solución personalizada para lograr que trabajen
conjuntamente. Además, no existe software comercial disponible que permita la impresión directa con estos
robots, lo que ha requerido el desarrollo de un software dedicado basado en la integración de diversas
aplicaciones.
El propósito de esta investigación es analizar el estado actual de la impresión con robots ABB y arcilla, y a partir
de este análisis, diseñar el hardware abordando los desafíos de compatibilidad y seleccionando los componentes
más adecuados. Además, se desarrollará el software necesario para operar la Estación de Impresión desde un
programa CAD que permitirá tanto el diseño de modelos como el envío de instrucciones a la estación para su
impresión. Esta iniciativa busca establecer una base sólida para la fabricación con arcilla en el entorno del
FabLab, proporcionando una plataforma desde la cual se podrán realizar avances significativos en este campo.
El trabajo presentado en este documento muestra el estado del arte de la impresión con Robots y arcilla.
También, la adaptación del extrusor al brazo ABB mediante una anilla impresa en 3D, la interconexión efectiva
entre ambos equipos y la incorporación de un Arduino Uno para el control del motor paso a paso del extrusor.
Asimismo, se detalla el diseño y la configuración de la estación en RobotStudio, el uso de la librería COMPAS
FAB y la creación de software personalizado para habilitar la impresión desde Rhino 7 utilizando el robot
IRB4600.
xi
Abstract
This project arises from the need to create an additive manufacturing station for clay in the Manufacturing
Laboratory of the School of Architecture at the University of Seville.
The equipment acquired for this project consists of, firstly, an ABB IRB4600 robot with a 60Kg payload
capacity, controlled by an ABB IRC5 controller, and secondly, a WASP3D XL extruder for clay printers.
The challenge appears when attempting to integrate both pieces of equipment since neither of the manufacturers
provides native compatibility, necessitating a custom solution to make them work together. Furthermore, there
is no commercial software available that allows direct printing with these robots, which has required the
development of dedicated software based on the integration of various applications.
The purpose of this research is to analyze the current state of printing with ABB robots and clay, and based on
this analysis, design the hardware to address compatibility challenges and select the most suitable components.
Additionally, the necessary software will be developed to operate the Printing Station from a CAD program that
will enable both model design and sending instructions to the station for printing. This initiative aims to establish
a solid foundation for clay manufacturing within the FabLab environment, providing a platform from which
significant advancements in this field can be made.
The work presented in this document showcases the state of the art in printing with Robots and clay. It also
covers the adaptation of the extruder to the ABB arm using a 3D-printed ring, effective interconnection between
both pieces of equipment, and the incorporation of an Arduino Uno for controlling the extruder's stepper motor.
Furthermore, it details the design and configuration of the station in RobotStudio, the use of the COMPAS FAB
library, and the creation of custom software to enable printing from Rhino 7 using the IRB4600 robot.
xiii
Índice
Agradecimientos ix
Resumen xi
Abstract xiii
Índice xv
Índice de Figuras xvii
Índice de Tablas xxi
Notación xxii
1. Introducción y Objetivos 23
1.1. Estación de prototipado en FabLab 23
1.2. Estado del arte 23
1.2.1. Impresión con arcilla y materiales similares 25
1.2.2. Impresión 3D con brazos robóticos 26
1.2.3. Instalaciones similares 29
1.3. Solución particular 30
1.4. Metodología 31
2. Descripción del Hardware 32
2.1. IRB 4600. 32
2.1.1. Conexiones de usuario en el robot. 35
2.1.2. TR IRBT 2005 37
2.2. IRC5 Controller 38
2.3. Extrusor y tanque de arcilla 39
2.3.1. Anilla de acople del extrusor. 40
2.4. Conexión del extrusor WaspXL con IRC5 43
2.4.1. Conexión eléctrica 44
2.4.2. Stepper driver 44
2.4.3. Arduino Uno 46
3. Desarrollo Software 48
3.1. Diseño de la estación en RobotStudio 48
3.1.1. Elementos básicos 48
3.1.2. Creación de la herramienta 50
3.1.3. Tanque de arcilla 52
3.2. Compas 54
3.2.1. Compas FAB 54
3.2.2. Docker 57
3.2.3. Compas RRC 58
3.3.3. Grasshopper 58
3.4. Procesado de modelos 3D 60
3.4.1. Generar robot 61
3.4.2. Procesado de modelos 3D 65
xv
3.4.3. Procesado de modelos 3D. Método para esferas 68
3.4.4. Procesado de puntos y envío a RobotStudio 71
4. Uso de la estación 75
4.1. Secuencia de inicio 75
4.1.1. Configuración para el robot real 75
4.1.2. Configuración para la simulación 78
5. Conclusiones 80
Referencias 82
Índice de Figuras
xvii
Figura 3.3 RobotStudio. Elementos estación inicial. 49
Figura 3.4 RobotStudio. Estación con brazo y track. 50
Figura 3.5 RobotStudio. Creación de herramientas (A) 51
Figura 3.6 RobotStudio. Creación de herramientas (B) 51
Figura 3.7 RobotStudio. IRB4600 con herramienta propia. 52
Figura 3.8 RobotStudio. Galería de imágenes del brazo con el Taque de arcilla simulado. 53
Figura 3.9 Estructura del software utilizado para comunicar Rhino y RobotStudio. [22] 55
Figura 3.10 Ejemplo de COMPAS FAB. Definición de un punto. 56
Figura 3.11 Ejemplo de COMPAS FAB. Transformaciones. 56
Figura 3.12 Ejemplo COMPAS FAB. Creación de robot con LINK. 56
Figura 3.13 Ejemplo COMPAS FAB. Cinemática directa e inversa. 57
Figura 3.14 Grasshopper. Ejemplo básico. 58
Figura 3.15 Grasshopper. Bloques disponibles en la librería de COMPAS FAB. 59
Figura 3.16 Programa de impresión 3D desarrollado. Vista completa. 60
Figura 3.17 Grasshopper. Sección generar robot. 61
Figura 3.18 Grasshopper. Bloque Robot Visualize 61
Figura 3.19. IRB4600 en Rhino 64
Figura 3.20 Grasshopper. Procesado de modelos 3D 65
Figura 3.21 Cilindro de ejemplo en Rhino 65
Figura 3.22 Grasshopper. Procesado de modelos 3D. Zoom 1 66
Figura 3.23. Modelo 3D. Cilindro con Wireframe en verde 66
Figura 3.24 Grasshopper. Procesado de modelos 3D. Zoom 2 66
Figura 3.25 Grasshopper. Procesado de modelos 3D. Zoom 3 67
Figura 3.26 Modelo 3D. Cilindro con puntos de capas en verde 67
Figura 3.27 Grasshopper. Procesado de modelos esféricos 68
Figura 3.28 Ejemplo de modelo con jarrón en Rhino 68
Figura 3.29 Grasshopper. Procesado de modelos esféricos. Zoom 1 69
Figura 3.30 Modelo 3D. Superficie de revolución 69
Figura 3.31 Grasshopper. Procesado de modelos esféricos. Zoom 2 69
Figura 3.32 Grasshopper. Procesado de modelos esféricos. Zoom 3 70
Figura 3.33 Procesado de modelos esféricos. Desplazamientos del cabezal de impresión 71
Figura 3.34 Procesado de modelos esféricos. Secuencia de puntos de cada capa 71
Figura 3.35 Grasshopper. Envío a RobotStudio 71
Figura 3.36 Grasshopper. Envío de puntos. Zoom 1 72
Figura 3.37 Grasshopper. Envío de puntos. Zoom 2 72
Figura 3.38. Orientación correcta de la herramienta en RobotStudio 73
Figura 3.39 Orientación errónea de la herramienta en RobotStudio 73
Figura 4.1. IRC5 con controles ampliados. 75
Figura 4.2. Selector de modo de tres opciones presente en el controlador IRC5 del FabLab 76
Figura 4.3. RobotStudio. Conexión con un clic 77
Figura 4.4 RobotStudio. Situar puntero de programa en Main 78
Figura 4.5 Log Output de RobotStudio (parte inferior de la estación) 78
Figura 4.6 RobotStudio. Controles de simulación 78
xix
Índice de Tablas
xxi
Notación
Otro tipo de impresión bastante extendido es el SLA (StereoLithograohy Apparatus) donde se utilizan resinas
fotosensibles que se solidifican mediante un láser UV de alta potencia, de igual manera que en las impresoras
FDM, el modelo digital se segmenta en capas para que la impresora pueda unir lámina a lámina la resina
formando el objeto tridimensional. El funcionamiento de este tipo de impresoras es más complejo y costoso que
el anterior ya que la impresión se realiza, pero podemos obtener resultados mucho más precisos.
Si comparamos los precios con las anteriores el rango se eleva significativamente encontrando las opciones más
económicas cerca del millar de euros, y la gama alta pudiendo alcanzar cinco cifras.
Estos dos tipos son los más extendidos, pero existen algunos menos populares como el SLS (Selective Laser
Sintering) utilizado habitualmente en la industria debido a su alta velocidad y gran volumen de fabricación.
Utiliza un láser para solidificar un material en polvo, típicamente polvo metálico o nylon, capa a capa dando
forma a una pieza 3D [3].
Desarrollo de Estación de Impresión 3D con Arcilla para un Robot ABB IRB 4600 25
Esta tecnología permite imprimir objetos con un alto grado de detalle además de geometrías complejas, por lo
que sumado a que permiten utilizar metal como material de impresión las hace la opción predilecta en industrial
como la automovilística o aeronaval. Si bien los equipos de impresión SLS son más costosos que el resto de las
opciones tienen la ventaja de poder crear piezas duraderas y de gran tamaño [4].
Las impresoras 3D de cerámica son muy similares a las convencionales FDM ya que utilizan el mismo principio
depositando capas de material sucesivamente. En el mercado existen varias empresas que se dedican a la
impresión con arcilla como WASP3D, una compañía italiana que comercializa impresoras y extrusores para
arcilla, así como todas las piezas necesarias como los tanques de almacenamiento o conectores necesarios.
25
26 Introducción y Objetivos
Una de sus impresoras más populares es la Delta WASP 2040, la cual tienen una configuración delta, utiliza un
sistema de aire comprimido para bombear la arcilla desde un tanque presurizado a 8 bares hasta el extrusor. El
extrusor está especialmente diseñado para esta tarea por lo que tienen un tornillo sin fin que empuja el material
hasta la boquilla.
Existen múltiples configuraciones, así como diferentes tamaños de boquilla que permitirán obtener resultados
más precisos, con boquillas de menor diámetro, o impresiones más rápidas, con mayor diámetro. Los materiales
que emplean pueden ser arcillas, porcelanas, cerámicas e incluso compuestos más avanzados como zirconio [8].
Figura 1.4. Extrusor WASP 3.0 e Impresora Delta WASP 2040 PRO
Figura 1.5. Brazo KUKA utilizado por Branch Technology para impresión 3D.
Esta complejidad de software tiene también una parte positiva ya que permite utilizar diferente metodología para
alcanzar los resultados deseados, por ejemplo, no es necesario ceñirse a la impresión por capas ya que los robots
pueden hacer movimientos más complejos y, con el software adecuado, realizar movimientos tridimensionales
para construir objetos sin soportes, uno de los grandes problemas de las impresoras 3D y que hasta la fecha sigue
en investigación para reducir su uso.
Las posibilidades se abren hasta el punto de poder utilizar software CAD para generar los diseños e imprimirlos
directamente, además de esto, y sobre todo al tratarse una rama muy reciente, los equipos y sistemas utilizados
no están diseñados específicamente para esta labor por lo que es necesaria una integración de sistemas de
empresas diferentes, lo que aumenta la complejidad pero permite crear un sistema que se adapte mejor a las
necesidades específicas de cada cliente [10].
Al tratarse de impresión de gran tamaño no es habitual encontrar robots que impriman con filamento plástico al
igual que las impresoras 3D, sí que es posible conseguir un sistema robótico de ese estilo, pero estaría limitado
por volumen que es capaz de calentar y enfriar además del elevado coste en piezas grandes. En estos casos se
suelen utilizar robots de menor tamaño como los ABB IRB120.
Existen ejemplos de robots de múltiples empresas instalados en configuración que les permiten imprimir en 3D
con una gran diversidad de materiales, una de estas empresas es ABB. Es multinacional sueca que se dedica
principalmente a la automatización y robótica siendo una de las empresas con mayor presencia en el sector de
los brazos robóticos. En la conferencia Automate 2022, ABB exhibió un sistema de impresión 3D que utilizaba
un IRB4400 equipado con un extrusor Massive Dimension MDPE10, este sistema utilizaba el software
RobotStudio junto con la extensión Printing PowerPac [11].
Un caso particular de una empresa que basa su negocio en desarrollar e instalar soluciones de impresión 3D con
robots de manera integral es CEAD, una compañía fundada en Países Bajos en 2014 y que proporciona diferentes
soluciones para la fabricación aditiva. La diferencia principal con ABB es que CEAD sí fabrica extrusores para
sus brazos robóticos además del resto de equipamiento necesario como hornos para secar las piezas terminadas
o habitáculos de impresión (“printing chamber” en inglés).
Flexbot es una instalación de impresión 3D desarrollada por CEAD compuesta por un brazo robótico Comau y
un extrusor o cabezal CNC para la fabricación aditiva o substractiva. El control del robot se realiza a través de
un control externo con Siemens Sinumerik lo que les permite programar los movimientos directamente creando
trayectorias más precisas y eficientes de manera más sencilla y directa que utilizando un robot con un control
propio como los ABB que necesitan un controlador IRC5 para funcionar [12].
Los extrusores que tienen disponibles varían en tamaño y especificaciones siendo el más pequeño el E25 con
una altura aproximada de 1 metro y una capacidad de extrusión de 12 kg/h, el módulo más grande es el E50 que
mide más de 2 metros de alto y puede extruir 84 kg de material por hora. Las boquillas de todos los extrusores
pueden variar en su diámetro permitiendo la impresión con diferentes materiales y obteniendo diferentes
resultados.
En cuando a los materiales con los que pueden trabajar los extrusores, existe una amplia gama de materiales
termoplásticos en forma de pellets que son fundidos a la hora de la impresión. Sin embargo, actualmente no hay
disponible una opción predeterminada para imprimir con arcilla o materiales cerámicos, por lo que requeriría
una solución personalizada.
Si ampliamos la búsqueda a nivel europeo también podemos encontrar algunos ejemplos de empresas o
universidades que cuentan con esta infraestructura, el mejor ejemplo lo encontramos en Suiza, en el ETH Zürich
(Instituto Federal Suizo de Tecnología en Zúrich).
En el ETH Zürich, de aquí en adelante ETH, han realizado dos proyectos de impresión 3D utilizando brazos
robóticos y los extrusores de CEAD que hemos visto anteriormente, ambas investigación han sido realizadas
por Gramazio Kohler Research, un grupo de investigación del ETH fundado por el Profesor Fabio Gramazio y
el Profesor Matthias Kohler que junto con un gran número de ingenieros, arquitectos e investigadores buscan
encontrar formas de integrar la fabricación aditiva en la arquitectura [14].
A lo largo de 2021 y 2022 han llevado varias investigaciones están explorando las posibilidades de impresión
3D de encofrados para estructuras de hormigón y de fachadas integradas, para lo que han utilizado el extrusor
de CEAD que puede ser montado directamente en un brazo robótico y además tiene una alta capacidad de
impresión como comentó antes [15]. Esta no es la única investigación que está llevando a cabo el ETH sobre
robots en la arquitectura, también están investigando la construcción con brazos robóticos colaborativos que
colocan y atornillan varios listones de madera totalmente autónomos [16].
Figura 1.8. RIBB3D: Pisos de hormigón acanalados sostenibles con encofrados impresos en 3D
29
30 Introducción y Objetivos
Por otro lado, el extrusor WASP XL 3.0 es una buena opción para la fabricación aditiva de grandes piezas con
alta capacidad de producción, gracias a su boquilla de 8 mm de ancho, además, la estación cuenta con un tanque
de arcilla de 8kg que se sitúa en el eje 4 del brazo robótico. Con esta combinación de tecnologías, la estación de
prototipado es capaz de realizar piezas de gran tamaño y de alta calidad de manera rápida y eficiente.
Además, la capacidad de ambos equipos junto con el software diseñado específicamente para esta aplicación y
para trabajar de manera autónoma permitirá el funcionamiento continuo de la estación, lo que se traduce en una
mayor productividad y una reducción de los tiempos de espera. Esto permitirá al usuario experimentar y crear
prototipos en un corto período de tiempo, acelerando así el proceso de diseño y desarrollo de nuevos productos.
Este equipamiento fue adquirido específicamente para realizar esta estación de prototipado previamente a la
realización de este proyecto por lo que la programación, configuración del equipo e instalación del hardware
añadido están supeditadas al equipo existente buscando la mejor solución en cada caso y minimizando posibles
costes adicionales.
Desarrollo de Estación de Impresión 3D con Arcilla para un Robot ABB IRB 4600 31
El equipo usado para el control de la estación lo constituyen un controlador IRC5 de ABB para el control de los
movimientos del IRB4600, un Arduino Uno para el control del extrusor y un PC en el que se procesan las piezas
3D, calculan las trayectorias necesarias para imprimir el objeto y se envían al IRC5. Todos estos equipos deben
estar interconectados físicamente para permitir su comunicación, esto tiene como ventaja el no depender de una
conexión inalámbrica que pueda sufrir interferencias e interrumpir impresiones.
1.4. Metodología
La realización de este proyecto se ha llevado a cabo a lo largo de varios meses en los que ha pasado por diferentes
etapas comenzando por una investigación previa sobre instalaciones similares que puedan ser de utilizada a la
hora de desarrollar nuestra estación. En esta investigación nos hemos centrado en buscar información sobre el
control y programación del brazo, así como la conexión entre los diferentes softwares (algunos libres y otros
privados) que han sido necesarios para completar la instalación. Podemos distinguir también la fase de diseño
hardware y montaje de los componentes necesarios ya que ha habido que diseñar el cableado de los diferentes
elementos añadidos al brazo.
Este proyecto ha sido propuesto por el director del FabLab de la Universidad de Sevilla Dr. Enrique Vázquez
Vicente en conjunto con el Dr. Federico Cuesta Rojo en la Escuela Técnica Superior de Ingeniería. Las bases
del proyecto consistían en ampliar las capacidades del FabLab para posteriormente realizar investigaciones sobre
el uso de arcillas en la arquitectura y el uso de robot para la construcción.
El proyecto venía con algunos requisitos de software que han marcado las decisiones en cuanto a la
programación de este, la principal de estas es el uso del software CAD Rhinocero 7 ya que es el programa de
diseño utilizado en la Facultad de Arquitectura para desarrollar los modelos 3D. Este programa cuenta con una
extensión llamada Grasshopper que permite utilizar el entorno de Rhino, así como los modelos y piezas creadas
por este en conjunto con un entorno de programación con bloques y Python. Otra de las restricciones existentes
es que parte del hardware utilizado ya estaba adquirido a la hora de comenzar por lo que se adaptó el desarrollo
del control a estos componentes.
Además del contenido que hemos obtenido de esta investigación online y que se encuentran en las referencias
del proyecto y los anexos, hemos tenido acceso a diferentes documentos y libros que nos han permitido
contrastar y profundizar la información, así como tener una guía sobre las diferentes técnicas existentes para el
control del brazo y el procesado de piezas 3D.
• Documentación de COMPAS. Como se explica en el capítulo de desarrollo software, es un entorno
de trabajo desarrollado por el grupo de investigación de Gramazio Kolher Research en conjunto con la
universidad de Zúrich, pese a estar desarrollado con software libre su uso requiere una licencia gratuita
para investigadores y universidades. De manera adicional ofrecen documentación sobre la instalación
del software y programación de los controladores necesarios para utilizar este entorno de trabajo con
robots ABB.
• Advanced 3D Printing with Grasshopper. Es un libro escrito por Diego García Cuevas y Gianluca
Pugliese en el que se discuten diferentes técnicas para imprimir figuras en 3D utilizando el programa
Grasshopper.
• Documentación de ABB. Para realizar el cableado de los elementos añadidos al brazo original se han
utilizado toda la documentación relativa al brazo IRB4600, así como el soporte técnico de ABB para
verificar las conexiones realizadas.
A continuación, se detalla todo el desarrollo realizado estructurado en hardware y software, en ambas partes se
tratan los componentes necesarios y sus características junto con todo el trabajo necesario de cada sección.
También se tratan el uso de la instalación finalizada y funcionando, así como la posible línea de desarrollo e
investigación para continuar el proyecto.
31
32 Descripción del Hardware
Analizando el alcance del proyecto, se establecen 4 grupos de equipamiento que requieren una adaptación, ya
sea de manera física con instalación de partes adicionales o vía software con una programación específica, siento
estos grupos, el brazo robótico IRB 4600, el controlador de ABB IRC5, el extrusor WASP XL 3.0 y un
Arduino UNO para la conexión del extrusor. Por esto, es necesario realizar una descripción detallada del
hardware explicando las modificaciones realizadas, así como la programación necesaria únicamente para el
funcionamiento de tal equipo ya que el software desarrollado para realizar la impresión será revisado en el
próximo capítulo.
Existen varias versiones de este modelo de robot, en nuestro caso se trata de la 4600-60-2,05 (4600 con 60Kg
de capacidad de manejo y alcance de 2,05m; E = 1276mm y F = 960mm).
A continuación, se muestra el diagrama de carga de esta versión.
La forma correcta de interpretar este gráfico es la siguiente: El punto (0,0) del diagrama indica la posición de la
muñeca del robot, el eje vertical Z(m) indica la desviación del centro de masas de la herramienta (A) utilizada
en este eje de igual manera que ocurre con el eje horizontal, aunque en este caso se nombra L de longitud en
lugar de utilizar el nombre del eje correspondiente ya que es la distancia en valor absoluto siguiendo esta
configuración de ejes.
33
34 Descripción del Hardware
Es importante conocer el diseño de la muñeca del robot ya que vamos a tener que realizar una anilla de acople
para poder instalar el extrusor WASP XL 3.0, esta anilla se describe en el apartado relativo al extrusor y aquí se
citan los datos utilizados para su diseño.
El área de trabajo con un montaje sobre suelo del robot se especifica en la siguiente tabla, teniendo en cuenta
que a esas medidas debemos de añadir la posición final de la herramienta que instalemos, en nuestro caso el
extrusor WASP junto con la anilla de acople que hemos diseñado.
35
36 Descripción del Hardware
D) R2.ETHERNET. En el caso que deseemos conectar el equipo de la muñeca a una red industrial.
Estos cables están internamente conectados a la base del manipulador donde a través de la caja de conexiones
R1 llegarán hasta el controlador IRC5. En nuestro caso, el brazo está montado sobre una cinta que permite mover
el brazo a lo largo de su eje, constituyendo un séptimo eje y grado de libertad. La base de conexiones de usuario
tiene la siguiente configuración en la instalación.
A) R1.CP/CS
B) R1.PROC1 (Aire comprimido M16.1,5)
C) R1.ETHERNET
D) R1.SMB
E) R2.FB7
Pese a que, en el manual del brazo [17], en la pag74 dentro de la sección de conexiones de usuario, se detalle
el número y potencia de las conexiones R2.CP y R2.CS disponibles en cada versión esto no significa que
tengamos todas esas conexiones disponibles en nuestro robot ya que cada unidad viene con un kit de
conexiones (cableado interno) diferente.
Para poder determinar que pines de conexión están disponibles debemos mirar los diagramas de circuitos de
nuestra unidad y de esta manera asegurarnos de utilizar las conexiones adecuadas. Además de esto, cuando en
el manual se detalla la potencia de los cables se refieren a la certificación de la que disponen los mismo, no
quiere decir que estén listos para suministrar dicha potencia ya que no se encuentran conectados a ninguna
alimentación dentro del controlador IRC5. La instalación que se ha realizado en nuestro caso se detalla en el
apartado del extrusor.
Figura 2.8 Orientación del robot con la cadena porta cables estándar. [18]
La aceleración máxima del Track es de 4m/s2 y la velocidad máxima es de 2 m/s. El IRBT 2005 se ha diseñado
para un funcionamiento intermitente. No se ha concebido para una aceleración/deceleración continua. Esta
última puede dar lugar a un sobrecalentamiento del motor del track, por lo que no utilizaremos este eje como
uno cualquiera del robot a la hora de alcanzar posiciones deseadas, sino únicamente para extender el rango de
operación del brazo cuando la posición deseada esté fuera del alcanza actual.
37
38 Descripción del Hardware
El panel de control externo sirve para establecer el funcionamiento del controlador y del manipulador
permitiendo alternar con seguridad entre los distintos modos de operación.
A) Interruptor de encendido
B) Paro de emergencia
C) Botón de motores ON
D) Selector de modo
G) Conector de Ethernet para PC de servicio
L) Conector para FlexPendant
En el siguiente apartado se describirán los diagramas de circuitos del IRC5 utilizados para instalar las conexiones
entre el extrusor y el controlador además de los elementos añadidos a la estructura como el Arduino o la fuente
de alimentación del extrusor.
Desarrollo de Estación de Impresión 3D con Arcilla para un Robot ABB IRB 4600 39
Energy consumption: 40 W
Connector: MODU
Tank Capacity 5 L
En el manual del producto se especifica que no se proporcionará soporte con la instalación del equipo con el
sistema del cliente por lo que tenemos que integrarlo nosotros, desarrollando los acoples necesarios para
montarlo en el brazo y los cables de conexión.
El motor que utiliza el extrusor es un motor paso a paso de 24v (con una corriente máxima de 2A) que al no
estar conectado a una placa base de impresora tenemos que conectarlo a un Stepper driver para poder controlar
la velocidad de giro. Además, requiere de un Arduino Uno ya que el controlador IRC5 no es capaz de
proporcionar una salida PWM, este proceso se explica en el siguiente apartado.
El tanque de arcilla va a ser instalado en el brazo de la articulación 4 del robot, siendo este el mejor lugar para
su ubicación debido a la facilidad del montaje en esta zona al tratarse de un brazo recto sin obstáculos y que en
la mayoría de los movimientos no supone un riesgo de colisión con otras partes del brazo. Su montaje se va a
realizar con dos abracaderas personalizadas en cada extremo, que asegurarán un montaje firme, dejando la
boquilla de conexión con la manguera del extrusor en la parte más cercana a este.
39
40 Descripción del Hardware
El taque requiere de 8 bares de presión para funcionar correctamente que se le serán suministrados desde la
salida A de la parte superior del brazo que se muestran en la Figura 2.6. A su vez esta toma es una prolongación
de la entrada para aire comprimido que se encuentra en la base del manipulador, concretamente la R1.PROC1
(B) que se muestra en la Figura 2.7, aquí conectaremos un compresor externo que sea capaz de suministrar la
presión requerida por nuestro sistema.
Figura 2.13 Boquilla superior (entrada de aire Figura 2.14 Boquilla inferior (Salida de material)
comprimido)
41
42 Descripción del Hardware
A la izquierda encontramos la alimentación para el ventilador incorporado en el extrusor y que requiere de 12v
para funcionar. A la derecha se encuentran los 4 pines de conexión al motor paso a paso, utilizando estos pines
debemos conectar el motor a un controlador y un Arduino Uno para poder ajustar la velocidad y hacerlo
funcionar correctamente.
En el lado del manipulador vamos a utilizar la conexión R2CS de la parte superior del manipulador (Figura 2.6
Ubicación de las conexiones de usuario en el manipulador. Figura 2.6 conexión C). El conector R2CS que
dispone nuestro brazo tiene 6 pines instalados, justo los que necesitamos para el extrusor. El número de pines y
la disposición de estos varían entre cada unidad y es necesario seguir los esquemas eléctricos del manual
(disponibles en MyABB) para ver que pines tenemos disponibles.
El cable que une estos dos componentes ha sido fabricado específicamente para esta instalación siguiendo este
esquema de conexión:
VENTILADOR 0V R
A+ P
A- N
B+ M
B- Z
Para seleccionar los pines del conector R2CS que se han utilizado para cada pin del conector MODU se han
seguido los diagramas de circuitos del brazo hasta el controlador IRC5 donde los cables procedentes del
manipulador se dividen en diferentes tarjetas de entrada pudiendo algunas proveer señales y potencia o
43
44 Descripción del Hardware
únicamente potencia.
Figura 2.18 Tarjeta XT35 (a la izquierda) Figura 2.19 Tarjetas XT5.1 y XT5.2
Los pines A y R son los encargados de proporcionar la alimentación al ventilador del extrusor que necesita 12v
para funcionar, como el controlador IRC5 no es capaz de proporcionar 12v necesitamos instalar una fuente
de alimentación externa que irá montada en la puerta del controlador. Esta fuente tiene que estar conectada
con los pines de 12v del conector MODU y para ello se utilizará la tarjeta de conexiones de potencia de usuario
XT5.1 disponible en la puerta del controlador.
Como se explicó anteriormente es necesario un Arduino Uno y un Stepper Driver para controlar el movimiento
del extrusor ya que el controlador IRC5 no tiene salidas PWM. Para evitarnos instalar una fuente de 5v externa
vamos a alimentar al Arduino con la fuente externa de 12v mediante el puerto de alimentación estándar (no
USB) que dispone.
requieren corrientes y secuencias de pulsos específicas para funcionar de manera óptima. Un controlador actúa
como el intermediario que traduce las señales eléctricas del sistema de control (como un microcontrolador o un
PLC) en las acciones mecánicas del motor. En nuestro caso y para no complicar la instalación usaremos un
Arduino en vez de un PLC como controlador, aunque ambos serían válidos.
En el caso del controlador específico para motores paso a paso, como el A4988, este se convierte en una pieza
clave para alcanzar la máxima eficiencia y precisión. El A4988 regula la corriente que fluye a través de las
bobinas del motor, evitando sobrecalentamiento y garantizando un rendimiento seguro y sostenible.
La incorporación de un controlador como el A4988 no solo asegura una operación segura y eficiente del motor,
sino que también facilita la implementación de sistemas de control más complejos, mejorando la calidad y
exactitud de los movimientos en aplicaciones que requieren niveles precisos de posicionamiento, como la
impresión 3D.
Los pines VMOT y GND serán donde conectemos la alimentación del motor que debe ser de 24v, esta vez sí
disponemos de una toma de 24v directamente en el IRC5 por lo que no será necesario una fuente adicional. Esta
toma se encuentra en la tarjeta XT35 situada en la parte inferior de la puerta del controlador.
Los pines 1ª, 1B, 2ª y 2B deben ser conectados a los pines del mismo nombre del conector MODU del extrusor,
para eso se utiliza la tarjeta de conexiones de señales de usuario XT5.2 disponible en el IRC5 y situada en la
puerta del controlador.
Respecto a la conexión entre el driver A4988 y el Arduino Uno:
▪ “DIR” y “STEP” del driver se conectarán a pines digitales del Arduino (por ejemplo, pines 2 y 3). “DIR”
determina la dirección del motor, y “STEP” indica un paso del motor.
▪ “GND” del driver debe estar conectado al GND del Arduino.
▪ “ENABLE” en el driver puede dejarse conectado a GND si no se desea usar la función de habilitación
del motor mediante software. En caso afirmativo puede conectarse a cualquier pin digital del Arduino.
De esta manera tenemos interconectado todos los componentes que hacen posible la extrusión de material,
quedando de esta manera el esquema de conexiones referenciado a las entradas de las tarjetas del IRC5
utilizadas.
45
46 Descripción del Hardware
Figura 2.21 Esquema eléctrico para el control del motor paso a paso referenciado a las tomas del IRC5
Este esquema recoge las conexiones que realizarán dentro del IRC5, además, debemos conectar el cable
desarrollado anteriormente para finalizar la instalación. En este caso, se ha escogido una fuente de alimentación
externa 220v/12v pero también sería una opción adecuada utilizar una fuente 24v/12v, así podemos conectarla
a las tomas XT35 donde conectamos el Stepper Driver y evitar una toma de corriente fuera del sistema IRC5
void setup() {
// Sets the two pins as Outputs
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
digitalWrite(dirPin,HIGH); //Sentido de giro horario → HIGH, antihorario → LOW
}
void loop() {
customDelayMapped = speedUp(); // Obtiene el valor de espera a través de la función de lectura del potenciometro
// Generamos los pulsos para el motor a la velocidad selecionada
digitalWrite(stepPin, HIGH);
delayMicroseconds(customDelayMapped);
digitalWrite(stepPin, LOW);
delayMicroseconds(customDelayMapped);
}
47
48 Desarrollo Software
3. DESARROLLO SOFTWARE
En este capítulo se aborda todo el software necesario para el funcionamiento del manipulador como un brazo de
impresión con arcilla. Para llevar a cabo esta adaptación ha sido necesario seleccionar un software 3D que reúna
todas las características que el equipo de FabLab puede necesitar a la hora de diseñar y fabricar piezas, este
requisito, al ser una de las restricciones más importante del proyecto, modifica el camino a seguir y el resto del
software necesario que será el que haga posible la integración.
El programa CAD seleccionado es Rhino 7, un programa bajo licencia que permite crear modelos 3D con gran
precisión, una de sus ventajas radica en su versatilidad ya que a diferencia de otros softwares CAD más
especializados puede utilizarse en diferentes sectores con herramientas de programación integradas.
Una de las herramientas de programación que está integrada en Rhino 7 es Grasshopper, una herramienta de
programación por bloques basada en Python que permite dar un gran salto en el diseño paramétrico y la
modelización generativa. Esta potente herramienta de programación visual permite realizar escenarios
completos, en arquitectura, por ejemplo, puede generar una maqueta de una ciudad a criterio del programador o
generar estructuras complejas ya que permite el uso de funciones matemáticas aplicándolas al diseño.
Estas razones fundamentan la elección de este software para diseñar la plataforma que permita transformar
diseños 3d en algo que pueda entender y replicar nuestro manipulador. El uso de este software complica el resto
del diseño ya que ni ABB y Rhino proporcionan ningún tipo de integración, sino que además utilizan estructuras
de programación completamente diferentes.
Durante la fase de investigación previa a este proyecto, se identificaron algunos proyectos realizados por
ingenieros de la Universidad de Zúrich, quienes han desarrollado una plataforma o, más precisamente, un
conjunto de bibliotecas para Grasshopper que permiten la transmisión de datos a los robots de ABB. Estas
librerías necesitan de software adicional para establecer la comunicación entre ambos equipos, pero son la
opción más viable que se ha encontrado. El uso académico del software se permite de manera gratuita bajo una
autorización previa que ya ha sido otorgada a FabLab.
Figura 3.2 RobotStudio. IRBT2005 Biblioteca. Figura 3.3 RobotStudio. Elementos estación
inicial.
Estos elementos crean la estación inicial sobre la cual vamos a añadir la herramienta de trabajo y el tanque de
arcilla. La mayoría de los ajustes de los equipos utilizados desde las librerías vienen configurados correctamente,
pero los sólidos que generamos nosotros pueden tener comportamientos diferentes, por ejemplo, pueden
computarse en la física de colisiones haciendo que el software los tenga en cuenta a la hora de generar las
trayectorias. En todos los objetos que vamos a generar vamos a configurarlos para que se tengan en cuenta en la
planificación de trayectorias. Esto se configura haciendo clic derecho sobre la pieza en la pestaña Diseño de la
ventana vertical que se sitúa a la derecha de la pantalla.
49
50 Desarrollo Software
El segundo paso es indicar la posición del TCP, siendo este el punto situado en el extremo de la herramienta y
donde ocurren todas las operaciones y movimientos. Una vez seleccionado TCP es necesario añadir con el botor
de la flecha derecha ( -> ) para que quede registrado.
Una vez realizado esto nuestra herramienta aparecerá en el espacio de trabajo, para que la herramienta sea
funcional debemos enlazarla con el manipulador arrastrando su icono en la pestaña de diseño hasta el del
IRB4600, ahora sí forma parte del brazo.
51
52 Desarrollo Software
ATENCIÓN:
La unidad sobre la que se realiza el proyecto no cuenta con el complemento
Collision Avoidance de ABB, este complemento permite al controlador IRC5
utilizar algoritmos de planificación de trayectorias seguras con los objetos del
entorno (y en nuestro caso del tanque contra el propio robot). Al no disponer de
esta función es necesario comprobar todos los recorridos en la simulación y
verificar que no hay riesgo de colisión antes de enviar a imprimir cualquier
pieza al robot real.
Desarrollo de Estación de Impresión 3D con Arcilla para un Robot ABB IRB 4600 53
Figura 3.8 RobotStudio. Galería de imágenes del brazo con el Taque de arcilla simulado.
53
54 Desarrollo Software
3.2. COMPAS
Uno de los hitos del proyecto es conectar correctamente el robot real IRB4600 de ABB con la plataforma de
diseño paramétrico Rhino, crear un canal de comunicación entre estas dos estructuras requiere de múltiples capas
de software que vamos a analizar.
Esta iniciativa proviene de la investigación Gramazio Kohler en la ETH Zúrich, [14] donde han creado un
paquete llamado COMPAS FAB, basado en python y que facilita la planificación y ejecución de procesos de
fabricación con robots directamente desde un entorno de diseño paramétrico [21]. Este entorno de programación
se construye sobre COMPAS, un ecosistema de librerías de propósito general de Python integradas en un único
núcleo. De esta manera se tiene acceso a resultados de múltiples investigaciones y herramientas que han sido
revisadas para facilitar su uso y avance ya que permite construir extensiones que utilicen las librerías existentes
y que aumenten de esta manera la capacidad del ecosistema.
COMPAS se centra en el análisis de datos y estructuras para proporcionar el soporte fundamental que se necesita
para trabajar en los campos de la arquitectura, diseño geométrico y paramétrico, e incluye soporte para control
de robots y fabricación autónoma.
Con estas bases el equipo de investigación de la ETH Zúrich ha desarrollado el conjunto de librerías que
permiten comunicar RobotStudio con Rhino 7 y que se explica en el siguiente apartado como se han utilizado
en nuestro caso. COMPAS FAB va a permitir comunicar nuestra herramienta de diseño CAD con RobotStudio
y a partir de aquí, se desarrollan los programas que permiten procesar los modelos 3D y convertirlos en
estructuras para imprimir en 3D y que nuestro controlador de ABB pueda comprender.
Para entender mejor la relación que existe entre estos programas disponemos del siguiente gráfico proporcionado
por el equipo de CF en la documentación que tuvimos acceso durante el proyecto. Aquí se aprecia visualmente
la secuencia de comunicación que sigue el ecosistema.
Figura 3.9 Estructura del software utilizado para comunicar Rhino y RobotStudio. [22]
Para comenzar la explicación detallada de CF vamos a explicar a continuación la librería de Python, algunas de
sus capacidades y como utilizarla.
Esta librería está disponible para su uso gratuito en GitHub [23], para hacer uso necesitamos tener instalado el
software Anaconda y desde su ventana de comandos podremos instalar el paquete como añadiríamos cualquier
otro paquete desde GitHub. Previamente a la instalación debemos tener creado un entorno (enviroment) de
Anaconda para poder añadir la librería dentro de este.
Una vez este instalado ya tendremos acceso y podemos ver los archivos que incluye desde Visual Studio
seleccionando el entorno donde hemos añadido el paquete, así como la ventana de comandos a utilizar siendo la
ventada de Anaconda.
La librería de CF se centra en la manipulación de robots por lo que incluye códigos que permiten realizar
transformadas, definiciones de puntos y marcos de referencia, concatenaciones e incluso calcular la cinemática
directa e inversa. El paquete completo se asemeja al Robotic Toolbox para MATLAB que hemos utilizado en
varias ocasiones. De esta manera somos capaces de realizar algunos de los cálculos y simulaciones que se
facilitan en el toolbox de MATLAB, pero desde otros entornos, como uno CAD en nuestro caso, ya que este
paquete es compatible con diferentes softwares.
En estos ejemplos se muestra como posicionar un punto respecto un marco o sistema de referencia y como se
pueden realizar las típicas transformaciones de Rotación, Traslación y Escalado directamente igual que en el
toolbox, por ejemplo, con el comando trot(). En el tercer ejemplo se muestra la opción de crear nuestro propio
robot, con el comando LINK, ajustando el tipo de articulación para cada eslabón.
Cuando tengamos definido un robot podemos obtener directamente la cinemática directa para una configuración
de articulaciones dada y la cinemática inversa para una posición deseada.
55
56 Desarrollo Software
3.2.2. Docker
Como hemos explicado antes, Docker es una plataforma de virtualización basada en contenedores que permite
desarrollar, implementar y ejecutar aplicaciones en diferentes entornos informáticos. La principal diferencia con
un software de virtualización tradicional es que en Docker no existe la necesidad de virtualizar un sistema
operativo completo sino únicamente entornos aislados que contienen los componentes necesarios para que la
aplicación a ejecutar funcione correcta e independientemente.
Esto libera una gran carga computacional al equipo, teniendo potencia libre para el resto de tareas (el sistema
completo del proyecto es relativamente pesado y para que funcione con fluidez necesitará igualmente un equipo
potente con bastante RAM).
Dependiendo de la versión de Windows en la que se ejecute Docker o el proyecto concreto la virtualización se
realizará de dos maneras, con Hyper-V o WSL, en nuestro caso usaremos el WSL 2 (subsistema de Windows
para Linux). WSL es una característica de Windows 10 en adelante que permite a los usuarios ejecutar un sistema
operativo Linux en paralelo con Windows.
Para utilizar WSL, primero debemos habilitarlo desde la configuración de Windows en el panel de control,
después debemos descargar e instalar una distribución de Linux, lo más sencillo es utilizar la que nos proporciona
Microsoft desde la Microsoft Store. Cabe destacar que WSL ejecutará las distribuciones “en segundo plano” es
decir sin interfaz de usuario gráfica o de texto a la que podamos acceder ya que sirve únicamente de motor para
otras aplicaciones como Docker.
Al estar la máquina virtual dentro de Windows este puede gestionar los recursos una mejor manera que
utilizando un software separado. En el caso de que queramos limitar la potencia consumida, ya sea en núcleos
del procesador o memoria RAM podemos hacerlo como se explica en este enlace: Limitar WSL2 (para nuestro
proyecto se ha limitado la memoria RAM disponible a 6GB para WSL, de 16GB totales en el equipo).
En cuando al uso de Docker en nuestro proyecto, será a través de Visual Studio, necesitando instalar la extensión
Docker. Desde Visual abriremos los archivos yml que contienen la versión de ROS, MoveIt y ABB que vamos
a ejecutar. Sobre el archivo abierto en Visual podemos hacer clic derecho y seleccionar Compose Up, esto
ejecutará el código en Docker creando los contenedores necesarios.
Los archivos .yaml o .yml se utilizan para definir la configuración de los contenedores que se ejecutarán en un
entorno de ROS incluyendo información como la imagen a utilizar, los puertos que se deben exponer, los
volúmenes de datos que se deben montat o las variables de entorno necesarias.
57
58 Desarrollo Software
3.3.3. Grasshopper
Grasshopper es una extensión de Rhino 7 que añada una ventana de programación al sistema, permitiendo
integrar el diseño CAD con la programación con bloques y en Python. Aquí es donde vamos a usar las librerías
de COMPAS FAB, que incluyen varios bloques básicos que permiten por ejemplo crear una representación del
robot en Rhino, comunicarnos con el nodo de ROS para enviar los puntos o ubicaciones a alcanzar o algunos
bloques de cálculos de cinemáticas directas e inversas.
Los bloques que se ven en la imagen anterior son bloques incluidos en la librería de CF que permiten crear un
enlace con ROS para obtener la información del robot, bloque central, y que proyecta la representación gráfica
del mismo en Rhino para poder ver los movimientos y ubicaciones en las que se encuentre.
Cada uno de los bloques tiene algunas entradas que permiten introducir los datos necesarios, aunque no siempre
es obligatorio que están conectados, de igual forma que las salidas. La librería tiene bloques de conexión con
ROS, bloques de cálculo de cinemática directa e inversa, así como planificación de movimiento, pero estos
últimos no serán utilizados en nuestro proyecto ya que el control de los movimientos del robot se realizará
directamente en el IRC5
Hay que mencionar el tratamiento de los datos en Grasshopper ya que utiliza listas en vez de matrices y tipos de
datos. Las listas son estructuras de datos más versátiles, dinámicas y fáciles de usar en comparación con las
matrices. Las matrices tienen un tamaño fijo y requieren una gestión manual de la memoria, mientras que las
listas se adaptan mejor a las necesidades cambiantes y ofrecen una amplia gama de operaciones integradas para
la manipulación de datos. Esta forma de tratar la información nos dará la posibilidad de descomponer los datos
(como un punto, dado por sus coordenadas) de manera sencilla.
59
60 Desarrollo Software
Esta primera sección permite funcionar a todo el programa ya que establece la conexión con ROS, que está
ejecutado en Docker. De izquierda a derecha vamos a explicar el funcionamiento de las piezas presentes.
El primer bloque es un interruptor, que habilita o deshabilita la conexión, durante la programación del código es
conveniente tener desactivada la conexión ya que ralentiza en gran medida el funcionamiento de Grasshopper
al estar calculando los resultados constantemente.
El segundo, establece la conexión entre Grasshopper y ROS, durante la ejecución de ROS en Docker se
especificó la dirección IP y puerto para acceder el servidor de ROS, así que usando esta dirección y puerto se
puede encontrar al servidor y comprobar si acepta la conexión. Este bloque es parte de la librería CF.
Por último, encontramos el bloque encargado de obtener la información del Robot desde ROS solicitando el
modelo y la geometría del robot. Este bloque es parte de la librería CF.
Ahora que Grasshopper tiene la información del servidor de ROS y del Robot utilizado podemos representarlo
en Rhino gracias al bloque Robot Visualize incluido en la librería que utiliza el modelo del robot que se encuentre
en el servidor de ROS para realizar la representación en Rhino.
Para terminar de explicar la conexión con ROS vamos a detallar el código que genera el servidor de ROS y que
se carga en Docker desde VisualStudio, este código proviene de la librería CF y se ha adaptado a nuestro modelo
de robot y versión de ROS.
61
62 Desarrollo Software
version: '2'
services:
abb-driver:
image: gramaziokohler/ros-kinetic-dfab:21.12 #Vamos a usar la version de
KINETIC ya que el control rrc está en esta version
container_name: abb-driver
environment:
- ROS_HOSTNAME=abb-driver
- ROS_MASTER_URI=http://ros-core:11311
depends_on:
- ros-core
command:
- roslaunch
- --wait
- compas_rrc_driver
- bringup.launch
# - robot_ip:=192.168.125.1 #Control real
- robot_ip:=host.docker.internal #Robot simulado
- robot_streaming_port:=30101
- robot_state_port:=30201
- namespace:=rob1
moveit-demo:
image: gramaziokohler/ros-kinetic-dfab:21.12
container_name: moveit-demo
environment:
- ROS_HOSTNAME=moveit-demo
- ROS_MASTER_URI=http://ros-core:11311
- ros-core
# To use the web-based GUI, uncomment the following line
# - gui
command:
- roslaunch
- --wait
- abb_irb4600_60_205_moveit_config
- demo.launch
- use_rviz:=false
ros-core:
image: gramaziokohler/ros-kinetic-dfab:21.12
container_name: ros-core
ports:
- "11311:11311"
command:
- roscore
ros-bridge:
image: gramaziokohler/ros-kinetic-dfab:21.12
container_name: ros-bridge
Desarrollo de Estación de Impresión 3D con Arcilla para un Robot ABB IRB 4600 63
environment:
- "ROS_HOSTNAME=ros-bridge"
- "ROS_MASTER_URI=http://ros-core:11311"
ports:
- "9090:9090"
depends_on:
- ros-core
command:
- roslaunch
- --wait
- rosbridge_server
- rosbridge_websocket.launch
- unregister_timeout:=28800
ros-fileserver:
image: gramaziokohler/ros-kinetic-dfab:21.12
container_name: ros-fileserver
environment:
- ROS_HOSTNAME=ros-fileserver
- ROS_MASTER_URI=http://ros-core:11311
depends_on:
- ros-core
command:
- roslaunch
- --wait
- file_server
- file_server.launch
Este código es un archivo YAML que define un conjunto de servicios y contenedores para configurar ROS en
Docker. Los diferentes servicios que se definen se ejecutarán como contenedores separados, aquí definimos el
nombre del servicio u los detalles de la imagen que se utilizara.
▪ abb-driver. Utilizamos la imagen usada por el equipo de COMPAS en la versión KINETIC ya que el
controlador RRC se encuentra en esa versión. Entre los comandos que debemos especificar se encuentre
la IP del robot aquí tenemos dos opciones, especificar la IP del controlar IRC5 que esté conectado
físicamente por ethernet a nuestro portátil o indicar host.docker.internal para usar el robot simulado
en RobotStudio
▪ moveit-demo. Lanzamos el paquete MoveIt! En los comandos especificamos el modelo exacto de robot
que vamos a usar (IRB4600 60(kg) 205(cm)).
▪ ros-core. Nodo maestro de ROS.
▪ ros-bridge. Permite la comunicación entre ROS y aplicaciones con el protocolo WebSocket.
▪ ros-fileserver. Se utiliza para entregar archivos del entorno de ROS.
El código debe ser ejecutado en VisualStudio con la función Compose Up (extensión de docker) teniendo
previamente abierto la aplicación de escritorio de Docker. Una vez estén los contenedores activos podemos
utilizar los bloques de ROS en Grasshopper (sección Generar Robot) y obtendremos una representación de
nuestro IRB4600 en Rhino.
63
64 Desarrollo Software
En esta sección trabajaremos con modelos 3D realizados o importado a Rhino, concretamente modelos con
paredes y bases lisas (sin curvatura, estos objetos se tratarán más adelante). Para explicar cómo descomponemos
un objeto tridimensional en una lista de puntos vamos a utilizar de ejemplo un cilindro.
En Rhino existen diferentes tipos de sólidos: sólido, malla y brep; el primero es el más genérico y no incluye
una representación con polígonos de las caras del objeto, una malla añade esta información. El brep (Boundary
Representation) permite representar objetos más complejos combinando superficies y bordes. Estos tres tipos
pueden ser transformados entre ellos y nosotros usaremos únicamente solidos para este ejemplo.
65
66 Desarrollo Software
Ahora necesitamos crear las capas de puntos intermedias del modelo, para hacer esto calcularemos la altura del
objeto a imprimir restando a la componente z de la capa superior la de la capa inferior (que no tiene por qué estar
situada en el suelo a z=0). Una vez sabemos la altura dividimos la altura entre el número de capas para obtener
la distancia intermedia.
Desarrollo de Estación de Impresión 3D con Arcilla para un Robot ABB IRB 4600 67
En el caso de la capa superior si seleccionamos la altura exacta del objeto (z de la capa superior) esa capa no se
representará ya que Rhino la interpreta como fuera del sólido, por esto introducimos un valor de altura
infinitesimalmente inferior que sí estará dentro del volumen.
El bloque pequeño superior, conectado por la izquierda al bloque inicial del objeto sirve para guardar como
Malla nuestro solido ya que ahora vamos a crear los contornos que definirán las curvas de las capas intermedias.
67
68 Desarrollo Software
En el apartado anterior hemos visto que es necesario obtener la altura del objeto en Grasshopper de manera
numérica pese que estemos utilizando un sólido completo y acotado de Rhino, esto se debe que la información
sobre la altura y otras características no queda almacenada en el propio objeto y, por tanto, Grasshopper la
desconoce.
Ahora vamos a emplear un método diferente para crear las capas intermedias de una esfera, y será necesario
utilizar esta sección para cualquier solido que no tenga unas paredes lisas, más concretamente, para solidos cuya
altura en el eje z difiera de la longitud de la curva que une el punto superior con el punto inferior en cualquier
lugar de su revolución.
Uno de los hitos que se marcaron al inicio del proyecto fue poder crear una Vasija de arcilla con la estación de
impresión, este sólido presenta una forma cilíndrica, pero con una pared irregular y que puede variar según el
diseño concreto. De manera histórica este tipo de objetos junto a Ánforas, Botijos y multitud de otros recipientes
se han fabricado de manera artesanal con arcilla en el barrio de Triana, estando presentes en la mayor parte de
la historia andaluza.
Más allá del significado histórico y artístico de este tipo de objetos, se trata de superficies de revolución con
cierta complejidad al estar sostenidos por una base menor que el diámetro máximo que se alcanza en la
superficie. Para poder imprimirlo de manera correcta requiere que el software de procesado de modelos 3D sea
capaz de analizar los objetos en base a sus superficies de revolución y no a sus características paramétricas como
en el primer caso.
Se obtienen 4 curvas del bloque Brep Edges, 2 curvas tipo arco (Grasshopper nombre así a las curvas circulares)
y 2 curvas planas (ya que sus puntos inicial y final no están conectados). Las dos curvas arco viene de los bordes
superiores e inferiores de la pieza y la doble curva plana es en realidad la misma, pero debido a que se ha
generado la superficie con una curva de revolución existe técnicamente un inicio y un final.
La curva de revolución se conecta al bloque Curve Length para obtener su longitud y así poder calcular la
distancia a la que se encontrarán las capa. En nuestra sección podemos elegir el número de capas que deseamos
tener en el objeto, pero podría modificarse para introducir la distancia entre capa de manera numérica.
De igual forma que en la sección anterior debemos modificar ligeramente el punto final de la curva para que
pertenezca al sólido, esto lo hacemos primero extrayendo los puntos inicial y final, y modificando la componente
Z del punto final de la curva (parte superior).
Ahora, para mostrar el modelo laminado, se ha establecido una altura de capa de 0.02 metros o 20 milímetros.
El valor de esta altura depende del diámetro del extrusor utilizado. En nuestra instalación, el extrusor ofrece
opciones de diámetro de 4, 6 y 8 milímetros. Sin embargo, hemos seleccionado un valor de 20 milímetros para
garantizar una visualización clara de las capas creadas.
El bloque Contorno es responsable de laminar la pieza, utilizando como punto de inicio el punto de la capa
superior modificado y la distancia deseada. Las capas resultantes se pueden apreciar en la Figura 3.33. Estas
capas deben convertirse en secuencias de puntos para que el control RRC del brazo pueda procesarlas, y los
puntos resultantes se presentan en la Figura 3.34.
Desarrollo de Estación de Impresión 3D con Arcilla para un Robot ABB IRB 4600 71
Figura 3.33 Procesado de modelos esféricos. Figura 3.34 Procesado de modelos esféricos.
Desplazamientos del cabezal de impresión Secuencia de puntos de cada capa
La última sección del programa tiene como objetivo enviar los puntos a controlador IRC5 o a la simulación de
RobotStudio. Los puntos obtenidos desde las secciones anterior necesitan ser adaptados al sistema de referencia
que utilizar RobotStudio y que varía del utilizado por Rhino y Grasshopper.
Para solucionar esto se ha desarrollado una transformada de manera que los puntos que ubiquemos en el espacio
de trabajo de Rhino aparezcan en la misma posición relativa al brazo robótico en la estación de RobotStudio,
pese a que se ha tratado de minimizar la necesidad de implementar una transformación debido a que puede
generar imprecisiones en la impresión y es constituye una variable extra a la hora de realizar modificaciones a
la estación, es fundamental en nuestro caso ya que los puntos originales de Grasshopper al ser enviados a
RobotStudio tenían una gran desviación. También se contactó con los desarrolladores de COMPAS FAB y el
CONTROL RRC para obtener más información al respecto y lo único que pudieron indicar es que se trata de
problema conocido y en desarrollo ya que se desconoce la causa exacta de este cambio de coordenadas.
71
72 Desarrollo Software
La transformada consiste, primero, en un cambio de escala para las tres componentes ya que Grasshopper opera
en m y RobotStudio en mm y, segundo, un offset para cada una de las componentes. Quedando la siguiente
expresión:
FX = - 430 + 1000 * x
FY = 500 + 1000 * y
FZ = - 500 + 170 + 1000 * z
Los offset necesarios han sido calculados de manera experimental para nuestra estación, en la componente Z se
ha añadido un offset extra (170mm) para establecer el nivel Z=0 de Rhino justo a la altura de la mesa de
impresión sobre la que trabajará el robot real siendo más cómodo para trabajar con Rhino ya que se puede utilizar
el plano XY como base de los sólidos.
Después de ajustar las coordenadas de los puntos a enviar debemos crear los marcos de referencia que definan
completamente como se debe aproximar el cabezal de impresión. Los marcos de referencia o “frame” definen
la orientación de los elementos en el entorno de trabajo del robot. Estos marcos se pueden definir únicamente
con un vector adicional a las tres coordenadas del punto ya que utiliza la convención de orientación de la “regla
de la mano derecha”.
La orientación con la que queremos que el cabezal alcance la mesa de impresión puede variar en función de la
configuración particular, pero de manera general se situará el área de trabajo en la misma dirección que el brazo
superior del robot (“enfrente” o con la articulación 5 en su posición inicial) como se muestra en la Figura 3.38.
En cambio, en la Figura 3.39 se puede observar una aproximación posible pero no deseada ya que disminuye en
gran medida el rango de movilidad del brazo.
El marco necesario para alcanzar la posición con la orientación anterior varía en función de la ubicación de la
mesa de impresión, en nuestro caso de sitúa en sentido positivo del eje y, se puede observar en la Figura 3.39
siguiendo el sistema de referencia global de RobotStudio en la esquina inferior izquierda de la imagen.
Desarrollo de Estación de Impresión 3D con Arcilla para un Robot ABB IRB 4600 73
En la Figura 3.38 se puede observar la posición de los ejes de la herramienta que necesitamos indicar en
Grasshopper para alcanzar la orientación, estos vectores son los que introducimos en el bloque Plano XY:
Vector X (0,0,-1)
Vector Y (0,1,0)
Para finalizar la sección encontramos el bloque que envía estos puntos a ROS y de aquí al controlador IRC5 o
RobotStudio. Este bloque es parte de la librería de CF y necesita el control RCC instalado ya sea en RobotStudio
o en controlador real. Dentro de la librería se recogen las instrucciones de envío y recepción de frames entre el
controlador y ROS utilizando rrc.GetFrame() para obtener el frame actual de robot, esto se hace a modo de
comprobación para verificar la conexión; y abb.send para enviar órdenes de movimiento.
if init:
for i in pos:
abb.send(rrc.MoveToFrame(pos,300,rrc.Zone.Z1, rrc.Motion.JOINT))
Después de haber expuesto detalladamente el robot, el extrusor y la conexión física entre los equipos
involucrados, así como de haber abordado en profundidad la programación de Grasshopper, Arduino y
RobotStudio, se procede a mostrar la estación completa. En esta etapa discutiremos la configuración y puesta
en marcha de la Estación de Impresión. Además, se comentan los desafíos y errores encontrados a lo largo del
proceso con el fin de facilitar el arranque y primeros pasos.
El proceso de arranque puede llevar varios minutos y se puede observar el en FlexPendant el avance del mismo.
Una vez correctamente iniciado debemos situar el Seleccionador de modo (D en la Figura 4.1) en la posición
AUTO (posición C) de la Figura 4.2. El modo D es el modo manual, para operar con el FlexPendant. El modo
E es el modo manual sin límite de velocidad, aquí quedan restringidas algunas opciones por seguridad.
Figura 4.2. Selector de modo de tres opciones presente en el controlador IRC5 del FabLab
Situado el Selector en la posición AUTO aparecerá una notificación de confirmación en el FlexPendant que
debemos aceptar.
Para finalizar el arranque del IRC5 debemos pulsar el botón C de la Figura 4.1, este es el activador de Motores
(activa el estado Motores ON en el FlexPendant y RobotStudio), ahora el robot está listo para moverse. Antes
de pulsarlo el indicador luminoso del botón debe estar parpadeando y una vez activo debe quedarse fijo
(encendido)
POSIBLE ERROR: Al activar los motores, ya sea en el modo manual pulsando el botón de operador del
FlexPendant o en modo AUTO con el botón de Motores ON puede activarse las protecciones eléctricas del
FabLab relativas al robot. Para continuar la operación hay que subir estas protecciones y repetir el proceso con
el IRC5. El equipo de mantenimiento está notificado de problema y debe solucionarse pronto.
El último paso es conectar un cable ethernet en el puerto G de la Figura 4.1, con este cable podremos establecer
la conexión entre el PC que vaya a ejecutar el programa.
Volviendo a RobotStudio, debemos añadir el controlador mediante la conexión con un clic disponible en la
pestaña Controlador de la barra de pestañas superior, en la Figura 4.3 se muestra el menú indicado. El IRC5 se
mostrará entonces disponible en nuestra estación de RobotStudio pudiendo controlar la ejecución de programas.
Lamentablemente, la aplicación no muestra la posición del robot real ni sus movimientos y cualquier
movimiento que gestiones fuera del programa a ejecutar ocurrirá en la simulación y no se trasladará al robot.
De igual forma, el tanque de arcilla añadido no lo tendrá en cuenta por lo que es MUY IMPORTANTE realizar
la impresión en la simulación para asegurar que no existen colisiones.
Si queremos manipular la posición del robot para llevarlo a un área de trabajo diferente o a la posición de reposo
debemos hacerlo en MODO MANUAL con el FlexPendant. Notar que esto interrumpirá la conexión con
RobotStudio y cualquier proyecto que esté realizando.
76
Desarrollo de Estación de Impresión 3D con Arcilla para un Robot ABB IRB 4600 77
El controlador del FabLab se muestra en la Figura anterior en controladores reciente como referencia, la IP
puede variar.
POSIBLE ERROR: Durante la conexión con el ordenador y el IRC5 puede que RobotStudio no detecte al
controlador. Ante esto debemos asegurar que el ordenador tiene seleccionada la configuración adecuada para su
controlador de red. Para hacer esto entramos en Ajustes > Red e Internet > Estado > Cambiar las opciones del
adaptador. (Windows 10).
Dentro de este menú localizamos el adaptador de
ETHERNET (no el vEthernet (WSL) ya que se
trata de un puerto virtual). Hacemos Clic Derecho
> Propiedades y seleccionemos:
Dentro del menú de propiedades seleccionamos
Obtener una dirección de IP automáticamente.
Ahora podremos consultar la dirección IP a la que
está conectada el PC en Estado (Red e Internet)
Una vez esté el controlador iniciado correctamente en RobotStudio podemos ver los controles disponibles en la
barra de pestañas superior RAPID. Para iniciar el programa debemos situar el puntero de programa en Main
para todas las tareas, esto puede no ser obligatorio si el controlador estaba apagado, pero es una buena práctica
ya que si el controlador provenía de una detención puede reanudar el programa anterior sin previo aviso. En la
Figura 4.4 se muestra la ubicación.
Finalmente, pulsamos el botón Inicio (situado a la en medio de la barra de RAPID). Ahora el controlador queda
a la espera de recibir los puntos objetivo desde Grasshopper y ROS.
77
78
Uso de la estación
En la siguiente imagen se muestra la salida que se obtiene por la terminal de RobotStudio en el caso de un inicio
exitoso. Los valores de Puerto e IP pueden variar.
78
Desarrollo de Estación de Impresión 3D con Arcilla para un Robot ABB IRB 4600 79
Teniendo listo el robot real o la simulación y el servidor de ROS, podemos abrir Rhino 7 y desde su línea de
comandos abrir Grasshopper.
La configuración necesaria en el programa desarrollado para imprimir en Grasshopper variará en función del
modelo, pero para comenzar debemos seleccionar el sólido a laminar y enlazarlo al bloque inicial de alguna de
las secciones de Procesado de modelos 3D tal y como se explicó en el capítulo anterior.
Al pulsar los bloques de Grasshopper se resalta en verde en Rhino los elementos que ese bloque esté creando,
como las capas de impresión, o los puntos del recorrido; de esta manera es más sencillo apreciar los cambios.
Una vez está configurado correctamente podemos realizar el envío de la pieza. Este envío se hará de manera
directa y en una única vez. Así el robot comenzará a imprimir el sólido. Durante el proceso de impresión será
necesario que el ordenador permanezca conectado en todo momento para poder controlar desde RobotStudio al
brazo.
POSIBLE ERROR: Pese a que la plataforma de Rhino y Grasshopper sea bastante estable y no hayamos
sufrido abundantes complicaciones a lo largo del proyecto cabe recalcar la importancia de la correcta instalación
de la librería COMPAS FAB siguiendo la guía proporcionada por los desarrolladores ya que al utilizar bloques
de diferentes versiones puede ocasionarse incompatibilidad, para nosotros la versión que mejor ha funcionado
es la 0.19.1.
Estos errores pueden ser difíciles de detectar ya que surgen durante la programación en Grasshopper ya que
hacen que los bloques no compilen y parece un error del código. Realmente lo que ocurre es que no puede
acceder a la librería o a cierta parte de ella. La solución más fiable es desinstalar la librería e instalar la versión
adecuada de nuevo.
79
5. CONCLUSIONES
Finalizando este proyecto de investigación y desarrollo, es el momento para reflexionar sobre los logros
alcanzados y las contribuciones significativas que se han realizado para el desarrollo de una Estación de
Prototipado con Arcilla en el FabLab de la Universidad de Sevilla.
A lo largo de este trabajo, hemos explorado en detalle los componentes necesarios para poder realizar la
Estación, la adaptación de equipos y su interconexión y el desarrollo software realizado. Ahora vamos a
discutir los avances más significativos, las aplicaciones de nuestra investigación y delinearemos las posibles
direcciones para la continuidad del proyecto.
Como se explica en la Introducción, este proyecto nace de la necesidad de ampliar las capacidades de fabricación
del FabLab al introducir un Robot capaz de imprimir en 3D con Arcilla. El punto de partida fue un Robot ABB
IRB4600 prácticamente en blanco, únicamente con la configuración mínima para su funcionamiento; y las
piezas que conforman el extrusor y tanque de arcilla de WASP3D. Así, el objetivo superior del trabajo es
desarrollar la plataforma capaz de permitir la impresión 3D con Arcilla y la investigación de técnicas
constructivas. Esto engloba la configuración del robot, investigación y solicitud de los componentes, elecciones
de software aplicable, ajuste del hardware y programación necesaria para convertir a un equipo de ABB en un
sistema capaz de entender y ejecutar las ordenes de impresión.
Detallando objetivos más concretos tenemos:
▪ Integración del extrusor al sistema del ABB IRB4600. Gracias a la investigación realizada sobre el
conexionado del brazo y su controlador se ha sido capaz de desarrollar un cable personalizado para esta
configuración e implementar un Arduino que actúa de puente entre con IRC5 y el extrusor controlando
su funcionamiento. Esto permite el control del extrusor desde el mismo entorno que el robot ABB.
▪ Comunicación mediante ROS entre Rhino y el robot. En la documentación a la que tuvimos acceso
se describía el desarrollo de una librería por parte de ETH Zúrich diseñada para establecer la
comunicación entre equipos ABB y PC a través de ROS. Sin embargo, esta documentación se enfocaba
exclusivamente en la implementación en un entorno de simulación, lo que nos llevó a la necesidad de
personalizar y adaptar este proceso para su ejecución en el entorno del robot real.
▪ Diseño del programa de procesado de modelos 3D. Además de realizar la configuración e instalación
del hardware necesario para que la estación fuera utilizable, se necesita desarrollar el programa que
permita procesar las piezas CAD. Este programa ha sido desarrollado específicamente para esta
aplicación siendo una de las pocas ocasiones que se ha controlado desde Grasshopper un robot real con
éxito.
▪ Como último objetivo se tiene en cuenta la necesidad de recopilar todo el trabajo realizado en el
proyecto y como reproducir parte de estos avances para facilitar la continuidad de la investigación en
las sucesivas mejoras que se acometerán, facilitando todo lo posible a las personas que tengan este
objetivo su inicio en el proyecto.
Ahora mismo el entorno de impresión está listo para su puesta en marcha habiendo superado las pruebas de
movimiento y comunicación realizadas. Se completado el desarrollo de software necesario teniendo la
aplicación de Grasshopper en funcionamiento, la adaptación del extrusor a la anilla del robot, su cableado con
el controlador y control con Arduino.
Cabe destacar algunas de las limitaciones existentes en la plataforma actual que pueden marcar el camino para
la continuación del proyecto:
─ Control del extrusor. Pese a tener el extrusor conectado y respondiendo a las señales del control IRC5
el software de impresión en Grasshopper es bastante simple en este caso, no permitiendo retracciones,
cambios de velocidad o desplazamientos fuera del área de impresión como sí se permiten en las
impresoras convencionales. La solución a este problema puede estar dentro de Grasshopper, creando
Desarrollo de Estación de Impresión 3D con Arcilla para un Robot ABB IRB 4600 81
una capa más de información que permita distinguir los movimientos que se van a ejecutar.
─ Control RRC. Pese a haber mostrado buenos resultados tiene limitaciones por la forma en la que está
diseñado, el cliente de RRC en el IRC5 recibe los puntos desde ROS en el PC y ejecuta las órdenes de
RAPID necesarias para alcanzarlos. Este proceso lo realiza de manera independiente a cada punto en
lugar de generar trayectorias o “Path” que permitan un movimiento más fluido al robot. Este problema
es intrínseco a la arquitectura de su diseño y sería necesario una programación adicional en RAPID para
modificarlo además del permiso de COMPAS FAB ya que su uso está sujeto a licencia.
El equipo del FabLab de la US tiene a su disposición la herramienta necesaria para comenzar su investigación
de impresión con Arcilla. Esta investigación requerirá de un proceso previo de ensayo y error para conocer los
ajustes necesarios que introducir a la hora de imprimir con el material como puede ser la velocidad de impresión,
la altura de capa requerida o la presión del sistema neumático.
Como punto clave del proyecto se remarca la integración, desarrollar un sistema de estas capacidades requiere
de un trabajo multidisciplinar en el que se enfoca el Grado de Electrónica, Robótica y Mecatrónica de la ETSI,
pese a no ser los primeros en España en realizar una estación capaz de imprimir con Arcilla a través de un brazo
robótico, se han investigado los caminos a seguir desde cero en un campo todavía en desarrollo y se han utilizado
únicamente los recursos y estudios disponibles en el FabLab y en la US, haciéndola ser una de las pocas
universidades españolas y europeas con esta herramienta disponible para la investigación y, gracias a FabLab,
accesible a los estudiantes.
81
REFERENCIAS
[1] FabLab, «Universidad de Sevilla,» [En línea]. Available: https://fablabsevilla.us.es. [Último acceso: 19
Abril 2023].
[6] Prusa3d, «Prusa Research,» Prusa3d, 2020. [En línea]. Available: https://help.prusa3d.com/article/max-
volumetric-speed_127176. [Último acceso: 20 Abril 2023].
[8] 3d sourced, «The Complete Clay & Ceramic 3D Printer Buyer’s Guide,» 3DSOURCED, 30 Marzo 2023.
[En línea]. Available: https://www.3dsourced.com/3d-printers/clay-ceramic-3d-printer-buyers-guide/.
[Último acceso: 21 Abril 2023].
[9] B. O'Nell, «Guide to Robotic Arm 3D Printing,» Aniwaa, 16 Diciembre 2021. [En línea]. Available:
https://www.aniwaa.com/guide/3d-printers/robotic-arm-3d-printing-guide/. [Último acceso: 21 Abril
2023].
[10] I. Kauppila, «Robotic Arm 3D Printing – The Ultimate Guide,» ALL3DP, 22 Julio 2022. [En línea].
Available: https://all3dp.com/1/robotic-arm-3d-printing-platforms-software/#section-manufacturers-of-
robot-3d-printers. [Último acceso: 21 Abril 2023].
[11] Massive Dimension, «Demostration at IMTS 2022,» 16 Septiembre 2022. [En línea]. Available:
https://massivedimension.com/blogs/news/massive-dimension-and-abb-additive-manufacturing-
demonstration-at-imts-2022. [Último acceso: 16 Abril 2023].
[13] IAAC, «IAAC,» [En línea]. Available: https://iaac.net/project/pylos/. [Último acceso: 5 Mayo 2023].
[14] Gramazio Kohler, «Gramazio Kohler Research,» ETH Zürich, 2023. [En línea]. Available:
https://gramaziokohler.arch.ethz.ch. [Último acceso: 1 Mayo 2023].
Desarrollo de Estación de Impresión 3D con Arcilla para un Robot ABB IRB 4600 83
[16] Gramazio Kohler, «Gramazio Kohler Research,» ETH zürich, 2022. [En línea]. Available:
https://gramaziokohler.arch.ethz.ch/web/e/projekte/393.html. [Último acceso: 1 Mayo 2023].
[20] 3DWASP, [En línea]. Available: https://www.3dwasp.com. [Último acceso: 2023 Agosto 10].
[21] Gramazio Kohler Research, «Gramazio Kohler Research,» ETH Zurich, 2018. [En línea]. Available:
https://gramaziokohler.arch.ethz.ch/web/e/forschung/391.html. [Último acceso: 2023 Agosto 15].
[22] COMPAS FAB, «Robotic Fabrication in Rhino with the COMPAS framework,» Zúrich, 2022.
[23] Gramazio Kolher Research, «GitHub CompasFab,» [En línea]. Available: https://github.com/compas-
dev/compas_fab. [Último acceso: 2023 Agosto 20].
83