Modelo Virtual Y Control de Brazo Robótico Mediante 3dexperience Y Arduino
Modelo Virtual Y Control de Brazo Robótico Mediante 3dexperience Y Arduino
INDUSTRIALES Y DE TELECOMUNICACIÓN
UNIVERSIDAD DE CANTABRIA
Septiembre-
2019
ÍNDICE
RESUMEN ........................................................................................................................................................ 3
ABSTRACT ........................................................................................................................................................ 4
1 INTRODUCCIÓN ............................................................................................................................................ 7
6 BIBLIOGRAFÍA ............................................................................................................................................. 60
2
Modelo Virtual y Control de Brazo Robótico
RESUMEN
El presente proyecto está vinculado con las tecnologías asociadas a lo que se viene denominando la
Industria 4.0 (I4.0) o Industria del Futuro (IoF) y, más concretamente, con la aplicación conjunta de
Tenologías de Diseño 3D y las técnicas de Ingeniería de Sistemas y Automática.
En este caso, de forma más concreta, se utilizará la plataforma PLM 3DEXPERIENCE para desarrollar
un modelo virtual (Gemelo Virtual) de un pequeño brazo robot (de cinco grados de libertad más una
pinza servo-controlada), así como el sistema de control que deberá proporcionar las señales
adecuadas para controlar la posición final del robot virtual.
Para el control del robot real se estudiará el uso y los algoritmos de Arduino como interfaz entre
3DEXPERIENCE y el brazo robótico.
3
Modelo Virtual y Control de Brazo Robótico
ABSTRACT
The current project is vinculated to the technologies associated to the denominated as Industry 4.0
(I4.0) or Industry of Future (IoF), and specifically, with the united application of 3D Design
Technologies and the Systems and Automatic Engineering Technologies.
In this case, more concretely, will be used PLM platform 3DEXPERIENCE to develop a virtual model
(virtual twin) of a small robotic arm (five degrees of freedom plus a servo-controlled gripper), as well
as the control system that should provide the appropriate signals to control the final position of the
virtual robot.
Through a detailed study of 3DEXPERIENCE platform developed by Dassault Systèmes, can learn about
the applications and capabilities it offers in digital design and the development of subsequent
products.
For the control of the real robot, the use and algorithms of Arduino as an interface between
3DEXPERIENCE and the robotic arm will be studied.
4
Modelo Virtual y Control de Brazo Robótico
TABLA DE ILUSTRACIONES
Ilustración 1. Brújula de la plataforma 3DEXPERIENCE ........................................................................ 10
Ilustración 2. Placa Arduino Uno........................................................................................................... 12
Ilustración 3. Distribución de pines de Arduino Uno ............................................................................ 13
Ilustración 4. Representación mediante interruptores de una I/O digital en un microcontrolador de
Arduino ................................................................................................................................................. 15
Ilustración 5.. Representación de diiferentes valores de duty cicle ..................................................... 17
Ilustración 6. Interfaz de programación de Arduino ............................................................................. 18
Ilustración 7. Metodología RFLP ........................................................................................................... 19
Ilustración 8. Ciclo RFLP ........................................................................................................................ 20
Ilustración 9. Proceso RFLP ................................................................................................................... 20
Ilustración 10. Enfoque iterativo RFLP .................................................................................................. 21
Ilustración 11. Servomotor ................................................................................................................... 23
Ilustración 12. Puertos GND de Arduino ............................................................................................... 24
Ilustración 13. Puerto Vin de Arduino................................................................................................... 24
Ilustración 14. Pin 2 de Arduino ............................................................................................................ 25
Ilustración 15. Icono de Arduno y su COM Number ............................................................................. 25
Ilustración 16. Selección del compilador de C ...................................................................................... 37
Ilustración 17. Notificación del correcto funcionamiento del compilador ........................................... 37
Ilustración 18. Modelo Virtual para el control de un servomotor ........................................................ 38
Ilustración 19. Bloque lógico de la señal de entrada ............................................................................ 39
Ilustración 20. Bloque lógico del controlador PID ................................................................................ 40
Ilustración 21. Diagrama de bloques del sistema ................................................................................. 41
Ilustración 22. Gráfica de respuestas con diferentes valores de Kp ..................................................... 42
Ilustración 23. Gráfica de respuestas con diferentes valores de Ki ...................................................... 43
Ilustración 24. Gráfica de respuestas con diferentes valores de Kd ..................................................... 44
Ilustración 25. Bloque lógico del servomotor ....................................................................................... 45
Ilustración 26. Evolución de señales del PID (1) ................................................................................... 46
Ilustración 27. Evolución de señales del PID (2) ................................................................................... 46
Ilustración 28. Evolución de señales del PID (3) ................................................................................... 47
Ilustración 29. Evolución de señales del PID (4) ................................................................................... 47
Ilustración 30. Evolución de señales del PID (5) ................................................................................... 48
Ilustración 31. Patyes del brazo articulado ........................................................................................... 49
Ilustración 32. Giros de la muñeca........................................................................................................ 49
5
Modelo Virtual y Control de Brazo Robótico
6
Modelo Virtual y Control de Brazo Robótico
1 INTRODUCCIÓN
1.1 OBJETIVO
Conocer el “Internet of Things” con 3DEXPERIENCE para implementar mecatrónica virtual o
teleoperada.
Con la plataforma 3DEXPERIENCE, se puede controlar el brazo robótico y su modelo virtual, usando
ARDUINO como interfaz. La conexión entre ambos procesos permite que 3DEXPERIENCE controle el
robot y devuelva una realimentación para actualizar el modelo.
Por tanto, el objetivo es aprender, por una parte, a entender el proceso genérico de conectar y operar
dispositivos de laboratorio a sus “Virtual Twins” (Gemelos Virtuales) en 3DEXPERIENCE a través de
ARDUINO o microcontroladores similares, y, por otra parte, a conectar CATIA y ARDUINO para un
control bidireccional y realimentación (Software/Hardware/Model-in-the-loop).
Es necesario tener:
7
Modelo Virtual y Control de Brazo Robótico
área de conocimiento de Ingeniería de Sistemas y Automática (TT-ISA). Estos dos métodos utilizaban
hasta hace muy poco entornos de diseño y simulación muy diferentes y resultaba complicado
conseguir un diseño integrado del producto y su correspondiente proceso de fabricación y servicio.
Aquí es donde entran las herramientas software de gestión de ciclo de vida del producto (PLM) que
permiten integrar ambas tecnologías sobre una misma plataforma.
La utilización de plataformas PLM presenta la ventaja de que, además de poder ser utilizadas para
diseñar experiencias prácticas formativas vinculadas con los contenidos propios de las asignaturas de
automática, al utilizarlas se está formando un entorno colaborativo cada vez más empleado en
ingeniería y que es pieza clave en la Industria 4.0.
El objetivo de la Industria del Futuro es crear un modelo de fabricación con gran capacidad de
adaptación y flexibilidad, de elevado rendimiento y mejorando tanto la ergonomía en los puestos de
trabajos como la seguridad de las personas.
Las tecnologías 3D son aquellas que se ocupan de la ingeniería virtual, es decir, de la tecnología que
utiliza computadores para la simulación física y geométrica de sistemas reales.
8
Modelo Virtual y Control de Brazo Robótico
Hoy en día los equipos multidisciplinarios deben trabajar juntos para diseñar y crear nuevos productos
y usualmente utilizan el software de ingeniería asistida por computadora (CAE) para lograr sus metas
en el diseño. Es un elemento clave de diseño porque permite a los ingenieros simular y probar diseños
en diferentes campos (mecánicos, termodinámicos, eléctricos y electrónicos, sistemas de control, etc).
La gestión de datos de producto (PDM) surgió como la necesidad de proporcionar un acceso fácil y
seguro a los datos creados durante el desarrollo del producto. PDM se centró en el dominio de la
ingeniería, pero fracasó en otras actividades relacionadas con negocios tales como marketing, ventas,
etc.
Los sistemas PLM (Product Lifecycle Management) surgieron a principios de los años 2000 y se
propusieron como una herramienta para intercambiar información y trabajar juntos en el ciclo de vida
completo del producto. Los objetivos del PLM tratan de cubrir todas las etapas del desarrollo del
producto integrando los procesos y las personas que participan en el proyecto. Toma en cuenta la
necesidad de una colaboración multidisciplinar, independientemente de la ubicación geográfica de las
empresas y partes interesadas que intervienen en el proyecto.
Este procedimiento de ingeniería colaborativa permite a los ingenieros llevar a cabo tareas de
superposición en paralelo, haciendo posible reducir tiempo y coste asociado a los diseños, y mejorar
la calidad de los productos. PLM también incorpora ingeniería virtual, pero va más allá del mero
aspecto de ingeniería del desarrollo de proyectos, sino que trata de gestionar toda la información del
producto en todas las etapas del ciclo de vida.
Las principales ventajas que ofrece este enfoque son que ayuda a ofrecer productos y procesos más
innovadores en un tiempo más corto, lo que acorta el tiempo al mercado. Además, establece una
relación más extensa y colaborativa con todos los elementos de la cadena de valor, como clientes,
proveedores y socios comerciales.
1.4 3DEXPERIENCE
Dassault Systèmes es una pionera en las plataformas B2B (Business to Business).
El término Business to Business hace referencia a las transacciones comerciales entre empresas, es
decir, a aquellas que típicamente se establecen entre un fabricante y el distribuidor de un producto,
o entre un distribuidor y un comercio minorista.
El término B2C (Business to Client) es aquella modalidad de transacción que vincula directamente a
las empresas con los consumidores y puede corresponder a diversos modelos, como por ejemplo los
basados en la publicidad, en la comunidad y en tarifas.
9
Modelo Virtual y Control de Brazo Robótico
Durante los últimos años las Plataformas Business to Client, lideradas por potentes empresas como
Amazon o Alibaba, han experimentado un elevado crecimiento en todo el mundo. Actualmente, esto
está dando un giro hacia otra dirección donde los modelos de negocio de plataformas B2B, cada vez
más en auge, les están quitando gran parte de protagonismo.
Según un estudio de la consultora tecnológica Frost&Sullivan, se calcula que para el año 2020 las
plataformas Business to Business podrían llegar a alcanzar unas ventas de hasta 6,7 billones de dólares
a nivel mundial, lo que supone el doble de lo proyectado para los modelos Business to Client.
Una de las empresas pioneras en este tipo de plataformas B2B es la multinacional francesa Dassault
Systèmes, con su Plataforma 3DEXPERIENCE lanzada en el año 2012, y catalogada como una
plataforma de experiencia comercial e innovación de productos.
La plataforma 3DEXPERIENCE es principalmente un sistema de gestión del ciclo de vida del producto
(PLM) y tiene como objetivo apoyar el diseño digital y el desarrollo de productos que posteriormente
se fabrican. Un usuario inicia sesión en una interfaz y puede acceder a todas las capacidades instaladas
y con licencia de 3DEXPERIENCE desde ahí. La plataforma se basa en una base de datos, lo que permite
el almacenamiento y la indexación de datos.
Los cuatro cuadrantes, comenzando en la parte superior y siguiendo en el sentido de las agujas del
reloj:
10
Modelo Virtual y Control de Brazo Robótico
Debido a que toda esta funcionalidad está en una sola plataforma, esto le permite al usuario una
experiencia realista e inmediata en un mundo virtual (experiencia en tiempo real).
· La plataforma es escalable para adaptarse a los requisitos de cada organización que utiliza la
tecnología. Los adoptantes pueden elegir comenzar con la funcionalidad básica y luego pasar
a capacidades más avanzadas.
· El concepto de una plataforma de diseño surgió de la necesidad de almacenar y mantener
todos los datos digitales generados durante el desarrollo del producto después de la adopción
generalizada de aplicaciones CAD. Ahora tiene amplias dimensiones más allá de eso.
· Dassault Systèmes agrega constantemente nuevas aplicaciones y funciones a la plataforma,
por lo que el rango de capacidades se está expandiendo.
· Más y más de la plataforma se está moviendo a la nube. Dassault Systémes ahora ofrece un
modelo SAAS completo para muchas aplicaciones dentro de la plataforma. Esto reduce
drásticamente la complejidad de la implementación.
Integra los estándares de intercambio ISO STEP AP203/214/242, cubriendo la fuerte demanda de los
clientes que necesitan desarrollar una estrategia de archivo a largo plazo. También incluye muchos
estándares verticales como AUTOSAR (transporte y movilidad) o IFC (construcción), y estándares
multisectoriales como MODELICA para generar contenidos sofisticados para sistemas físicos.
11
Modelo Virtual y Control de Brazo Robótico
Además, se podría decir que es la única plataforma realmente digital, ya que otro tipo de soluciones
electrónicas únicamente almacenan archivos estáticos, pero no pueden funcionar como plataformas
en tiempo real, como es el caso de la herramienta creada por Dassault Systèmes, que está disponible
tanto en un entorno privado “on premise” como “on the cloud”.
1.5 ARDUINO
Es una placa con un microcontrolador (ATMEGA8 y ATMEGA168 de Atmel), un circuito integrado
programable capaz de realizar operaciones matemáticas complejas a gran velocidad, conectado bajo
la configuración de “sistema mínimo” sobre una placa de circuito impreso a la que se le pueden
conectar placas de expansión (shields) a través de la disposición de los puertos de entrada y salida
presentes en la placa seleccionada.
12
Modelo Virtual y Control de Brazo Robótico
Las shields complementan la funcionalidad del modelo de la placa empleada, agregando circuitería,
sensores y módulos de comunicación externos a la placa original. Las shields más importantes de
Arduino son:
· Ethernet Shield: la placa Arduino se comunica con el módulo W5100 y la micro-SD utilizando
el bus SPI (mediante el conector ICSP). Esto se encuentra en los pines digitales 11, 12 y 13 en
el modelo UNO. El pin 10 es utilizado para seleccionar el W5100 y el pin 4 para la micro-SD.
· Wifi Shield: permite conectar un Arduino a Internet mediante Wifi. También dispone de un
slot para una tarjeta micro-SD. Esta shield se comunica con Arduino a través del bus SPI
mediante los pines 4 y 10 al igual que la Ethernet Shield.
· GSM Shield: conecta Arduino a Internet mediante GPRS, usando una tarjeta SIM. También
permite enviar y recibir mensajes y llamadas de voz, añadiendo un micrófono y un altavoz.
Por el consumo de esta shield, se hace necesario alimentar a Arduino mediante una fuente
externa y no desde un USB, ya que no es capaz de proporcionar suficiente energía.
· Motor Shield: permite manejar dos motores de corriente continua, controlando su dirección
y velocidad. Está basado en un chip de doble puente. Este shield usa dos canales y cada canal
usa cuatro pines, por lo que ocupa ocho pines del Arduino.
13
Modelo Virtual y Control de Brazo Robótico
Esta placa es muy barata, utiliza código abierto (C++) y está basada en hardware y software flexibles y
fáciles de usar. Cuenta con pines digitales y analógicos que pueden ser configurados con entradas o
salidas. Así mismo, permite su conexión y energización en serie vía USB.
· 14 pines digitales que pueden ser configurados como entradas o salidas, de los cuales 6
pueden ser utilizados como señales digitales PWM.
· 6 pines analógicos desde A0 hasta A5 para las entradas analógicas.
· 3 pines GND para conectar a tierra los circuitos.
· 2 pines de alimentación de 5 V y 3,3 V respectivamente.
La mayoría de las placas Arduino pueden ser programadas a través del puerto serie que incorporan
haciendo uso del Bootloader que traen programado por defecto. El software de Arduino consiste en
dos elementos: un entorno de desarrollo (IDE), basado en el entorno de processing y en la estructura
de programación Wiring, y en el cargador de arranque (bootloader, por su traducción al inglés), que
es ejecutado de forma automática dentro del microcontrolador en cuanto este se enciende.
Los sistemas digitales, como por ejemplo un microcontrolador, usan la lógica de dos estados
representados por dos niveles de tensión eléctrica, uno alto, H, y otro bajo, L, (de High y Low,
respectivamente, en inglés). Por abstracción, dichos estados se sustituyen por ceros y unos, lo que
facilita la aplicación de la lógica y la aritmética binaria. Si el nivel alto se representa por 1 y el bajo por
0, se habla de lógica positiva y en caso contrario de lógica negativa.
En Arduino para tratar las entradas y salidas digitales se usan las siguientes funciones:
14
Modelo Virtual y Control de Brazo Robótico
En la imagen siguiente se muestra el estado por defecto de una I/O digital en un microcontrolador de
Arduino. Se ha simplificado con interruptores la compleja electrónica que hay dentro. Por defecto los
pines digitales I/O están configurados como inputs en un estado de alta impedancia (equivalente a
una resistencia de 100 MΩ en frente del pin), es decir, SW3 a ON y no hace falta llamar a la función
pinMode() aunque es recomendable para aclarar el código.
· pinMode(x, INPUT) → SW3 = ON (resto a OFF). Los valores leídos serán aleatorios si el pin de
Arduino está al aire. El pin está en un estado de alta impedancia.
· pinMode(x, INPUT_PULLUP) → SW3 = ON & SW4 = ON (resto a OFF). Los valores leídos sin
nada conectado al pin es HIGH. La resistencia R1 tiene un valor dependiendo del
microcontrolador, pero tiene un valor entre 20 kΩ y 150 kΩ.
· pinMode(x, OUTPUT) & digitalWrite(x, HIGH) → SW2 = ON & SW1 = 5 V (resto a OFF). Estado
de baja impedancia, no hay resistencia interna y es necesario poner una resistencia adecuada
a la salida del pin para no superar los 40mA (source) máximos admitidos.
· pinMode(x, OUTPUT) & digitalWrite(x, LOW) → SW2 = ON & SW1 = GND (resto a OFF). Estado
de baja impedancia, no hay resistencia interna y es necesario poner una adecuada para no
superar los 40 mA (sink) máximos admitidos.
Una señal eléctrica analógica es aquella en la que los valores de la tensión varían constantemente y
pueden tomar cualquier valor.
15
Modelo Virtual y Control de Brazo Robótico
Un sistema de control (como un microcontrolador) no tiene capacidad alguna para trabajar con
señales analógicas, de modo que necesita convertir las señales analógicas en señales digitales para
poder trabajar con ellas.
· Valores: qué valor en voltios define 0 y 1. En este caso, es tecnología TTL (0 – 5 V).
· Resolución analógica: número de bits que se usan para representar como una notación digital
una señal analógica.
En el caso de Arduino Uno, el valor de 0 V analógico es expresado en digital como B0000000000 (0) y
el valor de 5 V analógico es expresado en digital como B1111111111 (1023). Por lo tanto, todo valor
analógico intermedio es expresado con un valor entre 0 y 1023, es decir, sumo 1 en binario cada 4,883
mV.
En Arduino para tratar las entradas y salidas analógicas usamos las siguientes funciones:
Arduino Uno tiene entradas analógicas que gracias a los conversores analógico-digital hacen que el
microcontrolador pueda entender ese valor, pero no tiene salidas analógicas puras y para solucionar
esto, usa la técnica de PWM.
Las salidas PWM (Pulse Width Modulation) permiten generar salidas analógicas desde pines digitales.
La modulación por ancho de pulsos (PWM) de una señal o fuente de energía es una técnica en la que
se modifica el ciclo de trabajo de una señal periódica (una sinusoidal o una cuadrada, por ejemplo), ya
16
Modelo Virtual y Control de Brazo Robótico
sea para transmitir información a través de un canal de comunicaciones o para controlar la cantidad
de energía que se envía a una carga.
El ciclo de trabajo de una señal periódica es el ancho relativo de su parte positiva en relación con el
periodo (duty cicle = (tiempo que la salida está a uno o HIGH) / (periodo de la función).
En Arduino la frecuencia de PWM es de 500 Hz, pero es un valor que se puede modificar en caso de
que sea necesario.
Software de Arduino
Los programas de Arduino están compuestos por un solo fichero con extensión “.ino”, aunque es
posible organizarlo en varios ficheros. El fichero principal siempre debe estar en una carpeta con el
mismo nombre que el fichero.
17
Modelo Virtual y Control de Brazo Robótico
· Laboratorio virtual
· Control de un brazo robótico de 6 grados de libertad
· Uso de la plataforma de Arduino
· Mecatrónica y escenarios transdisciplinarios
18
Modelo Virtual y Control de Brazo Robótico
19
Modelo Virtual y Control de Brazo Robótico
20
Modelo Virtual y Control de Brazo Robótico
La versión real del robot es capaz de validar las soluciones elegidas para encontrar las mejores
especificaciones.
2 INTERNET OF THINGS
Permite a los objetos ser detectados y controlados a distancia a través de la infraestructura de red
existente, creando oportunidad a una integración más directa entre el mundo físico y los sistemas
21
Modelo Virtual y Control de Brazo Robótico
basados en computador, dando como resultado una mejor eficiencia, precisión y beneficio
económico.
Una definición más sencilla describe el concepto “Internet of Things” como la interconexión digital de
objetos cotidianos con Internet. Alternativamente, “Internet de las cosas” es la conexión de Internet
con más “cosas u objetos” que personas.
El concepto de “Internet of Things” fue propuesto por Kevin Ashton en el Auto-ID Center del MIT en
1999, donde se realizaban investigaciones en el campo de la identificación por radiofrecuencia en red
y tecnologías de sensores.
El “Internet de las cosas” debería codificar de 50 a 100.000 millones de objetos y seguir el movimiento
de estos. Se calcula que todo ser humano está rodeado, al menos, de entre 1000 a 5000 objetos. Según
la empresa Gartner, en 2020 habrá en el mundo aproximadamente 26 mil millones de dispositivos con
un sistema de conexión al “Internet de las cosas”. Abi Research, por otro lado, asegura que para el
mismo año existirían 30 mil millones de dispositivos inalámbricos conectados a Internet. Con la
próxima generación de aplicaciones de Internet (protocolo IPv6) se podrían identificar todos los
objetos, algo que no se podía hacer con IPv4. Este sistema sería capaz de identificar instantáneamente
por medio de un código a cualquier tipo de objeto.
22
Modelo Virtual y Control de Brazo Robótico
3 CONTROL DE UN SERVOMOTOR
Está conformado por un motor y un circuito de control. También potencia proporcional para cargas
mecánicas. Un servo, por consiguiente, tiene un consumo de energía reducido.
Los servomotores hacen uso de la modulación por ancho de pulsos (PWM) para controlar la dirección
o posición de los motores de corriente continua. La mayoría trabaja en la frecuencia de los 50 Hz, así
las señales PWM tendrán un periodo de 20 ms. La electrónica dentro del servomotor responderá al
ancho de la señal modulada de la siguiente manera:
· Si los circuitos dentro del servomotor reciben una señal de entre 1 a 1,4 ms, éste se moverá
en sentido horario.
· Si los circuitos dentro del servomotor reciben una señal de entre 1,6 a 2 ms moverá el
servomotor en sentido antihorario.
· Si los circuitos dentro del servomotor reciben una señal de 1,5 ms representa un estado
neutro para los servomotores estándares.
3.2 ARDUINO
3.2.1 Conexión del servomotor a Arduino
El servomotor cuenta con tres cables cuyos colores corresponden a funciones específicas:
Los cables del servomotor se deben conectar a la tarjeta Arduino de la siguiente manera:
24
Modelo Virtual y Control de Brazo Robótico
· El cable blanco (posición del servo) en el puerto digital que se haya elegido, en este caso, el
pin 2.
Dentro del programa de Arduino, hay que asegurarse de que la correcta placa (Arduino Uno) y el
correcto “COM Number” están seleccionados. Tras esto, ya se puede lanzar el programa a la placa de
Arduino.
25
Modelo Virtual y Control de Brazo Robótico
SimpleSoftwareServo
Mediante este código, se establecen un ángulo (de 0 a 180 grados), un pulso (en microsegundos) y un
pulso mínimo y máximo.
Conectará con un pin, establecerá el modo de ese pin, junto con el mínimo y el máximo para el ángulo
del servo, y no posicionará el servomotor hasta que aparezca el comando write(), el cual es el que
especifica el ángulo (en grados y de 0 a 180, como se mencionó anteriormente) .
Se debe actualizar con el comando refresh() al menos cada 50 ms aproximadamente para mantener
activo el servomotor; cada vez que lo llamas, se genera un pulso y pasarán hasta 20 ms.
Un ejemplo sencillo del uso de este programa es el siguiente, en el cual se hace que un servomotor
realice barridos de ida y vuelta:
26
Modelo Virtual y Control de Brazo Robótico
Se puede observar cómo inicialmente se crea la variable servo1 y se selecciona el pin 2. Tras esto, el
servomotor irá de 0 a 180 grados en intervalos de 1 grado, seguido de un delay de 20 ms, y después
irá de 180 a 0 grados, seguido de otra pausa de 20 ms.
MsTimer2
27
Modelo Virtual y Control de Brazo Robótico
Este ejemplo muestra su uso en el caso de que se necesitara encender un LED en el pin 13 cada
segundo:
Una vez definidas estas dos funciones, se puede dar paso al programa principal.
Programa principal
Primero, en la parte de declaración de variables, se establece un tamaño para el “buffer” de 95, que
es un buen límite para la operación del programa. También se especifica que el número de pines es
20 y que 14 de ellos son digitales (los seis restantes son los pines analógicos de A0 a A5).
28
Modelo Virtual y Control de Brazo Robótico
A continuación, se fija que cada pin tendrá 3 atributos. El primero es el tipo y los valores podrán ser: -
1 = no usar este pin, 0 = digital, 1 = PWM, 2 = analógico); el segundo atributo es el modo que puede
ser: 0 = Salida, 1 = Entrada, 2 = Servo; y el tercer atributo es el último valor de la salida.
Los puertos PWM (modulación de ancho de pulso) se emplean en una amplia variedad de aplicaciones,
que van desde la medición y las comunidades hasta el control de potencia y la conversión.
Después se define el tipo de los pines de Arduino de la siguiente manera (cada valor del tipo es
asignado según lo establecido en el párrafo anterior):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
-1 -1 0 1 0 1 1 0 0 1 1 1 0 0 2 2 2 2 2 2
En la variable “pin” se crea una especie de tabla de estado de cada pin. Esta tabla de estado tiene 20
filas (número de pines) y 3 columnas (número de atributos de cada pin).
Con la función SimpleSoftwareServo, se crea un “objeto servo” en todos los pines para controlar un
servomotor si es necesario y se inician el pin y el valor actual a cero. En este caso, sólo nos interesa el
pin 2 para controlar el único servomotor disponible.
En la parte del “setup”, se inicia el monitor serie y se establece la velocidad de datos en bits por
segundo (baudios) para la transmisión de datos en serie. En este caso la velocidad es 9600.
Después, se configuran todos los pines como salidas y se ponen todas las posiciones de “pin” (tabla
de estado) a cero. Se utiliza la función MsTimer2 para fijar e iniciar un periodo de 20 ms.
29
Modelo Virtual y Control de Brazo Robótico
En la parte del bucle (loop), se define que cuando en el “buffer” se detecte una orden, se ejecute la
acción pertinente y, si no se detecta nada, se pasará a la siguiente línea de órdenes.
30
Modelo Virtual y Control de Brazo Robótico
En el corte de código de la imagen superior, se realiza una lectura del “buffer” y, en el primer
condicional, si se recibe la orden ‘p’, significa que se quiere modificar el pin seleccionado, por lo que
se elimina esa orden mediante eraseFirstChar y se guarda en la variable “value” (la función atoi()
permite convertir una cadenas de caracteres (char) a una variable entera (int)) el nuevo pin
seleccionado, para seguidamente introducirlo en la función modifyPinSelected().
El resto del “loop” son otros casos de órdenes y acciones recibidas en el “buffer”. En la siguiente
imagen se observa un caso como el anterior, pero esta vez para modificar el modo del pin.
En la siguiente imagen se observa un caso como el anterior, pero esta vez para modificar el valor del
pin.
Para terminar el “loop”, los últimos condicionantes introducen los casos de que no se recibiera
ninguna orden, por lo que se pasaría a la siguiente línea,
O de que se recibiera una orden no convencional, por lo que se borraría el primer valor del “buffer”,
31
Modelo Virtual y Control de Brazo Robótico
La parte final del programa corresponde a la creación de las funciones utilizadas dentro del ‘loop’, que
tienes las tareas de cambiar el pin seleccionado (modifyPinSelected), cambiar el modo del pin
(modifyPinMode), cambiar el valor del pin (modifyPinValue) y otras funciones necesarias incluidas
dentro de las anteriores (applyPinValue, readPinValue, …).
modifyPinSelected
modifyPinMode
Cambia el modo del pin seleccionado: en esta función existen 3 casos: cambio a salida, cambio a
entrada y cambio a servo.
El primer caso es si se quiere cambiar el modo del pin a salida, donde separa la “variable servo” de ese
pin. Después se cambia el atributo del modo a salida y se le aplica al pin el último valor enviado.
32
Modelo Virtual y Control de Brazo Robótico
El segundo caso es si se quiere cambiar el modo del pin a entrada, donde separa la “variable servo”
de ese pin. Después se cambia el atributo del modo a entrada y se lee el valor del pin actual.
El último caso es si se quiere cambiar el modo del pin a servo, donde se une el “objeto servo” a ese
pin. Después se cambia el atributo del modo a servo y se le aplica el último valor enviado.
modifyPinValue
Cambia el valor del pin seleccionado: siempre que el pin del que se trata sea una entrada, se cambia
el modo del pin de entrada a salida y se le aplica el valor actual.
33
Modelo Virtual y Control de Brazo Robótico
applyPinValue
Aplica el valor obtenido al pin seleccionado: puede que el pin sea un servo o sea una entrada y también
puede haber tres casos: que el valor sea el mínimo, el máximo o un valor intermedio entre ellos.
34
Modelo Virtual y Control de Brazo Robótico
readPinValue
Lee el valor del pin seleccionado. En el primer condicional se da el caso de que el pin sea una entrada
y el que caso de que sea un pin digital o PWM, o sea un pin analógico:
En el segundo condicional se da el caso de que el pin sea un servo, donde se devuelve el último valor
enviado:
eraseFirstChar
35
Modelo Virtual y Control de Brazo Robótico
isAValue
lecture
3.3 3DEXPERIENCE
El software de 3DEXPERIENCE necesita ciertos compiladores, en este caso, un compilador de lenguaje
C, para el cual es válida la última versión de Microsoft Visual Studio.
36
Modelo Virtual y Control de Brazo Robótico
CATIA (CATIA 1.3.1.) – CATIA es un paquete de software multiplataforma para diseño asistido por
computadora (CAD), fabricación asistida por computadora (CAM), ingeniería asistida por
computadora (CAE), PLM y 3D, desarrollado por la compañía francesa Dassault Systèmes.
37
Modelo Virtual y Control de Brazo Robótico
CATIA usa el lenguaje abierto Modelica tanto en CATIA Dynamic Behavior Modeling como en Dymola,
para modelar y simular rápida y fácilmente el comportamiento de sistemas complejos que abarcan
múltiples disciplinas de ingeniería. CATIA y Dymola se extienden aún más a través de la disponibilidad
de una serie de bibliotecas de Modelica específicas de la industria y el dominio que permiten al usuario
modelar y simular una amplia gama de sistemas complejos, desde la dinámica de vehículos
automotores hasta la dinámica de vuelo de aeronaves.
El primer bloque, que representa la señal sinusoidal de entrada, contiene este esquema:
38
Modelo Virtual y Control de Brazo Robótico
El bloque superior es una constante de valor 2, que indica a la tarjeta Arduino que el pin 2 es el pin de
entrada que está conectado al servomotor.
Debajo, una señal sinusoidal seguida de una ganancia es la señal de entrada que alimentará el
servomotor.
39
Modelo Virtual y Control de Brazo Robótico
Antes de comentar cuáles son las entradas y la salida de este controlador, se debe explicar el
funcionamiento de este operador.
3.3.3 PID
Un controlador PID (Proporcional, Integral y Derivativo) es un mecanismo de control simultáneo que
calcula el error entre un valor medido y un valor deseado. Los tres parámetros que constituyen el
algoritmo del control PID son:
La suma de estas tres acciones es usada para ajustar al proceso por medio de un elemento de control,
como en este caso, la posición de un servomotor.
40
Modelo Virtual y Control de Brazo Robótico
Para el correcto funcionamiento de un controlador PID que regule un sistema se necesitan, al menos:
· Un sensor, que determinará el estado del sistema. Este proporciona una señal analógica o
digital al controlador, la cual representa el punto actual en el que se encuentra el sistema.
· Un controlador, que generará la señal que gobierna el actuador. El controlador recibe una
señal externa que representa el valor que se desea alcanzar; esta señal recibe el nombre de
punto de consigna, la cual es de la misma naturaleza y tiene el mismo rango de valores que la
señal que proporciona el sensor.
El controlador resta la señal de punto de consigna, obteniendo así la señal de error, que
determina en cada instante la diferencia que hay entre el valor deseado y el valor medido.
La señal de error es utilizada por cada uno de los tres componentes del controlador PID. Las
tres señales sumadas, componen la señal de salida que el controlador va a utilizar para
gobernar el actuador. La señal resultante de la suma de estas tres se llama variable
manipulada y no se aplica directamente sobre el actuador, sino que debe ser transformada
para ser compatible con el actuador utilizado.
· Un actuador, que modificará el sistema de manera controlada (el servomotor).
Proporcional
La parte proporcional consiste en el producto entre la señal de error y la constante proporcional para
lograr que el error en estado estacionario se aproxime a cero, pero en la mayoría de los casos, estos
valores solo serán óptimos en una determinada porción del rango total de control, siendo distintos
valores óptimos para cada porción del rango.
41
Modelo Virtual y Control de Brazo Robótico
Sin embargo, existe también un valor límite en la constante proporcional (Kp) a partir del cual, en
algunos casos, el sistema alcanza valores superiores a los deseados. Este fenómeno se llama
sobreoscilación y, por razones de seguridad, no debe sobrepasar el 30%, aunque es conveniente que
la parte proporcional ni siquiera produzca sobreoscilación. Hay una relación lineal continua entre el
valor de la variable controlada y la posición del elemento final de control (el servomotor se mueve al
mismo valor por unidad de desviación). La parte proporcional no considera el tiempo, por lo tanto, la
mejor manera de solucionar el error permanente y hacer que el sistema contenga alguna componente
que tenga en cuenta la variación respecto del tiempo, es incluyendo y configurando las acciones
integral y derivativa.
Integral
El modo de control integral tiene como propósito disminuir y eliminar el error en estado estacionario,
provocado por perturbaciones exteriores y los cuales no pueden ser corregidos por el control
proporcional.
El control integral actúa cuando hay una desviación entre la variable y el punto de consigna,
integrando esta desviación en el tiempo y sumándola a la acción proporcional. El error es integrado,
lo cual tiene la función de sumarlo por un periodo determinado.
42
Modelo Virtual y Control de Brazo Robótico
Luego es multiplicado por una constante (Ki). Posteriormente, la respuesta integral es adicionada al
modo proporcional para formar el control P + I con el propósito de obtener una respuesta estable del
sistema sin error estacionario. El modo integral presenta un desfase en la respuesta de 90⁰ que
sumados a los 180⁰ de la realimentación, que es negativa, acercan al proceso a tener un retraso de
270⁰, luego entonces solo será necesario que el tiempo muerto contribuya con 90⁰ de retardo para
provocar la oscilación del proceso.
El control integral se utiliza para obviar el inconveniente del offset, que es la desviación permanente
de la variable con respecto punto de consigna, de la banda proporcional.
Derivativo
La acción derivativa se manifiesta cuando hay un cambio en el valor absoluto del error. Si el error es
constante, solamente actúan los modos proporcional e integral.
43
Modelo Virtual y Control de Brazo Robótico
Se deriva con respecto al tiempo y se multiplica por una constante (Kd) y luego se suma a las señales
anteriores (P + I). Es importante adaptar la respuesta de control a los cambios en el sistema ya que
una mayor derivativa corresponde a un cambio más rápido y el controlador puede responder de la
manera correcta.
El control derivativo se caracteriza por el tiempo de acción derivada en minutos de anticipo. La acción
derivada es adecuada cuando hay retraso entre el movimiento de variable de control y su repercusión
a la variable controlada.
El tiempo óptimo de acción derivativa es el que retorna la variable al punto de consigna con las
mínimas oscilaciones.
Conociendo el funcionamiento de este controlador, se puede observar que, en el esquema del bloque
del controlador PID en 3DEXPERIENCE, la señal conocida como punto de consigna procede de la tarjeta
Arduino y es la señal sinusoidal de entrada; la señal que se obtiene del PID (variable resultante) es la
que se aplica al servomotor; y la señal de realimentación del PID es la que procede del sensor de
posición del servomotor (la cual se comentará a continuación).
44
Modelo Virtual y Control de Brazo Robótico
El bloque recibe la señal conocida como variable aplicada, procedente del controlador PID. Esta señal
es usada para alimentar al servomotor, que está representado por un motor de corriente continua,
un engranaje ideal y un rodamiento de fricción.
Tras esto, hay un sensor el cual adquiere el ángulo de posición del servomotor. Este ángulo es
transformado de radianes a grados. La señal resultante es la realimentación del controlador PID que,
restada a la señal de entrada, forman la señal de error.
Este bucle se repetirá hasta que la señal de error sea nula, lo que implica que el servomotor se
encuentra en la posición deseada.
3.3.4 Simulación
Al ejecutar la simulación, interesa prestar atención a las tres señales que intervienen en el controlador
PID; son las siguientes:
45
Modelo Virtual y Control de Brazo Robótico
· Señal azul claro: esta señal es la consigna, es decir, la señal sinusoidal de entrada.
· Señal azul oscuro: esta señal es la realimentación. Proviene del sensor del servomotor y
representa su ángulo de posición en el instante actual.
· Señal roja: es la señal obtenida por el controlador PID, la cual es aplicada al servomotor para
intentar obtener la posición requerida.
46
Modelo Virtual y Control de Brazo Robótico
47
Modelo Virtual y Control de Brazo Robótico
El controlador PID actúa de forma correcta, ya que rápidamente se consigue la posición deseada del
ángulo del servomotor.
DFLG6DOF es un brazo robótico que consta de seis servomotores, que corresponden al brazo, el codo,
el antebrazo, la muñeca (dos grados de libertad) y una base giratoria. Cada articulación puede moverse
en cierto rango.
El brazo robótico consta de 6 partes con movimientos relativos de giro en un eje entre ellos. Su
construcción y funcionamiento se asemeja a la de un brazo humano (robot antropomórfico), aunque
habría que sustituir la mano por una pinza y se tendría que restar un giro a la muñeca. Para nombrar
cada una de sus partes se aprovecha a las partes del brazo.
48
Modelo Virtual y Control de Brazo Robótico
· Elevación de la pinza: es el movimiento de giro del conjunto pinza respecto al antebrazo con
el que se consigue variar el ángulo que forman entre ellos.
· Giro de la pinza: no altera el ángulo de la pinza respecto del antebrazo.
49
Modelo Virtual y Control de Brazo Robótico
El gemelo digital se basa en mediciones de datos masivas, acumulativas, en tiempo real y del mundo
real en una variedad de dimensiones. Estas mediciones pueden crear un perfil evolutivo el objeto o
proceso en el mundo digital que puede proporcionar información importante sobre el rendimiento
del sistema, lo que lleva a acciones en el mundo físico, como un cambio en el diseño del producto o
del proceso de fabricación.
Hoy en días, los métodos convencionales de diseño y operación a menudo se descuidan, ya que no es
factible almacenar datos en tiempo real. Mediante el uso de modelos digitales, es posible interpretar
las mediciones, los datos operativos y de la flota de una manera diferente en lugar de solo detectar
desviaciones de la norma. Se pueden simular varios modos de falla para la situación actual que intenta
reproducir las señales de medición reales. La comparación de las señales simuladas con las medidas
puede ayudar a identificar el modo de falla. En general, el Digital Twin es una tecnología práctica, que
produce mejores resultados.
· La versión en miniatura del brazo robótico industrial está diseñada para demostrar el principio
de funcionamiento del robot industrial.
· Es un modelo que tiene seis grados de libertad y trabaja en un sistema que realiza funciones
de recoger y colocar un objeto.
50
Modelo Virtual y Control de Brazo Robótico
Se describen las funciones y se construyen lógicas para obtener los resultados deseados del proceso.
Esto se realiza en las aplicaciones RFLP y Dymola Behavior Modeling. Estas aplicaciones tienen la
capacidad de construir procesos del mundo físico de manera lógica.
Para ejecutar este proceso, se agrega un conjunto predefinido de valores de ángulo en el formato de
tabla.
Esta lógica se ejecutará y procesará el modelo FMI de Arduino, que enviará la información al Arduino
físico conectado externamente al sistema a través del puerto USB.
Para validar la lógica, las conexiones del bloque FMI Arduino se realizan con el bloque del modelo
virtual y luego se simulan. Después, se puede ver que ambos modelos, el modelo virtual presente en
el sistema y el modelo físico real del brazo se comportarán de manera similar. Dado que las señales
51
Modelo Virtual y Control de Brazo Robótico
van del sistema virtual al brazo real, se crea un bucle, que continúa continuamente enviando la señal
al modelo físico desde el sistema. Por lo tanto, el proceso se llama “Virtual to Real Digital Twin”.
52
Modelo Virtual y Control de Brazo Robótico
53
Modelo Virtual y Control de Brazo Robótico
Los cinco agujeros en la fila de la placa están conectados entre sí internamente. Para vincular dos filas,
es necesario conectar un cable en un puerto de cada fila.
Después, hay que conectar los seis cables unidos a las masas de los servomotores en dos filas de la
placa de pruebas y luego conectar estas dos filas.
Los cables de posición de los motores de cada servomotor tienen su correspondiente pin de la tarjeta
Arduino.
54
Modelo Virtual y Control de Brazo Robótico
Con el objetivo de ser coherente con el modelo 3DXML y el código de Arduino, se debe seguir esta
configuración:
· Base: pin 2
· Hombro: pin 3
· Codo: pin 7
· Elevación de la muñeca: pin 8
· Giro de la muñeca: pin 9
· Apertura y cierre de la pinza: pin 10
· Control con ARDUINO: la tarjeta Arduino da las órdenes para comandar el modelo real y el
modelo virtual. Las órdenes vienen directamente desde el código escrito en la tarjeta Arduino,
así que el bloque lógico correspondiente con la orden desaparece del entorno virtual.
Flujo de datos para la versión controlada por Arduino:
1) La tarjeta Arduino manda las posiciones de los servomotores al brazo robótico.
2) La tarjeta Arduino manda las posiciones de los servomotores a 3DEXPERIENCE.
3) El bloque lógico de Arduino manda la posición al modelo virtual.
· Control con 3DEXPERIENCE: este es el caso que se estudia en este proyecto. 3DEXPERIENCE
da las órdenes comandar el modelo real y el modelo virtual. Las órdenes están escritas como
55
Modelo Virtual y Control de Brazo Robótico
un programa dentro del entorno virtual, el cual copia la posición de cada servomotor a su
momento.
Flujo de datos para versión controlada por 3DEXPERIENCE:
1) La posición de los servomotores en ese momento es guardada en el primer bloque lógico.
2) Las posiciones son enviadas al bloque lógico de Arduino.
3) El bloque lógico de Arduino manda la información a la tarjeta Arduino.
4) La tarjeta Arduino traduce la información a señales eléctricas para comandar los
servomotores reales.
5) La tarjeta Arduino reenvía las posiciones a 3DEXPERIENCE.
6) El bloque lógico manda la posición al modelo virtual.
Antes de cada simulación, los parámetros de la FMI necesitan ser inicializados. Estos parámetros
principales son:
Los puertos en el bloque lógico de Arduino representan los 20 pines disponibles en la tarjeta Arduino
real. Para cada pin hay definidos 4 puertos lógicos en el bloque:
· Valores de entrada: estos puertos transfieren el valor desde 3DEXPERIENCE al bloque lógico
de Arduino (ej.: posición de los servomotores).
· Valores de salida: estos puertos mandan los valores recibidos de la tarjeta Arduino al modelo
virtual en 3DEXPERIENCE.
· Modos de entrada: estos puertos definen el modo del pin de la tarjeta Arduino al
3DEXPERIENCE (entrada, salida, etc).
· Modos de salida: estos puertos recuperan el modo del pin de la tarjeta Arduino (entrada,
salida, etc).
56
Modelo Virtual y Control de Brazo Robótico
La visión de la FMI es apoyar este enfoque: si el producto real se ensambla a partir de una amplia
gama de partes que interactúan de manera compleja, cada una controlada por un conjunto de leyes
físicas, entonces debería ser posible crear un producto virtual que pueda ensamblarse a partir de un
conjunto de modelos que representan cada uno una combinación de partes, cada uno un modelo de
las leyes físicas, así como un modelo de los sistemas de control ensamblados digitalmente.
Para crear el estándar FMI, una gran cantidad de empresas de software y centros de investigación han
trabajado en un proyecto de cooperación establecido a través de un consorcio europeo que ha sido
dirigido por Dassault Systèmes bajo el nombre de MODELISAR. El proyecto MODELISAR comenzó en
2008 para definir las especificaciones de FMI, entregar estudios de tecnología, probar los conceptos
de FMI a través de casos de uso elaborados por los socios del consorcio y permitir a los proveedores
de herramientas construir prototipos avanzados.
Cada unidad de maqueta funcional (FMU) se distribuye en un archivo zip con la extensión “.fmu” que
contiene:
· Un archivo XML que contiene, entre otras cosas, la definición de las variables utilizadas por la
FMU.
· Todas las ecuaciones utilizadas por el modelo (definido como un conjunto de funciones C).
· Otros datos opcionales, como tablas de parámetros, interfaz de usuario, documentación que
pueda necesitar el modelo, etc).
Para centrar este tema en el proyecto que se trata, básicamente, la FMI toma la información que llega
de 3DEXPERIENCE y la envía a la tarjeta Arduino en un lenguaje que la tarjeta pueda entender y
viceversa.
Puede hacerse a través de cadenas de caracteres enviadas mediante la conexión USB o Ethernet.
4.8 SIMULACIÓN
El entorno virtual que se obtiene en 3DEXPERIENCE es el siguiente:
57
Modelo Virtual y Control de Brazo Robótico
Como se ve en esta distribución, el primer bloque lógico representa el elemento que envía las órdenes,
seguido por el bloque lógico de Arduino y cerrando el sistema aparece el actuador, es decir, el brazo
robótico.
Si en lugar de esta representación se quisiera una más tosca y primitiva, consistiría en seis sistemas
similares al empleado en el control de un servomotor, aunque con un solo bloque lógico de Arduino,
el cual permite controlar los seis servomotores.
Esta simulación permite controlar el robot y alcanzar el ángulo que se desee en cualquiera de las
articulaciones dentro de su rango de movimiento.
5 LÍNEAS FUTURAS
Brazo robótico controlado remotamente
El Arduino Ethernet Shield ofrece la capacidad de conectar un Arduino a una red ethernet. Es la parte
física que implementa la pila de protocolos TCP/IP. Está basada en el chip ethernet Wiznet W5100. El
Wiznet W51000 provee de una pila de red IP capaz de soportar TCP y UDP. Soporta hasta cuatro
conexiones de sockets simultáneas. Usa la librería Ethernet para leer y escribir los flujos de datos que
pasan por el puerto ethernet. Permitirá escribir sketches que se conecten a Internet usando la shield.
Arduino usa los pines digitales 10, 11, 12 y 13 para comunicarse con el W1500 en la Ethernet Shield.
Estos pines no pueden ser usados para entradas o salidas genéricas.
Para usar la Ethernet Shield solo hay que montarla sobre la placa Arduino. Para cargar los sketches a
la placa con el shield, conectarla al ordenador mediante el cable USB como se hace normalmente.
Luego conectar la Ethernet a un ordenador, a un switch o a un router utilizando un cable ethernet
estándar.
Resumiendo, se puede emplear este controlador con un procesador como Arduino para implementar
una comunicación por Internet y poder controlar el brazo robótico real a distancia desde un
computador en el que se gobierna el modelo virtual.
59
Modelo Virtual y Control de Brazo Robótico
6 BIBLIOGRAFÍA
DASSAULT SYSTÈMES. 3DS ACADEMY. 2017. The DS Learning Lab’s Arduino Robot Project. Disponible
en: [Link]
abac15ebe0fe/tab:About
DASSAULT SYSTÈMES. 3DS ACADEMY. 2019. Digital Twinning of Miniature Industrial Robotic Arm
(MIRA). Disponible en: [Link]
robotic-arm-mira
INGENIERÍA, INFORMÁTICA Y DISEÑO. 2017. Conectar Arduino a Internet o LAN con Shield Ethernet
W5100. Disponible en: [Link]
GUBBI, J.; BUYYA, R.; MARUSIC, S.; PALANISWAMI, M. 2012. Internet of Things (IoT): A Vision,
Architectural Elements, and Future Directions. En: Open Access Cornell University. Disponible en:
[Link]
LLATA J.R.; SARABIA E.G.; TORRE-FERRERO, C.; SACIBRIAN, R. 2017. Educación en Automática e
Industria 4.0 mediante la aplicación de Tecnologías 3D. En: Actas de las XXXVIII Jornadas de
Automática, Gijón, 6, 7 y 8 de septiembre de 2017. Universidad de Cantabria.
60