Lab. Arquitectura de Robots Practica 5 : Movimientos por trayectorias MCIE Mario Angel Rico Mendez Lab. Arquitectura de Robots Asignación de Práctica 6 de noviembre de 2024 Lab. Arquitectura de Robots 1. Objetivo El objetivo de esta práctica de laboratorio es familiarizar a los estudiantes con el proceso de planificación de trayectorias para un brazo robótico utilizando polinomios cúbicos y la transformación entre coordenadas cartesianas y articulares. Utilizando el robot y el código proporcionado, se espera que los estudiantes programen el movimiento del robot para dibujar una figura geométrica, calculando y verificando las trayectorias de cada articulación en el espacio de trabajo. 2. Desarrollo Para completar esta práctica, los estudiantes deberán seguir los siguientes pasos: 1. Configurar el robot en su posición ”homeïnicial para evitar posibles problemas de singularidades y calibrar sus articulaciones. 2. Comprender el código de control del robot: Revisar los parámetros de movimiento y la configuración de orientación. Observar el bucle de movimiento que realiza una secuencia de puntos formando un cuadrado. Identificar el uso de la función generar_trayectoria_polinomica, la cual genera trayectorias suaves entre dos puntos dados mediante interpolación polinómica cúbica. 3. El código calcula y verifica las posiciones de las articulaciones en cada paso usando polinomios cúbicos para cada segmento de la trayectoria. Estos segmentos corresponden a los movimientos entre los puntos clave que definen el cuadrado: 3.1 Punto 1 a Punto 2: Movimiento en línea recta en el eje 𝑥. 3.2 Punto 2 a Punto 3: Movimiento en línea recta en el eje 𝑦. 3.3 Punto 3 a Punto 4: Movimiento en línea recta en el eje −𝑥. 3.4 Punto 4 a Punto 1: Movimiento en línea recta en el eje −𝑦. 4. Se utiliza la función mover_suavemente para que el robot siga la trayectoria calculada en cada segmento de movimiento. 5. Se Añade una pausa de 10 segundos después de completar cada segmento, para observar el movimiento en cada vértice del cuadrado. Interpolación Polinómica Cúbica Para el cálculo de las trayectorias entre puntos, el polinomio cúbico que describe la trayectoria se calcula con la siguiente ecuación: 𝑞(𝑡) = 𝑎0 + 𝑎1 𝑡 + 𝑎2 𝑡 2 + 𝑎3 𝑡 3 MCIE Mario Angel Rico Mendez 1 Movimientos por trayectorias Lab. Arquitectura de Robots donde los coeficientes 𝑎0 , 𝑎1 , 𝑎2 y 𝑎3 son calculados a partir de las posiciones inicial y final, así como las velocidades inicial y final de cada segmento. Estos coeficientes pueden derivarse usando las condiciones de posición y velocidad deseadas en los extremos de la trayectoria. La interpolación cúbica garantiza que el robot realice movimientos suaves entre cada par de puntos, lo que es ideal para evitar movimientos bruscos que podrían dañar el sistema o reducir la precisión. 3. Preguntas para los Alumnos Al finalizar la práctica, responde las siguientes preguntas: 1. ¿Cuál es la ventaja de usar interpolación polinómica cúbica en vez de una interpolación lineal para el movimiento del robot? 2. Describe cómo se calculan los coeficientes del polinomio cúbico para una trayectoria de un punto a otro. 3. ¿Qué observaste en el movimiento del robot al aplicar una pausa de 10 segundos entre cada punto del cuadrado? ¿Cómo afecta esto a la precisión de la trayectoria? 4. ¿Cómo aseguraste que las articulaciones del robot siguieran una trayectoria continua y sin movimientos bruscos? 5. Explica el efecto que tienen las velocidades inicial y final de cada punto sobre la suavidad del movimiento. 4. Desarrollo Puede controlar Dobot M1 sobre un script. El robot admite varias API, como la configu- ración de velocidad / aceleración, la configuración del modo de movimiento y la configuración de E / S, que utiliza el lenguaje Python para el desarrollo secundario. Para la asignación de posiciones mediante un algoritmo, se debe acceder mediante la interfaz del M1Studio en la sección “Script”, como se observa en la Figura 1. MCIE Mario Angel Rico Mendez 2 Movimientos por trayectorias Lab. Arquitectura de Robots Figura 1: Posición del comando Script, esta imagen solo es ilustrativa. Una vez seleccionada la pestaña Script, se asignarán las siguientes instrucciones como se observa a continuación: # Configuración de los parámetros de movimiento dType.SetPTPCommonParams(api , 20, 50, 1) # Configurar velocidad y aceleración PTP 3 dType.SetPTPJumpParams(api , 20, 200, 1) # Configurar parámetros de salto 1 2 4 5 6 # Definir una posición "home" más segura para evitar singularidades home_joint_positions = [180, 0, 90, 0] # Cambiar la posición "home" a algo menos singular 7 8 9 # Asegurar la orientación del brazo antes de mover a home dType.SetArmOrientation (api , 1, 1) # Configurar la orientación del brazo para evitar singularidad 10 # Mover a la posición "home" segura dType.SetPTPCmd(api , 1, home_joint_positions [0], home_joint_positions [1], home_joint_positions [2], home_joint_positions [3], 1) 13 dType.dSleep (2000) # Pausa de 2 segundos 11 12 14 # Forzar un movimiento lineal directo desde home al primer punto de la trayectoria # Evitará movimientos circulares antes de iniciar la trayectoria solicitada 17 dType.SetPTPCmd(api , 2, 200, 0, 50, 0, 1) # Movimiento lineal (modo 2) al primer punto 18 dType.dSleep (2000) # Pausa de 2 segundos 15 16 19 # Función para generar interpolación polinómica cúbica (trayectoria suave) def generar_trayectoria_polinomica (punto_inicial , punto_final , num_puntos): 22 trayectoria = [] # Lista para almacenar los puntos generados 23 for i in range(num_puntos): 24 t = i / (num_puntos - 1) # Normalizar el tiempo entre 0 y 1 25 # Coeficientes del polinomio cúbico 26 a0_x , a1_x , a2_x , a3_x = punto_inicial [0], 0, 3 * (punto_final [0] punto_inicial [0]) , -2 * (punto_final [0] - punto_inicial [0]) 27 a0_y , a1_y , a2_y , a3_y = punto_inicial [1], 0, 3 * (punto_final [1] punto_inicial [1]) , -2 * (punto_final [1] - punto_inicial [1]) 28 a0_z , a1_z , a2_z , a3_z = punto_inicial [2], 0, 3 * (punto_final [2] 20 21 MCIE Mario Angel Rico Mendez 3 Movimientos por trayectorias Lab. Arquitectura de Robots punto_inicial [2]) , -2 * (punto_final [2] - punto_inicial [2]) 29 30 31 32 33 34 35 # Calcular cada componente usando el polinomio cúbico x = a0_x + a1_x * t + a2_x * t**2 + a3_x * t**3 y = a0_y + a1_y * t + a2_y * t**2 + a3_y * t**3 z = a0_z + a1_z * t + a2_z * t**2 + a3_z * t**3 trayectoria.append ([x, y, z]) # Guardar cada punto generado return trayectoria 36 # Función para mover el robot siguiendo la trayectoria generada sin pausas visibles 38 def mover_suavemente(trayectoria): 39 # Configurar el modo de movimiento lineal (en lugar de PTP punto a punto) 40 dType.SetPTPCmd(api , 2, trayectoria [0][0] , trayectoria [0][1] , trayectoria [0][2] , 0, 1) # Modo PTP lineal (2) 37 41 42 43 44 45 for punto in trayectoria [1:]: # Movimiento lineal en cada paso , pero dentro de la misma trayectoria dType.SetPTPCmd(api , 2, punto [0], punto [1], punto [2], 0, 0) # Movimiento lineal (modo 2) dType.dSleep (5) # Pausa mínima entre puntos 46 47 # Ahora continuar con las trayectorias deseadas 48 # Definir los 4 puntos clave para el movimiento punto1 = [200, 0, 50] 51 punto2 = [300, 0, 50] 52 punto3 = [300, 100, 50] 53 punto4 = [200, 100, 50] 49 50 54 55 56 # Inicializar contador para las repeticiones i = 0 57 # Bucle para repetir la secuencia de movimientos 5 veces while i < 5: 60 # 1. Desde punto1 a punto2 61 trayectoria1 = generar_trayectoria_polinomica (punto1 , punto2 , 100) 62 mover_suavemente(trayectoria1) 63 dType.dSleep (10000) # Pausa de 10 segundos 58 59 64 65 66 67 68 # 2. Desde punto2 a punto3 trayectoria2 = generar_trayectoria_polinomica (punto2 , punto3 , 100) mover_suavemente(trayectoria2) dType.dSleep (10000) # Pausa de 10 segundos 69 70 71 72 73 # 3. Desde punto3 a punto4 trayectoria3 = generar_trayectoria_polinomica (punto3 , punto4 , 100) mover_suavemente(trayectoria3) dType.dSleep (10000) # Pausa de 10 segundos 74 75 76 77 78 # 4. Desde punto4 de regreso a punto1 trayectoria4 = generar_trayectoria_polinomica (punto4 , punto1 , 100) mover_suavemente(trayectoria4) dType.dSleep (10000) # Pausa de 10 segundos MCIE Mario Angel Rico Mendez 4 Movimientos por trayectorias Lab. Arquitectura de Robots 79 80 81 # Incrementar el contador para el ciclo i += 1 82 # Regresar a la posición "home" después de 5 ciclos dType.SetPTPCmd(api , 1, home_joint_positions [0], home_joint_positions [1], home_joint_positions [2], home_joint_positions [3], 1) 85 dType.dSleep (2000) # Pausa de 2 segundos 83 84 86 87 # Fin del programa Donde, dType.SetPTPCommonParamsEx(api,20,50,1): Esta función establece los parámetros comunes para un movimiento PTP (Point-to-Point) del brazo robótico. Los parámetros son: la velocidad (20), la aceleración (50) y el tipo de movimiento (1). dType.SetPTPJumpParamsEx(api,20,200,1): Esta función establece los parámetros de salto para un movimiento PTP del brazo robótico. Los parámetros son: la velocidad (20), la altura del salto (200) y el tipo de movimiento (1). while True:: Esto inicia un bucle infinito que continuará ejecutando el código dentro de él indefinidamente. dType.SetArmOrientationEx(api, 0, 1): Esta función establece la orientación del brazo robótico. El primer argumento (0) indica que es el brazo 0 (brazo base), y el segundo argumento (1) indica la orientación deseada. dType.SetPTPCmdEx(api, 0, 223, 276, 60, 0, 1): Esta función envía un comando PTP al brazo robótico para moverlo a una posición específica. Los argumentos son: el brazo (0), las coordenadas X, Y, Z (223, 276, 60), la velocidad (60), si es relativo o absoluto (0 para absoluto) y el tipo de movimiento (1). dType.SetArmOrientationEx(api, 1, 1): Esta función cambia la orientación del brazo robótico. El primer argumento (1) indica que es el brazo 1 (posiblemente el brazo móvil), y el segundo argumento (1) indica la orientación deseada. dType.SetPTPCmdEx(api, 0, 223, 276, 60, 0, 1): Similar al paso 5, este comando envía al brazo robótico para moverlo a otra posición específica. dType.SetWAITCmd(api, 5000,1): Este comando detiene la ejecución del código durante 5000 milisegundos (5 segundos). El segundo argumento (1) indica que es una espera relativa al movimiento del brazo. Interpolación Polinómica Cúbica (Función generar_trayectoria_polinomica) Normalización del tiempo 𝑡: 𝑡 varía de 0 a 1, permitiendo calcular la posición a lo largo de la trayectoria. Coeficientes cúbicos 𝑎0 , 𝑎1 , 𝑎2 , 𝑎3 : Estos coeficientes determinan la forma de la trayectoria entre el punto inicial y el punto final. Están calculados para asegurar que el movimiento sea suave, sin cambios bruscos en la dirección. MCIE Mario Angel Rico Mendez 5 Movimientos por trayectorias Lab. Arquitectura de Robots 𝑎0 : Punto inicial. 𝑎1 : Velocidad inicial (fijada en 0 para suavidad). 𝑎2 y 𝑎3 : Terminan de ajustar la curva para llegar al punto final sin aceleración brusca. Cálculo de 𝑥, 𝑦, 𝑧: Cada posición en la trayectoria es evaluada en 𝑡 para producir una curva cúbica en cada dirección, lo que da como resultado una trayectoria tridimensional suave. 5. Cálculo de las trayectorias Para obtener las posiciones de referencia: Extraer los angulos 𝑞1 , 𝑞2 , 𝑞3 de las diferentes posiciones 1-4 del robot dadas en el código (posiciones en espera). Cálculo de las trayectorias de cada articulación: Utilizar los puntos de referencia obtenidos para calcular las trayectorias entre cada par de puntos adyacentes. Esto puede hacerse utilizando polinomios cúbicos o algún otro método de interpolación que mejor se ajuste a los requisitos del sistema. Transformación a coordenadas articulares: Utilizar las ecuaciones cinemáticas del robot para transformar las trayectorias cartesianas en trayectorias de variables articulares 𝑞1 , 𝑞2 , 𝑞3 . (practicas 3 y 4) Interpolación de las trayectorias articulares: Aplicar interpolación cúbica para suavi- zar las trayectorias articulares y obtener polinomios cúbicos para cada variable articular 𝑞1 , 𝑞2 , 𝑞3 , como se observa en la ecuación 1 𝜃(𝑡) = 𝑎0 + 𝑎1 𝑡 + 𝑎2 𝑡 2 + 𝑎3 𝑡 3 ̇ = 𝑎1 + 2𝑎2 𝑡 + 3𝑎3 𝑡 2 , 𝜃(𝑡) (1) ̈ = 2𝑎2 + 6𝑎3 𝑡 𝜃(𝑡) Grafique las interpolaciones de las posiciones angulares 𝜃𝑖 , velocidad angular 𝜃𝑖̇ y aceleración angular 𝜃𝑖̈ , de las 3 articulaciones 𝑞1 , 𝑞2 , 𝑞3 . Antes de realizar la práctica asegúrese que la velocidad del robot este al 50 %, posterior- mente posicione el robot a la posición de home. Tome capturas de pantalla de cada una de las posiciones mencionadas del robot y de la pantalla de control, donde se observen cada una de las posiciones angulares. 5.1. Reporte. Realice el reporte conforme al documento y la rúbrica, agregue las capturas de pantalla de las diferentes posiciones del robot obtenidas, los cálculos de cada uno de los coeficientes del polinomio. 5.2. Preguntas. 1. ¿Cuál es la ventaja de usar interpolación polinómica cúbica en vez de una interpolación lineal para el movimiento del robot? MCIE Mario Angel Rico Mendez 6 Movimientos por trayectorias Lab. Arquitectura de Robots 2. Describe cómo se calculan los coeficientes del polinomio cúbico para una trayectoria de un punto a otro. 3. ¿Qué observaste en el movimiento del robot al aplicar una pausa de 10 segundos entre cada punto del cuadrado? ¿Cómo afecta esto a la precisión de la trayectoria? 4. ¿Cómo aseguraste que las articulaciones del robot siguieran una trayectoria continua y sin movimientos bruscos? 5. Explica el efecto que tienen las velocidades inicial y final de cada punto sobre la suavidad del movimiento. Para ser calificada su práctica tiene que asistir al laboratorio a realizar dicha práctica MCIE Mario Angel Rico Mendez 7 Movimientos por trayectorias Lab. Arquitectura de Robots 6. Aclaraciones y forma de revision La actividad presentada debe cumplir con los estándares de calidad propios de un trabajo de nivel universitario. Esto incluye el uso adecuado de fuentes académicas, redacción clara y coherente, así como un análisis crítico y fundamentado. En caso de no cumplir con estos criterios, la actividad no será aceptada. Todos los alumnos deben de entregar su documento de la práctica en este apartado (MS Teams), los reportes se entregan de forma individual.De lo contrario se evaluará con calificación de cero. Realice la actividad/práctica según los criterios de evaluación descritos en la rúbrica al final del archivo. La aplicación de la rúbrica estará sujeta a la evaluación subjetiva del docente, la entrega de actividades es individual. La actividad se debe realizar mediante la plantilla asignada en Latex (Overleaf) llamada 𝑃𝑟𝑎𝑐𝑡𝑖𝑐𝑎𝑠_𝑎2024 adjunta, entregar el PDF creado en el área de tareas de Ms Teams. Solo se entrega el PDF, no Word, cualquier trabajo entregado, editado o realizado en Word no se revisará. Todo trabajo presentado por un alumno para los efectos de la evaluación de un curso debe ser realizado individualmente por el alumno. En caso de que exista colaboración permitida con otros estudiantes, el trabajo deberá referenciar y atribuir correctamente dicha contribución a quien corresponda. Por “trabajo” se entiende en general las interrogaciones escritas, las tareas de programación u otras, los trabajos de laboratorio, los proyectos, el examen, entre otros. En particular, se espera que mantengan altos estándares de honestidad académica. Cualquier acto deshonesto o fraude académico está prohibido. En particular, si un alumno copia un trabajo, o si a un alumno se le prueba que compró o intentó comprar un trabajo, obtendrá un cero como calificación. MCIE Mario Angel Rico Mendez 8 Movimientos por trayectorias Lab. Arquitectura de Robots 7. Rúbrica Excelente 100 % Portada 5 % Objetivo y Marco teórico 5 % Desarrollo 30 % Bien 75 % Regular 25 % Insuficiente 0 % Falta alguno de los criterios del punto anterior. Falta alguno de los criterios del punto anterior o falta la fotografía tipo identificación. No tiene portada.No asiste al laboratorio No lo realizo en la plantilla asignada (NRP) Describe el objetivo de la práctica. Mencione los tipos de trayectorias en un robot. Una cuartilla mínima, tamaño de letra máximo 12. Describe el objetivo de la práctica. Describe solo algunas de las definiciones del punto anterior. Solo describe el objetivo de la práctica o solo describe las definiciones del punto uno. Menos de una cuartilla. Letra mayor tamaño 12. No tiene objetivo, ni describe las definiciones del punto número uno. No asiste al laboratorio (NRP) Obtiene los cálculos teóricos y las capturas de pantalla de los puntos de la tabla del robot según se describe en el instructivo de la practica 5 de forma ordenada y clara. Además, describe en cada una de las capturas como se obtuvo tales resultados. Obtiene los cálculos teóricos y las capturas de pantalla de los puntos de la tabla del robot según se describe en el instructivo de la practica 5 de forma desordenada y confusa. Además, describe en cada una de las capturas como se obtuvo tales resultados. Obtiene los cálculos teóricos las capturas de pantalla de los puntos de la tabla del robot según se describe en el instructivo de la practica 5 de forma desordenada y confusa. No describe en cada una de las capturas como se obtuvo tales resultados. Contiene el nombre completo del alumno, matricula, nombre completo del profesor, grupo, salón, unidad de aprendizaje, fotografía (tipo identificación). No obtiene la solución de los cálculos teóricos. No asiste al laboratorio. (NRP) Cuadro 1: Rubrica. MCIE Mario Angel Rico Mendez 9 Movimientos por trayectorias Lab. Arquitectura de Robots Forma de trabajo y procedimiento 45 % Conclusiones 10 % Bibliografía consultada 5 % Excelente 100 % Bien 75 % Regular 25 % Insuficiente 0 % Realiza todas las actividades propuestas en la práctica. Cuando se desarrolla trabajo en equipo, hay cooperación y consenso en la resolución de todos los problemas que se presentan durante el desarrollo de la práctica. Sigue todas las instrucciones dadas por el profesor y, Asiste al laboratorio. Realiza 80 % de las actividades propuestas en la práctica. Cuando se desarrolla trabajo en equipo, hay cooperación y consenso en la resolución de por lo menos 70 % los problemas que se presentan durante el desarrollo de la práctica. Sigue hasta el 80 % las instrucciones dadas por el profesor y,Asiste al laboratorio. Realiza el 60 % las actividades propuestas en la práctica. Cuando se desarrolla trabajo en equipo, hay cooperación y consenso en la resolución de por lo menos 50 % los problemas que se presentan durante el desarrollo de la práctica. Sigue hasta el 60 % las instrucciones dadas por el profesor y, Asiste al laboratorio. No realiza las actividades propuestas en la práctica. Cuando se desarrolla trabajo en equipo, no hay cooperación y consenso en la resolución de los problemas que se presentan durante el desarrollo de la práctica. No asiste al laboratorio. Expone los resultados obtenidos en función de la técnica aplicada y justifica porque lo implemento de esa forma. Expone los resultados obtenidos en función de la técnica aplicada y no justifica plenamente porque lo implemento. Expone los resultados, pero no justifica la técnica aplicada. No expone conclusiones en el reporte. No contesta las preguntas que se realizan en el instructivo de la práctica.NRP No asiste al laboratorio. Cita por lo menos 1 fuentes bibliográficas (formato APA). No cita fuentes bibliográficas o están mal escritas (otro formato). NRP No asiste al laboratorio. Cita por lo menos 3 fuentes bibliográficas (formato APA). Cita por lo menos 2 fuentes bibliográficas (formato APA). Cuadro 2: Rubrica. MCIE Mario Angel Rico Mendez 10 Movimientos por trayectorias