Problemas


Implemente el código para las funciones que devuelvan matrices de rotación en $x$ y $y$.


In [ ]:
def rotacion_x(θ):
    # YOUR CODE HERE
    raise NotImplementedError()
    
def rotacion_y(θ):
    # YOUR CODE HERE
    raise NotImplementedError()

In [ ]:
from numpy.testing import assert_allclose
from numpy import eye, pi, matrix
assert_allclose(rotacion_x(0), eye(4))
assert_allclose(rotacion_x(pi), matrix([[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]]), rtol=1e-05, atol=1e-05)
assert_allclose(rotacion_y(0), eye(4))
assert_allclose(rotacion_y(pi), matrix([[-1, 0, 0, 0], [0, 1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]]), rtol=1e-05, atol=1e-05)

Implemente el código para las funciones que devuelvan matrices de traslación en $x$, $y$ y $z$.


In [ ]:
def traslacion_x(x):
    # YOUR CODE HERE
    raise NotImplementedError()

def traslacion_y(y):
    # YOUR CODE HERE
    raise NotImplementedError()
    
def traslacion_z(z):
    # YOUR CODE HERE
    raise NotImplementedError()

In [ ]:
from numpy.testing import assert_allclose
from numpy import eye, pi, matrix, array
assert_allclose(traslacion_x(0), eye(4), rtol=1e-05, atol=1e-05)
assert_allclose(traslacion_x(1), matrix([[1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]), rtol=1e-05, atol=1e-05)
assert_allclose(traslacion_y(0), eye(4), rtol=1e-05, atol=1e-05)
assert_allclose(traslacion_y(1), matrix([[1, 0, 0, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]), rtol=1e-05, atol=1e-05)
assert_allclose(traslacion_z(0), eye(4), rtol=1e-05, atol=1e-05)
assert_allclose(traslacion_z(1), matrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]]), rtol=1e-05, atol=1e-05)

Implemente una cadena cinemática que describa la transformación hecha por una rotacion en $z$ de $30^o$, una rotación en $y$ de $50^o$ y una traslación en $z$ de $1m$, y guardela en la variable T.


In [ ]:
from numpy import pi
τ = 2*pi
# YOUR CODE HERE
raise NotImplementedError()

In [ ]:
from numpy.testing import assert_allclose

Sabemos que un pendulo doble puede ser descrito por una cadena cinemática; implemente una función que tome como argumento los parametros de rotación y traslación de cada uno de sus ejes, y devuelva la posición del actuador final.


In [ ]:
def pendulo_doble(q1, q2, l1, l2):
    # YOUR CODE HERE
    raise NotImplementedError()

In [ ]:
from numpy.testing import assert_allclose
from numpy import eye, pi, matrix, array
assert_allclose(pendulo_doble(0,0,1,1), matrix([[1, 0, 0, 2], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]), rtol=1e-05, atol=1e-05)
assert_allclose(pendulo_doble(pi/2,pi/2,1,1), matrix([[-1, 0, 0, -1], [0, -1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]), rtol=1e-05, atol=1e-05)