¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Velocidad y matriz jacobiana de un brazo

Después de esta lección: Puedo estimar el jacobiano de un brazo y usarlo para hallar la velocidad de la mano.

Lección de 60 min2 comandosLaboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

De velocidad de giro a velocidad de mano

La matriz jacobiana dice cuánto se mueve la mano cuando una articulación gira un poco. Con ella se pasa de las velocidades de las articulaciones a la velocidad de la mano.

Puedes estimarla sin fórmulas: mueves un ángulo una cantidad muy pequeña y mides cuánto se mueve la mano. Todo es una simulación.

Al final de esta lección

Nota

Puedo estimar el jacobiano de un brazo y usarlo para hallar la velocidad de la mano.

Palabras clave

PalabraQué significaEjemplo
Velocidad angularcuánto gira una articulación por segundo1 rad/s
Jacobianotabla que pasa velocidades de giro a velocidad de mano
Diferencia centralmover un ángulo a ambos lados un paso pequeño
Singularidadpose donde el brazo pierde una dirección de movimiento
Determinanteun número que sale de la tabla y vale 0 en una singularidad

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un giro pequeño mueve la mano un poco

Gira un ángulo una cantidad muy pequeña, de 0,01 grados, y deja el otro quieto. La mano se mueve un poco. Divide ese movimiento entre lo que giraste y obtienes cuánto se mueve la mano por radián.

Haz lo mismo con el otro ángulo. Salen cuatro números: el cambio de x y de y por cada ángulo. Esa tabla es el jacobiano.

Ejemplo resuelto: jacobiano en la pose (0, 90)

Ángulo que se mueveCambio de x por radiánCambio de y por radián
Ángulo 1-610
Ángulo 2-60

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Cambio de x por radián, ángulo 1

Comando
docker exec jupyter python3 -c "import numpy as np; h = 0.001; print(round((10 * np.cos(h) + 6 * np.cos(h + np.pi / 2) - 6 * np.cos(np.pi / 2) - 10) / h, 2))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Jacobiano por velocidades da la velocidad

La velocidad horizontal de la mano es la primera fila del jacobiano por las dos velocidades angulares. La vertical es la segunda fila.

Se multiplica cada número de la fila por su velocidad y se suman. Las velocidades angulares van en radianes por segundo.

Ejemplo resuelto: velocidad de la mano

Velocidad ángulo 1Velocidad ángulo 2Velocidad xVelocidad y
1 rad/s0-6 cm/s10 cm/s
01 rad/s-6 cm/s0 cm/s
1 rad/s1 rad/s-12 cm/s10 cm/s

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Velocidad de la mano con 1 rad/s

Comando
docker exec jupyter python3 -c "import numpy as np; print(np.array([[-6, -6], [10, 0]]) @ np.array([1, 0]))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Una columna del jacobiano en Python

Código: python
import math

def hand(l1, l2, a1, a2):
    x = l1 * math.cos(math.radians(a1)) + l2 * math.cos(math.radians(a1 + a2))
    y = l1 * math.sin(math.radians(a1)) + l2 * math.sin(math.radians(a1 + a2))
    return [x, y]

h = 0.01  # un paso pequeño, en grados
more = hand(10, 6, 0 + h, 90)
less = hand(10, 6, 0 - h, 90)
step = 2 * math.radians(h)
dx = (more[0] - less[0]) / step
dy = (more[1] - less[1]) / step
print("columna del ángulo 1:", round(dx, 2), round(dy, 2))
# Cambia el 90 del ángulo 2 por 0 y mira cómo cambia la columna.

Con el brazo estirado se pierde una dirección

Estira el brazo sobre el eje x. Girar cualquier articulación mueve la mano solo hacia arriba o hacia abajo, nunca hacia fuera ni hacia dentro.

Esa pose es una singularidad. El determinante del jacobiano vale 0 y el brazo no puede mover la mano en una dirección.

Ejemplo resuelto: el determinante en tres poses

PoseJacobianoDeterminante
(0, 90)[[-6, -6], [10, 0]]60
(0, 0)[[0, 0], [16, 6]]0
(0, 180)[[0, 0], [4, -6]]0

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error muy común

Advertencia

Mucha gente cree que el jacobiano es un número fijo del brazo. Cambia con cada pose: el mismo brazo tiene otro jacobiano al doblar el codo. Calcúlalo de nuevo en cada pose.

Para ir más lejos: otra pose

Estima a mano el jacobiano en la pose (90, 0) con eslabones de 10 y 6 cm. Mueve cada ángulo un paso pequeño y mide cuánto cambia la mano.

Después calcula el determinante y decide si esa pose es una singularidad.

Sobre este laboratorio y su código: Laboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.