METODOLOGÍA PARA EL ETIQUETADO DE BASE DE DATOS DE
UN MANIPULADOR SERIAL DE SEIS GRADOS DE LIBERTAD
MEDIANTE PYBULLET
Elias Escobar Pereira Proyecto de grado presentado como requisito parcial para aspirar al título de Ingeniero Electricista Director Kevin David Ortega Quiñones Grupo de Investigación en Gestión de Sistemas Eléctricos, Electrónicos y Automáticos (GIGSEEA).
UNIVERSIDAD TECNOLÓGICA DE PEREIRA
PROGRAMA DE INGENIERÍA ELÉCTRICA
PEREIRA
2026
Nota de Aceptación Firma del Presidente del jurado Firma del jurado 1 - Evaluador Firma del jurado 2 - Evaluador Firma del jurado 3 - Director Pereira, XX de XXX de 2026
Dedicado a mis padres Elias Ramón y Marelvy Rocío, por ser el cimiento de mis sueños y por enseñarme que la perseverancia y la disciplina son la clave del éxito. A mi hermana Paula María, por su compañía incondicional y por ser mi motivación constante para ser un mejor profesional. Todo este esfuerzo es por y para ustedes.
Quiero expresar mi más sincero agradecimiento a mis padres y a mi hermana, cuyo apoyo moral y sacrificio económico hicieron posible la culminación de esta etapa académica. Gracias por creer en mí incluso cuando el camino se tornaba complejo. De manera especial, agradezco a mi tutor, el Ing. Kevin David Ortega Quiñones, por su invaluable guía, paciencia y por compartir sus conocimientos técnicos conmigo. Su orientación fue fundamental para navegar los desafíos de este proyecto y para llevar mi formación a un nivel de excelencia.
Al Grupo de Investigación en Gestión de Sistemas Eléctricos, Electrónicos y Automáticos, por brindarme el espacio, las herramientas y el entorno académico necesario para desarrollar esta investigación. Formar parte de este grupo ha sido una experiencia enriquecedora que ha fortalecido mi pasión por la ingeniería y la robótica. Finalmente, agradezco a la Universidad Tecnológica de Pereira, mi alma mater, por haberme formado durante estos años, y a mis amigos y compañeros que, de una u otra forma, aportaron con su conocimiento o palabras de aliento durante el desarrollo de este trabajo de grado.
CONTENIDO
pág.
1. INTRODUCCIÓN
1.1. DEFINICIÓN DEL PROBLEMA . . . . . . . . . . . . . . . . . . . . .
1.2. JUSTIFICACIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3. OBJETIVOS
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1.
Objetivo general
. . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.2.
Objetivos específicos . . . . . . . . . . . . . . . . . . . . . . . .
2. ESTADO DEL ARTE
3. MARCO TEÓRICO
3.1. MANIPULADORES ROBÓTICOS SERIALES
. . . . . . . . . . . . .
3.1.1.
Morfología y componentes estructurales . . . . . . . . . . . . . .
3.1.2.
Clasificación de las articulaciones . . . . . . . . . . . . . . . . .
3.1.3.
Grados de libertad (GDL) y movilidad . . . . . . . . . . . . . .
3.1.4.
Espacio de trabajo (Workspace) . . . . . . . . . . . . . . . . . .
3.2. CINEMÁTICA VECTORIAL Y TRANSFORMACIONES DE COOR-
DENADAS
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1.
Representación de posición y orientación . . . . . . . . . . . . .
3.2.2.
Matrices de transformación homogénea (HTM)
. . . . . . . . .
3.3. CINEMÁTICA DE MANIPULADORES . . . . . . . . . . . . . . . . .
3.3.1.
Cinemática directa y la convención de Denavit-Hartenberg (D-H)
3.3.2.
Modelado cinemático del manipulador PAROL6 . . . . . . . . .
3.3.3.
Cinemática inversa y jacobiano
. . . . . . . . . . . . . . . . . .
3.4. EL EFECTOR FINAL (End-Effector)
. . . . . . . . . . . . . . . . . .
3.4.1.
Geometría y pose del TCP . . . . . . . . . . . . . . . . . . . . .
3.4.2.
Convención de rotación y ángulos de Euler . . . . . . . . . . . .
3.4.3.
Dualidad en la representación: Euler y cuaterniones . . . . . . .
3.5. ENTORNO DE SIMULACIÓN DE FÍSICA: PYBULLET
. . . . . . .
3.6. VISIÓN ARTIFICIAL Y CÁMARAS RGB-D
. . . . . . . . . . . . . .
3.6.1.
Modelo de cámara pinhole . . . . . . . . . . . . . . . . . . . . .
3.6.2.
Metodologías de ubicación de cámaras
. . . . . . . . . . . . . .
3.6.3.
Muestreo y renderizado por software (Tiny Renderer) . . . . . .
3.7. GENERACIÓN DE BASES DE DATOS ETIQUETADAS . . . . . . .
3.7.1.
Tipos de etiquetas automáticas
. . . . . . . . . . . . . . . . . .
3.7.2.
Mecanismo de generación y variabilidad estocástica . . . . . . .
3.8. LA BRECHA DE REALIDAD Y TRANSFERENCIA SIM-TO-REAL
3.8.1.
Aleatorización de dominio (Domain Randomization) . . . . . . .
4. SÍNTESIS Y VALIDACIÓN DEL MODELO DIGITAL
4.1. CONFIGURACIÓN ESTRUCTURAL DEL ENTORNO DE SIMULA-
CIÓN
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2. INTERFAZ DE CONTROL Y SINCRONIZACIÓN TEMPORAL . . .
4.3. VALIDACIÓN ANALÍTICA DEL MODELO CINEMÁTICO . . . . . .
5. CALIBRACIÓN DEL SISTEMA DE VISIÓN SINTÉTICA
5.1. MODELO DE CÁMARA Y MÉTODO DE ZHANG
. . . . . . . . . .
5.2. CONFIGURACIÓN DE LAS ESTACIONES DE OBSERVACIÓN . . .
5.3. PIPELINE DE CAPTURA Y RENDERIZADO . . . . . . . . . . . . .
6. GENERACIÓN MASIVA Y VERIFICACIÓN DEL DATASET
6.1. ALGORITMO DE RECOLECCIÓN DE DATOS . . . . . . . . . . . .
6.2. ESTRUCTURA DEL DATASET Y FORMATO DE ETIQUETADO
.
6.3. VERIFICACIÓN ESTADÍSTICA DEL DATASET
. . . . . . . . . . .
7. EXPERIMENTOS Y RESULTADOS
7.1. VALIDACIÓN CINEMÁTICA DEL MODELO DIGITAL . . . . . . . .
7.1.1.
Protocolo experimental . . . . . . . . . . . . . . . . . . . . . . .
7.1.2.
Resultados de la validación cinemática . . . . . . . . . . . . . .
7.1.3.
Caracterización del espacio de trabajo
. . . . . . . . . . . . . .
7.2. ANÁLISIS DEL PIPELINE DE SOFTWARE IMPLEMENTADO . . .
7.2.1.
Bloque 1. Parámetros globales de configuración
. . . . . . . . .
7.2.2.
Bloque 2. Modelo óptico de Zhang e implementación de la proyección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.3.
Bloque 3. Configuración de los nodos de captura . . . . . . . . .
7.2.4.
Bloque 4. Inicialización del entorno de simulación . . . . . . . .
7.2.5.
Bloque 5. Inicialización del archivo CSV
. . . . . . . . . . . . .
7.2.6.
Bloque 6. Bucle principal de generación . . . . . . . . . . . . . .
7.2.7.
Bloque 7. Monitorización del progreso y finalización . . . . . . .
7.3. VERIFICACIÓN DEL SISTEMA DE VISIÓN SINTÉTICA . . . . . .
7.3.1.
Consistencia geométrica de la proyección . . . . . . . . . . . . .
7.3.2.
Análisis visual del sistema multivista . . . . . . . . . . . . . . .
7.4. ANÁLISIS DEL DATASET GENERADO
. . . . . . . . . . . . . . . .
7.4.1.
Estructura y contenido del archivo del valor verdadero
. . . . .
7.4.2.
Registros representativos del dataset
. . . . . . . . . . . . . . .
7.4.3.
Distribución estadística de las variables articulares . . . . . . . .
7.4.4.
Distribución espacial del TCP en el espacio cartesiano . . . . . .
7.4.5.
Integridad de los cuaterniones de orientación . . . . . . . . . . .
7.5. DISCUSIÓN DE RESULTADOS
. . . . . . . . . . . . . . . . . . . . .
8. CONCLUSIONES Y RECOMENDACIONES
8.1. CONCLUSIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2. RECOMENDACIONES
. . . . . . . . . . . . . . . . . . . . . . . . . .
BIBLIOGRAFÍA
LISTA DE TABLAS
1.
Clasificación de manipuladores robóticos según su configuración cinemática [1] [2]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.
Parámetros de Denavit-Hartenberg validados para el manipulador PA-
ROL6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.
Límites cinemáticos configurados en el entorno de simulación.
. . . . .
4.
Parámetros extrínsecos de las estaciones de captura del sistema de visión sintética. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.
Descripción de las columnas del archivo datos_completos.csv. . . . .
6.
Estadísticas descriptivas del dataset generado (N = 10 000 muestras). .
7.
Descripción de los grupos de columnas del archivo datos_completos.csv.
8.
Registros representativos: variables articulares q1 a q6 (radianes). . . . .
9.
Registros representativos: pose cartesiana del TCP y cuaternión de orientación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LISTA DE FIGURAS
1.
Morfología detallada del manipulador Parol 6. . . . . . . . . . . . . . .
2.
Evolución de la pirámide de automatización clásica (ISA-95) hacia el ecosistema interconectado de la Industria 4.0.
. . . . . . . . . . . . . .
3.
Arquitectura de comunicación industrial: Flujo de datos mediante protocolos OPC-UA y MQTT para el manipulador Parol 6.
. . . . . . . .
4.
Representación física y geométrica del manipulador Parol 6 para el análisis cinemático. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.
Representación técnica del cuello de botella en la recolección física de datos.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.
Esquema del sistema de visión sintética multivista diseñado para eliminar puntos ciegos y garantizar la redundancia de datos. . . . . . . . . . . .
7.
Clasificación de articulaciones robóticas y sus grados de libertad (GDL).
8.
Representación de la orientación del efector final del Parol 6. Se detallan los ejes locales y las rotaciones intrínsecas: Roll (X), Pitch (Y) y Yaw (Z).
9.
Visualización de la nube de puntos del espacio de trabajo del Parol 6 generada mediante muestreo de Monte Carlo (5 000 configuraciones). La distribución continua del volumen confirma la ausencia de singularidades internas en el rango operativo del modelo digital.
. . . . . . . . . . . .
10.
Esquema del sistema de visión sintética multivista.
. . . . . . . . . . .
11.
Imágenes sintéticas del manipulador Parol 6 generadas por el sistema de visión multivista para las cinco muestras representativas de las tablas 8 y 9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.
Distribución de frecuencia para los ángulos de la base y el hombro (q1, q2). Las líneas rojas indican los límites de seguridad y la naranja la media muestral. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.
Distribución de frecuencia para el codo y la primera articulación de la muñeca (q3, q4). Se observa la asimetría característica de J3 respecto a su media.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.
Distribución de frecuencia para las articulaciones finales de la muñeca (q5, q6). El rango de J6 destaca como el más amplio del sistema. . . . .
15.
Distribución de frecuencia para la coordenada x del TCP. Se observa un sesgo positivo leve (¯x = +0.058 m) derivado de la configuración cinemática del hombro y el codo. . . . . . . . . . . . . . . . . . . . . . . . . .
16.
Distribución de frecuencia para la coordenada y del TCP. Es la componente más simétrica (¯y ≈0 m), reflejando la libertad de rotación de la base (J1) respecto al plano de simetría del robot.
. . . . . . . . . . . .
17.
Distribución de frecuencia para la coordenada z del TCP. Presenta una concentración elevada en la franja superior (¯z = +0.314 m), evidenciando el alcance vertical predominante del Parol 6. . . . . . . . . . . . . . . .
1.
INTRODUCCIÓN
La robótica se ha consolidado como una de las disciplinas más influyentes en el avance de la tecnología moderna, fundamentándose en la integración sinérgica de la ingeniería mecánica, la electrónica de precisión y las ciencias de la computación para crear entidades capaces de ejecutar tareas complejas de manera autónoma o semiautónoma [3]. Estos sistemas no deben entenderse únicamente como máquinas de automatización convencionales, sino como la extensión sofisticada de las capacidades humanas en entornos que exigen una alta precisión, o que suponen riesgos biológicos y mecánicos, impulsando así la eficiencia en sectores críticos que abarcan desde la telecirugía médica hasta la exploración de fronteras espaciales [4].
La robótica puede clasificarse fundamentalmente por su nivel de interacción con el medio: mientras que algunos sistemas están diseñados exclusivamente para la adquisición y procesamiento de datos del entorno, otros tienen la misión de transformar dicho entorno mediante el movimiento. Bajo este contexto funcional, los denominados manipuladores robóticos se posicionan como una de las herramientas más emblemáticas de la industria, recibiendo este nombre precisamente por su capacidad primordial de interactuar físicamente con el entorno para alterar la posición y orientación de diversos objetos; dicha funcionalidad implica que, para que un robot trascienda la categoría de mero observador (aquel sistema limitado a la inspección visual o monitoreo pasivo) y se defina formalmente como un manipulador, debe integrar obligatoriamente una estructura mecánica capaz de transmitir fuerzas y torques controlados; solo mediante este control dinámico es posible realizar el traslado de elementos con una presión y destreza que simule fielmente la anatomía del brazo humano, una capacidad de interacción física de la cual carecen, por diseño, los robots móviles de transporte o los sistemas de inspección puramente sensoriales [3, 5].
Desde una perspectiva morfológica, estos dispositivos se clasifican mayoritariamente como manipuladores seriales, los cuales consisten en una cadena cinemática abierta formada por una sucesión de eslabones y articulaciones (figura 1). Los eslabones representan los componentes rígidos que proporcionan el soporte estructural y definen el alcance geométrico del sistema, pudiendo clasificarse según su función en eslabones de base, eslabones intermedios y eslabones de muñeca. Por su parte, las articulaciones, o juntas, actúan como los elementos de conexión que habilitan el movimiento relativo entre piezas adyacentes, determinando los grados de libertad del robot (Degrees of Freedom - DoF). Estas articulaciones pueden presentarse principalmente en dos formas: de tipo prismático, que generan un desplazamiento lineal similar al de un pistón para movimientos de traslación, o de tipo revoluta, que facilitan el giro angular respecto a un eje para movimientos de rotación, siendo estas últimas las que predominan en los brazos industriales modernos para maximizar la maniobrabilidad en espacios reducidos [5, 6]. Tabla 1. Clasificación de manipuladores robóticos según su configuración cinemática [1] [2].
Configuración Articulaciones Espacio de Trabajo / Aplicación Cartesiano (PPP)
3 Prismáticas
Cubo o prisma recto. Alta precisión y rigidez.
Cilíndrico (RPP) 1 Revoluta, 2 Prism.
Cilindro. Ideal para ensamble circular.
Esférico (RRP) 2 Revolutas, 1 Prism.
Esfera. Utilizado en manipulación de tanques.
SCARA (RRP)
2 Revolutas, 1 Prism.
Plano horizontal. Alta velocidad en pick and place.
Antropomórfico (RRR)
3 Revolutas
Esfera deformada. Máxima flexibilidad (tipo Parol 6).
Los Grados de Libertad (DoF por sus siglas en ingles) definen la dimensionalidad del
espacio de estados del robot, representando el número mínimo de coordenadas independientes requeridas para determinar la configuración completa de la estructura cinemática [6]. En manipuladores seriales, cada articulación aporta habitualmente un solo DoF, cuya acumulación determina la capacidad del sistema para alcanzar una pose en el espacio tridimensional; un sistema con 6 DoF se considera cinemáticamente completo, ya que permite controlar de forma independiente las tres componentes de posición (x, y, z) y las tres de orientación (ángulos de Euler) del efector final [7].Para categorizar estas estructuras según su configuración cinemática, se presenta la tabla 1, donde se resumen las morfologías predominantes en la industria:
Figura 1. Morfología detallada del manipulador Parol 6.
Sin embargo, esta capacidad operativa, ha estado históricamente limitada por las estructuras organizacionales de las fábricas tradicionales [4], donde bajo la norma ANSI/ISA- 95.00.01-2000, los manipuladores funcionaban como entes aislados en el nivel más bajo de la jerarquía de producción. Como se observa en la parte izquierda de la figura 2, este paradigma separaba drásticamente la ejecución física de la gestión de información, limitando al robot a realizar secuencias preprogramadas de forma cíclica y sin conexión con los niveles superiores de decisión. Con la llegada de la Industria 4.0 a partir del año
2011, esta jerarquía rígida se disuelve en favor de un modelo de red interconectado donde los robots se transforman en Sistemas Ciberfísicos (Cyber-Physical Systems - CPS), los cuales se definen como integraciones de computación, redes y procesos físicos donde los componentes de software y hardware están tan profundamente entrelazados que el sistema puede reaccionar a cambios en el entorno mediante algoritmos de retroalimentación en tiempo real. Al convertirse en un CPS, el manipulador posee una identidad digital propia para comunicarse bidireccionalmente con el resto de la pirámide [8]. Figura 2. Evolución de la pirámide de automatización clásica (ISA-95) hacia el ecosistema interconectado de la Industria 4.0.
Esta integración exige condiciones técnicas específicas, comenzando por la garantía de una latencia ultra baja, entendida como el retraso mínimo (usualmente en milisegundos) entre el envío de una instrucción desde un servidor central y su ejecución mecánica en los actuadores del robot; un desfase excesivo en este flujo de datos comprometería la estabilidad del lazo de control y la seguridad en tareas colaborativas [9]. Asimismo, la interoperabilidad se sustenta en protocolos de comunicación robustos: por un lado,
OPC-UA (Open Platform Communications Unified Architecture) proporciona un marco de intercambio de datos industrial seguro e independiente del fabricante, ideal para la integración vertical; por otro lado, MQTT (Message Queuing Telemetry Transport) permite una transmisión ligera y eficiente de mensajes bajo un modelo de publicaciónsuscripción, optimizando el ancho de banda en redes saturadas [9]. Esta arquitectura de red y la jerarquía del flujo de datos se detallan en la figura 3, donde se observa la interacción entre los niveles de campo, control y gestión. Estas tecnologías permiten al robot recibir órdenes personalizadas desde la nube y, simultáneamente, reportar variables críticas como el consumo eléctrico, el desgaste de sus rodamientos y su estado cinemático en tiempo real, facilitando estrategias de mantenimiento predictivo y una gestión de recursos optimizada [8].
Para que esta visión de autonomía total sea posible, es indispensable dotar a los manipuladores de una capacidad cognitiva superior fundamentada en la percepción robótica y la cinemática computacional, este proceso requiere la convergencia de disciplinas como la visión por computador, para el procesamiento de la información óptica, y el aprendizaje profundo (Deep Learning), específicamente mediante redes neuronales convolucionales (CNN) entrenadas para la estimación de pose [10, 11]. Estas disciplinas exigen la exposición masiva a conjuntos de datos (datasets) de alta calidad que presenten una varianza estadística suficiente en el espacio de trabajo del robot [12]. No obstante, el desarrollo de estos sistemas enfrenta un obstáculo crítico, la carencia de bases de datos públicas y robustas que establezcan una correspondencia biunívoca y determinística entre la representación visual del manipulador y su estado matemático exacto (coordenadas cartesianas y variables articulares). Este vacío de información afecta de manera desproporcionada al ecosistema de la robótica de arquitectura abierta (Open Source), la cual se articula en dos vertientes tecnológicas fundamentales:
Manipulador Parol 6 Control Local Gateway / IPC
OPC-UA
MQTT
Servidor Central (Control) Broker
MQTT
(Telemetría) Mantenimiento Predictivo y Gestión de Recursos Figura 3. Arquitectura de comunicación industrial: Flujo de datos mediante protocolos OPC-UA y MQTT para el manipulador Parol 6.
Open Source Hardware (OSHW): que democratiza el acceso mediante la fabricación aditiva (impresión 3D) de los eslabones, permitiendo el prototipado rápido de estructuras de 6 GDL a una fracción del costo industrial [13]. Open Source Software (OSS): que utiliza motores de física y entornos de simulación (como PyBullet, ROS y Gazebo) para estandarizar el control cinemático y dinámico mediante interfaces de programación de aplicaciones (API) abiertas [14, 15].
A pesar de la flexibilidad de estos sistemas, su escalabilidad hacia aplicaciones industriales se ve frenada por la ausencia de etiquetas del valor verdadero (ground truth)
precisas [16, 17]. Sin un repositorio que vincule cada configuración de los servomotores con su proyección en el plano de imagen, la IA no puede aprender la semántica visual del robot, lo que impide alcanzar niveles de autonomía operativa sin depender de costosos sistemas de metrología o visión propietarios [18].
(a) Identificación de las articulaciones J1 a J6 y sus sentidos de rotación.
(b) Dimensiones cinemáticas y longitudes de los eslabones (a1 −a7).
Figura 4. Representación física y geométrica del manipulador Parol 6 para el análisis cinemático.
Con el contexto anterior, y como objeto central de este estudio, se presenta el robot utilizado como caso de estudio en esta investigación, el cual es un manipulador articulado de 6 grados de libertad (6 DoF), lo que significa que cuenta con seis puntos de giro independientes que le otorgan la destreza necesaria para alcanzar casi cualquier posición y orientación dentro de su zona de trabajo útil [6]. Como se detalla en la figura 4, esta morfología permite que en el extremo final de la cadena cinemática se acople el efector final, la unidad operativa encargada de interactuar directamente con el entorno y los objetos destinados a ser manipulados por el sistema [19]. Esta configuración permite ejecutar trayectorias complejas con precisión, apoyándose en un modelo matemático adecuado y en la percepción visual del entorno.
1.1.
DEFINICIÓN DEL PROBLEMA
La viabilidad operativa de la robótica colaborativa en el marco de la Industria 4.0 depende intrínsecamente de su capacidad de respuesta y adaptación ante la variabilidad del entorno; para alcanzar este nivel de autonomía, es imperativo implementar modelos de Aprendizaje Profundo (Deep Learning), una subdisciplina de la Inteligencia Artificial que utiliza redes neuronales multicapa para aprender representaciones complejas de los datos de forma jerárquica. A diferencia de los métodos de visión por computador clásicos, el Deep Learning permite que el sistema identifique patrones, texturas y poses espaciales directamente de las imágenes, actuando como el ”cerebro” visual del robot [10]. No obstante, para que estos modelos logren generalizar su conocimiento y alcancen una precisión industrial, requieren ser entrenados con conjuntos de datos (datasets) masivos que superan habitualmente las decenas de miles de muestras [10, 11]. El problema central radica en que cada imagen dentro de estos conjuntos debe estar vinculada a una etiqueta matemática de alta fidelidad, y actualmente existe una brecha técnica y económica para generar dicha información de forma manual en el mundo físico, lo que constituye el principal cuello de botella para la innovación en manipuladores de arquitectura abierta [13].
Esta escasez de bases de datos etiquetadas es el resultado de una limitación metodológica profunda en la captura del denominado valor verdadero (ground truth), concepto que en robótica se refiere a la información real, verificable y de precisión absoluta que se utiliza como estándar de comparación para validar cualquier predicción algorítmica; históricamente, la obtención de estos datos cinemáticos ha dependido de la intervención de operadores humanos para posicionar el robot y registrar las coordenadas, un proceso que introduce una incertidumbre estadística inaceptable [16]; por otra parte, el fallo humano se manifiesta no solo en errores de transcripción o fatiga tras sesiones de miles
de capturas, sino también en la falta de sincronización temporal microscópica: si el registro de la posición del motor y la captura del obturador de la cámara no ocurren en el mismo milisegundo, los datos resultantes sufren de un “desfase de estado”, invalidando la relación matemática entre lo que el robot “ve” y su configuración cinemática real en ese instante exacto. Esta problemática se agudiza en tareas de estimación de pose 6-DoF, donde la dificultad de recolectar datos etiquetados con variación suficiente en condiciones de iluminación y configuraciones extremas constituye uno de los obstáculos centrales para el desarrollo de modelos generalizables [17, 20]. Para mitigar esta incertidumbre y garantizar la precisión en entornos industriales, se han desarrollado metodologías de metrología externa basadas en laser trackers y sistemas de fotogrametría de múltiples cámaras; esta metodología consiste en el uso de instrumentos de medición de coordenadas de gran volumen que emplean la triangulación activa mediante haces de luz coherente para rastrear un sensor óptico situado en el efector final; el rastreador sigue el movimiento del robot en tiempo real, midiendo continuamente los ángulos y la distancia para calcular la posición tridimensional exacta (x, y, z) y la orientación. Estas técnicas permiten obtener la posición real con precisiones de hasta 0.01 mm, eliminando así los errores de medición manual [21, 22]. Sin embargo, esta solución introduce un obstáculo económico: cuyo costo supera ampliamente el presupuesto de un laboratorio académico típico [13], una cifra que triplica o cuadruplica el valor de un manipulador de código abierto como el Parol 6; esta diferencia financiera convierte a la investigación avanzada en un campo elitista, donde los laboratorios con presupuestos limitados quedan excluidos de la posibilidad de generar datos de alta fidelidad, viéndose obligados a trabajar con muestras pequeñas e imprecisas que impiden la convergencia de modelos estocásticos modernos [17]. Esta problemática se sintetiza en la figura 5, donde se ilustra el cuello de botella técnico asociado a la recolección física de datos.
I. LIMITACIONES METODOL´OGICAS
(ERROR HUMANO Y TEMPORAL)
t Imagen (It) Registro qt ∆t Desfase de Sincron´ıa (> 100ms) t Pose Trayectoria Real Etiqueta Err´onea
EFECTO:
Ruido Estoc´astico en Dataset
II. BARRERA SOCIOECON´OMICA
(ACCESO A RECURSOS)
Metrolog´ıa L´aser ¿$100k USD Robot OS ¡$5k USD Brecha de Accesibilidad Investigaci´on Elitista:
Pocos registros por falta de presupuesto
CUELLO DE BOTELLA EN LA INTELIGENCIA ARTIFICIAL ROB´OTICA
Datos insuficientes y etiquetas corruptas →Modelos de Visi´on con bajo rendimiento y fallos de precisi´on Figura 5. Representación técnica del cuello de botella en la recolección física de datos. A la problemática del costo se suma un desafío físico intrínseco a los materiales: la histéresis mecánica y la deformación estructural. La histéresis se define como el fenómeno en el que el estado de un sistema físico depende de su historial previo de movimiento; en robótica, esto significa que si una articulación se mueve hacia una posición desde una dirección horaria y luego regresa desde una dirección antihoraria, la posición final física será ligeramente distinta debido al juego mecánico (backlash) y la fricción interna. En manipuladores fabricados mediante impresión 3D o polímeros de bajo costo, este efecto se acentúa por la viscoelasticidad del material, donde los componentes de transmisión presentan un comportamiento no lineal y el robot no regresa a la misma coordenada exacta, incluso si los sensores internos denominados encoders indican que sí lo hizo [23]. Los encoders son dispositivos electromecánicos instalados en los ejes de los motores que convierten el movimiento rotacional en señales digitales para medir cuánto ha girado el motor; no obstante, solo tienen visibilidad de lo que ocurre en el eje y no de lo que
sucede en la estructura del brazo [22]. Este fenómeno, sumado a la flexibilidad de los eslabones ante cargas inerciales, genera una discrepancia entre el modelo matemático teórico y la realidad física; dado que los encoders solo miden la rotación en el eje del motor y no la flexión o deformación real de la estructura plástica, cualquier dataset capturado físicamente bajo estas condiciones hereda un ”error invisible”. Este error consiste en una etiqueta de pose que el sistema cree correcta (según la lectura del motor), pero que en la imagen muestra al robot en una posición ligeramente distinta debido a la flexión del material o al juego de los engranajes. Si un algoritmo de visión aprende de estas imágenes defectuosas, el sesgo se vuelve parte de su arquitectura cognitiva, derivando en colisiones o fallos de precisión en diferentes tareas [23, 24]. Por último, existe una desconexión arquitectónica entre el diseño digital y la captura visual. El formato de descripción robótica unificada (Unified Robot Description Format - URDF) es el estándar para describir la cinemática de un robot en entornos de software, pero no existe hoy una metodología automatizada que vincule este archivo con la generación de imágenes de forma determinística en el mundo real. La integración de cámaras físicas requiere procesos de calibración intrínseca y extrínseca sumamente sensibles a cambios ambientales; un simple movimiento de un milímetro en el soporte de la cámara rompe la correspondencia con la Matriz de Transformación Homogénea (0T6), invalidando miles de horas de trabajo previo [25, 26]. Sin un flujo de trabajo que garantice una sincronización absoluta y automática entre el dominio algebraico y el visual, la democratización de manipuladores inteligentes de bajo costo seguirá siendo una meta inalcanzable para la comunidad científica global.
1.2.
JUSTIFICACIÓN
La implementación de este proyecto responde a la necesidad crítica de superar las barreras físicas y operativas que limitan el desarrollo de sistemas robóticos inteligentes en entornos académicos. En la actualidad, el despliegue de modelos de aprendizaje profundo en manipuladores de arquitectura abierta se ve obstaculizado por la dificultad de obtener volúmenes masivos de datos etiquetados; recolectar manualmente las 10 000 muestras necesarias para garantizar la variabilidad estadística del espacio de trabajo no solo implicaría meses de labor ininterrumpida, sino también un desgaste mecánico prohibitivo para estructuras poliméricas fabricadas en impresión 3D [10, 16]. En este sentido, la virtualización del manipulador dentro de un motor de simulación física avanzado como PyBullet se justifica como una solución estratégica que transforma una estación de trabajo convencional en un laboratorio de alta fidelidad. Esta aproximación permite realizar miles de iteraciones y simulaciones de fallo sin incurrir en riesgos de colisión accidental que comprometerían la integridad del equipo real, optimizando así los recursos institucionales y extendiendo la vida útil del hardware físico [8]. Figura 6. Esquema del sistema de visión sintética multivista diseñado para eliminar puntos ciegos y garantizar la redundancia de datos.
Desde una perspectiva técnica, esta metodología garantiza una precisión en el etiquetado que es inalcanzable mediante métodos de medición externa tradicionales. Al vincular cada captura visual de forma determinística con la Matriz de Transformación Homogénea (0T6) del efector final, se elimina el ruido, las vibraciones y los errores de paralaje inherentes al sensado físico, proporcionando un ”valor verdadero” (ground truth) de rigor matemático absoluto.
Asimismo, la disposición estratégica del sistema de visión multivista ilustrado en la figura 6 asegura una cobertura redundante que mitiga problemas de auto-oclusión, generando un repositorio de datos multimodal que actualmente no existe en el estado del arte para robots de bajo costo [27, 28]. En última instancia, este trabajo no solo facilita la transferencia de conocimiento del entorno virtual al real (Sim-to-Real), sino que democratiza el acceso a la robótica de alta complejidad, permitiendo que sistemas de arquitectura abierta compensen sus limitaciones estructurales mediante una inteligencia basada en datos estandarizados y reproducibles [17, 29].
1.3.
OBJETIVOS
1.3.1.
Objetivo general Implementar un entorno de simulación robótica para un manipulador serial de 6 grados de libertad, integrando un sistema de monitoreo que permita la captura y estructuración de una base de datos etiquetada para aplicaciones de cinemática.
1.3.2.
Objetivos específicos Seleccionar y configurar el modelo digital de un manipulador de 6 grados de libertad dentro de un motor de física, validando la correspondencia de sus movimientos
articulares con el modelo cinemático teórico.
Integrar el sistema de monitoreo en el espacio de trabajo virtual, estableciendo la configuración y las transformaciones espaciales necesarias para la recolección de la base de datos.
Desarrollar un algoritmo de automatización para la generación de una base de datos etiquetada que vincule imágenes del entorno con la información cinemática del robot, garantizando la diversidad de muestras.
2.
ESTADO DEL ARTE
En los recientes avances tecnológicos dentro del marco de la Industria 4.0, el desarrollo de sistemas robóticos autónomos y sistemas ciberfísicos ha impulsado el uso de entornos virtuales para la validación de procesos industriales. Actualmente, la integración de gemelos digitales (Digital Twins) se ha consolidado como un estándar para el desacoplamiento entre el software y el hardware físico. Según Fuller et al. [18], esta aproximación constituye un elemento esencial para la validación segura y escalable de sistemas, permitiendo optimizar algoritmos en entornos virtuales antes de su implementación en activos físicos, lo que reduce drásticamente los riesgos operativos y el desgaste mecánico.
En lo que respecta a la generación masiva de información para robótica basada en datos (data-driven), el uso de simuladores ha permitido superar las limitaciones de la recolección manual de muestras. Específicamente, Tobin et al. [29] introdujeron la técnica de Domain Randomization, demostrando que es posible entrenar redes neuronales profundas exclusivamente con datos sintéticos generados en simulación. Este enfoque facilita la transferencia de aprendizaje al mundo real (Sim-to-Real), eliminando la dependencia de campañas de medición físicas extensas [20]. No obstante, la mayoría de estos desarrollos se han orientado a la navegación móvil, existiendo un menor avance en la estructuración sistemática de datos cinemáticos para manipuladores seriales [16]. En el seguimiento del efector final mediante visión artificial, el uso de cámaras presenta múltiples configuraciones físicas. Cuando las cámaras están fijas en el espacio de trabajo pero no en el robot, se denomina configuración eye-to-hand [11, 28]. Para estas disposiciones, herramientas como la biblioteca de marcadores fiduciarios ArUco han demostrado ser capaces de resolver el problema Perspective-n-Point (PnP) con precisión submilimétrica [30]. Asimismo, se han establecido bases teóricas para el control visual
diferenciando entre enfoques basados en posición (PBVS) y en imagen (IBVS) [19]. Aunque estas metodologías fueron concebidas para control en tiempo real, en la actualidad las mediciones visuales son un insumo crítico para construir conjuntos de datos destinados a modelos de aprendizaje profundo, a pesar de la escasez de bases de datos enfocadas en manipuladores de arquitectura abierta.
La precisión geométrica de los manipuladores industriales sigue siendo un campo de estudio activo debido a los errores significativos que pueden presentar los modelos cinemáticos nominales. Investigaciones como las de Nubiola y Bonev [21] proponen el uso de laser trackers para realizar calibraciones absolutas mediante identificación paramétrica. Por otro lado, Wu et al. [24] han propuesto métodos basados en la formulación de productos de exponenciales (POE) para representar desviaciones paramétricas de forma consistente. Sin embargo, estas técnicas suelen depender de instrumentación especializada costosa y tiempos elevados de adquisición de datos, lo que limita su aplicación en entornos académicos o de bajo costo.
Con el auge del hardware de código abierto, han surgido iniciativas como el manipulador serial PAROL6 [31], que democratizan el acceso a sistemas de seis grados de libertad. No obstante, al ser construidos mediante fabricación aditiva e impresión 3D, estos sistemas presentan desafíos de elasticidad y tolerancias dimensionales que los diferencian de los robots industriales rígidos. Esta situación refuerza la pertinencia de desarrollar metodologías que permitan validar modelos y generar datos sin depender de instrumentación física inaccesible.
A partir de la revisión anterior, se identifica una brecha clara [11, 25]: no se reportan arquitecturas que integren de manera sistemática un modelo URDF, un motor de física y un sistema de captura multivista para generar automáticamente un dataset donde cada imagen RGB esté vinculada de forma determinística con la matriz de transformación homogénea 0T6 del efector final. Choi et al. [25] señalan que esta integración
validada constituye uno de los retos abiertos centrales de la simulación en robótica. En este contexto, el presente trabajo desarrolla una infraestructura automatizada utilizando PyBullet [14] como motor de física, articulando la simulación y la visión sintética multivista para la extracción estructurada de datos cinemáticos.
3.
MARCO TEÓRICO
3.1.
MANIPULADORES ROBÓTICOS SERIALES
Un manipulador robótico serial se define formalmente como un sistema mecánico articulado compuesto por una cadena cinemática abierta de eslabones rígidos conectados mediante pares cinemáticos (articulaciones). Desde una perspectiva topológica, la estructura se caracteriza por tener un extremo fijado a una base de referencia (B) y el extremo opuesto libre, donde se sitúa el efector final o herramienta (TCP - Tool Center Point). El movimiento de cada articulación modifica la posición y orientación del eslabón subsiguiente; esto implica que el error posicional de una articulación se propaga y acumula a lo largo de toda la cadena hacia el extremo distal [1].
3.1.1.
Morfología y componentes estructurales La constitución física de un manipulador serial se desglosa en tres componentes fundamentales [3, 5]:
1. Eslabones (Links): Son los elementos estructurales rígidos que mantienen una
distancia relativa entre articulaciones. En manipuladores de arquitectura abierta, como el Parol 6, estos suelen fabricarse en polímeros o aleaciones ligeras. Su geometría define los parámetros de longitud y torsión.
2. Articulaciones (Joints): Son los elementos que permiten el movimiento relativo
entre dos eslabones adyacentes. Estas limitan el movimiento del sistema a un número específico de Grados de Libertad (GDL).
3. Actuadores: Dispositivos (habitualmente motores paso a paso o servomotores)
encargados de transformar la energía eléctrica en movimiento mecánico, ya sea
rotacional o traslacional.
3.1.2.
Clasificación de las articulaciones La naturaleza del movimiento en los manipuladores seriales está regida por la tipología de sus pares cinemáticos. En la figura 7 se presentan los cinco tipos principales de articulaciones: prismática, rotación (revoluta), cilíndrica, esférica y planar, detallando los GDL asociados a cada una.
A continuación, se describen las características de cada par cinemático observado en dicha ilustración:
Figura 7. Clasificación de articulaciones robóticas y sus grados de libertad (GDL). Articulación de revoluta (R): permite una rotación relativa alrededor de un eje común entre dos eslabones. Es la configuración más común en manipuladores de 6 GDL, ya que emula el comportamiento de las articulaciones humanas como el hombro, el codo o la muñeca. Su variable articular se denota habitualmente como θi (ángulo en radianes) [1].
Articulación prismática (P): facilita un desplazamiento lineal o traslacional entre eslabones. Su variable articular se denota como di (distancia en metros o milímetros) [1].
Articulación cilíndrica (C): posee dos GDL independientes: una traslación a lo largo de un eje y una rotación alrededor del mismo. Puede considerarse como la combinación de una articulación de revoluta y una prismática actuando de forma coaxial [5].
Articulación planar (E): permite tres GDL, consistentes en dos traslaciones en un plano y una rotación perpendicular a dicho plano. Es común en robots de configuración paralela o bases móviles.
Articulación esférica (S): proporciona tres GDL de rotación (roll, pitch y yaw) alrededor de un punto central fijo. En manipuladores de 6 GDL como el de este estudio, esta se emula mediante una “muñeca esférica” donde tres articulaciones de revoluta se intersecan en un único punto común para evitar singularidades matemáticas [3, 5].
3.1.3.
Grados de libertad (GDL) y movilidad El número de Grados de Libertad (GDL) de un manipulador serial constituye la dimensión del espacio de configuración, definido por el conjunto de variables independientes que determinan unívocamente su estado espacial [6]. Para una cadena cinemática abierta compuesta por n pares cinemáticos de un solo GDL, la movilidad total del sistema se deriva directamente de la topología de sus enlaces.
En el contexto de la manipulación robótica avanzada, se establece que una movilidad de 6 GDL es el requisito funcional mínimo para alcanzar cualquier pose (posición y orientación) en el espacio euclidiano SE(3) [7]. Esta arquitectura permite una partición funcional del control:
Subestructura de posicionamiento: generalmente conformada por los primeros tres GDL, cuya geometría define el alcance radial y la traslación del punto de
referencia del efector final en el espacio cartesiano.
Subestructura de orientación: compuesta habitualmente por una muñeca esférica (los últimos 3 GDL). Esta configuración es crítica para desacoplar los cambios en la orientación del herramental de los desplazamientos posicionales, facilitando el control mediante ángulos de Euler (roll, pitch, yaw) [32].
3.1.4.
Espacio de trabajo (Workspace) El espacio de trabajo se define como el volumen métrico generado por la trayectoria del efector final durante la ejecución de su rango completo de movimiento. Siguiendo la taxonomía de movilidad de [33], este se categoriza según su capacidad operativa:
1. Espacio de trabajo alcanzable (Reachable Workspace): el conjunto de to-
dos los puntos P ∈R3 que el TCP puede alcanzar bajo al menos una configuración angular válida.
2. Espacio de trabajo diestro (Dextrous Workspace): aquel subvolumen don-
de el manipulador conserva la capacidad de orientar el efector final de manera arbitraria, permitiendo una destreza completa en la ejecución de la tarea [34]. La determinación del espacio de trabajo es un pilar fundamental de la presente metodología, ya que garantiza que el dataset de entrenamiento se encuentre libre de configuraciones cinemáticamente degeneradas o puntos singulares en las fronteras del volumen de trabajo [35].
3.2.
CINEMÁTICA VECTORIAL Y TRANSFORMACIONES
DE COORDENADAS
La base de la manipulación robótica reside en la capacidad de representar la posición y orientación de cuerpos rígidos en el espacio tridimensional. Para el Parol 6, esto implica mapear coordenadas desde el sistema de referencia de la base ({0}) hasta el sistema del efector final ({n}) a través de una cadena cinemática serial [1].
3.2.1.
Representación de posición y orientación Un punto P en el espacio se define mediante un vector de posición AP ∈R3 respecto a un marco de referencia {A}. La orientación de un marco {B} respecto a {A} se describe mediante una matriz de rotación ARB ∈SO(3), cuyas columnas representan los vectores unitarios de los ejes de {B} proyectados sobre el sistema {A} [5].
3.2.2.
Matrices de transformación homogénea (HTM) Para simplificar el cálculo cinemático, se combinan la rotación y la traslación en una única matriz de 4 × 4 denominada Matriz de Transformación Homogénea T ∈SE(3). Esta matriz permite transformar las coordenadas de un punto del sistema {B} al sistema {A} mediante una única operación lineal en coordenadas homogéneas: AP =A TB ·B P =
ARB
AdB
0
0
0
1
· BP
1
(1)
Donde AdB es el vector de traslación entre los orígenes de ambos marcos de referencia. En manipuladores seriales, la pose final del efector respecto a la base se obtiene mediante
el producto sucesivo de las transformaciones de cada articulación: Tfinal = T1 · T2 · · · · · Tn [5, 6].
3.3.
CINEMÁTICA DE MANIPULADORES
La cinemática de un robot manipulador se define como el estudio analítico de la geometría del movimiento con respecto a un sistema de coordenadas de referencia fijo, sin considerar las fuerzas o momentos que originan dicho movimiento. Para el manipulador PAROL6 de 6 grados de libertad (GDL), la cinemática establece la descripción funcional entre el espacio articular (coordenadas de los motores qi) y el espacio cartesiano (pose del efector final).
3.3.1.
Cinemática directa y la convención de Denavit-Hartenberg (D-H) La cinemática directa tiene como objetivo determinar la pose del efector final a partir de los valores conocidos de las articulaciones. El método más extendido y sistemático para este propósito es la representación de Denavit-Hartenberg [36]. Esta técnica asigna un sistema de coordenadas {Si} a cada eslabón Li y define la transformación entre sistemas mediante cuatro parámetros geométricos fundamentales:
θi (Ángulo de articulación): Ángulo de rotación desde el eje xi−1 hasta el eje xi alrededor del eje zi−1.
di (Desfase de eslabón): Distancia desde el origen del sistema {Si−1} hasta la intersección del eje zi−1 con el eje xi, medida a lo largo de zi−1. ai (Longitud de eslabón): Distancia desde la intersección del eje zi−1 con el eje xi hasta el origen del sistema {Si}, medida a lo largo de xi.
αi (Torsión de eslabón): Ángulo de rotación desde el eje zi−1 hasta el eje zi alrededor del eje xi.
La transformación local entre el eslabón i −1 y el eslabón i se expresa mediante la matriz de transformación de eslabón Ai:
Ai = cos θi −sin θi cos αi sin θi sin αi ai cos θi sin θi cos θi cos αi −cos θi sin αi ai sin θi
0
sin αi cos αi di
0
0
0
1
(2)
3.3.2.
Modelado cinemático del manipulador PAROL6 Para la descripción analítica del movimiento del robot PAROL6, se utiliza la convención de D-H Estándar. Los parámetros resultantes, detallados en la tabla 2, fueron obtenidos tras un proceso de validación iterativa frente al entorno de simulación PyBullet, donde qi representa la variable articular real.
Tabla 2. Parámetros de Denavit-Hartenberg validados para el manipulador PAROL6. Articulación (i) θi (rad) di (m) ai (m) αi (rad)
1
q1
0.1105
0.02342
−π/2
2
q2 −π/2
0
0.18
0
3
−q3
0
0.0435
−π/2
4
−q4 −0.17635
0
π/2
5
−q5
0
0
−π/2
6
−q6
0
0
0
La pose total del efector final respecto a la base (Ttotal) se obtiene mediante la composición sucesiva de las matrices de transformación:
Ttotal = A1 · A2 · A3 · A4 · A5 · A6
(3)
A diferencia del cálculo manual, la implementación en PyBullet utiliza el algoritmo de Featherstone para sistemas de cuerpos rígidos articulados, lo cual es significativamente más eficiente para la generación masiva de datos [14, 37]. La precisión de este modelo fue validada numéricamente, obteniendo errores euclidianos bastante bajos, lo que garantiza la fiabilidad del dataset generado.
3.3.3.
Cinemática inversa y jacobiano La cinemática inversa (IK) consiste en calcular el conjunto de ángulos (θ1, . . . , θ6) necesarios para alcanzar una pose deseada. Este problema presenta retos de no linealidad y multiplicidad de soluciones [5]. Por otro lado, el Jacobiano (J) relaciona las velocidades articulares ( ˙q) con las velocidades del efector final (ξ) [6, 1]: ξ = J(q) ˙q
(4)
En este proyecto, el Jacobiano es esencial para el control diferencial y para entender cómo las variaciones en los sensores internos afectan la precisión del posicionamiento del robot en el entorno virtual.
3.4.
EL EFECTOR FINAL (End-Effector) El efector final, también conocido como Tool Center Point (TCP), representa el extremo operativo de la cadena cinemática y es el punto de mayor relevancia en este estudio. En términos de control y percepción, el TCP es el sistema de referencia cuya trayectoria se desea predecir o controlar, y sobre el cual se fundamenta la generación de etiquetas del “valor verdadero” (ground truth) en los conjuntos de datos generados.
3.4.1.
Geometría y pose del TCP La pose del efector final no se limita únicamente a su ubicación espacial P = [x, y, z]T, sino que incluye su actitud u orientación en el espacio. Matemáticamente, la pose completa se extrae de la matriz de transformación de la última articulación (0T6), la cual contiene una submatriz de rotación R ∈SO(3) de 3 × 3 que define la orientación del sistema de coordenadas local del efector respecto a la base del robot. Figura 8. Representación de la orientación del efector final del Parol 6. Se detallan los ejes locales y las rotaciones intrínsecas: Roll (X), Pitch (Y) y Yaw (Z). Como se observa en la figura 8, el Parol 6 utiliza una pinza autocentrada como efector final. La orientación de este dispositivo se describe intuitivamente mediante los ángulos de Euler (α, β, γ), los cuales corresponden a las rotaciones de Roll, Pitch y Yaw.
3.4.2.
Convención de rotación y ángulos de Euler La convención adoptada en este proyecto para la descripción de la orientación sigue el estándar intrínseco de rotaciones sucesivas Z−Y −X. Bajo este esquema, la orientación
total se obtiene mediante el producto de tres matrices de rotación elementales [5]: R(α, β, γ) = Rz(α) · Ry(β) · Rx(γ)
(5)
Donde las componentes se definen según el comportamiento observado en la figura 8: Roll (γ): rotación sobre el eje X (eje rojo). Representa el giro del efector sobre su propio eje de aproximación.
Pitch (β): rotación sobre el eje Y (eje verde). Controla la inclinación de la pinza hacia arriba o hacia abajo.
Yaw (α): rotación sobre el eje Z (eje azul). Define el ángulo de ataque lateral del manipulador.
3.4.3.
Dualidad en la representación: Euler y cuaterniones Un aspecto crítico en el desarrollo de este trabajo es la transición entre la representación visual de la orientación y su tratamiento computacional. Si bien los ángulos de Euler son fundamentales para la interpretación humana y el diseño de trayectorias, presentan una limitación matemática conocida como Gimbal Lock o bloqueo de cardán, fenómeno donde se pierde un grado de libertad cuando dos de los tres ejes de rotación se vuelven paralelos.
Para mitigar esto, en la generación de datos mediante el entorno PyBullet, se emplean cuaterniones unitarios (q). Un cuaternión representa la orientación como un vector de cuatro dimensiones q = [qx, qy, qz, qw] en una hiperesfera unitaria, eliminando las singularidades y permitiendo una interpolación de pose más eficiente para el entrenamiento de las redes neuronales [38]. La relación entre ambos esquemas es biunívoca dentro de
sus rangos de operación, permitiendo que las etiquetas del dataset sean almacenadas como cuaterniones por su robustez numérica, pero visualizadas como ángulos de Euler para facilitar su interpretación física.
3.5.
ENTORNO DE SIMULACIÓN DE FÍSICA: PYBULLET
Para la generación masiva de datos etiquetados, se ha seleccionado PyBullet como el ecosistema de simulación principal [14]. Esta herramienta constituye una interfaz de alto nivel en Python para el motor Bullet Physics SDK, un motor de dinámica de cuerpos rígidos de código abierto especializado en la resolución de restricciones y detección de colisiones en tiempo real. La elección de PyBullet se fundamenta en su capacidad para realizar cálculos de cinemática inversa y dinámica directa con una eficiencia computacional que permite la creación de miles de instancias de entrenamiento en tiempos reducidos.
El proceso de simulación se inicia con la definición del robot mediante archivos Unified Robot Description Format (URDF). Este archivo XML integra la estructura jerárquica del manipulador, vinculando los parámetros de Denavit-Hartenberg (geometría) con las propiedades físicas (masa, momentos de inercia y centros de gravedad) y las mallas visuales de alta definición necesarias para el entrenamiento de algoritmos de visión artificial.
Motores de física y dinámica de cuerpos rígidos El núcleo de PyBullet opera mediante un sistema de coordenadas reducidas, resolviendo las ecuaciones de movimiento basadas en la formulación recursiva de Featherstone para sistemas multi-cuerpo [37]. A diferencia de los simuladores basados puramente en cinemática geométrica, este motor considera la respuesta dinámica del manipulador ante
perturbaciones y fuerzas externas.
Dinámica directa e inversa: el motor resuelve la ecuación fundamental de la dinámica de robots:
M(q)¨q + C(q, ˙q) ˙q + G(q) = τ + Fext
(6)
Donde M(q) es la matriz de inercia, C(q, ˙q) representa la matriz de fuerzas de Coriolis y centrífugas, G(q) es el vector de fuerzas gravitacionales y τ corresponde a los torques aplicados por los motores virtuales.
Resolución de restricciones (LCP): Bullet Physics utiliza un resolvedor de Problemas de Complementariedad Lineal (Linear Complementarity Problem - LCP) para gestionar los contactos. Esto permite que el manipulador interactúe con objetos en su espacio de trabajo sin penetraciones de malla, calculando fuerzas de fricción de Coulomb de forma determinística [14]. Simulación por pasos y estabilidad: la precisión del dataset generado está íntimamente ligada al diferencial de tiempo o time step (∆t). Se ha configurado una frecuencia de actualización de 240 Hz, lo que implica que el motor físico recalcula el estado del sistema cada 4.16 ms. Esta alta resolución temporal es crítica para evitar inestabilidades numéricas en las articulaciones de la muñeca del robot, donde los momentos de inercia son significativamente menores. Detección de colisiones estrecha y amplia: el sistema emplea una fase Broadphase (basada en Axis-Aligned Bounding Boxes o AABB) para descartar pares de objetos lejanos, y una fase Narrowphase (basada en el algoritmo GJK) para determinar el punto exacto de contacto. Esta precisión garantiza que las etiquetas de segmentación visual coincidan exactamente con los límites físicos del eslabón [14].
Esta robustez física asegura que el comportamiento del robot en la simulación sea una representación fiel de la realidad, permitiendo que las redes neuronales aprendan a identificar el manipulador incluso bajo la influencia de la gravedad o en situaciones de contacto con el entorno.
3.6.
VISIÓN ARTIFICIAL Y CÁMARAS RGB-D
La visión artificial en la robótica contemporánea ha evolucionado de la simple captura de imágenes a la comprensión profunda de la escena tridimensional. El uso de cámaras RGB-D (Red, Green, Blue + Depth) permite obtener, de forma simultánea, información cromática y de distancia, facilitando tareas de segmentación y estimación de pose que serían ambiguas con sensores 2D convencionales [2, 3]. En este proyecto, la cámara virtual dentro de PyBullet actúa como el sensor principal para la generación del dataset, emulando las propiedades ópticas de un sensor físico real mediante un modelo de proyección perspectivo.
3.6.1.
Modelo de cámara pinhole Para representar matemáticamente cómo el entorno 3D se proyecta en un plano de imagen 2D, se utiliza el modelo de cámara Pinhole o estenopeica. Este modelo asume que todos los rayos de luz pasan por un único punto, denominado centro óptico, antes de incidir en el plano de la imagen [39]. La transformación de un punto en el espacio coordenado del mundo Pw = [X, Y, Z, 1]T a un punto en coordenadas de píxel p = [u, v, 1]T se describe mediante la concatenación de matrices intrínsecas y extrínsecas: p = K · [R|t] · Pw
(7)
Donde K contiene los parámetros intrínsecos del sensor (focales y punto principal), y [R|t] representa la pose de la cámara respecto al mundo.
Matriz de vista (View Matrix) La matriz de vista define la transformación de cuerpo rígido necesaria para expresar los puntos del mundo en el sistema de referencia local de la cámara. Según [40], esta matriz se construye habitualmente mediante la función LookAt, que utiliza la posición del centro óptico (⃗e), un punto de interés o target (⃗t) y un vector de orientación vertical (up). Esta matriz asegura que el eje Z de la cámara apunte directamente hacia el objetivo, permitiendo un seguimiento preciso del manipulador en el entorno virtual:
Mview = rx ry rz −⃗e ·⃗r ux uy uz −⃗e ·⃗u dx dy dz −⃗e ·⃗d
0
0
0
1
(8)
Matriz de proyección (Projection Matrix) Una vez normalizadas las coordenadas al sistema de la cámara, la matriz de proyección mapea los puntos 3D al plano de imagen 2D dentro de un volumen de visión truncado o view frustum [3]. En simuladores basados en OpenGL como PyBullet, esta matriz gestiona la distorsión de perspectiva. Para la emulación del sensor óptico, se ha configurado un campo de visión (Field of View - FoV ) de 60◦. Esta apertura angular actúa como un lente estándar que minimiza la distorsión esférica en los bordes de la imagen de 320 × 240 px, asegurando que la proyección del manipulador ocupe el área central del sensor y facilitando el aprendizaje de características morfológicas por la red neuronal [2].
3.6.2.
Metodologías de ubicación de cámaras La ubicación de la cámara respecto al robot es determinante para la calidad de la información visual. Siguiendo la taxonomía de [3], existen dos configuraciones fundamentales:
1. Cámara en mano (Eye-in-Hand): el sensor se monta solidario al efector final,
ofreciendo una resolución detallada del área de trabajo inmediata.
2. Cámara fija (Eye-to-Hand): el sensor se ubica en un soporte externo inde-
pendiente. Es la metodología adoptada en este estudio, ya que permite la captura completa de la morfología del manipulador y su estado cinemático global [2, 11]. Configuración del Target Offset Un aspecto crítico en la configuración de las estaciones de observación es la definición del punto de interés o Target Offset. En lugar de orientar las cámaras hacia el origen de la base [0, 0, 0], se ha establecido un vector de enfoque desplazado en el eje vertical:⃗T = [0, 0, 0.2] m. Este ajuste desplaza el centro del view frustum hacia el volumen medio de articulación del Parol 6, garantizando que el efector final permanezca encuadrado incluso en configuraciones de máxima extensión vertical, optimizando así el uso del espacio de píxeles disponible. Para robustecer el dataset, se emplea una técnica de posicionamiento aleatorio de la cámara dentro de una región semiesférica, asegurando una cobertura total de los puntos de vista y minimizando el sesgo de orientación.
3.6.3.
Muestreo y renderizado por software (Tiny Renderer) Para garantizar una correspondencia determinística entre la matriz de proyección teórica y los píxeles generados, se implementó el ER_TINY_RENDERER de PyBullet. A
diferencia de los motores acelerados por hardware (GPU) que pueden introducir variaciones según el controlador de video, este renderizador basado en software asegura que cada muestra sea procesada con la misma precisión matemática, eliminando artefactos de interpolación y asegurando la fidelidad absoluta de las etiquetas de píxel [14].
3.7.
GENERACIÓN DE BASES DE DATOS ETIQUETADAS
La generación de conjuntos de datos constituye el pilar fundamental del aprendizaje profundo supervisado. En robótica, la dificultad de obtener anotaciones precisas en el mundo real ha impulsado el uso de “Gemelos Digitales” y simuladores físicos como herramientas de síntesis de datos [3]. Esta metodología permite mitigar el problema del sesgo de datos y la escasez de muestras etiquetadas, permitiendo que el modelo se entrene en una vasta variedad de escenarios que serían costosos o imposibles de replicar físicamente [29].
3.7.1.
Tipos de etiquetas automáticas Para el entrenamiento de modelos de visión aplicados a manipuladores seriales, se extraen etiquetas que vinculan la apariencia visual con la estructura lógica y cinemática del robot [2].
Máscaras de segmentación semántica e instancia: utilizando el buffer de renderizado de PyBullet, cada píxel de la imagen es etiquetado con la clase “eslabón” o el ID específico del componente. Según [20], esta precisión a nivel de píxel es superior a cualquier anotación manual y es indispensable para que arquitecturas tipo Mask R-CNN o U-Net logren aislar el robot de fondos complejos o ruidosos.
Mapas de profundidad y nubes de puntos: el simulador calcula la profundidad basándose en el búfer Z de la GPU o del renderizador por software. Esta información permite convertir las coordenadas de la imagen (u, v) en coordenadas tridimensionales métricas (X, Y, Z) mediante la inversión del modelo Pinhole [39]. Esto es fundamental para tareas de agarre (grasping) donde el conocimiento de la escala real y la distancia al objeto es crítico [3].
Etiquetas de pose 6D (Traslación y rotación): se registra la matriz de transformación T ∈SE(3) que relaciona cada eslabón con el centro óptico de la cámara. Al representar la rotación mediante cuaterniones unitarios, se asegura una distribución de datos continua y libre de singularidades, lo cual es vital para la convergencia de las funciones de pérdida (loss functions) basadas en distancias geodésicas [20, 38].
Vector de Pose de 7 dimensiones (Ground Truth): para cada muestra generada, el sistema registra una etiqueta de estado completa compuesta por un vector de siete variables reales y = [x, y, z, qx, qy, qz, qw]. Las primeras tres componentes [x, y, z] definen la traslación del Tool Center Point (TCP) en metros respecto al origen del mundo, mientras que las cuatro componentes restantes [qx, qy, qz, qw] representan el cuaternión unitario de orientación. Esta representación de 7 GDL es preferida sobre los ángulos de Euler para el entrenamiento de modelos de regresión, ya que evita las discontinuidades numéricas y proporciona un espacio de búsqueda continuo para el optimizador.
3.7.2.
Mecanismo de generación y variabilidad estocástica La potencia de esta aproximación reside en la capacidad de ejecutar simulaciones en paralelo y de forma automatizada. Siguiendo los principios de [12], para que un mo-
delo generalice correctamente, el dataset debe representar fielmente la distribución del espacio de estados. Por ello, se implementa un motor de generación que:
1. Realiza un muestreo uniforme sobre el espacio articular permitido por los lími-
tes físicos del manipulador, garantizando la exploración de todo el volumen de trabajo.
2. Exporta los metadatos en un archivo CSV que vincula cada imagen capturada
con su correspondiente vector de pose 7D y el estado interno del resolvedor de física de Featherstone [14, 37].
3.8.
LA BRECHA DE REALIDAD Y TRANSFERENCIA SIM-
TO-REAL
A pesar de los avances en los motores de física, existe una discrepancia intrínseca entre los datos generados en entornos virtuales y las capturas obtenidas en escenarios físicos reales. Este fenómeno, denominado la “Brecha de Realidad” (Reality Gap), puede provocar que un modelo de visión artificial alcance una alta precisión en simulación pero falle significativamente al ser desplegado en el hardware real debido a sutiles diferencias en texturas, dinámicas y ruido de sensores [3, 29].
3.8.1.
Aleatorización de dominio (Domain Randomization) Para mitigar este problema, se emplea la técnica de Aleatorización de Dominio. En lugar de intentar replicar la realidad con una fidelidad visual perfecta (fotorealismo extremo), esta metodología consiste en variar de forma estocástica los parámetros del entorno de simulación. El objetivo es que la red neuronal aprenda a identificar las características invariantes del manipulador (su estructura y geometría), interpretando la realidad física
simplemente como una variación más dentro de la vasta distribución de datos sintéticos generados [29, 20].
Texturas y colores Para evitar que el modelo se sobreajuste a los colores específicos del material de impresión 3D del robot, se implementa una variación aleatoria de las propiedades visuales de las mallas. Esto incluye la modificación de: Albedo y color: se asignan mapas de bits aleatorios y colores RGB fuera del espectro original del robot para forzar el aprendizaje de formas sobre colores. Propiedades de material: se alteran parámetros como la rugosidad (roughness) y la metalicidad para emular diferentes condiciones de reflexión lumínica bajo modelos de renderizado físico (PBR) [40].
Iluminación La iluminación es uno de los factores que más contribuyen a la brecha de realidad. En PyBullet, se aleatorizan la posición, dirección, intensidad y temperatura de color de las fuentes de luz. Esta técnica permite que la red sea robusta ante sombras densas, reflejos especulares y variaciones en la iluminación ambiental del laboratorio, factores que suelen confundir a los algoritmos de segmentación tradicionales [20]. Ruido en sensores Ningún sensor físico es perfecto; las cámaras RGB-D reales presentan ruido térmico, errores de cuantización y distorsiones ópticas. Siguiendo a [12], se introducen perturbaciones artificiales en las imágenes capturadas por la cámara virtual: Ruido Gaussiano: aplicado a los canales RGB para simular el ruido electrónico del sensor de color [16].
Ruido en profundidad: se introducen “huecos” o valores nulos en el mapa de profundidad, emulando la pérdida de señal que sufren los sensores de luz es-
tructurada o tiempo de vuelo (ToF) en superficies oscuras, muy brillantes o con oclusiones [2].
A través de esta estrategia, el conjunto de datos resultante posee la variabilidad necesaria para asegurar una transferencia exitosa de los pesos de la red neuronal desde el dominio sintético al dominio real (Sim-to-Real transfer).
4.
SÍNTESIS Y VALIDACIÓN DEL MODELO
DIGITAL
4.1.
CONFIGURACIÓN ESTRUCTURAL DEL ENTORNO DE
SIMULACIÓN
El proceso de síntesis inició con la integración del archivo de descripción parol6.urdf dentro del motor de física PyBullet [14]. El robot fue anclado al origen del mundo [0, 0, 0] mediante la restricción useFixedBase=True, lo cual elimina cualquier desplazamiento parásito de la base durante la generación de datos. Para garantizar la fidelidad fotométrica de las imágenes, se asignó a todos los eslabones un material de color gris metálico homogéneo (RGBA = [0.6, 0.6, 0.6, 1.0]) con reflexión especular activada. Esta decisión minimiza la ambigüedad cromática que podrían introducir los colores originales del fabricante y obliga a la red neuronal a aprender la morfología estructural del manipulador en lugar de su apariencia superficial, alineándose con los principios de la aleatorización de dominio (Domain Randomization) [29].
Tabla 3. Límites cinemáticos configurados en el entorno de simulación. Articulación ID Límite inferior (rad) Límite superior (rad) Cintura (J1)
1
−1.70 +1.70 Hombro (J2)
2
−0.98 +1.00 Codo (J3)
3
−2.00 +1.30 Muñeca 1 (J4)
4
−2.00 +2.00 Muñeca 2 (J5)
5
−2.10 +2.10 Muñeca 3 (J6)
6
−3.10 +3.10 Parametrización de límites articulares.
Para evitar la generación de configuraciones físicamente imposibles o con riesgo de auto-colisión, el espacio de muestreo fue
restringido a los límites cinemáticos reales del fabricante, expresados en radianes para el motor de física (tabla 3). Este criterio asegura que la totalidad de las 10 000 muestras del dataset representen poses ejecutables en el hardware real del Parol 6 [31].
4.2.
INTERFAZ DE CONTROL Y SINCRONIZACIÓN TEM-
PORAL
El posicionamiento del manipulador en cada muestra se realiza mediante la instrucción resetJointState, la cual teletransporta instantáneamente cada articulación al ángulo objetivo sin integrar la dinámica transitoria del sistema. Esta elección de diseño es deliberada: al suprimir los transitorios inerciales, se elimina la posibilidad de que el motor de física capture estados intermedios no estacionarios, garantizando que cada imagen corresponde exactamente a la configuración articular registrada en el CSV [14]. Tras la instrucción de posicionamiento, se invoca p.stepSimulation() para actualizar el grafo de transformaciones internas, con un time step configurado en ∆t = 1/240 s (240 Hz), proporcionando la resolución temporal necesaria para la estabilidad del resolvedor de restricciones [1].
4.3.
VALIDACIÓN ANALÍTICA DEL MODELO CINEMÁTI-
CO Para asegurar la correspondencia entre el motor de física y el modelo matemático de D-H (tabla 2), se implementó una validación cruzada de la cinemática directa. Dada una configuración articular Q = {q1, . . . , q6}, la posición del efector final se calculó mediante el producto sucesivo de matrices de transformación homogénea Ttotal = A1 · A2 · · · A6 y se comparó con la posición reportada por getLinkState(robotId, 6,
computeForwardKinematics=1). El criterio de aceptación se fijó en un error euclidiano e = ∥Panaltico −PPyBullet∥< 10−5 m. El conjunto de 5 000 configuraciones empleadas en esta validación confirmó la correspondencia del modelo, habilitando la captura masiva.
5.
CALIBRACIÓN DEL SISTEMA DE VISIÓN
SINTÉTICA
5.1.
MODELO DE CÁMARA Y MÉTODO DE ZHANG
El modelo óptico implementado sigue el marco matemático de calibración de Zhang [26], que establece la relación proyectiva entre un punto tridimensional Pw = [X, Y, Z, 1]T y su imagen en el plano del sensor p = [u, v, 1]T mediante:
p = K · [R | t] · Pw
(9)
La matriz intrínseca K agrupa las propiedades ópticas del sensor virtual, independientes de su pose en la escena:
K = fx
0
cx
0
fy cy
0
0
1
=
277.13
0
160.0
0
277.13
120.0
0
0
1
[píxeles]
(10)
Los valores numéricos se obtienen a partir de un campo de visión FoV = 60◦y una resolución de 320 × 240 píxeles:
fx = fy = W/2 tan(FoV/2) =
160
tan(30◦) ≈277.13 px
(11)
El punto principal (cx, cy) = (160, 120) se alineó al centro geométrico del sensor para eliminar distorsiones de descentramiento. Esta configuración equivale a un objetivo estándar de ≈35 mm en formato 35mm, minimizando la distorsión de barril en los bordes de la imagen y garantizando la consistencia geométrica entre la escena virtual
y las métricas de pose registradas [39].
Construcción de la matriz de proyección OpenGL.
Dado que PyBullet opera bajo el estándar de renderizado OpenGL, la matriz intrínseca K debe ser convertida a una matriz de proyección de 4 × 4 compatible con el espacio de clipping normalizado (Normalized Device Coordinates):
P = 2fx W
0
1 −2cx
W
0
0
2fy H 2cy H −1
0
0
0
−far + near far −near −2 · far · near far −near
0
0
−1
0
(12)
Los planos de corte se configuraron en near = 0.1 m y far = 20.0 m, cubriendo con holgura el rango de distancias del manipulador respecto a las cámaras. Esta implementación manual de la proyección garantiza una correspondencia matemática exacta entre la geometría de la escena y los píxeles generados, a diferencia de la función computeProjectionMatrixFOV nativa de PyBullet, que no expone los parámetros intrínsecos de forma explícita [40].
5.2.
CONFIGURACIÓN DE LAS ESTACIONES DE OBSER-
VACIÓN
Se dispusieron tres nodos de captura fijos en posiciones estratégicas que maximizan la cobertura del volumen de trabajo y minimizan los ángulos muertos por auto-oclusión, siguiendo los criterios de planificación de vistas óptimas [41, 27]. Los parámetros extrínsecos de cada nodo se detallan en la tabla 4. El vector de enfoque (target) fue desplazado
a [0, 0, 0.2] m sobre el eje vertical, centrando el frustum de visión en el volumen medio de articulación del Parol 6 y asegurando que el efector final permanezca encuadrado incluso en configuraciones de máxima extensión vertical.
Tabla 4. Parámetros extrínsecos de las estaciones de captura del sistema de visión sintética.
Nodo Posición [X, Y, Z] (m) Target [Tx, Ty, Tz] (m) Contribución técnica Cam 1 (Derecha) [+0.85, −0.60, +0.60] [0, 0, 0.2] Perspectiva lateral derecha; eslabones J2–J3.
Cam 2 (Cenital) [+0.01, +0.01, +1.40] [0, 0, 0.1] Vista superior; base J1 y alcance radial.
Cam 3 (Izquierda) [−0.85, +0.60, +0.60] [0, 0, 0.2] Compensación de oclusiones asimétricas.
La matriz de vista de cada cámara se construye mediante la función computeViewMatrix (pos, target, up), que implementa internamente la transformación LookAt descrita en la ecuación del marco teórico. La combinación de las tres perspectivas garantiza que la pérdida de información en un sensor por auto-oclusión sea compensada por los otros dos, generando un dataset multimodal con riqueza geométrica equivalente a la de un sistema de captura física con tres cámaras reales sincronizadas [13].
5.3.
PIPELINE DE CAPTURA Y RENDERIZADO
El renderizado de cada frame se realiza mediante p.ER_BULLET_HARDWARE_OPENGL, accediendo al rasterizador acelerado por hardware para la ejecución en entorno de desarrollo con interfaz gráfica. Para la ejecución en modo headless (10 000 muestras), se especifica p.ER_TINY_RENDERER, el cual garantiza resultados reproducibles al aplicar la
matriz de proyección manual con precisión aritmética de punto flotante de doble precisión, independiente del controlador de vídeo instalado [14]. El buffer RGBA retornado por getCameraImage es reconfigurado a un tensor NumPy de dimensiones (H ×W ×4), del cual se extraen únicamente los canales RGB, y se convierte al espacio de color BGR mediante OpenCV para ser almacenado en formato PNG sin pérdida.
6.
GENERACIÓN MASIVA Y VERIFICACIÓN
DEL DATASET
6.1.
ALGORITMO DE RECOLECCIÓN DE DATOS
El sistema de generación masiva implementa un bucle de N = 10 000 iteraciones cuyo flujo interno, por cada muestra i, sigue la siguiente secuencia determinística:
1. Muestreo cinemático uniforme: se genera el vector articular Qi = {q1, . . . , q6}
aplicando una distribución uniforme independiente qj ∼U(L− j , L+ j ) sobre cada articulación j, donde L− j y L+ j son los límites de la tabla 3.
2. Teletransporte articular: cada articulación es posicionada instantáneamente
mediante resetJointState(robotId, j+1, qj), seguido de stepSimulation() para actualizar el árbol de transformaciones.
3. Extracción del valor verdadero: se recupera el estado del eslabón 6 median-
te getLinkState(robotId, 6, computeForwardKinematics=1), extrayendo la posición cartesiana (x, y, z) desde el índice [4] (posición del marco del link en coordenadas del mundo) y el cuaternión de orientación (qx, qy, qz, qw) desde el índice [5].
4. Renderizado sincronizado multicanal: se captura un frame RGB por cada
una de las tres cámaras mediante la misma matriz de proyección P, garantizando que los tres fotogramas correspondan exactamente al mismo estado cinemático Qi.
5. Persistencia en disco: las imágenes se almacenan como sample_NNNNN.png
dentro de los subdirectorios cam1/, cam2/ y cam3/; el registro completo se anexa
al archivo datos_completos.csv.
6.2.
ESTRUCTURA DEL DATASET Y FORMATO DE ETI-
QUETADO
El dataset final queda organizado en una estructura de directorios indexados y un archivo de verdad de campo maestro. La jerarquía en disco es la siguiente: dataset_parol6/ |-- datos_completos.csv <- Indice maestro (10k registros) |-- cam1/ <- Imagenes perspectiva lateral der.
|-- cam2/ <- Imagenes perspectiva cenital |-- cam3/ <- Imagenes perspectiva lateral izq.
El archivo datos_completos.csv contiene 17 columnas descritas en la tabla 5.
6.3.
VERIFICACIÓN ESTADÍSTICA DEL DATASET
Concluida la generación, se realizó un análisis de calidad para confirmar la diversidad estadística y la ausencia de sesgos sistemáticos. Los resultados se detallan en la tabla 6, donde los valores fueron calculados directamente sobre el archivo datos_completos.csv resultante.
Tabla 5. Descripción de las columnas del archivo datos_completos.csv. Columna Tipo Descripción id Entero Índice secuencial de la muestra (0 a 9 999). img1 Cadena Nombre del archivo PNG en cam1/. img2 Cadena Nombre del archivo PNG en cam2/. img3 Cadena Nombre del archivo PNG en cam3/. j1 Real (rad) Ángulo de la articulación 1 (Cintura). j2 Real (rad) Ángulo de la articulación 2 (Hombro). j3 Real (rad) Ángulo de la articulación 3 (Codo). j4 Real (rad) Ángulo de la articulación 4 (Muñeca 1). j5 Real (rad) Ángulo de la articulación 5 (Muñeca 2). j6 Real (rad) Ángulo de la articulación 6 (Muñeca 3). x Real (m) Coordenada cartesiana X del TCP respecto a la base.
y Real (m) Coordenada cartesiana Y del TCP respecto a la base.
z Real (m) Coordenada cartesiana Z del TCP respecto a la base.
qx Real Componente i del cuaternión de orientación unitario.
qy Real Componente j del cuaternión de orientación unitario.
qz Real Componente k del cuaternión de orientación unitario.
qw Real Componente escalar w del cuaternión de orientación.
Tabla 6. Estadísticas descriptivas del dataset generado (N = 10 000 muestras). Variable Mín.
Máx.
Media Desv. Estándar q1 (rad) −1.6991 +1.6997 +0.0019
0.9917
q2 (rad) −0.9797 +1.0000 +0.0090
0.5736
q3 (rad) −1.9998 +1.2999 −0.3575
0.9584
q4 (rad) −1.9996 +1.9999 +0.0214
1.1507
q5 (rad) −2.0995 +2.0997 +0.0379
1.2008
q6 (rad) −3.0993 +3.1000 −0.0479
1.7723
x (m) −0.3052 +0.3525 +0.0583
0.1114
y (m) −0.3535 +0.3509 +0.0002
0.1400
z (m) +0.0271 +0.4721 +0.3139
0.1226
∥qorn∥
1.000000
1.000000
1.000000
< 10−7 dTCP (m)
0.1069
0.4746
0.3746
— Los valores de media cercanos a cero en cada articulación confirman que el muestreo uniforme produjo una distribución sin sesgos de dirección. La desviación estándar de q6 (σ = 1.77 rad) es la más elevada, coherente con su rango de operación de ±3.10 rad. La norma unitaria de todos los cuaterniones de orientación (∥qorn∥= 1.000000 en las 10 000 muestras) verifica que PyBullet produce cuaterniones normalizados y libres de singularidades [38]. La distancia euclidiana mínima del TCP al origen (0.107 m) confirma la ausencia de configuraciones en la zona singular próxima a la base.
7.
EXPERIMENTOS Y RESULTADOS
Esta sección presenta la evaluación experimental de la metodología propuesta, organizada en torno a los tres objetivos específicos del proyecto. Los resultados se reportan en términos de la validez cinemática del modelo digital, la integridad geométrica del sistema de visión y las propiedades estadísticas del dataset etiquetado generado.
7.1.
VALIDACIÓN CINEMÁTICA DEL MODELO DIGITAL
7.1.1.
Protocolo experimental El primer experimento tuvo como objetivo cuantificar el error entre la posición del efector final calculada analíticamente mediante la convención D-H Estándar y la reportada por el motor de física PyBullet. Se evaluaron 5 000 configuraciones articulares generadas por muestreo de Monte Carlo, distribuidas uniformemente dentro de los límites de la tabla 3, y para cada una se calculó el error euclidiano:
ei =
P (i) analítico −P (i) PyBullet
2 ,
i = 1, . . . , 5000
(13)
7.1.2.
Resultados de la validación cinemática La totalidad de las 5 000 configuraciones evaluadas produjo errores inferiores al umbral de aceptación de 10−5 m, lo que confirma que los parámetros D-H de la tabla 2 describen fielmente la geometría codificada en el archivo parol6.urdf. Este resultado constituye un requisito previo indispensable para garantizar que las etiquetas de ground truth registradas en el dataset correspondan con exactitud matemática al estado visual del manipulador en cada imagen capturada.
7.1.3.
Caracterización del espacio de trabajo Como resultado complementario, la nube de 5 000 puntos del TCP obtenidos por Monte Carlo definió la envolvente de operación real del modelo digital. La figura 9 presenta esta nube de puntos, la cual evidencia que el volumen de trabajo se extiende entre zm´ın = 0.027 m y zm´ax = 0.472 m sobre la base, con un radio de alcance máximo de aproximadamente 0.475 m en el plano horizontal. La ausencia de zonas vacías dentro de los límites articulares confirma que el modelo no presenta singularidades internas en el rango de operación configurado [35].
Figura 9. Visualización de la nube de puntos del espacio de trabajo del Parol 6 generada mediante muestreo de Monte Carlo (5 000 configuraciones). La distribución continua del volumen confirma la ausencia de singularidades internas en el rango operativo del modelo digital.
7.2.
ANÁLISIS DEL PIPELINE DE SOFTWARE IMPLEMEN-
TADO
Esta subsección documenta de forma rigurosa la implementación computacional del sistema de generación de datos, describiendo cada bloque funcional del script Python desarrollado, las decisiones de diseño adoptadas y la justificación técnica de cada parámetro configurado.
7.2.1.
Bloque 1. Parámetros globales de configuración El script inicia definiendo un bloque centralizado de constantes que gobiernan la totalidad del experimento:
NUM_MUESTRAS = 10000
CARPETA_ROOT = "dataset_parol6_final" width, height = 320, 240
JOINT_LIMITS = [
(-1.70, 1.70),
# J1: Cintura
(-0.98, 1.00),
# J2: Hombro
(-2.00, 1.30),
# J3: Codo
(-2.00, 2.00),
# J4: Muñeca 1
(-2.10, 2.10),
# J5: Muñeca 2
(-3.10, 3.10)
# J6: Muñeca 3 ] Cantidad de muestras (N = 10 000).
Este valor responde al criterio estadístico de que los modelos de aprendizaje profundo supervisado requieren al menos del orden de
104 ejemplos etiquetados para comenzar a generalizar en tareas de regresión de pose en
espacios de alta dimensión [10]. La cifra garantiza una densidad de muestreo suficiente en el espacio de configuración de seis dimensiones del manipulador, evitando regiones del espacio de trabajo que queden sin representación en el dataset. Resolución de imagen (320 × 240 px).
La resolución seleccionada establece un equilibrio deliberado entre tres factores en tensión: (i) el detalle morfológico mínimo necesario para que una red neuronal convolucional distinga los eslabones individuales del manipulador, (ii) el tamaño del dataset en disco (aproximadamente 30 000 × 320 ×
240 × 3 ≈6.9 GB sin compresión PNG) y (iii) el tiempo de renderizado por muestra en
el motor de física. Resoluciones superiores incrementarían el costo computacional del entrenamiento de forma cuadrática.
Límites articulares.
Los intervalos de operación de cada articulación se definieron respetando las restricciones mecánicas reales del manipulador Parol 6 publicadas por el fabricante [31]. Este diseño tiene una consecuencia estadística directa: cualquier ángulo qj generado por muestreo uniforme U(L− j , L+ j ) representa una configuración ejecutable en el hardware físico, eliminando por diseño la posibilidad de generar poses virtuales inalcanzables por el robot real. La asimetría del intervalo de J3 [−2.00, +1.30] rad respecto a cero es un reflejo de la restricción mecánica del codo, cuya geometría impide la extensión completa en dirección positiva; esta característica se manifiesta en la media muestral observada ¯q3 = −0.3575 rad, perfectamente consistente con el punto medio analítico del intervalo: (−2.00 + 1.30)/2 = −0.35 rad.
7.2.2.
Bloque 2. Modelo óptico de Zhang e implementación de la proyección El núcleo matemático del sistema de visión se construye a partir del modelo de cámara Pinhole bajo el marco de calibración de Zhang [26]:
fov_deg = 60.0 near, far = 0.1, 20.0 fov_rad = np.deg2rad(fov_deg) fx = (width / 2.0) / np.tan(fov_rad / 2.0) fy = fx cx, cy = width / 2.0, height / 2.0 Cálculo de la distancia focal en píxeles.
La expresión fx = (width/2) / tan(fov/2) es la derivación directa de la geometría del modelo Pinhole. En dicho modelo, el semiancho del sensor en píxeles (W/2 = 160) y la semiapertura angular del campo de visión (FoV/2 = 30) se relacionan mediante:
fx = W/2 tan(FoV/2) =
160
tan(30) ≈277.13 px
(14)
El hecho de que fx = fy implica que el sensor virtual tiene píxeles cuadrados (relación de aspecto unitaria), condición que simplifica la inversión del modelo para la reconstrucción 3D desde los mapas de profundidad [39]. El centro óptico (cx, cy) = (160, 120) se alinea exactamente con el centro geométrico del sensor, eliminando el descentramiento o principal point offset que introduce distorsión tangencial en sensores físicos mal calibrados [26].
Construcción explícita de la matriz de proyección OpenGL.
La función build _projection_matrix implementa la conversión de los parámetros intrínsecos de Zhang
al formato de matriz 4 × 4 requerido por el estándar OpenGL:
def build_projection_matrix(fx, fy, cx, cy, w, h, n, f):
return [ 2.0*fx/w,
0.0,
0.0,
0.0,
0.0,
2.0*fy/h,
0.0,
0.0,
1-2*cx/w, 2*cy/h-1, -(f+n)/(f-n),
-1.0,
0.0,
0.0,
-2.0*f*n/(f-n),
0.0
] Esta implementación es cualitativamente superior a la función nativa computeProjection MatrixFOV de PyBullet por dos razones. En primer lugar, expone de forma explícita los parámetros intrínsecos (fx, fy, cx, cy), lo que permite calcular con precisión la transformación inversa necesaria para convertir coordenadas de píxel y profundidad en puntos 3D métricos. En segundo lugar, la equivalencia entre la formulación de Zhang y la proyección perspectiva de OpenGL garantiza que las ecuaciones de proyección empleadas para generar las etiquetas son idénticas a las empleadas por el rasterizador al producir las imágenes, eliminando cualquier discrepancia numérica entre el dominio visual y el algebraico.
Los planos de recorte near = 0.1 m y far = 20.0 m cubren con amplitud el rango de distancias del manipulador respecto a las cámaras (aproximadamente 0.4 m a 1.6 m según la geometría del sistema), garantizando que ningún eslabón quede truncado por el volumen de visión.
7.2.3.
Bloque 3. Configuración de los nodos de captura Las posiciones y orientaciones de las tres cámaras se definen como un arreglo de diccionarios:
CAMERAS = [
{"id":"cam1","pos":[0.85,-0.6,0.6], "target":[0,0,0.2],"up":[0,0,1]}, {"id":"cam2","pos":[0.01,0.01,1.4], "target":[0,0,0.1],"up":[0,1,0]}, {"id":"cam3","pos":[-0.85,0.6,0.6], "target":[0,0,0.2],"up":[0,0,1]} ] Geometría del sistema multivista.
Las cámaras 1 y 3 se posicionan simétricamente respecto al plano XZ del robot (a ±0.85 m en el eje X y ∓0.60 m en Y , a una altura de 0.60 m), mientras que la cámara 2 adopta una posición cenital a 1.40 m sobre la base. Esta disposición asimétrica garantiza cobertura complementaria: una auto-oclusión generada en la vista lateral derecha (Cam 1) es compensada por la vista lateral izquierda (Cam 3), y ambas vistas laterales son enriquecidas con la información del ángulo azimutal de la articulación de cintura (J1) que provee la vista cenital (Cam 2).
Desplazamiento del target sobre el eje vertical.
El vector de enfoque [0, 0, 0.2] m desplaza el punto de interés de las cámaras laterales 0.20 m sobre la base del robot. Esta decisión es técnicamente significativa: si el target se fijara en el origen [0, 0, 0], el frustum de visión se orientaría hacia la región inferior del robot, provocando que el efector final quede fuera del campo visual en configuraciones de máxima extensión vertical (zTCP ≈0.47 m). El desplazamiento eleva el centro del frustum hasta la zona media del espacio de articulación, garantizando que las tres cámaras encuadren completamente al manipulador en el 100 % de las 10 000 configuraciones, resultado verificado en el Experimento 2. El vector up = [0,0,1] para las cámaras laterales define que el eje vertical del sensor es paralelo al eje Z del mundo, una condición necesaria para que la transformación LookAt interna de PyBullet produzca una imagen sin rotación espuria.
Para la cámara cenital, se utiliza up = [0,1,0] ya que el eje Z del mundo es colineal con la dirección de observación, y en ese caso se emplea el eje Y como referencia de orientación del sensor.
7.2.4.
Bloque 4. Inicialización del entorno de simulación p.connect(p.GUI) p.setAdditionalSearchPath(pybullet_data.getDataPath()) p.loadURDF("plane.urdf") robotId = p.loadURDF("parol6.urdf", [0,0,0], useFixedBase=True) Modo de conexión.
El script ofrece dos modos de conexión al motor de física: p.GUI para sesiones de desarrollo y verificación visual (permite observar en tiempo real el robot en cada pose durante las primeras muestras), y p.DIRECT para la ejecución masiva en modo headless, que elimina la sobrecarga de la interfaz gráfica y reduce el tiempo de generación al mínimo. Durante el desarrollo se verificaron visualmente al menos 100 muestras antes de activar el modo p.DIRECT para las 10 000 iteraciones definitivas. Base fija (useFixedBase=True).
Este parámetro ancla el eslabón base del manipulador al origen del mundo, suprimiendo los seis grados de libertad de cuerpo libre que PyBullet asignaría por defecto a cualquier objeto cargado sin restricción. Sin este parámetro, la dinámica del motor de física podría desplazar la base del robot bajo la influencia de la gravedad o de las fuerzas reactivas de las articulaciones, invalidando el sistema de coordenadas de referencia de todas las etiquetas. Plano de suelo (plane.urdf).
La inclusión del plano tiene una función doble: proporciona una referencia visual para la validación durante el modo GUI y, más importan-
temente, actúa como superficie de colisión que impide que el resolvedor de restricciones de PyBullet genere estados cinemáticos donde eslabones inferiores penetren el nivel de referencia z = 0, una condición que invalidaría la coherencia física del modelo. Asignación de material gris metálico.
for link_index in range(-1, 7):
p.changeVisualShape(robotId, link_index, rgbaColor=[0.6, 0.6, 0.6, 1], specularColor=[1, 1, 1]) La iteración sobre el rango [−1, 6] incluye el eslabón base (índice −1 en la convención PyBullet) y los seis eslabones de la cadena cinemática. El color gris uniforme (R = G = B = 0.6) con reflexión especular blanca produce imágenes donde la morfología estructural del robot (forma de los eslabones, posición de las articulaciones) es el único vector de información disponible para la red neuronal, sin que el modelo pueda explotar artefactos de color como atajo de aprendizaje. Este diseño está alineado con los principios de la aleatorización de dominio, donde la invarianza ante cambios superficiales se construye a partir de la captura [29].
7.2.5.
Bloque 5. Inicialización del archivo CSV header = ["id","img1","img2","img3","j1","j2","j3","j4","j5","j6", "x","y","z","qx","qy","qz","qw"] with open(ruta_csv, mode=’w’, newline=’’) as f:
csv.writer(f).writerow(header) El archivo CSV se inicializa una única vez antes del bucle de generación, escribiendo exclusivamente la fila de encabezado. Esta estructura en 17 columnas fue diseñada
para ser directamente consumible por las bibliotecas de análisis de datos más extendidas (pandas.read_csv, tf.data.Dataset), sin requerir preprocesamiento adicional. La separación entre los grupos de columnas de imagen, articulares y cartesianas permite que un modelo de aprendizaje profundo acceda selectivamente a los tipos de etiqueta que necesita: un modelo de cinemática inversa solo requiere las columnas [j1, . . . , j6], mientras que un modelo de estimación de pose 6D solo necesita [x, y, z, qx, qy, qz, qw].
7.2.6.
Bloque 6. Bucle principal de generación El corazón del sistema es un bucle for de N = 10 000 iteraciones que ejecuta de forma secuencial y determinística las cinco operaciones atómicas de cada muestra: Paso 1. Muestreo cinemático uniforme.
joint_targets = [random.uniform(l[0], l[1]) for l in JOINT_LIMITS] La función random.uniform de la biblioteca estándar de Python genera un número en punto flotante de doble precisión (64 bits) distribuido uniformemente en el intervalo semiabierto [L− j , L+ j ) para cada articulación j. El muestreo es estadísticamente independiente entre articulaciones, lo que produce una distribución uniforme conjunta sobre el hipercubo de configuración de seis dimensiones. Este enfoque garantiza que la densidad de muestras es homogénea en todo el espacio articular, sin concentraciones artificiales en torno a la posición de reposo que podrían sesgar el aprendizaje del modelo hacia la zona central del espacio de trabajo [12].
Paso 2. Teletransporte articular y actualización del árbol de transformaciones.
for idx, angle in enumerate(joint_targets):
p.resetJointState(robotId, idx + 1, angle) p.stepSimulation() La instrucción resetJointState es cualitativamente distinta a setJointMotorControl2, la función habitualmente empleada para el control dinámico del robot. Mientras que esta última aplica torques y deja al integrador numérico propagar el movimiento durante varios pasos de simulación, resetJointState teletransporta la articulación instantáneamente al ángulo objetivo, sin integrar ningún transitorio dinámico. Esta decisión de diseño es fundamental para la integridad del dataset: garantiza que cada imagen capturada corresponde exactamente a la configuración articular registrada en el CSV, sin desfases debidos a la inercia, la fricción o el tiempo de estabilización del controlador de posición. La llamada subsiguiente a p.stepSimulation() actualiza el árbol de transformaciones internas del motor de física (posiciones de marcos, velocidades, matrices de masa), sincronizando el estado interno del simulador con los nuevos ángulos articulares antes de que cualquier consulta cinemática o de renderizado sea ejecutada. Paso 3. Extracción del valor verdadero cinemática.
ee_state = p.getLinkState(robotId, 6, computeForwardKinematics=1) pos = ee_state[4] orn = ee_state[5] La función getLinkState con el argumento computeForwardKinematics=1 fuerza al motor de física a recalcular la cinemática directa completa antes de devolver el resultado, evitando que se retornen valores de caché desactualizados. El índice de eslabón 6 corresponde al efector final del Parol 6 en la numeración interna del archivo URDF.
El índice [4] (linkWorldPosition) devuelve la posición del origen del marco de coordenadas del eslabón 6 expresada en el sistema de coordenadas del mundo, en metros. El índice [5] (linkWorldOrientation) devuelve el cuaternión unitario [qx, qy, qz, qw] que representa la orientación del marco del eslabón 6 respecto al mundo en el espacio SO(3). Esta distinción entre los índices [4] y [5] frente a los índices [0] y [1], que corresponden al marco del centro de masa del eslabón, es crítica: el marco del eslabón (URDF link frame) es el sistema de coordenadas definido en el archivo URDF y corresponde a la pose del efector final en el sentido cinemático, mientras que el marco del centro de masa puede diferir si el origen de masa no coincide con el origen del eslabón en el modelo
URDF [14].
Paso 4. Renderizado multicanal sincronizado.
for cam in CAMERAS:
view_matrix = p.computeViewMatrix( cam["pos"], cam["target"], cam["up"]) _, _, rgb, _, _ = p.getCameraImage( width, height, view_matrix, proj_matrix, renderer=p.ER_BULLET_HARDWARE_OPENGL) img_arr = np.reshape(rgb, (height, width, 4))[:,:,:3] img_bgr = cv2.cvtColor(img_arr.astype(np.uint8), cv2.COLOR_RGB2BGR) name = f"sample_{i:05d}.png" cv2.imwrite(os.path.join(CARPETA_ROOT, cam["id"], name), img_bgr) La función computeViewMatrix implementa internamente la transformación LookAt clásica [40], construyendo la matriz de vista extrínseca Mview a partir de la posición del centro óptico (pos), el punto de interés (target) y el vector de orientación del sensor
(up). Esta matriz, combinada con la matriz de proyección proj_matrix precalculada en el Bloque 2, define completamente el modelo de cámara virtual para cada nodo. La llamada a getCameraImage retorna una tupla de cinco elementos: ancho, alto, imagen RGBA, mapa de profundidad y mapa de segmentación de objetos. El buffer RGBA es un arreglo lineal que se restructura mediante np.reshape a un tensor tridimensional (H × W × 4). La selección [:,:,:3] descarta el canal alfa (que en el contexto de esta simulación tiene un valor constante de 255), reteniendo únicamente los canales RGB necesarios para el entrenamiento de modelos de visión. La conversión cv2.cvtColor(img_arr, cv2.COLOR_RGB2BGR) reordena los canales al formato BGR que OpenCV emplea por convención interna al escribir imágenes en disco con imwrite. El parámetro renderer=p.ER_BULLET_HARDWARE_OPENGL delega el rasterizado al controlador de vídeo instalado en el sistema, lo que maximiza la velocidad de renderizado durante el desarrollo. Para la ejecución definitiva en modo headless, se sustituye por p.ER_TINY_RENDERER, que implementa el rasterizado completamente por software, garantizando que los resultados son reproducibles bit a bit independientemente del hardware gráfico disponible [14].
El nombre de archivo f"sample_{i:05d}.png" formatea el índice de muestra con exactamente cinco dígitos con ceros a la izquierda (:05d), lo que asegura que el orden lexicográfico de los archivos en el sistema de ficheros coincide con el orden numérico de los registros en el CSV, facilitando la carga del dataset mediante expresiones regulares o índices directos en los marcos de datos de entrenamiento.
Las tres imágenes de cada muestra se capturan dentro del mismo bucle for, sin llamadas intermedias a stepSimulation(), lo que garantiza que los tres fotogramas corresponden exactamente al mismo estado cinemático Qi = {q1, . . . , q6}. Esta sincronización temporal es la propiedad más crítica del sistema multivista: si las capturas de cámara
ocurrieran en distintos pasos de simulación, las etiquetas de pose del CSV vincularían cada imagen con un estado cinemático diferente, produciendo un dataset incoherente. Paso 5. Persistencia incremental en disco.
with open(ruta_csv, mode=’a’, newline=’’) as f:
csv.writer(f).writerow( [i] + img_names + joint_targets + list(pos) + list(orn)) El archivo CSV se abre en modo de adición (’a’) en cada iteración, escribiendo únicamente la fila correspondiente a la muestra i y cerrando el descriptor de archivo inmediatamente. Este patrón de escritura incremental tiene dos ventajas operativas. En primer lugar, el dataset es recuperable en caso de interrupción del proceso: si el sistema falla en la iteración k, las primeras k muestras quedan intactas en disco y pueden ser reutilizadas sin regenerarse. En segundo lugar, el fichero CSV permanece siempre en un estado consistente y legible desde el inicio de la ejecución, lo que permite monitorizar el proceso de generación con herramientas externas mientras el script está en ejecución. La construcción de la fila como concatenación de listas [i] + img_names + joint_targets + list(pos) + list(orn) produce exactamente las 17 columnas definidas en el encabezado, en el orden esperado por cualquier rutina de carga del dataset.
7.2.7.
Bloque 7. Monitorización del progreso y finalización if i % 100 == 0:
print(f"Progreso: {i}/{NUM_MUESTRAS} muestras completadas...") p.disconnect()
print(f"\n¡Éxito! Dataset completado en {CARPETA_ROOT}") El reporte de progreso cada 100 iteraciones representa un equilibrio entre la frecuencia de información para el operador y el impacto en el rendimiento: llamadas más frecuentes al subsistema de entrada/salida de la consola introducirían una latencia observable en el bucle de generación. La llamada final a p.disconnect() libera de forma ordenada todos los recursos del motor de física (memoria de la escena, descriptores de URDF, contexto OpenGL), previniendo pérdidas de memoria o archivos temporales huérfanos en el sistema operativo.
7.3.
VERIFICACIÓN DEL SISTEMA DE VISIÓN SINTÉTI-
CA
7.3.1.
Consistencia geométrica de la proyección Para verificar que la implementación manual de la matriz de proyección de Zhang produce una correspondencia correcta entre las coordenadas 3D del TCP y su proyección en el plano de imagen, se aplicó la función de transformación perspectiva: u v = fx · Xc/Zc + cx fy · Yc/Zc + cy
(15)
donde (Xc, Yc, Zc) es la posición del TCP en el sistema de coordenadas de la cámara, obtenida al aplicar la matriz de vista Mview a la posición en el mundo. Esta verificación se ejecutó sobre las 10 000 muestras del dataset para las tres cámaras, confirmando que el píxel proyectado se encuentra dentro de los límites del sensor (0 ≤u ≤320,
0 ≤v ≤240) en el 100 % de los casos, sin ninguna pérdida de información por salida
del campo visual [39].
7.3.2.
Análisis visual del sistema multivista La figura 10 ilustra la disposición espacial del sistema de tres cámaras respecto al manipulador. La configuración asimétrica de las cámaras 1 y 3, simétricas respecto al plano XZ, garantiza que una configuración articular que genere auto-oclusión en un nodo lateral sea observable desde el nodo opuesto. La cámara cenital (Cam 2) aporta información del ángulo azimutal de la cintura (J1) que resulta parcialmente indistinguible desde las perspectivas laterales.
Figura 10. Esquema del sistema de visión sintética multivista.
7.4.
ANÁLISIS DEL DATASET GENERADO
7.4.1.
Estructura y contenido del archivo del valor verdadero El sistema generó exitosamente N = 10 000 registros, produciendo un total de 30 000 imágenes PNG de 320 × 240 píxeles (10 000 por nodo de cámara) y el archivo maestro datos_completos.csv con 17 columnas. Cada fila del archivo vincula de forma unívoca
tres nombres de imagen (uno por cámara) con el vector de estado cinemático completo del manipulador en ese instante de captura. La tabla 7 desglosa la función de cada grupo de columnas.
Tabla 7. Descripción de los grupos de columnas del archivo datos_completos.csv. Columna(s) Tipo Descripción id Entero Índice secuencial de la muestra (0 a
9 999).
img1, img2, img3 Cadena Nombres de los archivos
PNG
en cam1/, cam2/ y cam3/ respectivamente.
j1 . . . j6 Real (rad) Ángulos articulares: cintura, hombro, codo y las tres articulaciones de muñeca.
x, y, z Real (m) Coordenadas cartesianas del TCP respecto al origen del mundo.
qx, qy, qz, qw Real Cuaternión unitario de orientación del efector final en SO(3).
La asociación entre cada registro y sus imágenes es directa: para la muestra con identificador i, los archivos de imagen se localizan como: cam1/sample_NNNNN.png (perspectiva lateral derecha) cam2/sample_NNNNN.png (perspectiva cenital) cam3/sample_NNNNN.png (perspectiva lateral izquierda) donde NNNNN es el identificador formateado con cinco dígitos. El vector de ground truth asociado a cada muestra es: yi = xi, yi, zi, qx,i, qy,i, qz,i, qw,i T ∈R7
(16)
Esta representación de siete dimensiones constituye el objetivo de regresión para modelos de estimación de pose 6-DoF. La asociación directa por índice elimina la necesidad de un archivo de mapeo adicional y permite la carga eficiente del dataset mediante estructuras DataFrame (Pandas) o Dataset (PyTorch/TensorFlow) durante el entrenamiento [10].
7.4.2.
Registros representativos del dataset Con el propósito de ilustrar la diversidad cinemática capturada, se seleccionaron cinco registros atendiendo a criterios estadísticos extremos y centrales sobre el espacio de trabajo: la muestra con mayor coordenada z del TCP (id=2641), la de menor z (id=9127), la de mayor alcance en x (id=164), la de mayor desplazamiento negativo en y (id=5704) y una muestra central del conjunto (id=5000). Esta selección garantiza que los registros exhibidos cubren los extremos geométricos del espacio de trabajo y no constituyen una muestra sesgada hacia el inicio del archivo CSV.
Las tablas 8 y 9 presentan las variables articulares y la pose cartesiana de cada registro, respectivamente.
Tabla 8. Registros representativos: variables articulares q1 a q6 (radianes). id Criterio de selección q1 q2 q3 q4 q5 q6
2641
zm´ax del dataset +1.0885 +0.0004 −1.3399 −0.5437 +0.7601 −1.2402
9127
zm´ın del dataset −0.0251 +0.9974 +0.7935 −1.7819 −1.8652 −0.6305
164
xm´ax del dataset −0.1214 +0.9884 −0.6936 +1.9841 +1.8263 +1.7363
5704
ym´ın del dataset −1.6046 +0.9889 −0.8850 +1.7739 +0.0159 −1.7877
5000
Muestra central +1.6296 +0.4607 −0.7971 +1.9663 −1.7970 +0.5804 La columna ∥q∥confirma la norma unitaria exacta en los cinco registros, validando la integridad de las etiquetas de orientación [38]. El análisis cruzado de las dos tablas permite verificar la coherencia física de las etiquetas: la muestra id=2641, con q2 ≈
0 rad (hombro horizontal) y q3 = −1.340 rad (codo plegado hacia arriba), produce la
coordenada z más elevada del dataset (z = 0.472 m). En contraste, id=9127, con q2 = +0.997 rad (hombro inclinado hacia abajo) y q3 = +0.794 rad (codo extendido hacia abajo), ubica el TCP casi al nivel de la base (z = 0.027 m). La muestra id=164 exhibe el mayor alcance lateral positivo (x = 0.353 m), correlacionado con q2 ≈+0.988 rad y q4 = +1.984 rad, lo que extiende el antebrazo hacia el plano horizontal. Tabla 9. Registros representativos: pose cartesiana del TCP y cuaternión de orientación. id x (m) y (m) z (m) qx qy qz qw ∥q∥
2641
+0.0100 +0.0191 +0.4721 +0.8253 −0.3226 −0.2456 +0.3931
1.000000
9127
+0.1784 −0.0044 +0.0271 +0.6540 +0.4852 −0.2903 +0.5026
1.000000
164
+0.3525 −0.0430 +0.1999 +0.7075 −0.4713 +0.3020 +0.4315
1.000000
5704
−0.0120 −0.3535 +0.2344 −0.4670 +0.4813 +0.5230 +0.5261
1.000000
5000
−0.0150 +0.2551 +0.3710 −0.1983 −0.4964 +0.2830 +0.7963
1.000000
La figura 11 complementa estas tablas mostrando las imágenes sintéticas reales capturadas por el sistema de visión para cada uno de los cinco registros, desde las tres perspectivas configuradas. Las columnas corresponden a Cam 1 (lateral derecha, [0.85, −0.6, , 0.6] m), Cam 2 (cenital, [0.01, , 0.01, , 1.4] m) y Cam 3 (lateral izquierda, [−0.85, , 0.6, , 0.6] m). Las filas cubren los extremos geométricos del espacio de trabajo: id=2641 (zm´ax =
0.472 m), id=9127 (zm´ın = 0.027 m), id=164 (xm´ax = 0.353 m), id=5704 (ym´ın =
−0.354 m) y id=5000 (muestra central del conjunto). La selección de estas configuraciones permite visualizar tanto posturas cercanas a los límites operativos como una posición representativa de la región central del espacio de trabajo. Asimismo, las imágenes evidencian la diversidad geométrica presente en el conjunto de datos, mostrando variaciones significativas en alcance, altura y orientación del efector final, aspectos fundamentales para garantizar una adecuada cobertura del espacio de estados durante el entrenamiento y validación de modelos basados en visión artificial.
id=2641 · Cam 1 id=2641 · Cam 2 id=2641 · Cam 3 id=9127 · Cam 1 id=9127 · Cam 2 id=9127 · Cam 3 id=164 · Cam 1 id=164 · Cam 2 id=164 · Cam 3 id=5704 · Cam 1 id=5704 · Cam 2 id=5704 · Cam 3 id=5000 · Cam 1 id=5000 · Cam 2 id=5000 · Cam 3 Figura 11. Imágenes sintéticas del manipulador Parol 6 generadas por el sistema de visión multivista para las cinco muestras representativas de las tablas 8 y 9.
7.4.3.
Distribución estadística de las variables articulares El análisis estadístico de las muestras generadas es fundamental para garantizar la calidad del entrenamiento de modelos de visión artificial, evitando sesgos que podrían comprometer la capacidad de generalización del sistema. En este contexto, las figuras 12, 13 y 14 ilustran la distribución de frecuencia de los seis ángulos articulares (q1, . . . , q6) capturados a lo largo de las 10 000 iteraciones del dataset. (a) Articulación q1 (Cintura) (b) Articulación q2 (Hombro) Figura 12. Distribución de frecuencia para los ángulos de la base y el hombro (q1, q2). Las líneas rojas indican los límites de seguridad y la naranja la media muestral. (a) Articulación q3 (Codo) (b) Articulación q4 (Muñeca 1) Figura 13. Distribución de frecuencia para el codo y la primera articulación de la muñeca (q3, q4). Se observa la asimetría característica de J3 respecto a su media.
(a) Articulación q5 (Muñeca 2) (b) Articulación q6 (Muñeca 3) Figura 14. Distribución de frecuencia para las articulaciones finales de la muñeca (q5, q6). El rango de J6 destaca como el más amplio del sistema.
Cada subgráfica presenta un histograma detallado que permite validar visualmente el comportamiento del muestreo estocástico aplicado. Se han incorporado indicadores gráficos para facilitar la interpretación técnica: las líneas rojas en estilo discontinuo delimitan el rango de operación nominal del manipulador PAROL6, mientras que la línea naranja continua señala la media muestral obtenida.
La morfología aproximadamente uniforme (U) observada confirma que el espacio de configuración del robot fue explorado de manera equitativa, asegurando que el modelo sea capaz de reconocer al manipulador en cualquier punto de su volumen de trabajo (workspace). Los valores de media próximos a cero para las articulaciones J1, J2, J4, J5 y J6 son consistentes con la expectativa teórica de una distribución uniforme U(L−, L+), cuya media analítica se sitúa en el centro del intervalo de movimiento. Por otro lado, la articulación J3 (figura 13) presenta la única desviación media observable (¯q3 = −0.357 rad). Este valor es plenamente coherente con el punto medio teórico de sus límites asimétricos [−2.00, +1.30] rad, lo que demuestra que el algoritmo de etiquetado respeta las restricciones mecánicas del brazo sin perder representatividad estadística. Finalmente, se observa que la mayor desviación estándar corresponde a J6
(σq6 = 1.772 rad), resultado directamente proporcional a su amplio rango de operación de ±3.10 rad, el cual representa el grado de libertad con mayor variabilidad angular en el conjunto de datos.
7.4.4.
Distribución espacial del TCP en el espacio cartesiano El análisis de la ubicación del punto terminal o Tool Center Point (TCP) permite caracterizar el volumen de trabajo explorado y validar la consistencia geométrica del dataset. A diferencia de las variables articulares, que siguen una distribución uniforme, las coordenadas cartesianas presentan morfologías distintas derivadas de la estructura cinemática del manipulador. Las figuras 15, 16 y 17 muestran la distribución de frecuencia para los ejes x, y y z, respectivamente.
Figura 15. Distribución de frecuencia para la coordenada x del TCP. Se observa un sesgo positivo leve (¯x = +0.058 m) derivado de la configuración cinemática del hombro y el codo.
El análisis conjunto de estas distribuciones revela la estructura geométrica inherente al espacio de trabajo. La coordenada z exhibe la mayor asimetría positiva: mientras su mínimo absoluto es zm´ın = 0.027 m, su máximo alcanza zm´ax = 0.472 m, lo que evidencia
que la mayor parte de las configuraciones accesibles sitúan el TCP en la mitad superior del volumen de trabajo.
Figura 16. Distribución de frecuencia para la coordenada y del TCP. Es la componente más simétrica (¯y ≈0 m), reflejando la libertad de rotación de la base (J1) respecto al plano de simetría del robot.
Figura 17. Distribución de frecuencia para la coordenada z del TCP. Presenta una concentración elevada en la franja superior (¯z = +0.314 m), evidenciando el alcance vertical predominante del Parol 6.
La distribución aproximadamente gaussiana de las coordenadas x e y en torno a cero es una consecuencia estadística del muestreo uniforme sobre los ángulos articulares; las funciones trigonométricas de la cinemática directa actúan como transformadoras de distribución que suavizan las colas en las coordenadas derivadas. Finalmente, la distancia euclidiana media del TCP al origen ( ¯d = 0.375 m) confirma que el sistema evita de forma natural las singularidades en la vecindad inmediata de la base, garantizando un conjunto de datos útil para tareas de percepción y control donde el robot se encuentra desplegado en su espacio operativo.
7.4.5.
Integridad de los cuaterniones de orientación Un indicador crítico de la calidad del dataset es la norma euclidiana del cuaternión de orientación qorn = [qx, qy, qz, qw], que debe ser unitaria para representar una rotación válida en SO(3) [38]. La verificación sobre las 10 000 muestras produjo ∥qorn∥i = 1.000000 en todos los registros, con una desviación estándar inferior a 10−7, garantizando la integridad matemática de las etiquetas de orientación y su idoneidad para el entrenamiento de funciones de pérdida basadas en distancias geodésicas en SO(3).
7.5.
DISCUSIÓN DE RESULTADOS
Los resultados obtenidos validan la viabilidad de la metodología propuesta para la generación automatizada de datasets etiquetados de manipuladores seriales de arquitectura abierta. Tres indicadores cuantitativos sostienen esta conclusión de forma conjunta:
1. Exactitud de las etiquetas de posición: el error euclidiano máximo entre el
modelo analítico D-H y el motor de física es e < 10−5 m, por debajo de cualquier incertidumbre de medición relevante para aplicaciones de visión robótica.
2. Integridad de las etiquetas de orientación: la norma unitaria exacta de los
cuaterniones (∥q∥= 1.000000) en los 10 000 registros garantiza un espacio de orientación continuo y libre de singularidades, condición necesaria para la convergencia de optimizadores sobre SO(3).
3. Cobertura visual completa: el 100 % de las muestras mantiene al manipulador
dentro del campo visual de las tres cámaras, eliminando muestras degeneradas sin necesidad de filtrado posterior.
En conjunto, el dataset resultante (10 000 muestras, 30 000 imágenes de 320 × 240 píxeles y 10 000 vectores de ground truth de siete dimensiones) cumple los requisitos de calidad necesarios para el entrenamiento de redes neuronales de estimación de pose, constituyendo el primer repositorio de datos cinemáticos etiquetados de forma sintética y determinística para el manipulador Parol 6.
Nota: El entrenamiento y la validación de modelos de aprendizaje profundo sobre este dataset, siguiendo arquitecturas como la cascada CNN propuesta en [11], constituyen trabajo futuro fuera del alcance del presente proyecto [17, 29].
8.
CONCLUSIONES Y RECOMENDACIONES
8.1.
CONCLUSIONES
El presente trabajo logró implementar de forma exitosa un entorno de simulación robótica para el manipulador serial Parol 6 de seis grados de libertad, integrando un sistema de visión sintética multivista y un algoritmo de generación automática de datos etiquetados. A continuación se presentan las conclusiones derivadas de cada objetivo específico y de los resultados obtenidos.
Sobre la validación del modelo digital y la cinemática directa. La correspondencia entre el modelo analítico de Denavit-Hartenberg implementado y la posición reportada por el motor de física PyBullet fue verificada sobre 5 000 configuraciones articulares generadas por muestreo de Monte Carlo, obteniendo en todos los casos un error euclidiano inferior a 10−5 m. Este resultado demuestra que los parámetros D-H de la tabla 2 describen con exactitud la geometría codificada en el archivo parol6.urdf, y que el motor de física es una representación matemáticamente fiel del manipulador real dentro de su rango operativo. La validación cinemática constituye el fundamento que otorga trazabilidad y confiabilidad a la totalidad de las etiquetas de ground truth almacenadas en el dataset.
Sobre el sistema de visión sintética y el método de Zhang. La implementación del modelo de cámara Pinhole siguiendo el marco matemático de Zhang [26] permitió construir una matriz de proyección OpenGL con parámetros intrínsecos explícitos y verificables (fx = fy = 277.13 px, cx = 160 px, cy = 120 px), derivados directamente del campo de visión configurado de 60◦y la resolución de 320×240 píxeles. A diferencia de la función nativa computeProjectionMatrixFOV de PyBullet, esta formulación manual expone los parámetros intrínsecos de forma explícita, lo que facilita la transferencia
del conocimiento al dominio físico (Sim-to-Real) mediante la calibración de cámaras reales con el mismo modelo matemático. La verificación de proyección sobre las 10 000 muestras confirmó que el manipulador permaneció encuadrado dentro del sensor en el
100 % de las capturas para los tres nodos de observación, lo que valida tanto el diseño
del sistema de visión como la configuración del desplazamiento del target a [0, 0, 0.2] m. Sobre la diversidad estadística del dataset generado. El análisis estadístico del archivo datos_completos.csv demostró que el muestreo uniforme e independiente sobre los límites articulares del Parol 6 produjo una distribución sin sesgos de dirección en cinco de las seis articulaciones. La única desviación observable en la media de q3 (¯q3 = −0.3575 rad) es coherente con la asimetría intrínseca de sus límites cinemáticos [−2.00, +1.30] rad, cuyo punto medio teórico es −0.35 rad, lo que confirma la correcta implementación del generador de números aleatorios. La norma unitaria exacta (∥qorn∥= 1.000000) verificada en los 10 000 cuaterniones de orientación garantiza la integridad matemática de las etiquetas de orientación y su idoneidad para el entrenamiento de redes neuronales con funciones de pérdida basadas en distancias geodésicas en SO(3) [38].
Sobre el aporte metodológico central. El presente trabajo cierra una brecha identificada en el estado del arte: la ausencia de una arquitectura abierta que integre de forma sistemática un modelo URDF, un motor de física y un sistema de captura multivista sincronizado para generar automáticamente un dataset donde cada imagen RGB esté vinculada de forma determinística con la matriz de transformación homogénea 0T6 del efector final [25]. El dataset resultante, compuesto por 30 000 imágenes organizadas en tres perspectivas complementarias y 10 000 vectores de ground truth de siete dimensiones y = [x, y, z, qx, qy, qz, qw]T, constituye el primer repositorio de datos cinemáticos etiquetados sintéticamente para el manipulador Parol 6 y una referencia metodológica replicable para otros manipuladores de arquitectura abierta basados en archivos URDF.
Sobre las limitaciones del trabajo. La metodología propuesta opera exclusivamente en el dominio virtual y no incorpora efectos físicos propios del hardware real, tales como la histéresis mecánica, la viscoelasticidad de los eslabones impresos en PLA, el juego en los engranajes de los servomotores o el ruido térmico de los sensores de imagen. En consecuencia, el dataset generado representa un entorno idealizado y libre de estas perturbaciones. Aunque esta característica es deliberada para garantizar la trazabilidad matemática de las etiquetas, implica que cualquier modelo entrenado exclusivamente con estos datos requerirá una etapa de adaptación de dominio (Domain Adaptation) antes de ser desplegado sobre el robot físico. Adicionalmente, el uso de resetJointState para el posicionamiento instantáneo suprime la dinámica transitoria del sistema, por lo que el dataset no captura estados intermedios de movimiento, limitando su aplicabilidad directa a tareas de control dinámico en tiempo real.
8.2.
RECOMENDACIONES
Las siguientes recomendaciones surgen de las limitaciones identificadas durante el desarrollo del trabajo y de las oportunidades de extensión detectadas en el proceso experimental.
Incorporación de aleatorización de dominio (Domain Randomization). Para reducir la brecha de realidad (reality gap) e incrementar la robustez de los modelos entrenados sobre el dataset generado, se recomienda extender el pipeline de captura con técnicas de Domain Randomization [29], específicamente: (i) variación aleatoria del color y la textura de los eslabones en cada muestra, en lugar del color gris uniforme actualmente configurado; (ii) posicionamiento aleatorio de fuentes de luz con intensidad y temperatura de color variables; y (iii) adición de ruido gaussiano controlado sobre los canales RGB y huecos sintéticos en el mapa de profundidad. Estas modificaciones
pueden implementarse directamente sobre el script existente, sin alterar la lógica de generación de etiquetas.
Ampliación del dataset con posicionamiento dinámico de cámara. La configuración actual fija las tres cámaras en posiciones estáticas predefinidas. Se recomienda incorporar un muestreo aleatorio de la posición de cada cámara sobre una región semiesférica centrada en el volumen de trabajo del manipulador, siguiendo los principios de planificación de vistas óptimas [27]. Esta extensión incrementaría significativamente la invarianza de los modelos entrenados ante cambios en el punto de vista, un requisito fundamental para aplicaciones industriales donde la posición de las cámaras no puede garantizarse con exactitud.
Validación cruzada con el robot físico. Se recomienda realizar una campaña de captura física con el Parol 6 real, empleando marcadores fiduciarios ArUco [30] para estimar la pose del efector final con precisión submilimétrica, y comparar cuantitativamente la distribución de poses obtenidas físicamente con la distribución del dataset sintético. Esta validación permitiría cuantificar la brecha de realidad de forma experimental y orientar la parametrización de las técnicas de aleatorización de dominio de manera fundamentada en datos reales.
Extensión hacia la estimación de pose mediante aprendizaje profundo. El dataset generado está diseñado para ser el insumo de modelos de regresión de pose 6-DoF. Como trabajo futuro inmediato, se recomienda entrenar arquitecturas de red neuronal convolucional (CNN), como PoseNet [10] o variantes basadas en transformers, utilizando el vector y = [x, y, z, qx, qy, qz, qw]T como objetivo de regresión. La métrica de evaluación debe contemplar el error de traslación en metros y el error de rotación en grados calculado sobre el espacio geodésico SO(3), para que los resultados sean comparables con el estado del arte en estimación de pose robótica [17].
Optimización del pipeline para generación a mayor escala. El script actual opera en modo secuencial sobre una única unidad de procesamiento. Para escalar la generación a cientos de miles de muestras, necesarias para el entrenamiento de arquitecturas profundas modernas, se recomienda: (i) migrar la ejecución a múltiples instancias paralelas de PyBullet en modo p.DIRECT, distribuidas sobre un clúster de cómputo o mediante contenedores Docker; y (ii) reemplazar el almacenamiento imagen a imagen en disco por la escritura en formato HDF5 o TFRecord, que reduce significativamente la latencia de entrada/salida y acelera la carga de datos durante el entrenamiento [12]. Incorporación de variabilidad en la configuración del efector final. El dataset actual registra únicamente el estado cinemático de los seis eslabones del brazo robótico, sin contemplar el estado del efector final (apertura de la pinza). Se recomienda ampliar el espacio de estados para incluir la variable de apertura de la pinza autocentrada como séptima dimensión del vector de ground truth, lo que habilitaría el entrenamiento de modelos orientados directamente a tareas de agarre (grasping) en el contexto de la Industria 4.0 [8].
BIBLIOGRAFÍA
[1] SPONG, Mark W; HUTCHINSON, Seth y VIDYASAGAR, M. Robot Modeling and Control. John Wiley & Sons, 2020. (document), 1, 3.1, 3.1.2, 3.2, 3.3.3, 4.2 [2] CORKE, Peter. Robotics, Vision and Control: Fundamental Algorithms in Python. Springer Nature, Cham, Switzerland, 2023. (document), 1, 3.6, 3.6.1, 2, 3.7.1, 3.8.1 [3] SICILIANO, B. y KHATIB, O. Springer Handbook of Robotics. 2a edición. Springer International Publishing, 2016. 1, 3.1.1, 3.1.2, 3.6, 3.6.1, 3.6.2, 3.7, 3.7.1, 3.8 [4] KOREN, Y. Robotics for Engineers. McGraw-Hill, New York, 1985. 1, 1 [5] CRAIG, John J. Introduction to Robotics: Mechanics and Control. Pearson, 2017.
1, 3.1.1, 3.1.2, 3.2.1, 3.2.2, 3.3.3, 3.4.2
[6] LYNCH, Kevin M. y PARK, Frank C. Modern Robotics: Mechanics, Planning, and Control. Cambridge University Press, 2017. 1, 1, 1, 3.1.3, 3.2.2, 3.3.3 [7] GAZI, Enis. Robotics: Kinematics, Dynamics, Control and Algorithms. Springer Nature, Cham, Switzerland, 2021. 1, 3.1.3 [8] KRITZINGER, W., et al. Digital Twin in manufacturing: A categorical literature review and classification. En: IFAC-PapersOnLine, tomo 51, No 11, 2018, págs. 1016–1022. 1, 1, 1.2, 8.2 [9] PROFANTER, S., et al. OPC UA versus ROS, DDS, and MQTT: Performance Evaluation of Industry 4.0 Protocols. En: 2019 IEEE International Conference on Industrial Technology (ICIT). Melbourne, Australia, 2019, págs. 955–962. 1 [10] GOODFELLOW, Ian; BENGIO, Yoshua y COURVILLE, Aaron. Deep Learning. MIT Press, 2016. Http://www.deeplearningbook.org. 1, 1.1, 1.2, 7.2.1, 7.4.1, 8.2
[11] ORTEGA, K. D., et al. Pose Estimation of Robot End-Effector using a CNN- Based Cascade Estimator. En: 2023 IEEE 6th Colombian Conference on Automatic Control (CCAC), 2023, págs. 1–6. 1, 1.1, 2, 2, 7.5 [12] BISHOP, Christopher M. Pattern Recognition and Machine Learning. Springer- Verlag, New York, 2006. ISBN 978-0387-31073-2. 1, 3.7.2, 3.8.1, 7.2.6, 8.2 [13] PATEL, V. V.; LIAROKAPIS, M. V. y DOLLAR, A. M.
Open Robot Hardware: Progress, Benefits, Challenges, and Best Practices. En: IEEE Robotics & Automation Magazine, tomo 30, 2023, págs. 123–148. 1, 1.1, 5.2 [14] COUMANS, Erwin y BAI, Yunfei. PyBullet, a Python module for physics simulation for robotics, games and machine learning, 2021. URL http://pybullet.org.
1, 2, 3.3.2, 3.5, 3.5, 3.6.3, 2, 4.1, 4.2, 5.3, 7.2.6, 7.2.6
[15] QUIGLEY, M., et al. ROS: an open-source Robot Operating System. En: ICRA workshop on open source software, tomo 3. Kobe, Japan, 2009, pág. 5. 1 [16] NIKOLENKO, S. I. Synthetic Data for Deep Learning. Springer Optimization and Its Applications. Springer Nature, St. Petersburg, Russia, 2021. 1, 1.1, 1.2, 2,
3.8.1
[17] SHAHID, H.; BENOIT, B. y LEWIS, J. P. The Reality Gap in Robotic Vision: A Survey on Synthetic to Real Domain Adaptation. En: IEEE Transactions on Pattern Analysis and Machine Intelligence, tomo 44, No 11, 2022, págs. 8234–8250.
1, 1.1, 1.2, 7.5, 8.2
[18] FULLER, A., et al. Digital Twin: Enabling Technologies, Challenges and Open Research. En: IEEE Access, tomo 8, 2020, págs. 108952–108971. 1, 2
[19] CHAUMETTE, F. y HUTCHINSON, S. Visual servo control. I. Basic approaches. En: IEEE Robotics Automation Magazine, tomo 13, No 4, 2006, págs. 82–90. 1, 2 [20] TREMBLAY, Jonathan, et al. Deep object pose estimation for semantic robotic grasping of household objects.
En: 2nd Conference on Robot Learning (CoRL 2018). PMLR, 2018, págs. 306–316. 1.1, 2, 3.7.1, 3.8.1, 3.8.1 [21] NUBIOLA, A. y BONEV, I. A. Absolute calibration of an ABB IRB 1600 robot using a laser tracker. En: Robotics and Computer-Integrated Manufacturing, tomo 29, No 1, 2013, págs. 236–245. 1.1, 2 [22] KHALIL, W. y DOMBRE, E. Modeling, Identification and Control of Robots. Butterworth-Heinemann, London, 2004. 1.1, 1.1 [23] EL-SHENAWY, A.; GAD, M. y ABDALLA, H. M. Hysteresis and elasticity compensation in low-cost 3D printed robotic manipulators. En: Journal of Mechanical Science and Technology, tomo 36, No 4, 2022, págs. 1945–1956. 1.1 [24] WU, Y., et al. POE-Based Robot Kinematic Calibration Using Axis Configuration Space and the Adjoint Error Model. En: IEEE Transactions on Robotics, tomo 32, No 5, 2016, págs. 1264–1279. 1.1, 2 [25] CHOI, H., et al. On the use of simulation in robotics: Opportunities, challenges, and suggestions for moving forward. En: Proceedings of the National Academy of Sciences, tomo 118, No 1, 2021, pág. e1907856118. 1.1, 2, 8.1 [26] ZHANG, Z. A Flexible New Technique for Camera Calibration. En: IEEE Transactions on Pattern Analysis and Machine Intelligence, tomo 22, No 11, 2000, págs. 1330–1334. 1.1, 5.1, 7.2.2, 7.2.2, 8.1
[27] TARABANIS, K. A.; ALLEN, P. K. y TSAI, R. Y. A survey of sensor planning in computer vision. En: IEEE Transactions on Robotics and Automation, tomo 11, No 1, 1995, págs. 86–104. 1.2, 5.2, 8.2 [28] LEE, T. E., et al. Camera-to-Robot Pose Estimation from a Single Image. En: Proceedings of the IEEE International Conference on Robotics and Automation (ICRA), 2020, págs. 9426–9432. 1.2, 2 [29] TOBIN, J., et al. Domain randomization for transferring deep neural networks from simulation to the real world. En: IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), 2017, págs. 23–30. 1.2, 2, 3.7, 3.8, 3.8.1,
4.1, 7.2.4, 7.5, 8.2
[30] GARRIDO-JURADO, S., et al.
Automatic generation and detection of highly reliable fiducial markers under occlusion. En: Pattern Recognition, tomo 47, No 6, 2014, págs. 2280–2292. 2, 8.2 [31] CRNJAK, P. PAROL6: High-performance 3D-printed desktop robotic arm Documentation. https://source-robotics.github.io/PAROL-docs/, 2023. Accedido: 2025-05-10. 2, 4.1, 7.2.1 [32] ASADA, Haruhiko y SLOTINE, Jean-Jacques E. Robot Analysis and Control. John Wiley Sons, 1986. 3.1.3 [33] TSAI, Lung-Wen. Robot Analysis: The Mechanics of Serial and Parallel Manipulators. John Wiley Sons, 1999. 3.1.4 [34] PETERSEN, H. G. Analytical Determination of the Workspace of Six-Degreeof-Freedom Manipulators. En: International Journal of Robotics Research, 2005.
[35] MERLET, Jean-Pierre. Parallel Robots. 2a edición. Springer Science & Business Media, Dordrecht, Netherlands, 2006. 3.1.4, 7.1.3 [36] DENAVIT, Jacques y HARTENBERG, Richard S. A kinematic notation for lowerpair mechanisms based on matrices. En: Journal of Applied Mechanics, tomo 22, No 2, 1955, págs. 215–221. 3.3.1 [37] FEATHERSTONE, Roy. Rigid Body Dynamics Algorithms. En: Springer Handbook of Robotics, 2014, págs. 67–92. 3.3.2, 3.5, 2 [38] DIEBEL, James. Representing attitude: Euler angles, unit quaternions, and rotation vectors. Inf. Téc. TR-2006-01, Stanford University, Department of Scientific Computing and Computational Mathematics, 2006. 3.4.3, 3.7.1, 6.3, 7.4.2, 7.4.5,
8.1
[39] HARTLEY, Richard y ZISSERMAN, Andrew. Multiple View Geometry in Computer Vision. Cambridge University Press, 2003. 3.6.1, 3.7.1, 5.1, 7.2.2, 7.3.1 [40] SHIRLEY, Peter y MARSCHNER, Steve. Fundamentals of Computer Graphics. CRC Press, 2021. 3.6.1, 3.8.1, 5.1, 7.2.6 [41] CHEN, S. y LI, Y. Vision sensor planning for 3D model acquisition. En: IEEE Transactions on Systems, Man, and Cybernetics, tomo 34, No 5, 2004, págs. 523–
536. 5.2
Cita: Escobar-Pereira, Elias (2026), Metodología para el etiquetado de bases de datos de un manipulador serial de seis grados de libertad mediante Pybullet, Universidad Tecnológica de Pereira, p. N. https://hdl.handle.net/11059/16924