DESARROLLO DE UNA INTERFAZ DE USUARIO Y VERIFICACIÓN EXPERIMENTAL DE UN ROBOT TIPO SCARA MARIA ELISA MEDINA HENAO ALEJANDRO PUERTA ECHANDÍA UNIVERSIDAD EIA INGENIERÍA MECATRÓNICA ENVIGADO, COLOMBIA 2017 DESARROLLO DE UNA INTERFAZ DE USUARIO Y VERIFICACIÓN EXPERIMENTAL DE UN ROBOT TIPO SCARA MARIA ELISA MEDINA HENAO ALEJANDRO PUERTA ECHANDÍA Trabajo de grado para optar al título de: Ingeniero Mecatrónico Director de trabajo de grado: Dr. Victor Hugo Jaramillo Velásquez PhD. en Mecatrónica UNIVERSIDAD EIA INGENIERÍA MECATRÓNICA ENVIGADO, COLOMBIA 2017 Dedicatoria “A las nuevas generaciones de estudiantes de ingeniería, para que ellos sean el puente de desarrollo de la industria y a las empresas que están empezando su desarrollo en el ámbito de automatización para que crean que con esfuerzo y dedicación se pueden desarrollar robots de buena calidad y desempeño a un bajo costo. Dedicamos este trabajo a nuestros padres, dado que son la causa de que nosotros estemos aquí en este momento, puesto que estuvieron presentes a nuestro lado a lo largo de este trayecto. Dedicamos este trabajo a los profesores mas cercanos a este proyecto, debido al incondicional acompañamiento durante este proyecto y el conocimiento aportado; puesto que esperamos, sea fuente de inspiración de futuros desarrollos.” Maria Elisa y Alejandro. I Agradecimientos Agradecemos a todos los profesores involucrados en el desarrollo de este proyecto, por el apoyo brindado, a la Universidad EIA por brindarnos las instalaciones y habernos dado la oportunidad de complementar el desarrollo de uno de sus proyectos bandera, a las industrias que nos abrieron las puertas para darnos idea de las expectativas y necesidades de sus procesos en desarrollo, debido que esta información fue crucial para el desarrollo de este proyecto. Agradecemos a nuestros amigos y familiares mas cercanos por entendernos en todo momento, cuando todo parecía ir al revés, por apoyarnos cuando lo necesitabamos, porque sin ellos no estaríamos aqui. Agradecemos a nuestros padres por el apoyo y la solidaridad en todo momento, dado que este fue un camino muy largo, donde hubo percances y retrasos, pero gracias al apoyo incondicio- nal pudimos llegar hasta este punto, donde podemos decir con orgullo "terminamos nuestra tesis". II Índice general Dedicatoria I Agradecimientos II Glosario 1 Resumen 3 Abstract 4 Introducción 5 1. Preliminares 11 1.1. Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.1.1. Formulación del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.1.2. Justi�cación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.2. Objetivos del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2.1. Objetivo general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2.2. Objetivos especí�cos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.3. Marco de referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.3.1. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.3.2. Marco teórico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2. Metodología 69 3. Desarrollo del proyecto 72 3.1. PLANEACIÓN Y CLARIFICACIÓN DE LA IDEA . . . . . . . . . . . . . . . . 72 3.1.1. DEFINICIÓN DEL OBJETIVO DE DISEÑO . . . . . . . . . . . . . . . . 72 3.1.2. NECESIDADES Y DESEOS . . . . . . . . . . . . . . . . . . . . . . . . . 73 3.1.3. MATRIZ DE NECESIDADES Y MEDIDAS . . . . . . . . . . . . . . . . . 77 3.1.4. BÚSQUEDA DE PRODUCTOS SIMILARES . . . . . . . . . . . . . . . . 78 3.1.5. ESPECIFICACIONES OBJETIVO INTERFAZ GRÁFICA ROBOT TI- PO SCARA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 3.2. DISEÑO DE CONCEPTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 3.2.1. GENERACIÓN DEL CONCEPTO . . . . . . . . . . . . . . . . . . . . . . 82 3.3. DISEÑO DE DETALLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 3.3.1. Pestaña Movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 3.3.2. Pestaña Con�guración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 3.3.3. Pestaña Control de Motores . . . . . . . . . . . . . . . . . . . . . . . . . . 122 3.3.4. Pestaña Trayectorias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 3.3.5. Pestaña Log y Conexión con ROS . . . . . . . . . . . . . . . . . . . . . . 125 3.3.6. Registro de operaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 3.3.7. Comunicación con ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 3.3.8. BOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 3.4. Desarrollo de la interfaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 3.4.1. Conceptualización de la interfaz . . . . . . . . . . . . . . . . . . . . . . . . 130 3.4.2. De�nición de concepto general de la interfaz . . . . . . . . . . . . . . . . . 136 3.4.3. Implementación de esquema concebido . . . . . . . . . . . . . . . . . . . . 146 3.4.4. Descripción de componentes y manual rápido de operación: . . . . . . . . 149 3.5. Implementación de las comunicaciones . . . . . . . . . . . . . . . . . . . . . . . . 164 3.5.1. Comunicación con ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 3.5.2. Comunicación nodo y sistema del brazo SCARA . . . . . . . . . . . . . . 167 3.6. Medición de la precisión y la repetibilidad . . . . . . . . . . . . . . . . . . . . . . 168 3.6.1. Prueba 1: Repetibilidad y Precisión en un punto . . . . . . . . . . . . . . 170 3.6.2. Prueba 2: Repetibilidad y Precisión en un trazo . . . . . . . . . . . . . . . 176 4. Discusión de resultados 183 5. Conclusiones y consideraciones �nales 186 Anexos 189 A. ANEXO 1: Tabla comparativa de funciones de interfaces de robots insdustria- les 190 B. ANEXO 2: Diagrama BOM pestaña Movimiento 192 C. ANEXO 3: Diagrama BOM pestaña Con�guración 194 D. ANEXO 4: Diagrama BOM pestaña Motores 196 E. ANEXO 5: Secuencia de inicio interfaz 198 F. ANEXO 6: Cambio Modo en SCARA 200 G. ANEXO 7: Secuencia de inico SCARA 201 H. ANEXO 8: Modos de funcionamiento SCARA 202 I. ANEXO 9: Funciones para estado articulaciónes de robot SCARA 204 J. ANEXO 10: Funciones para escribir estados a robot SCARA 206 K. ANEXO 11: Mostrar posición herramienta 208 L. ANEXO 12: Función de movimiento SCARA 209 M.ANEXO 13: Cinemática SCARA 211 N. ANEXO 14: Función OpenGL SCARA 213 Ñ. ANEXO 15: Mostrar Trayectoria robot en OpenGL 214 O. ANEXO 16: Enviar trayectorias a SCARA 215 P. ANEXO 17: Checkear posición SCARA 217 Q. ANEXO 18: Generación de trayectorias SCARA 218 R. ANEXO 19: Trayectoria preestablecida estrella 219 S. ANEXO 20: Trayectoria preestablecida cuadrado 221 T. ANEXO 21: Trayectoria preestablecida triangulo 223 U. ANEXO 22: Guardar punto actual para trayectoria multipunto 225 V. ANEXO 23: Movimiento manual articulaciónes 226 W.ANEXO 24: Movimiento manual motores para calibración 227 X. ANEXO 25: Función para agregar desfaces a SCARA 230 Y. ANEXO 26: Función para agregar límites a SCARA 231 Z. ANEXO 27: Función de movimiento y actualización de OpenGL en SCARA 232 Bibliografía 244 Índice de �guras 1. Compromiso del director de trabajo de grado . . . . . . . . . . . . . . . . . . . . 7 2. Autorización para el uso de laboratorios . . . . . . . . . . . . . . . . . . . . . . . 8 3. Acuerdo de propiedad intelectual de Trabajo de grado . . . . . . . . . . . . . . . 10 1.1. Ilustración manipulador articulado (Baturone, 2001) . . . . . . . . . . . . . . . . 14 1.2. Aplicaciones robot tipo SCARA. (Pérez, 2010) . . . . . . . . . . . . . . . . . . . 15 1.3. Ilustración manipulador de 4 DOF. (Morales, 2014a) . . . . . . . . . . . . . . . . 16 1.4. Ilustración manipulador de 6 DOF (Baturone, 2001) . . . . . . . . . . . . . . . . 17 1.5. Robot Eric (Ranger, 1920) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.6. Robot Unimate en The Late Show (Engelberger, 1954) . . . . . . . . . . . . . . . 19 1.7. Boceto robot Unimate con interfaz de usuario (Engelberger, 1954) . . . . . . . . 20 1.8. Computador Xerox Alto (ABCLinux, 1973) . . . . . . . . . . . . . . . . . . . . . 21 1.9. SUN Workstation (Microsystems, 2017) . . . . . . . . . . . . . . . . . . . . . . . 22 1.10. Interface del sistema Apple GS (Toastytech, 2007) . . . . . . . . . . . . . . . . . 23 1.11. Robot inter (Passold, 2004) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.12. Robot Serpent 1 (Das, 2004) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 1.13. Visualización del sistema Kinect (Das, 2004) . . . . . . . . . . . . . . . . . . . . . 30 1.14. Representación de la red RCG creada por ROS (Foundation, 2017) . . . . . . . . 35 1.15. Entorno Simulado de brazo antropomór�co y bandas transportadoras (Robotics, 2012) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 1.16. Despiece de un brazo robótico sencillo (Mike, 2004) . . . . . . . . . . . . . . . . . 43 1.17. Despiece de un brazo robótico sencillo (AD, 2015) . . . . . . . . . . . . . . . . . . 44 1.18. Ejemplo de contrastes con colores vivos (Petit, 2007) . . . . . . . . . . . . . . . . 45 1.19. Ejemplo de contrastes con colores un poco más neutros (Petit, 2007) . . . . . . . 46 1.20. Ejemplo de contrastes con colores neutros (Petit, 2007) . . . . . . . . . . . . . . . 47 1.21. Ejemplo de visibilidad de diferentes pantallas bajo luz directa (Photodon, 2014) . 48 1.22. Ejemplo de muestra de informaciòn de manera grà�ca (EPA, 2015) . . . . . . . . 49 1.23. Niveles de una interfaz (James, 2016) . . . . . . . . . . . . . . . . . . . . . . . . . 50 1.24. Distribución de una interfaz (James, 2016) . . . . . . . . . . . . . . . . . . . . . . 51 1.25. Distribución de información en pestañas (PSD, 2016) . . . . . . . . . . . . . . . . 52 1.26. Distribución de información en pestañas (Arsys, 2016) . . . . . . . . . . . . . . . 53 1.27. Tabla de teoría del color (UC, 2016) . . . . . . . . . . . . . . . . . . . . . . . . . 54 1.28. Ejemplo uso incorrecto de colores en una interfaz de usuario (Petit, 2007) . . . . 55 1.29. Ejemplo de display de estados y valores de proceso en una planta de agua.(Exchange, 2014) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 1.30. Ejemplo grá�co de tendencia.(Parallax, 2016) . . . . . . . . . . . . . . . . . . . . 57 1.31. Ejemplo tabla de datos.(Parallax, 2016) . . . . . . . . . . . . . . . . . . . . . . . 57 1.32. Ejemplo de ingreso de datos a una interfaz.(Nwasoft, 2011) . . . . . . . . . . . . 58 1.33. Ejemplo display de una alarma en HMI.(Awesomation, 2014) . . . . . . . . . . . 59 1.34. Precisión y repetibilidad de una trayectoria para una trayectoria base (Industrial et al., 1998). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 1.35. Modelo estándar de un brazo SCARA y sus variables de medición (Gonzales, 2016). 68 3.1. Diagrama de caja negra pestaña Movimiento . . . . . . . . . . . . . . . . . . . . 83 3.2. Diagrama de caja negra pestaña Con�guración . . . . . . . . . . . . . . . . . . . 84 3.3. Diagrama de caja negra pestaña Control de Motores . . . . . . . . . . . . . . . . 85 3.4. Diagrama de caja negra pestaña Trayectorias . . . . . . . . . . . . . . . . . . . . 86 3.5. Diagrama de caja negra pestaña Log y Comunicación con ROS . . . . . . . . . . 87 3.6. Diagrama de funciones pestaña Movimiento . . . . . . . . . . . . . . . . . . . . . 88 3.7. Diagrama de funciones pestaña Con�guración . . . . . . . . . . . . . . . . . . . . 89 3.8. Diagrama de funciones pestaña Control de Motores . . . . . . . . . . . . . . . . . 90 3.9. Diagrama de funciones pestaña Trayectorias . . . . . . . . . . . . . . . . . . . . . 91 3.10. Diagrama de funciones pestaña Log y Comunicación con ROS . . . . . . . . . . . 92 3.11. Diagrama funciones interfaz grá�ca . . . . . . . . . . . . . . . . . . . . . . . . . . 114 3.12. Diagrama cambio de modo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 3.13. Diagrama modo directo cartesiano . . . . . . . . . . . . . . . . . . . . . . . . . . 116 3.14. Diagrama modo directo articular rotacional . . . . . . . . . . . . . . . . . . . . . 117 3.15. Diagrama modo trayectorias punto a punto . . . . . . . . . . . . . . . . . . . . . 118 3.16. Diagrama posición de la herramienta . . . . . . . . . . . . . . . . . . . . . . . . . 119 3.17. Diagrama para agregar nuevas herramientas . . . . . . . . . . . . . . . . . . . . . 120 3.18. Diagrama para cambiar los límites de operación . . . . . . . . . . . . . . . . . . . 121 3.19. Diagrama para calibrar el robot por medio de desfases . . . . . . . . . . . . . . . 122 3.20. Diagrama para el movimiento manual de los motores . . . . . . . . . . . . . . . . 123 3.21. Diagrama para ejecutar una trayectoria pre establecida . . . . . . . . . . . . . . . 124 3.22. Diagrama para mostrar el registro de operaciones . . . . . . . . . . . . . . . . . . 125 3.23. Diagrama para establecer comunicación con ROS . . . . . . . . . . . . . . . . . . 126 3.24. Diagrama BOM pestaña Trayectorias . . . . . . . . . . . . . . . . . . . . . . . . . 128 3.25. Diagrama BOM pestaña Log y Comunicación con ROS . . . . . . . . . . . . . . . 129 3.26. Movimiento manual FlexPendant-ABB (ABB, 2016b) . . . . . . . . . . . . . . . . 131 3.27. Programación en código RAPID para FlexPendant (ABB, 2016b) . . . . . . . . . 132 3.28. Movimiento manual robot UR5 de Universal Robots (UR, 2016) . . . . . . . . . . 132 3.29. Asistente de programa robot UR5 de Universal Robots (UR, 2016) . . . . . . . . 133 3.30. Con�guraciòn de herramientas robot UR5 de Universal Robots (UR, 2016) . . . . 134 3.31. Asistente de movimiento robot BAXTER de Rethink Robotics (RR, 2016) . . . . 134 3.32. Simulaciòn en Gazebo de robot BAXTER de Rethink Robotics (RR, 2016) . . . . 135 3.33. Controles de los robots Motoman de Yaskawa (Yaskawa, 2016) . . . . . . . . . . . 135 3.34. Mapa conceptual del desarrollo de la interfaz . . . . . . . . . . . . . . . . . . . . 137 3.35. Diagrama de funcionamiento interfaz de usuario . . . . . . . . . . . . . . . . . . . 138 3.36. Diagrama de secuencia de inicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 3.37. Diagrama de funcionamiento para cambio de modos de operación del robot . . . 140 3.38. Diagrama de funcionamiento de trayectorias en modo objetivo . . . . . . . . . . . 141 3.39. Ventana principal interfaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 3.40. Ventana de con�guración de la interfáz de usuario . . . . . . . . . . . . . . . . . 147 3.41. Ventana de movimiento de motores . . . . . . . . . . . . . . . . . . . . . . . . . . 147 3.42. Ventana de trayectorias predeterminadas . . . . . . . . . . . . . . . . . . . . . . . 148 3.43. Ventana de comunicaciónes y registro . . . . . . . . . . . . . . . . . . . . . . . . 149 3.44. Controles de seguridad del robot . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 3.45. Visualización 3D SCARA en OpenGL . . . . . . . . . . . . . . . . . . . . . . . . 151 3.46. Modo directo de operación con movimiento independiente de articulaciónes . . . 151 3.47. Modo directo de operación con movimiento de extremo del robot en plano carte- siano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 3.48. Modo objetivo para trayectorias puntuales . . . . . . . . . . . . . . . . . . . . . . 152 3.49. Trayectorias de movimiento utilizando múltiples puntos . . . . . . . . . . . . . . 153 3.50. Posición de herramienta y articulaciónes . . . . . . . . . . . . . . . . . . . . . . . 154 3.51. Limites de seguridad articulaciónes . . . . . . . . . . . . . . . . . . . . . . . . . . 155 3.52. Con�guración de herramienta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 3.53. Función de calibración por método de desfaces . . . . . . . . . . . . . . . . . . . . 157 3.54. Espacio de trabajo robot SCARA . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 3.55. Intrerface de movimiento manual de motores . . . . . . . . . . . . . . . . . . . . . 159 3.56. Intrerface de registro de posición actual motores . . . . . . . . . . . . . . . . . . . 159 3.57. Intrerface de revisión de datos a enviar . . . . . . . . . . . . . . . . . . . . . . . . 160 3.58. Intrerface de registro de comunicaciónes enviadas . . . . . . . . . . . . . . . . . . 160 3.59. Interface de trayectorias preestablecidas . . . . . . . . . . . . . . . . . . . . . . . 160 3.60. tabla de puntos generados para trayectoria . . . . . . . . . . . . . . . . . . . . . . 161 3.61. Visualización 3D SCARA en OpenGL . . . . . . . . . . . . . . . . . . . . . . . . 162 3.62. Posición de herramienta en el espacio cartesiano . . . . . . . . . . . . . . . . . . . 162 3.63. Parámetros de conexión ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 3.64. Ventana registro de comuniaciónes ROS interfaz QT-ROS . . . . . . . . . . . . . 164 3.65. Diagrama de conexión de todos los sub-sistemas . . . . . . . . . . . . . . . . . . . 165 3.66. Diagrama de comunicación con ROS para nodo interfaz de usuario . . . . . . . . 167 3.67. Diagrama de comunicación serial entre nodo y sistema Brazo SCARA . . . . . . 168 3.68. Dimensiones del espacio de trabajo y altura de la cámara . . . . . . . . . . . . . 169 3.69. Diagrama de �ujo para tomar imagen base . . . . . . . . . . . . . . . . . . . . . . 171 3.70. Diagrama de �ujo para la toma de datos . . . . . . . . . . . . . . . . . . . . . . . 172 3.71. Punto Base o de calibración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 3.72. Puntos de análisis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 3.73. Diagrama de �ujo para la toma de datos . . . . . . . . . . . . . . . . . . . . . . . 178 3.74. Trazo Base o de calibración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 3.75. Trazos de análisis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 B.1. Diagrama BOM pestaña Movimiento . . . . . . . . . . . . . . . . . . . . . . . . . 193 C.1. Diagrama BOM pestaña Con�guración . . . . . . . . . . . . . . . . . . . . . . . . 195 D.1. Diagrama BOM pestaña Control de Motores . . . . . . . . . . . . . . . . . . . . . 197 Índice de tablas 3.1. Matriz de Medidas Vs Necesidades . . . . . . . . . . . . . . . . . . . . . . . . . . 78 3.2. Especi�caciones Objetivo Interfaz Grá�ca Robot tipo SCARA . . . . . . . . . . . 82 3.3. Resgistro de Soluciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 3.4. Código de colores para la selección de soluciones en la Matriz Morfológica . . . . 106 3.5. Matriz Morfológica para la selcción de conceptos de solución . . . . . . . . . . . . 109 3.6. Proceso de Visualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 3.7. Proceso de Puntuación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 3.8. Comparativa de precisión y repetiblidad en robots industriales . . . . . . . . . . . 168 3.9. Datos prueba 1: Coordenadas de los puntos . . . . . . . . . . . . . . . . . . . . . 176 3.10. Resultados prueba 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 3.11. Datos prueba 2: Coordenadas de los Trazos . . . . . . . . . . . . . . . . . . . . . 182 3.12. Resultados prueba 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 A.1. Tabla comparativa de las funciones de las interfaces de usuario de los robots ins- dustriales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Índice de símbolos ATp � Precisión máxima de posición en una trayectoria. ATa � Precisión de orientación en a en una trayectoria. ATb � Precisión de orientación en b en una trayectoria. ATc � Precisión de orientación en c en una trayectoria. xci � Coordenada X de i-ésimo punto de la trayectoria base. yci � Coordenada Y de i-ésimo punto de la trayectoria base. zci � Coordenada Z de i-ésimo punto de la trayectoria base. xij � Coordenada X de la intersección entre la j-ésima trayectoria ejecutada y la i-ésima coordenada del plano normal. yij � Coordenada Y de la intersección entre la j-ésima trayectoria ejecutada y la i-ésima coordenada del plano normal. zij � Coordenada Z de la intersección entre la j-ésima trayectoria ejecutada y la i-ésima coordenada del plano normal. aci � Orientación de la trayectoria base en el punto (xci, yci, zci). bci � Orientación de la trayectoria base en el punto (xci, yci, zci). bci � Orientación de la trayectoria base en el punto (xci, yci, zci). aci � Orientación de la trayectoria ejecutada en el punto (xij , yij , zij). bci � Orientación de la trayectoria ejecutada en el punto (xij , yij , zij). cci � Orientación de la trayectoria ejecutada en el punto (xij , yij , zij). RTp � Radio máximo del círculo en el plano normal cuyo centro está en el centro de la linea baricentrica. Sli � Diferencia de la distancia entre la trayectoria actual y la anterior para un mismo punto. lij � Distancia del baricentro al punto actual que se está evaluando RTa � Repetibilidad de orientación en a en una trayectoria. RTb � Repetibilidad de orientación en a en una trayectoria. RTc � Repetibilidad de orientación en a en una trayectoria. Glosario Actuador: Un actuador es un dispositivo capaz de transformar energía hidráulica, neumá- tica o eléctrica en la activación de un proceso con la �nalidad de generar un efecto sobre un proceso automatizado. Controlador: Es un programa informático que permite al sistema operativo interaccionar con un periférico, haciendo una abstracción del hardware y proporcionando una interfaz para utilizar el dispositivo. Sensor: Dispositivo que capta magnitudes físicas (variaciones de luz, temperatura, sonido, etc.) u otras alteraciones de su entorno. ROS_MSG: Mensajes propietarios de ROS, abarca todos los tipos de mensajes soportados por ROS. HMI:Human Machine Interface, Interface hombre-máquina. Robot : Máquina automática programable capaz de realizar determinadas operaciones de manera autónoma y sustituir a los seres humanos en algunas tareas, en especial las pesadas, repetitivas o peligrosas; puede estar dotada de sensores, que le permiten adaptarse a nuevas situaciones. Manipulador robótico: En la robótica, un manipulador es un dispositivo que se utiliza bajo control humano para manipular los materiales sin contacto directo. Robot móvil: Los robots móviles tienen la capacidad de moverse en su entorno y no se �jan a una ubicación física. Robot de servicios: un robot de servicio es un robot que opera semi o totalmente autóno- mamente, para realizar servicios útiles para el bienestar de los seres humanos y equipos, con exclusión de las operaciones de fabricación. Robot industrial: Es un manipulador programable en tres o más ejes multipropósito, contro- lado automáticamente y reprogramable, especialmente robusto y ajustado, diseñado para las exigentes tareas de la industria. GUI:Graphical User Interface, Interfaz grá�ca de usuario, contiene �guras y formas para componer la interfaz como tal y enriquecer el contenido. RQT: Sistema de visualización de interfaces de ROS. QT: Entorno de desarrollo de interfaces grá�cas de usuario 1 IP: Dirección de red ethernet para un dispositivo conectado. PC: Computador personal. ROS: Robotic Operating System, Sistema operativo robótico. RQTGRAPH: Entorno de comunicación de ROS. C++: Lenguaje de programación basado en C. C#: Variante de lenguaje de programación basado en C. sensor_msgs: mensajes propios de ROS para compartir información de sensores de toda clase. tfbroadcaster: mensajes propios de ROS para compartir información cinemática del robot. Gazebo: entorno de simulación propio de ROS. Log: archivo de registro. OROCOS: Sistema para desarrollo e investigación en robótica similar a ROS. Teaching: entrenamiento del robot por movimiento directo de las articulaciones. TCI: transformada cinemática inversa. TCD: Transformada cinemátida directa. Boolleano: valor que toma solo valores de falso o verdadero. �exPendant: Interfaz grá�ca de usuario que permite interacción con los controladores ABB. 2 Resumen En el presente trabajo se expone la metodología de diseño de Karl T. Ulrich para la creación de una interfaz grá�ca para un robot tipo SCARA (Selective Compliant Assembly Robot Arm) de 4 grados de libertad orientado a la academia con miras a ser implementados en un ambiente industrial o simular una aplicación en la industria, además de una serie de pruebas para la me- dición de la precisión y repetibilidad del robot por medio de la implementación de la Norma ISO 8293. En su desarrollo se tienen en cuenta factores como la implementación en software libre en este caso ROS para realizar una comunicación nodo a nodo haciendo uso de tópicos, en los cuales se publica la información y donde se alerta a los nodos suscritos que se ha subido nueva información a estos, para que estos nodos procedan a descargarlos y realizar su posterior tratamiento. Además la comunicación con el brazo SCARA se realiza por medio de serial, ya que está soportada por la mayoría de los dispositivos y es de relativa facilidad su implementación. Otro factor es la implementación de la interfaz grá�ca por medio del software Qt Creator, el cual es un software para desarrollo de HMI (Human Machine Interface) muy versátil debido a su facilidad de operación y a la creación rápida de elementos como botones, cajas de texto y etique- tas de texto. Adicionalmente tiene la capacidad de implementarse con librerías como OpenGL para realizar la simulación del movimiento y los protocolos de comunicación de ROS (Sistema Operativo Robótico por sus siglas en inglés). Por último se realizan pruebas de medición de precisión y repetibilidad haciendo uso de las ecuaciones planteadas en la Norma ISO 8293 para la medición de variables en brazos robóticos y visión arti�cial con el software Python con librerías de OpenCV debido a la facilidad que se tiene para obtener las librerías necesarias para su implementación y para realizar este tipo de aplicaciones. Palabras claves: Interfaz grá�ca con Qt Creator, Precisión, Repetibilidad, Comunicación por medio de ROS, Simulación con OpenGL, Norma ISO 8293, Diseño de productos por Karl T. Ulrich. 3 Abstract The present thesis expose the methodology of design of Karl T. Ulrich for the creation of a grap- hical interface for a robot type SCARA (Selective Compliant Assembly Robot Arm) of 4 degrees of freedom oriented to the academy with a view to be implemented in an industrial environment or to simulate an application of the industry, in addition to a series of tests to measure the accuracy and repeatability of the robot through the implementation of ISO 8293 norm. In its development are taken into account factors such as the implementation in free software in this case ROS to perform a node-to-node communication using topics, in which the information is published and the subscribed nodes are alerted that new information has been uploaded to them, so that they proceed to discharge them and carry out their subsequent treatment. In ad- dition, the communication with the SCARA arm is done by serial, since it is supported by most devices and is relatively easy to implement. Another factor is the implementation of the graphical interface through the software Qt Creator, which is a software for development of HMI (Human Machine Interface) very versatile because of its ease of operation and the quick creation of elements like buttons, text boxes and labels. In addition, it has the ability to be implemented with libraries such as OpenGL to perform the simu- lation of movement and communication protocols of ROS (Robotic Operating System). Finally, the tests of precision and repeatability are made using the equations set forth in ISO 8293 for the measurement of variables in robotic arms and arti�cial vision with Python software through OpenCV libraries due to the ease of obtaining the necessary libraries for its implementation and to make such applications. Keywords: Graphical interface with Qt Creator, Accuracy, Repeatability, Communication via ROS, Simulation with OpenGL, ISO 8293 norm, Design of products by Karl T. Ulrich. 4 Introducción La automatización en los procesos es un tema que ha venido teniendo auge en el país en los últimos años, así podemos encontrar que desde pequeñas hasta grandes empresas buscan formas de mejorar y agilizar sus procesos conservando los más altos estándares de calidad. Con miras a un desempeño ingenieril de la más alta calidad la Universidad EIA busca inculcar en sus estudiantes fortalezas para desempeñarse en el ambiente industrial, por lo que se han venido adquiriendo máquinas y robots que se usan en las empresas del exterior y de todo el país en su mayoría multinacionales, con el �n de que los estudiantes tengan conocimientos respecto a la manipulación, programación y jerga o lenguaje para el manejo de estos equipos. Adicionalmente la institución también ha venido apoyando a través de los años el desarrollo de proyectos, integra- dos tantos por el profesorado como por estudiantes, con el �n de crear herramientas útiles para el uso, manipulación y ejempli�cación de los diferentes grupos de investigación y las asignaturas que así lo requieran. Debido a lo anterior se realiza la propuesta del proyecto “Desarrollo de un robot tipo SCARA” con el �n de actualizar el material de trabajo en cuestiones de robótica y generar gran expectativa en los estudiantes con un mecanismo diseñado, construido y desarrollado en la institución. El desarrollo del proyecto es un complemento de lo mencionado anteriormente ya que por medio de él se logra la correcta manipulación del robot y permite además realizar pruebas de calibración y estimación de funcionamiento del sistema por medio de la precisión y repetibilidad del brazo robótico, con el �n de llegar a operar bajo medidas industriales. El presente proyecto, está soportado en una metodología de diseño completa con componentes como la clari�cación de la idea, el diseño conceptual, y el diseño de detalle. Adicionalmente se expone claramente el desarrollo del software y el diseño de experimentos para medir variables de operación. Finalmente, con este trabajo se logra desarrollar una interfaz grá�ca para el manejo de un brazo robótico tipo SCARA de 4 grados de libertad y el diseño de pruebas para la medición de la precisión y repetibilidad del manipulador. 5 6 Figura 1: Compromiso del director de trabajo de grado 7 Figura 2: Autorización para el uso de laboratorios 8 9 Figura 3: Acuerdo de propiedad intelectual de Trabajo de grado 10 Capítulo 1 Preliminares 1.1. Planteamiento del problema 1.1.1. Formulación del problema En la actualidad se mantiene una competencia fuerte a nivel de universidades en el país, donde estas son evaluadas periódicamente en base a tres conceptos (Yoguez, 2009) como son: Recursos y reputación, el cual trata de valuar la institución a través de los rankings, niveles de investigación, recursos materiales y �nancieros. Modelo centrado en el centro, �el cual se enfoca en la experiencia del estudiante, prácticas de calidad, programas de la facultad, empleadores y, lo más importante, la satisfacción de los estudiantes con los programas, servicios e instalaciones�. �Modelo de inversión estratégica, se enfoca en el retorno de la inversión, análisis de costo- bene�cio, control de gastos, productividad, retención de alumnos�. Actualmente la Universidad EIA se encuentra en el puesto 41 a nivel de Colombia (StatCounter, 2017) , pero a través de su misión expresa que su objetivo es formar profesionales de la más alta calidad fomentando en ellos una mentalidad investigativa con el �n de obtener un desarrollo tecnológico, económico, cultural y social de la nación (EIA, 2017a) . Esperando así subir en el es- calafón de clasi�cación para convertirse en una de las mejores instituciones de educación superior en Colombia, reconocida por la calidad de sus profesionales, por sus resultados en investigación y por su contribución efectiva a la sociedad (EIA, 2017b). Para lograr su �n la Universidad tiene ocho grupos de investigación avalados por Colciencias, lo cual los reconoce y clasi�ca como grupos de investigación, desarrollo tecnológico o innovación del Sistema Nacional de Ciencia y Tecnología del país (Col, 2017). Además de una serie de convenios con las diferentes universidades que permiten el desarrollo de los programas ofrecidos por la institución y teniendo en cuenta la innovación como su base su reciente convenio con la CAF que busca �promover la generación de conceptos ingenieriles y su patentamiento en o�cinas internacionales, el apoyo al ecosistema de innovación de la Universidad y sus �liales y la de�nición de un programa de �nanciamiento que permita la sostenibilidad y 11 consolidación de una estrategia de innovación tecnológica que incentive la comercialización de alta tecnología proveniente de Colombia hacia otras regiones del mundo"(CAF, 2017). Por otro lado a nivel interno en la institución se han ido adquiriendo equipos que ayuden a los estudiantes en su desarrollo, tal es el caso del robot BAXTER el cual tiene el �n de fortalecer las áreas de: Investigación en robótica colaborativa. La Investigación en sistemas de bin picking. Investigación en robótica cooperativa al desarrollar acciones conjuntas con el robot ABB. Buscando mejorar todas las áreas de la Universidad, esta apoya cierto número de propuestas para ser desarrolladas de manera interna por personal y estudiantes tal es el caso del proyecto �Desarrollo de un robot tipo SCARA�. El desarrollo de este tipo manipulador es de gran interés dado que se busca que este tipo de robot sea de bajo costo con respecto al estándar del mer- cado. Además, los robots tipo SCARA dada su simplicidad de construcción y su capacidad de desplazarse en un plano a altas velocidades, pueden tener aplicaciones en los diferentes sectores industriales, como el textil, agropecuario, automotriz, componentes electrónicos, entre otras. El objetivo de este proyecto es complementar los sistemas robóticos y mecanismos que posee la institución con un desarrollo local con integrantes del plantel y teniendo en cuenta que su programación permita el acceso de los estudiantes interesados en el tema de una maneja más simple, es decir que puedan manipular el robot desde sus propios equipos y que el mecanismo además tenga la cualidad de enseñar a los alumnos las especi�caciones requeridas por la industria en cuanto a estos robots, tales como, fácil mantenimiento, torques su�cientes para moverse con velocidad y precisión adecuadas, interfaz grá�ca sencilla de manejar, cumplir con los estándares de seguridad y funcionamiento, etc. Teniendo en cuenta lo anterior se decide implementar una interfaz grá�ca que permita el manejo del robot tipo SCARA y sea desarrollada en software libre con el �n de que los estudiantes puedan modi�car tanto la programación como la estructura de la misma si se deciden agregar funciones o aplicaciones futuras para el manipulador, además de medir tanto la precisión como la repetitividad del robot con el �n de estimar si el robot requiere o no un mayor trabajo de desarrollo en aras de llegar a los más altos índices en cuanto a estas medidas. 1.1.2. Justi�cación El �n de este proyecto es proporcionar material didáctico y tecnológico a grupos de investigación que deseen trabajar con este, para aplicaciones industriales; facilitando las acciones repetitivas, peligrosas y difíciles de ejecutar por las personas. Además se fundamenta en software libre para que todos los estudiantes y personas capacitadas en el tema tengan acceso a él en la institución y en sus hogares con el �n de incentivar su interés en la robótica industrial y programación. Se realiza el proyecto con el �n de demostrar que se pueden crear las la mismas tecnologías para todas las funciones y situaciones dadas en el mercado; con aplicaciones diferentes; sencillas y ac- cequibles a todo el público con el objetivo de despertar el espíritu emprendedor e investigador de 12 los estudiantes para el desarrollo de tecnología local. Brindando una herramienta a el �Desarrollo de un robot tipo SCARA� para su manipulación de manera sencilla y controlada garantizando seguridad para el operario en cuanto a sobreesfuerzos que puedan dañar el mecanismo y propor- cionando una herramienta para la medición del desempeño del equipo para así alertar al usuario sobre una posible mejora en su código o alguna falla en el mismo. 1.2. Objetivos del proyecto 1.2.1. Objetivo general Desarrollar un sistema de prueba y validación para un brazo robótico tipo SCARA. 1.2.2. Objetivos especí�cos Identi�car las necesidades del robot tipo SCARA mediante el diseño de concepto basado en el método de Karl T. Ulrich. Desarrollar la interfaz de usuario para la programación del robot tipo SCARA. Implementar los algoritmos para la comunicación entre los diferentes subsistemas del robot. Medir la precisión y repetibilidad del robot durante el seguimiento de trayectorias ante cargas variables, para la evaluación del error de seguimiento y la robustez del controlador. 1.3. Marco de referencia 1.3.1. Antecedentes 1.3.1.1. Historia de los robots SCARA Los robots manipuladores son esencialmente, brazos articulados, De forma más precisa un ma- nipulador industrial convencional es una cadena cinemática abierta formada por un conjunto de eslabones interrelacionados mediante articulaciones o pares cinemáticos, tal como se ilustra en la �gura 1.1 Las articulaciones permiten el movimiento relativo entre los sucesivos eslabones (Baturone, 2001). 13 Figura 1.1: Ilustración manipulador articulado (Baturone, 2001) En el año de 1979 el profesor Hiroshi Makino desarrolla el primer robot tipo SCARA (Selective Compilance Arm for Robotic Assembly) en la Universidad Yamanashi en Japón (Ranger, 2016) Makino observó que el 80 porciento de los movimientos de las líneas de ensamblaje de encontraban en semejanza con el movimiento vertical del brazo humano, sin embargo no se habían considerado aun los movimientos horizontales repetitivos que se realizaban en las cadenas de producción, con el propósito de realizar tareas de montaje en líneas automatizadas plantea un diseño de robot con un menos número de grados de libertad, económico y versátil que resulta ser bastante �exible y económico en cuanto a mantenimiento, hasta el punto de ser utilizado actualmente en tareas que demanden velocidad, rendimiento y precisión (Martínez, 2012), entre las cuales podemos encontrar: Ensamble de componentes electrónicos Pick and Place: proceso que consiste en tomar una pieza de una línea de ensamble y colocarla en otra línea o lugar deseado para continuar con el proceso de producción. Corte de moldes para zapatería Soldadura de punto Trabajo en salas blancas (Manipulación y fabricación de medicamentos) Eliminación de rebabas, pulido y acabado de super�cies planas Dosi�cación de envase de productos farmacéuticos Atornillado Guiado de componentes en una línea de ensamble 14 Figura 1.2: Aplicaciones robot tipo SCARA. (Pérez, 2010) El témino SCARA signi�ca �brazo de cumplimiento selectivo para robot de montaje�. El término �cumplimiento selectivo� hace referencia a un robot que proporcione movimientos precisos con alta velocidad y rigidez en un plano determinado. (Martínez, 2012) En el año de 1981 comienza la distribución de robots tipo SCARA comerciales en Japón (Ranger, 2016). La estructura de un robot tipo SCARA está diseñada especialmente para realizar tareas de montaje en un plano. Está constituida por dos articulaciones de rotación con respecto a dos ejes paralelos, y una de desplazamiento en sentido perpendicular al plano. En las tareas de montaje en un plano que se han mencionado, puede que no sea necesario ningún grado de libertad adicional ya que se trabaja siempre en la dirección perpendicular al plano de montaje, tal como sucede en el montaje de componentes electrónicos (Baturone, 2001). En la �gura 3 podemos observar la con�guración de un robot tipo SCARA industrial. 15 Figura 1.3: Ilustración manipulador de 4 DOF. (Morales, 2014a) Sin embargo, en otras tareas de manipulación, suele ser necesario que el efecto �nal tenga una determinada orientación en el espacio. Esto se consigue con la muñeca del manipulador. En la �gura 4 se muestra un manipulador angular provisto de una muñeca que añade tres grados de libertad de rotación a la estructura. Estos tres ángulos permiten especi�car la orientación del efector �nal en el espacio. Obsérvese que, de esta forma, se llega a los 6 grados de libertad(tres del brazo y tres de la muñeca) que necesitan en un caso general para especi�car una posición y una orientación en el espacio (Baturone, 2001). 16 Figura 1.4: Ilustración manipulador de 6 DOF (Baturone, 2001) Estos sistemas robóticos necesitaban de una interface donde los humanos pudieran interactuar para que este realizara alguna acción en especí�co, dada esta necesidad del ser humano de interactuar con diferentes máquinas de manera mas sencilla y cómoda, se desarrollaron todo tipo de investigaciónes en todo el mundo, las cuales entregaron múltiples avances en ingeniería informática, llevando a lo que se conoce como interfáz grá�ca de usuario hoy en día. 1.3.1.2. Historia de las Interfaces grá�cas Una interfaz hombre máquina, HMI por sus siglas en inglés, es un componente que permite la interacción entre un operario y una máquina o sistema que necesite realizar una operación espec- �ca; la interfaz se compone de hardware y software que permiten las entradas del usuario para ser traducidas como señales para controlar máquinas que, a su vez proporcionan el resultado necesario para el usuario (Peña, 2008). 17 Figura 1.5: Robot Eric (Ranger, 1920) ERIC(Ranger, 1920), uno de los primeros robots analógicos del mundo (�gura 1.5), el cual ba- saba su funcionamiento utilizando una regleta con decenas de compartimentos con una placa metálica y un tornillo, creando funciones diferentes dependiendo de donde se conectaran cables energizados, los cuales impulsaban actuadores solenoides y válvulas de aire muy primitivas, que a su vez accionaban unos pistones de aire. En la �gura 1.5 se puede observar encerrada en rojo la regleta donde se conectaban los cables. 18 Figura 1.6: Robot Unimate en The Late Show (Engelberger, 1954) El primer robot controlado digitalmente a través de una interfaz de usuario muy simple fue desa- rrollado por George Devol en 1954 y se llama Unimate (Engelberger, 1954), el cual fué el primer robot industrial el cual trabajó en la ensambladora de la General Electric de la época, el cual se puede observar en la �gura 1.6 . Este robot poseía tres grados de libertad y se parece a los brazos antropomór�cos que se ven hoy en día, este robot era controlado por una interfaz de usuario basada en lógica booleana utilizan- do botones, la cual dependiendo de los botones seleccionados ejecutaba diferentes trayectorias preprogramadas con arreglos de transistores. El robot Unimate apareció en el programa The Late Show de la época. 19 Figura 1.7: Boceto robot Unimate con interfaz de usuario (Engelberger, 1954) Como se puede observar en la �gura 1.7 el esquema del robot unimate se encuentra representada la interfaz de usuario, la cual comprendía una serie de botones e indicadores iluminados para conocer el estado del robot y así poder controlar su comportamiento mediante lógica booleana utilizando transistores de vacío y válvulas neumáticas. 20 Figura 1.8: Computador Xerox Alto (ABCLinux, 1973) Años más adelante llegaron los desarrollos de la interfaz de usuario computarizada con el Xerox Alto (�gura 1.8), los computadores personales se convirtieron en el nuevo estándar para todo tipo de sistemas, lo cual permitió reemplazar interfaces rudimentarias como la del Unimate con terminales computarizadas que permitían desarrollar interfaces de usuario mucho más complejas y útiles para cada típo de aplicación especí�ca. Así fué evolucionando la interfaz grá�ca utilizando solo texto y cajas sencillas hasta luego obtener color como la interfaz del xeros alto y luego el apple gs. A principios de los años 70 especí�camente en 1972, se desarrolló el primer ordenador que per- mitía mostrar una interfaz de usuario grá�ca, llamado Xerox Alto como se observa en la �gura 1.8, el cual poseía una pantalla de matriz de puntos, la cual permitía mostrar además de texto, también �guras tales como cuadrados, circulos y óvalos, los cuales permitieron conformar las primeras ventanas y botones. Esta GUI fue inicialmente desarrollada por Alan Kay, Larry Tresler y Dan Ingalls, en conjunto con otros investigadores (ABCLinux, 1973). En este computador se implementó el primer editor de texto grá�co, los primeros íconos como también los primeros menús desplegables. 21 Figura 1.9: SUN Workstation (Microsystems, 2017) Este computador fue el que inspiró el diseño de los computadores personales más actuales, tales como el macintosh y el Apple Lisa como también la primera estación de trabajo de un microsys- tems (�gura 1.9). Los cuales ya poseían interfaces de usuario grá�cas mucho mas avanzadas y con diferentes colores, lo que enriqueció la experiencia del usuario de maneras que no se anticiparon, como resultado se dieron in�nidad de aplicaciónes, las cuales terminaron extendiéndose desde lo empresarial, profesional e investigativo al ámbito del hogar, donde se comenzó a adoptar cada vez mas el uso de estos sistemas para tareas cotidianas dada su versatilidad. 22 Figura 1.10: Interface del sistema Apple GS (Toastytech, 2007) La interfaz del sistema operativo apple gs(�gura 1.10) fue una de las primeras interfaces grà�cas en saltar de los ìconos monocromàticos a colores de 8 bits, los cuales permitìan mostrar 256 colores diferentes, logrando así una interfaz grá�ca más llamativa y agradable a la vista, ya que esto permitía mostrar más opciones y tipos de información diferente, ya que como se muestra en las reglas de diseño de una interfaz de usuario los colores permiten atraer la atención del usuario; por ejemplo una alarma importante se puede resaltar en rojo, mientras que información más arbitraria pero no menos importante se puede mostrar en verde o azul para lograr así una interacción enriquecida (Toastytech, 2007). A partir de las interfaces de usuario a color de 8 bits fue que se dió el desarrollo de las reglas de diseño y código de colores que se utilizan hoy en día, dando paso a desarrollos de alto nivel como lo son los distintos lenguajes de programación y herramientas diseñadas especí�camente para crear interfaces de usuario con una facilidad mayor en comparación con los métodos de bajo nivel que se utilizaban tradicionalmente en las primeras interfaces, permitiendo así crear interfaces mucho más complejas y ricas en contenido, desarrollándose in�nitud de aplicaciónes que antes ni se podían imaginar. Para mostrar información grá�ca en una pantalla se han utilizado in�nidad de herramientas, las cuales están basadas en lenguajes de programación a alto nivel, ya sea C++,C#, Python, Java, entre otros. Estas herramientas lo que buscan es facilitar el desarrollo de aplicaciones que per- mitan mostrar grá�cos tridimensionales en pantalla para todo tipo de aplicaciones, ya sea para juegos, producciones cinematográ�cas, visualizaciones de arquitectura, visualización de procesos industriales, entre otros. 23 La herramienta basada en C++ más utilizada por la industria en general es OpenGL (Open Graphics Library) dada su facilidad de implementación por ser open source, como también su amplio desarrollo por parte de la comunidad, donde se encuentran in�nidad de guías y tutoriales con ejercicios que van desde lo más básico hasta lo más complejo, permitiendo así una rápida adopción de esta herramienta por parte de alguien que sabe programar pero no conoce estas librerías, dando como resultado una herramienta versátil y �sencilla� con la cual se pueden lograr gran cantidad de aplicaciones (WhatIs.com, 2011). Para desarrollo de interfaces de usuario se utilizan diferentes herramientas basadas en lenguajes de programación de alto nivel, entre las cuales se encuentra la más popular Visual Studio por su versatilidad, dado que permite usar distintos lenguajes de programación a gusto del diseñador; por otro lado se tienen ciertas herramientas especí�cas de C++, entre las cuales se encuentra QT Creator, la cual es de libre distribución y contiene tutoriales especí�cos para implementar interfaces de usuario en gran cantidad de dispositivos utilizando diferentes herramientas especí- �cas para cada parte del desarrollo de una interfaz de usuario, tales como QT Code Editor para la programación en C++, QT Designer para el diseño grá�co de la interfaz, lo que facilita la implementación rápida de una GUI (Interfaz de usuario grá�ca). 1.3.1.3. También se encuentran desarrollos previos de proyectos de robots SCA- RA e interfaces grá�cas a nivel universitario e investigativo, los cuales se describen a continuación: En el artículo (Omodei, 2000) presenta y compara tres algoritmos para la identi�cación de pará- metros geométricos de robots industriales para aumentar su precisión. La estimación se basa en la medición de los errores de la pinza cuando el robot sigue trayectorias adecuadas; Los algorit- mos son generales y se pueden aplicar a cualquier robot siempre que se conozca su cinemática. Después de una introducción teórica a las metodologías generales, éstas se aplican a un robot tipo SCARA al cual se le analiza el rendimiento (precisión, e�ciencia). Se presentan y discuten los resultados experimentales obtenidos. La medida del error de la postura de la pinza se basa en una técnica de triangulación con láser, la cual tiene una precisión de milésimas de milímetro, logrando así unas trayectorias muy precisas y una repetibilidad excepcional. En el trabajo de grado (FALTA, 2000) se construye la interfaz grá�ca con el software libre Au- toit ya que este tiene posibilidad de comunicarse fácilmente con el driver que emplean el cual es Arduino y además trabaja en todas las versiones de Windows existentes. El entorno de in- teraccion con el usuario permite visualizar si la conexión con Arduino se ha establecido o no, insertar coordenadas de un punto especí�co al que se desea ir, mover cada uno de los grados de libertad del robot un valor deseado, abrir o cerrar el Gripper manualmente y además llevarle una trayectoria especí�ca para que el robot la realice. El archivo de la interfaz tiene la cualidad de poderse comprimir en un .exe para facilitar su ejecución en otros equipos. En el artículo (Hong, 2001) se presenta un sistema de arquitectura abierta que busca integrar diversos componentes de fabricación en una sola plataforma. Por lo tanto, un componente par- ticular puede ser fácilmente añadido y/o reemplazado. En este trabajo, se investiga un enfoque modular y orientado a objetos para el sistema de control abierto basado en PC-ORC (PC-Open Based Control). En este trabajo se propone un modelo de referencia estándar para el control 24 de robots, que consiste en una plataforma de hardware, un módulo de sistema operativo y va- rios módulos de software. El sistema PC-ORC se puede recon�gurar para diversos entornos de producción; El PC-ORC se construye utilizando la arquitectura orientada a objetos utilizando diferentes lenguajes de programación talkes como C++, C#, Java y Python. Por lo tanto, per- mite una fácil implementación y modi�cación de los módulos. El PC-ORC consiste en software básico, objetos de aplicación y dispositivos de hardware adicionales en una plataforma de PC. Finalmente, aplicando el PC-ORC propuesto a un robot SCARA, se examina el rendimiento del PC-ORC utilizando medidas de repetibilidad y presición. En el artículo (Passold, 2004) se describen los resultados experimentales de la aplicación de redes neuronales arti�ciales para realizar el control de posición de un robot manipulador. La estrategia de control general consiste en un controlador neuronal que funciona en paralelo con un contro- lador convencional basado en la arquitectura de aprendizaje de errores de realimentación. La ventaja principal de esta arquitectura es que no requiere ninguna modi�cación del algoritmo del controlador convencional. En la �gura 1.11 se observa el brazo robótico en su mesa de trabajo. Se utilizaron redes neuronales de aprendizaje profundo sin ningún conocimiento previo sobre el sistema para ser controlado, para que estas aprendieran a controlar el robot utilizando como referencia los controladores comunes basados en funciones de transferencia. El enfoque se realizó con éxito, dando mejores resultados la red neuronal en comparación con los controladores de posición PID y de modo deslizante. Los experimentos se realizaron utilizando la medición de la repetitividad y precisión de los controladores. 25 Figura 1.11: Robot inter (Passold, 2004) En la �gura 1.11, se puede observar el brazo robótico tipo SCARA inter, el cual posee 3 grados de libertad para mayor facilidad de manejo, dado que cada grado de libertad adicional incrementa el orden de las ecuaciones cinemáticas, necesitándose así mayor poder de procesamiento para lograr un desempeño que cumpla las especi�caciones mínimas en el ámbito en el que se desee aplicar. En el trabajo (Das, 2004) se desarrolla un modelo matemático completo de un robot SCARA Serpent 1 que incluye la dinámica de los servomotores y se presenta junto con la simulación dinámica en este documento. Los servomotores DC que conducen cada articulación del robot se estudian con la acción de un controlador PD. El robot Serpent 1 tiene instrucciones para lograr operaciones de selección y colocación de tres objetos cilíndricos de diferentes tamaños a través de agujeros asignados. El funcionamiento del sistema robot-actuador-controlador se examina con simulación numérica y se veri�ca experimentalmente. Los parámetros del sistema se �jaron basándose en el Serpent 1 para lograr sincronizar el funcio- namiento del controlador con el modelo dinámico para así lograr un comportamiento preciso y detallado del robot SCARA en todo momento en un entorno tanto virtual como real, logrando así una interface para experimentación sencilla pero robusta, dado que provee unos datos esenciales a la hora de comprobar la efectividad de un sistema robótico en funcionamiento. 26 En la �gura 1.12 se observa el brazo robótico Serpent 1 en su mesa de trabajo. Figura 1.12: Robot Serpent 1 (Das, 2004) En el artículo (Burisch et al., 2004) se desarrolla un micro robot SCARA hibrido paralelo para aplicaciones de ensamble de alta precisión, se realizó todo el diseño del mecanismo, se deter- minaron 4 grados de libertad, el espacio de trabajo, el análisis matemático, los componentes estructurales,etc. Se realizaron simulaciones de esfuerzos para determinar la durabilidad del ro- bot en base a cuanta carga máxima puede soportar. Mas adelante, en el trabajo de grado (Delgadillo, 2007) se diseña una interfaz grá�ca por medio del programa Visual Basic fundamentados en los principios básicos para la construcción de la misma, los cuales son consistencia y retroalimentación. La interfaz está compuesta por una pan- talla de bienvenida, pestañas con los diferentes menús entre los cuales se encontraba un acceso a la TCI y TCD del robot, además de trayectorias ya previamente establecidas para ponerlas en ejecución, una simulación en tiempo real del brazo manipulador y un informe constante del estado de conexión de los motores y sensores ubicados en el robot. El objetivo del trabajo consistió en implementar una interfaz grá�ca para garantizar la comu- nicación usuario-máquina que fuera capaz de manipular el brazo robótico y además informar acerca de los errores que se podían presentar en el proceso. Un aspecto que cabe resaltar es la implantación de un sistema de seguridad con usuario y contraseña para que sólo tuvieran acceso las personas vinculadas al proyecto y que además la transmisión de datos se realizó a través del puerto paralelo del PC hacia un circuito integrado que permite la conexión con los motores paso a paso que fueron implementados en el manipulador. 27 En la tesis de maestria (Ochoa, 2008) se presenta el modelo cinemático de un robot tipo SCARA, con el �n de hallar la dirección del extremo a partir de las variables de las articulaciones haciendo uso del método de Denavit-Hartenberg, de�niendo el modelo dinámico inverso y directo del ma- nipulador. Adcionalmente se presenta la implementación de un controlador basado en el modelo de Computer Torque Control (CTC), donde se linealiza el sistema dinámico y se desacopla por realimentación, transformando el manipulador en un simple par de integradores a controlar. La �nalidad de esté trabajo era medir el desempeño del controlador en trayectorias complejas, las cuales presentan cambios súbitos de dirección en el elemento �nal o un cambio de dirección muy suave junto a una exitación fuerte en el eje Z. Los resultados obtenidos fueron bastante positivos, ya que se puede utilizar un controlador lineal por retroalimentación basado en el modelo no lineal CTC con errores bastante pequeños en el espacio articular y el espacio cartesiano. En el artículo cientí�co (Alshamasin et al., 2009) se realiza un estudio matemático completo del modelo matemático de un robot SCARA analizando la dinámica los servomotores uno a uno para cada articulación, validando todas las ecuaciones planteadas por medio de simulaciones usando el software Solid Dynamic (SD) y haciendo una veri�cación con Matlab/Simulink. Se obtuvieron resultados muy positivos puesto que en los dos programas se visulizan trayectorias de ejecución suaves y por medio del programa SD se construyó una estructura de SCARA que permite a los investigadores evaluar e investigar parámetros del robot haciendo uso de cinemática inversa y directa, herramienta que puede llegar a facilitar el proceso de diseño, construcción e inspección de robots en el mundo real. En el trabajo de grado (Escobar, 2010) se desarrolla una interfaz mediante LabView la cual tiene modo manual y automático y ejemplos de generación de trayectorias. Al plantear su diseño buscan que la interfaz sea fácil de utilizar y manipular y además se implanta un sistema de mensajes el cual advierte al usuario en caso de cometer un error al introducir los datos. Tiene indicadores de espera para que el usuario sepa que una acción se encuentra en ejecución, de �nes de carrera que indican que el robot ha llegado a su posición máxima, de errores que provienen de las señales de los motores en tiempo real, grá�cos para orientar el control e ir modi�cando el PID para modi�car los parámetros, un stop que permite detener la ejecución de la trayectoria en cualquier momento de la misma, una selección del modo de uso que permite cambiar entre modo manual y automático, un panel de selección de tareas que permite escoger la tarea que se va a realizar con el robot, botones para abrir-cerrar y girar pinza para que el usuario pueda realizar estas tareas de manera manual y además una grá�ca del área de trabajo para tener una mejor idea de los puntos en el plano XY que el robot puede alcanzar. En el trabajo (Chen, 2012) trata del proceso de construir el sistema de control y la plani�cación de la trayectoria para un robot SCARA, que se utiliza para recoger las galletas de una cinta de entrega y colocarlas en una línea de embalaje. De acuerdo con los requerimientos prácticos de la acción, se de�nió una trayectoria deseada en el espacio cartesiano, calculando el sistema de coordenadas de puntos clave en el espacio de la articulación, eligiendo así una curva de aceleración adecuada para la plani�cación de trayectorias. Para realizar este experimento se utilizó MATLAB realizando en el una interface de usuario sen- cilla que provea todos los datos necesarios para realizar las mediciones, tales como aceleraciónes 28 máximas, y precisión de las trayectorias obtenidas. En el artículo (Molina, 2013) se implementan 2 interfaces: La primera se diseña en el software Labview en la cual se puede visualizar el robot en 3D en ejecución de tiempo real, además posee pestañas con funcionalidades como control de las articual- ciones, control del elemento �nal del robot o actuador y control por medio de cursores o �echas, además de dar al usuario la posibilidad de construir trayectorias punto a punto y cargarlas al manipulador y además tiene un panel para monitorear las variables del sistema en el momento de la ejecución de la trayectoria. La segunda Interfaz se desarrolla en Java y posee la cualidad de poderse ejecutar desde cualquier computador ya que queda como un archivo ejecutable .jar y permite teleoperar el robot con la condición de estar conectado a la red institucional. En el entorno grá�co se puede visualizar el robot en 3D en su ejecución en tiempo real, además se puede controlar su posición por medio de cinemática directa, cinemática inversa u operando el movimiento del brazo por medio de la simulación, otra funcionalidad permite cargar, guardar, crear y ejecutar trayectorias y por ulti- mo posee un panel para avisos de eventos en la interfaz, indicar el estado del robot y un acceso directo al modo de teleoperación. En el artículo (Sierra, 2013) se presenta una alternativa de una interfaz de máquina humana (HMI), que se basa en el uso del sensor Kinect de Microsoft, dado que este sistema permite al usuario controlar el brazo robótico SCARA en tiempo real, estimando los movimientos de la extremidad superior del operador usando imágenes de profundidad Y asumiendo una posición inicial. Para implementar el control del brazo robótico utilizando el sensor Kinect como este a través de sus bibliotecas OpenNI, permite soluciones en C# utilizando la interacción natural del ser humano y así poder controlar el comportamiento del robot SCARA Simplemente moviendo los brazos. Para realizar esta interfaz de usuario se utilizó Visual Basic dado que este programa permite incluir librerías externas tales como OpenNI y OpenCV para reconocimiento de imágenes, como también programas en C#; este programa tiene herramientas visuales para crear la interfaz de usuario y luego conectarlas con el código, lo que facilita mucho las cosas a la hora de construir una HMI. En la �gura 1.13 se observa cómo se detecta una persona usando el sensor kinect de microsoft, donde la profundidad y los objetos se visualiza en tonalidades de color, siendo los colores mas claros los objetos dejectados. 29 Figura 1.13: Visualización del sistema Kinect (Das, 2004) En el artículo (Rodríguez, 2014) describe la simulación del control de movimiento de un brazo robótico tipo SCARA de un grado de libertad accionado por un par de músculos neumáticos arti�ciales; Estos músculos son los actuadores y emulan el comportamiento de los músculos bio- lógicos; Debido a su comportamiento no lineal, también se contempló la necesidad de desarrollar sistemas de control para brazos robóticos utilizando este tipo de actuador. La investigación comienza con la función matemática que representa el movimiento de las articu- laciones del brazo robótico; Esto permite usar un controlador PID en la función y generar datos para entrenar una Red Neuronal que es capaz de aprender por si sola. El controlador PID es una manera adecuada de controlar este robot, pero la red neuronal demos- tró ser más e�ciente despues de multiples iteraciones, con las cuales esta red se volvió más precisa. EL controlador PID es observado para posteriormente almacenar las entradas y salidas del mismo en todo momento y así �enseñarle� a la red neural a controlar el brazo robótico. Los resultados del experimento se midieron comprobando la repetibilidad y precisión de los con- troladores obtenidos. También se desarrolla en el artículo (Morales, 2014b) un diseño de una interfaz por medio de Labview ya que el software facilita la conexión con la tarjeta de adquisición de datos de National Instruments. En el entorno de trabajo se pueden de�nir tareas como indicarle al robot una posi- 30 ción especi�ca deseada a la cual llegar, mover la pinza de manera manual, indicar que trayectorias (circulo, espiral y rosa) ya de�nidas anteriormente se van a realizar indicando el tamaño de la misma, también tiene la posibilidad de seleccionar entre modo manual y automático y además indica al usuario la respuesta de los motores durante la ejecución de cada una de las tareas. En el trabajo de grado (Salazar, 2015) se crea la interfaz con ayuda de la herramienta GUIDE de Matlab la cual posee una ventana de bienvenida con la opción de escoger la práctica que se quiera realizar con el robot tales como mostrar la cinemática directa e inversa del robot, realizar la tras- lación de un objeto, planear trayectorias de�nidas por el usuario y realizar trayectorias por medio de conexión wi� con el robot. El driver utilizado para recibir las órdenes de la interfaz es Arduino. En el artículo (Vélez, 2015) se crea una interfaz con el software libre Processing ya que este permite que el brazo robótico sea controlado por el teclado, el mouse o por medio de detección de movimiento de una cámara web y además permite la conexión con el dispositivo XBEE para transmitir y recibir información a través de un puerto USB. El objetivo del trabajo (Chinmayi, 2015) es realizar y analizar la cinemática de un robot SCARA, dado que esto es sumamente importante a la hora de operar cualquier sistema robótico, ya que esto permite diseñar funciones que describan el comportamiento del robot en espacio cartesiano como articular. En brazo robótico se modeló en NX, donde se utilizó simulación de movimiento para obtener datos de las articulaciónes del brazo y su comportamiento en conjunto. La cinemática y el análisis matemático se realizaron en MATLAB, donde se analiza desde un punto de vista menos visual y más matemático, permitiendo así obtener datos muy precisos del sistema robótico. Logrando un análisis del comportamiento del robot detallado y su�ciente para obtener un mo- delo 100 porciento idéntico al real en un entorno virtual, permitiendo así lograr simulaciones del sistema real sin necesidad de tener el brazo robótico real funcionando, logrando así una mayor e�ciencia a la hora de hacer pruebas de trayectorias preprogramadas. Por último se compararon los resultados de las simulaciónes en NX y MATLAB. Los trabajos citados muestran como una aplicación tan "generalçomo lo es una interfaz de usuario aplicada a robótica, especialmente robots SCARA, se puede tomar desde múltiples perspectivas, dando al diseñador un amplio campo de actuación, por lo tanto las herramientas utilizadas entre desarrollos varían ampliamente, dejando como único punto común entre todos los desarrollos una implementación de una interfás grá�ca de usuario y un sistema robótico a controlar. 1.3.1.3.1. Metodologías Previas de diseño de HMI A continuación se muestran las metodologías usadas en el diseño de interfaces grá�cas de usuario en general, las cuales buscan garantizar la seguridad de los sistemas de interacción entre hombre y máquina: Human Factors Design Standard (HFDS) ISO 11064 31 Safety Automation System NORSOK Man System Integration Standard (NASA-STD-3000) Human Interface Design Review Guidelines (NUREG 0700) Guía GEDIS Human Factors Design Standard (HFDS) Es un estándar realizado por la administración federal de aviación de Estados Unidos, FAA por sus siglas en inglés. Realiza una compilación exhaustiva de prácticas y factores humanos que hacen parte integral del estudio del comportamiento humano así como la forma en que se inter- actúa con un sistema. El propósito es proveer una única guía de diseño para interfaces de usuario basada en el comportamiento humano bajo diversas condiciones y orientada a las necesidades de la Agencia Federal de Administración de Aviación de los Estados Unidos.(FAA, 2016) ISO 11064 Esta norma ISO establece unos principios, recomendaciones y requerimientos para ser aplicados en los centros de control, proponiendo aspectos de propósito general haciendo énfasis en la faci- lidad de uso de la interfaz.(ISO, 2013) Safety Automation System NORSOK Forma parte de los estándares NORSOK I-002 desarrollados por la industria petrolera de No- ruega para asegurar una adecuada seguridad, valor agregado y un coste efectivo para todas las partes integradas en el desarrollo de sistemas petrolíferos, este estándar de�ne requerimientos de diseño tanto en funcionalidad como en estándares técnicos como de seguridad, para proveer así una base sólida para el desarrollo de los sistemas de control de estaciones petrolíferas en Noruega.(NORSOK, 2001) Man System Integration Standard (NASA-STD-3000) Esta guía desarrollada por los ingenieros de la NASA proporciona información especí�ca para asegurar la integración apropiada de los requerimientos de interfaces hombre-máquina con las rigurosas disciplinas aeroespaciales.(NASA, 1995) Human Interface Design Review Guidelines (NUREG 0700) Es un estándar desarrollado por la comisión nuclear de lo Estados Unidos para revisar el diseño desde el punto de vista de factores humanos de las interfaces hombre-máquina en general. Esta guía establece unos requisitos de diseño para todos los tipos de interfaces de una sala de control nuclear.(Brown, 2002) 1.3.2. Marco teórico En el marco teórico se detallan todos los conocimientos previos requeridos para desarrollar una interfaz grá�ca de usuario para el control de un brazo robótico tipo SCARA. 32 Los temas requeridos son: Sistema operativo robótico (ROS) Diseño de concepto por Karl T.Ulrich Cinemática Interfaz de usuario Protocolos de comunicación a utilizar por la interfaz Calibración por desfaces 1.3.2.1. ROS (Robotic operating System) ROS (Robotic operating System)(Foundation, 2017) es un framework open source para el desa- rrollo de software para robots que provee la funcionalidad de un sistema operativo en clúster. Este software se desarrolló originalmente bajo el nombre de switchyard por el Laboratorio de Inteligencia Arti�cial de Stanford par dar soporte al proyecto del robot son inteligencia arti�cial de Stanford STAIR en 2007 (Foundation, 2017)(Ng, 2007). ROS provee todos los servicios estándar de un sistema operativo tales como abstracción de hard- ware, control de dispositivos de bajo nivel, implementación de funcionalidad de uso común, paso de mensajes entre procesos y mantenimiento de paquetes. Este sistema está basado en una arquitectura de nodos, los cuales pueden recibir, enviar y mul- tiplexar datos ya sea de sensores, controladores, estados, plani�caciones y actuadores, entre otros. La librería de ROS está orientada para un sistema UNIX (LINUX). ROS consiste en dos partes básicas, la parte del sistema operativo ros, como se ha descrito ante- riormente y ros-pkg, una suite de paquetes aportados por la contribución de usuarios organizados en stacks que implementan todo tipo de funcionalidades en ROS desde simulación hasta plani�- cación avanzada de trayectorias. Las áreas que incluye ROS son: Un nodo principal de coordinación (roscore). Publicación o suscripción de �ujos de datos. Multiplexación de la información. Creación y destrucción de nodos. Los nodos están perfectamente distribuidos, permitiendo procesamiento distribuido en múl- tiples núcleos, multiprocesamiento, GPUs, y clústeres. Login. 33 Parámetros del servidor. Testeo de sistemas. Las áreas más importantes que incluyen los paquetes de ROS son: Percepción. Simulación. Multiplexación de la información. Identi�cación de objetos. Segmentación y reconocimiento. Reconocimiento facial. Reconocimiento de gestos. Comprensión de movimiento. Robots móviles. Control. Plani�cación de trayectorias. Agarre de objetos. entre otros. 1.3.2.1.1. Arquitectuta de ROS El sistema ROS funciona con una topología de nodos, los cuales se conectan a un nodo central el cual se encarga de transmitir los datos entre ellos. Nodos: Los nodos usan dependencias de librerías de ROS, las cuales sirven para proveer al nodo de funcionalidades que van desde usar C++, como también comunicación, entre otras. Paquetes: Los paquetes de ROS contienen los procesos de ejecución(nodos), librerías depen- dientes de ROS, datos especí�cos del programa y archivos de con�guración. Metapaquetes: Los metapaquetes son paquetes especializados que sirven para representar un conjunto de paquetes, cuando estos son muy grandes. Mani�estos de paquete: Los mani�estos de paquete(package.xml) provee metadatos acerca del paquete, incluyendo su nombre, versión, descripción, información de licencia, dependencias y otra información como paquetes exportados. Repositorios: Los repositorios son una colección de paquetes que se pueden instalar en ROS a través de la red, usando páginas tales como GitHub para descargarlos; esto sirve para descargar 34 paquetes creados por la comunidad. Mensajes: Los mensajes(msg) de�nen la estructura de los datos a ser usados en los mensajes enviados en ROS. Servicios: Los servicios(srv) de�nen la estructura de datos del requerimiento y la respuesta para los servicios de ROS. Grá�co de computación de ROS (RCG ó Ros Computation Graph): ROS crea una red llamada RCG donde todos los procesos se conectan, cualquier nodo puede acceder a esta red, interactuar con otros nodos, ver la información que están enviando y transmitir datos a la red como se puede observar en la �gura 1.14. Figura 1.14: Representación de la red RCG creada por ROS (Foundation, 2017) Namespace: Es un nombre único que se le asigna a un recurso dentro de la red RCG y actúa como dirección única para el recurso en cuestión. Stack: Los paquetes de ROS se organizan en stacks, los cuales permiten una mayor organización y distribución del software para fácil reúso de los mismos. En otras palabras un stack es un folder que almacena varios paquetes diferentes dentro de si. 1.3.2.1.2. Sistemas de comunicación de ROS Nodos: Los nodos son procesos que realizan la computación. ROS está diseñado para ser alta- mente modular; Un sistema robótico se compone de muchos nodos. Por ejemplo, un nodo controla un escáner láser, otro nodo controla los motores de las ruedas, otro nodo controla la localiza- ción del robot en el espacio, otro nodo provee feedback visual de lo que está viendo el robot a través de sus cámaras, y asi sucesivamente. Un nodo de ROS está escrito con el uso de librerías cliente de ROS tales como roscpp(Para programas en C++) y rospy(para programas en Python). Master: El rosmaster(roscore) provee registro de nombres y acceso a toda la información que está pasando por ROS. Sin el master los nodos no serían capaces encontrarse de conectarse entre 35 si, intercambiar mensajes o invocar servicios. Servidor de parámetros: Permite almacenar información por direcciónes en una ubicación central. El servidor de parámetros es parte del master. Mensajes: Los nodos se comunican entre ellos intercambiando mensajes. Un mensaje es sim- plemente una estructura de datos basada en caracteres y tipos de datos. Los estándares más comunes (integer, �oat, boolean, etc.) son soportados, como también arreglos de estos para for- mar líneas de datos más complejas. Los mensajes pueden contener arreglos de caracteres como también información arbitraria anidada. Tópicos: Los mensajes son encaminados por medio de un sistema de transporte con semánticas de publicar y suscribir. Un nodo envía un mensaje publicandolo a un tópico. El tópico es un nombre usado para identi�car el contenido del mensaje. Un nodo que está �interesado� en ciertos tipos de datos se suscribirá al tópico apropiado. Puede haber múltiples publicadores y suscrip- tores concurrentes para un mismo tópico, como también puede haber un nodo que publique o se suscriba a varios tópicos al mismo tiempo. en general, publicadores y suscriptores no saben de la existencia de los otros. La idea es usar la información cuando los suscriptores la necesiten, lo que permite a los publicadores centrarse en otras tareas mientras el tópico almacena los mensajes hasta que el suscriptor los lea. Servicios: el modelo publicar/suscribir es un paradigma de comunicación muy �exible, pero es MIMO(Multiple Input Multiple Output), una comunicación SISO(Single Input Single Output) no es apropiada para este tipo de comunicación de petición/respuesta que es requerida en un sistema distribuido. la comunicación de petición/respuesta se realiza a través de servicios, que son de�nidos como un par de estructuras de mensajes: una para la petición y una para la respuesta. Un nodo provee un servicio bajo un nombre y un cliente usa el servicio enviando un mensaje de petición y esperando la respuesta. Las librerías cliente de ROS generalmente presentan esta interacción al usuario como si fuera una llamada remota. Bolsas: las Bolsas son un formato para guardar y reproducir mensajes de ROS. Las bolsas son un mecanismo importante para guardar datos, tales como información de sensores, la cual puede ser difícil de adquirir, pero se necesita para realizar algoritmos de desarrollo y pruebas. El master de ROS actúa como un nameservice en el �ujo de datos de ROS, esto signi�ca que almacena información de registro de Tópicos y Servicios para ser accesible por los Nodos de ROS. Los nodos se comunican con el Master para reportar su información de registro. A medida que los Nodos se comunican con el master, estos pueden recibir información acerca de otros nodos registrados y conectarse a ellos. El master puede hacer callbacks(comunicación con nodos desde master) a otros nodos cuando la información de registro cambie y así mantener a todos los nodos actualizados de cualquier cambio o nuevo registro que se realice, lo que permite crear conexiones dinámicas a medida que se agregan nuevos nodos al entorno de ROS. Los nodos se conectan unos a otros directamente, el master solo provee información de direc- ciónes y búsqueda, así como un servidor DNS. Los Nodos que se suscriban a un tópico pedirán 36 conexiones de los nodos que publiquen en ese tópico y así establecer conexión a través de un protocolo �acordado� por los dos nodos. El protocolo de comunicación más común y usado en ROS es TCPROS el cual usa sockets estándar TCP/IP. Esta arquitectura permite operación desacoplada, donde los nombres son los medios primarios con los cuales se pueden construir sistemas más randes y complejos. Los nombres tienen un rol muy importante en ROS; Nodos, Tópicos, Servicios y parámetros, todos tienen nombres. Todas las librerías cliente de ROS soportan remapeado de nombres por línea de comandos, lo que signi�ca que un programa compilado puede ser recon�gurado en ejecución para operar bajo una diferente topología de computación. 1.3.2.2. Diseño de concepto por Karl T.Ulrich Esté método es una herramienta para el diseño y manufactura de diferentes productos que con- llevan a la integración de un grupo de personas expertas en diferentes disciplinas y con diversos puntos de vista, por lo que a través de los métodos para las etapas de desarrollo expuestas en esta metodología se facilita la toma de decisiones y solución de problemas a la hora de crear un producto. Los métodos vienen estructurados, tienen un paso a paso para su ejecución y en ocasiones una serie de plantillas o ejemplos para los sistemas de adquisición de información clave para el equipo de trabajo (Ulrich and Eppinger, 2004). La metodología se divide en tres grandes etapas desde la generación de la idea, hasta la búsqueda de los componentes necesarios para desarrollarla,además de un proceso de selección de soluciones hasta la exposición de todos los componentes de de la solución seleccionada y desarrollada. La estapas son (Simanca, 2015): Planeación y clari�cación de tareas. Diseño de concepto Diseño de detalle 1.3.2.2.1. Planeación y clari�cación de tareas Da inicio con una idea confusa de la solución a una problematica o necesidad identi�cada ya sea en el medio universitario o industrial, teniendo en cuenta que no se sabe cual va a ser la solución �- nal o que método se utilizará para realizarla, el equipo se plantea una misión u objetivo de diseño. Con el objetivo de diseño de�nido se pasa la etapa de adquisición de información a través del cliente haciendo uso de diferentes métodos tales como entrevistas,encuestas,actividades grupa- les,observación de productos similares en uso,etc. Con el �n de identi�car una lista de necesidades sin procesar que puedan dar a conocer los elementos claves que para el cliente debería tener el producto. Con la lista de necesidades sin procesar, se identi�can las primarias o carácteristicas generales del producto que sean fundamentales en el desarrollo de este, Se utilizan herramientas como: Escribir cada necesidad en una tarjeta independiente, eliminar enunciados redundantes, agrupar 37 tarjetas similares, considerar la creación de grupos de etiquetas y al �nal una revisión, edición y reorganización de las etiquetas resultantes (Simanca, 2015). Una vez las necesidades son clari�cadas se expone una lista para las posibles soluciones que pueden actuar directamente en una necesidad o en simultáneas y se procede a la creación de la matriz de Necesidades Vs Medidas para condensar la información obtenida. Con la matriz clara se procede a deducir una serie de objetivos de diseño, como son : variables, cualidades o medidas especí�cas que debe llevar el producto, para así centrar aun más la idea de diseño. Se realiza una búsqueda de los productos en el mercado que ya estén desarrollados y sirvan para esta misma función, resaltando así las carácterísticas y componentes de cada uno de ellos para complementar la tabla de objetivos de diseño. 1.3.2.2.2. Diseño de concepto Con los conceptos claros, se procede a implementar soluciones más alcanzables analizando la in- formación recolectada con el �n de crear el esquema de caja negra el cual consiste en identi�car las entradas y salidas del producto desconociendo los procesos internos que se deben llevar acabo para lograrlas, con los objetos,señales y energías que entran se deben obtener objetos,señales y energías de salida en el producto. Siendo los objetos o materiales todo aquel conjunto de ele- mentos tangibles que son susceptibles de cambiar de forma, estado, composición o lugar, las señales, el conjunto de ordenes directas o indirectas que inician, alteran o detienen los procesos de transformación de la materia o de la energía y las energías son los diferentes tipos de energía que pueden generar cambios efectivos sobre la materia, puede ser térmica, química, mecánica, eléctrica, entre otras, puede ser transformada (Simanca, 2015). En ocasiones debido a la complejidad del producto es conveniente realizar una división en sub- problemas y hacer un análisis independiente en cada una de ellas. Estas entradas y salidas deben ser tomadas en cuenta para la elaboración de funciones, las cuales son la condensación de los sub - problemas en términos de una acción que indica la transforma- ción efectuada sobre los elementos Material, Energía o Señal (Simanca, 2015). Con las funciones de�nidas se procede a crear el Diagrama de Funciones, que es una mirada mas detallada a los procesos internos que debe realizar el producto con las entradas planteadas anteriormente para obtener las salidas requeridas. Se realiza una búsqueda externa y recopilación de las soluciones para el problema general y las funciones del mismo a través de entrevistas, consulta con expertos, búsqueda de patentes, lite- ratura especializada y estudio de productos existentes (Simanca, 2015). Se realiza una búsqueda interna consistente en encontrar soluciones basadas en la creatividad, talento y experiencia del grupo de trabajo (Simanca, 2015) por medio de lineamientos de bús- queda para acoger todas las ideas, considerar todas las posibilidades, usar medios grá�cos para expresar las soluciones, hacer uso de analogías, etc. 38 Con la información recopilada se da paso a categorizarla y organizarla por grupos,teniendo en cuenta la función o problematica a solucionar, indenticando las fortalezas y debilidades de los productos encontrados organizandola en una matriz morfológica con el �n de dar paso al proceso de generación de conceptos de solución o estructuras de trabajo. Con la matriz morfológica se generan todas las combinaciones posibles de solución que se le pueden plantear al problema, luego se realiza una descripción de cada una de las soluciones ex- clareciendo sus componentes y se da paso al proceso de selección con el �n de determinar una solución de�nitiva a la problemática planteada. El proceso de matrices de decisión es una herramienta para selccionar las solución de�nitiva, se debe tener claro que concepto de solución escoger según la orientación del producto a satisfacer las necesidades de: el usuario,la competitividad en el mercado,la capacidad productiva,etc. Existen dos proceso de selección de conceptos: Proceso de visualización de conceptos de solución: que permite cali�car los conceptos eliminando los menos convenientes e identi�cando aquellos que son susceptibles de combinar para generar nuevos conceptos (Simanca, 2015). Proceso de puntuación de conceptos de solución: Es un proceso concluyente que permite conocer el mejor concepto solución de un conjunto extraído de la matriz morfológica cali�cando conceptos aceptados y conceptos combinados. Para los anteriores procesos de selección se debe crear una nueva lista de parámetros o criterios de evaluación que proporcione una selección más rápida, teniendo en cuenta que los criterios se puedan medir, y luego se permita su desarrollo,construcción y operabbilidad en el producto. 1.3.2.2.3. Diseño de detalle En esta etapa se realiza un desglose de los componentes del producto por medio de planos me- cánicos,eléctricos, diagramas de �ujo de códigos,simulaciones,videos de operación,etc. Con está información se da paso al BOM(bill of materials), el cual consiste en desglosar cada uno de los elementos del producto desde la materia prima necesaria para su fabricación hasta cada uno de los componentes que lo conforman. Con los componentes previamente identi�cados se realiza una estructura del producto, consistente en un control de las piezas necesarias para la construcción del dispositivo, la cantidad, su costo; y un ID para la identi�cación por parte de los desarrolladores. 1.3.2.3. Cinemática Con respecto a la programación del robot se deben tener en cuenta dos aspectos: su capacidad cinemática que hace referencia al tipo de trayectorias que se van a implementar y su capacidad dinámica la cual hace referencia a los aspecto que se deben tener en cuenta a la hora de controlar 39 movimientos del robot (Baturone, 2001). La cinemática es el estudio del movimiento del robot con respecto a un sistema de referencia. Se interesa principalmente por describir el movimiento del manipulador es un espacio de tiempo determinado, expresando la relación entre posición y orientación del extremo del robot ya se en coordenadas articulares o coordenadas cartesianas (Robayo, 2009). El estudio de la cinemática contempla dos grandes temas los cuales son cinemática directa y cinemática inversa: 1.3.2.3.1. Cinemática Directa Tiene como objetivo hallar la posición y orientación del extremo del robot con respecto a su base para cualquier movimiento del manipulador siempre y cuando esté dentro del espacio de trabajo del mismo (Craig, 2006). 1.3.2.3.2. Cinemática Inversa Tiene como objetivo hallar el conjunto de ángulos correspondientes a las articulaciones para una posición y orientación del extremo con respecto a la base del robot conocida, garantizando que esta se encuentre dentro del espacio de trabajo del manipulador (Craig, 2006). 1.3.2.4. Interfaz de usuario Una interfaz hombre máquina, HMI por sus siglas en inglés, es un componente que permite la interacción entre un operario y una máquina o sistema; la interfaz se compone de hardware y software que permiten las entradas del usuario para ser traducidas como señales para controlar máquinas que, a su vez proporcionan el resultado necesario para el usuario (Pannone, 2015). Dada la creciente demanda de automatización más segura, e�ciente e intuitiva que se ha venido dando en la industria desde hace tiempo, junto con el avance en las tecnologías de información y comunicación se ha dado lugar al aumento de sistemas de control centralizados y muchas veces automáticos, donde el operario tiene cada vez menos acción en el sistema como tal y más a través de una interfaz de usuario donde se le permite comunicarse y controlar el sistema en su totalidad, observando el estado detallado de cada subsistema, veri�cando estados normales de operación, como también alertas que se puedan presentar, entre otras.(Sommerville, 2008) A pesar de estos avances, el operador ha conservado un papel crítico en el control y supervisión del comportamiento de estos sistemas automatizados complejos. A medida que la escala de las soluciones automatizadas ha crecido , también lo han hecho las consecuencias de fallos de equipos ó humanos. El trabajo del operador puede ser a veces muy exigente . Las consecuencias derivadas de la acción del operador apropiado en salas de control , tales como actos de omisión , comisión, tiempo , secuencia, etc., pueden ser fatales para el mismo o para el sistema, por lo tanto se busca regular 40 la manera en que estos sistemas de control se diseñan para que así se logre un control más preciso, e�ciente y seguro (Ramírez, 2015). Para mostrar información grá�ca en una pantalla se han utilizado diversidad de herramientas, las cuales están basadas en lenguajes de programación a alto nivel, ya sea C++,C#, Python, Java, entre otros. Estas herramientas lo que buscan es facilitar el desarrollo de aplicaciones que per- mitan mostrar grá�cos tridimensionales en pantalla para todo tipo de aplicaciones, ya sea para juegos, producciones cinematográ�cas, visualizaciones de arquitectura, visualización de procesos industriales, entre otros. La herramienta basada en C++ más utilizada por la industria en general es OpenGL(Open Graphics Library)(WhatIs.com, 2011) dada su facilidad de implementación por ser open source, como también su amplio desarrollo por parte de la comunidad, donde se encuentran in�nidad de guías y tutoriales con ejercicios que van desde lo más básico hasta lo más complejo, permitiendo así una rápida adopción de esta herramienta por parte de alguien que sabe programar pero no conoce estas librerías, dando como resultado una herramienta versátil y �sencilla� con la cual se pueden lograr gran cantidad de aplicaciones. Para desarrollo de interfaces de usuario se utilizan diferentes herramientas basadas en lenguajes de programación de alto nivel, entre las cuales se encuentra la más popular Visual Studio por su versatilidad, dado que permite usar distintos lenguajes de programación a gusto del diseñador; por otro lado se tienen ciertas herramientas especí�cas de C++, entre las cuales se encuentra QT Creator(Company, 2017), la cual es de libre distribución y contiene tutoriales especí�cos para implementar interfaces de usuario en gran cantidad de dispositivos utilizando diferentes he- rramientas especí�cas para cada parte del desarrollo de una interfaz de usuario, tales como QT Code Editor para la programación en C++, QT Designer para el diseño grá�co de la interfaz, lo que facilita la implementación rápida de una GUI(Interfaz de usuario grá�ca). RQT es una interfaz de desarrollo para ROS basada en el entorno de desarrollo QT que permite el desarrollo de interfaces de usuario avanzadas usando herramientas grá�cas e intuitivas como también el lenguaje de programación C++, se puede observar algunas de las posibilidades tales como grá�cas, que ofrece en la �gura ??. La única desventaja de usar RQT con respecto al entorno QT diréctamente es que RQT permite solamente crear interfaces sencillas sin posibilidad de cargar librerias 3D tales como OpenGL, lo cual se considera necesario, ya que se necesita una interfaz de usuario más avanzada y compleja debido que se deben mostrar gran cantidad de datos del robot, como también una simulación en tiempo real del mismo; Por estas razones se optó por usar el entorno QT directamente, ya que posee todas las herramientas necesarias para crear una interfaz que se adapte a todos los requerimientos y está basado en C++. El entorno QT y su herramienta principal QT creator permiten acomodar la interfaz grá�ca en su totalidad, ya sean íconos, botones, ventanas, texto, etc., de una manera fácil e intuitiva para el desarrollador, para luego poder programar las interacciones entre las diferentes partes de la interfaz a través de código y ciertas herramientas especializadas de QT creator las cuales facilitan el desarrollo de interfaces ricas en contenido. 41 Un entorno simulado hace referencia a una investigación de una hipótesis que se toma por cierta utilizando modelos, esto es "La simulación es el proceso de diseñar un modelo de un sistema real y llevar a término experiencias con él, con la �nalidad de comprender el comportamiento del sistema o evaluar nuevas estrategias dentro de los límites impuestos por un cierto criterio o un conjunto de ellos para el funcionamiento del sistema.(Shannon, 1976) Para una interfaz de usuario aplicada en robótica se busca generar un entorno simulado dado que éste permite visualizar el comportamiento del robot sin la necesidad de tener el sistema físico, dado que todo se da en un entorno virtual, dando como resultado una poderosa herramienta para prueba en etapas tempranas de desarrollo de una rutina para un sistema robótico, por otro lado permite visualizar el estado en tiempo real del robot físico si el sistema de control se encuentra lejos del proceso real, dando como resultado un feedback de alto valor para el operario. Figura 1.15: Entorno Simulado de brazo antropomór�co y bandas transportadoras (Robotics, 2012) Para estas simulaciones y otras tales como la mostrada en la �gura 1.15, la cual se compone de un sistema de bandas y un brazo robótico para operaciones de paletizado, se utilizan herramientas como la antes mencionada OpenGL la cual permite cargar archivos de las piezas seccionadas de un robot en 3D para dimensionarlas y acomodarlas en el espacio de una manera determinada, para luego así hacer un �puente� entre el código C++ que determina el comportamiento de estas piezas y su movimiento en el entorno virtual, esto se da primero generando las piezas de cada articulación del robot en un programa de diseño 3D para luego importarlas y organizarlas de manera que giren cada una por separado en sus articulaciones. 42 Figura 1.16: Despiece de un brazo robótico sencillo (Mike, 2004) En la �gura 1.16 se muestra un ejemplo de un despiece un brazo robótico sencillo, el cual se compone de 5 partes, y 3 ejes, los cuales funcionarán como articulaciones y un par de brazo/an- tebrazo; En OpenGL estas piezas se cargan una a una, se les da color, tamaño y textura, luego se simula la iluminación del ambiente y cómo se comportan las sombras en las piezas, para luego de�nir en donde estará ubicada la pieza inicial o base, la cual no se moverá en el espacio y servirá como ancla y punto de referencia para el resto del robot, en este caso sería el cilindro 01, el cual estará anclado en un punto del espacio cartesiano; Las siguientes piezas se de�nen con referencia a la pieza anterior, por ejemplo aquí se referencia la pieza Upperleg con rotación y cero desplazamiento respecto al cilindro 01, luego se relaciona el cilindro 02 con respecto a la pieza Upperleg para rotar en el extremo de ella. Para el antebrazo se realiza la misma operación de referencia del brazo y el cilindro 01, pero con respecto al cilindro 02 y así sucesivamente hasta llegar al extremo del robot, el cual portará una herramienta designada dependiendo del tipo de operación que se desee realizar. Las coordenadas del extremo del robot se obtienen mediante cinemática directa, la cual a partir de los valores de las articulaciones del robot nos permite conocer las coordenadas cartesianas absolutas del extremo del robot. Si se desea ingresar las coordenadas cartesianas del extremo del robot directamente para reali- zar una trayectoria deseada, se utiliza cinemática inversa, la cual permite conocer cómo deben moverse las articulaciones para lograr la trayectoria que se busca realizar. 1.3.2.4.1. Criterios a tener en cuenta para desarrollar una interfaz 43 Consistencia Esta propiedad es importante en la interacción entre el operario y el sistema para que este pueda correlacionar cada situación con experiencias, esquemas mentales y hábitos previamente apren- didos. La información debe conservar un estándar de�nido por el diseñador a lo largo de toda la interfaz, dado que se busca que el operario tenga una interacción �uida y versátil con la HMI. La consistencia busca que el operario no tenga que aprender diferentes formas de interactuar con la interfaz, sino que con unas simples reglas básicas se pueda mover fácilmente a lo largo y ancho de toda la interfaz, dado que esto también economiza tiempo y permite un funcionamiento más �uido de la planta como totalidad. En la �gura 1.17 se muestra un ejemplo de una interfaz grá�ca consistente; se puede observar que la interfaz no está saturada de información ni presenta un esquema desordenado o difícil de entender, también se puede apreciar como la distribución de la información y los elementos grá�cos conservan una simetría(no es obligatorio conservar simetría siempre), lo que hace que esta se vea más organizada y sea más cómoda de leer la información. Figura 1.17: Despiece de un brazo robótico sencillo (AD, 2015) Visibilidad La interfaz debe permitir interpretar la información grá�ca y textual. Elementos tales como color de texto, tamaño, contraste, etc. Deben ser visualizados e interpretados de forma inmediata. Una buena visibilidad de todos los elementos de una interfaz favorece a toda una gama cognitiva desde la percepción hasta las acciones. Una buena visibilidad es de suma importancia dado que la información debe ser fácil de leer, para poder así lograr que el operario se concentre en las tareas importantes tales como la supervisión de los procesos, acciones y ajustes de control, de�nición 44 de variables, programación de procesos, entre otros. Se busca una visibilidad neutra, esto quiere decir que toda la información no se muestre en fondos de colores muy vivos dado que esto cansa a la vista y satura la interfaz con demasiado color (�gura 1.18), por lo tanto se busca que la información y los fondos sean más neutros (Figura 1.19 y 1.20), pero que se conserve un buen nivel de contraste para poder así visualizar más cómodamente la información. Figura 1.18: Ejemplo de contrastes con colores vivos (Petit, 2007) 45 Figura 1.19: Ejemplo de contrastes con colores un poco más neutros (Petit, 2007) 46 Figura 1.20: Ejemplo de contrastes con colores neutros (Petit, 2007) Perceptibilidad La dinámica del estado de la planta debe ser fácilmente perceptible tanto en condiciones norma- les como anormales, de manera que el operario pueda tomar acciones ante cualquier situación (Figura 1.21). Dado que las condiciones de trabajo de una pl