Subido por René Emiliano

AR Lab Assignment 5 2024

Anuncio
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
Descargar