<jupyter_start><jupyter_text>SEL0634 - Laboratório de Robôs Manipuladores Inicialização da biblioteca<jupyter_code>!pip install spatialmath-python
import numpy as np
from spatialmath import *
from math import pi

import matplotlib.pyplot as plt
# no Binder utilizar essa linha
# %matplotlib notebook  
# no Colab utilizar essa linha
%matplotlib inline<jupyter_output><empty_output><jupyter_text>Tarefa 1 - Sequencia de Rotações Aplicadas em um Cubo Desenhar cubo na posição inicialConsidere a seguinte função para desenhar os vértices de um cubo:<jupyter_code>def plot_cubo_grafico(cubo,grafico):
  grafico.scatter(xs=cubo[0], ys=cubo[1], zs=cubo[2], s=20)  # draw vertices
  # draw lines joining the vertices
  lines = [[0,1,5,6], [1,2,6,7], [2,3,7,4], [3,0,4,5]]
  for line in lines:
      grafico.plot([cubo[0,i] for i in line], [cubo[1,i] for i in line], [cubo[2,i] for i in line])

def plot_cubo(cubo):
  fig = plt.figure()
  SE3().plot(frame='0', dims=[-2,3,0,5,0,5], color='black')
  grafico = plt.gca()
  plot_cubo_grafico(cubo,grafico)<jupyter_output><empty_output><jupyter_text>Considere que na posição inicial, o cubo possui vértices $^0P_i$ posicionados  em relação ao sistema inercial $\{0\}$ nas seguintes coordenadas:<jupyter_code>P = np.array([[0, 2, 2, 0, 0, 2, 2, 0], [0, 0, 2, 2, 0, 0, 2, 2], [0, 0, 0, 0, 2, 2, 2, 2]])
P<jupyter_output><empty_output><jupyter_text>Para plotar o cubo:<jupyter_code>plot_cubo(P)<jupyter_output><empty_output><jupyter_text>Primeira transformaçãoAplique uma rotação no cubo em torno do eixo $x$ de um ângulo de $90^o$ e mostre os vertices do cubo nesta nova pose. Considere que um sistema de coordenadas fixo no cubo após esta rotação está com orientação dada por $\{1\}$, ou seja, após essa primeira rotação, $^0R_1$ representa a orientação do sistema de coordenadas fixo no cubo em relação ao sistema inercial.<jupyter_code>#########################
# Coloque seu código aqui
P01 = 

#########################
plot_cubo(P01)<jupyter_output><empty_output><jupyter_text>Segunda transformaçãoAplique uma nova rotação no cubo em torno do eixo $z$ do sistema atual $\{1\}$ de um ângulo de $90^0$, e mostre os vértices do cubo nesta nova pose. Considere que o sistema de coordenadas fixo no cubo após esta operação está com orientação dada por $\{2\}$, ou seja, $^0R_2$ representa a orientação do cubo em relação ao sistema inercial.<jupyter_code>#########################
# Coloque seu código aqui
P02 = 

########################
plot_cubo(P02)<jupyter_output><empty_output><jupyter_text>Terceira transformaçãoAplique uma nova rotação no cubo em torno do eixo $y$ do sistema inercial $\{0\}$ de um ângulo de $90^0$, e mostre os vértices do cubo nesta nova pose. Considere que o sistema de coordenadas fixo no cubo após esta operação está com orientação dada por $\{3\}$, ou seja, $^0R_3$ representa a orientação do cubo em relação ao sistema inercial.<jupyter_code>#########################
# Coloque seu código aqui
P03 = 

#########################
plot_cubo(P03)<jupyter_output><empty_output><jupyter_text>Matrizes de rotaçãoQuais são as matrizes de rotação: $^0R_1 =$<jupyter_code># Mostre a matriz de rotação aqui<jupyter_output><empty_output><jupyter_text>$^0R_2 = $<jupyter_code># Mostre a matriz de rotações aqui<jupyter_output><empty_output><jupyter_text>$^0R_3 = $<jupyter_code># Mostre a matriz de rotações aqui<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.14533686378346572, 'fraction_numerical': 0.029420417769932334, 'mean_word_length': 6.203389830508475, 'pattern_counts': {'":': 0, '<': 41, '<?xml version=': 0, '>': 41, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '10', 'dir': 'jupyter-structured-clean-dedup', 'id': '152044', 'license': 'MIT', 'n_tokens_mistral': 1373, 'n_tokens_neox': 1309, 'n_words': 386, 'path': 'sel634_tarefa1.ipynb', 'repo_name': 'vgrassi/sel0634', 'size': '3399'}