Manipuladores Robóticos

Lista de Exercícios


Vinicius Mariano Gonçalves

Cinemática Direta

Exercício 1

Considere o robô ao lado, com uma junta rotativa e uma prismática.

Considere que quando \(q_1=0\) o eixo \(z_e\) esteja alinhado com \(x_0\).

Considere que quando \(q_2=0\) o centro do referencial \(\mathcal{F}_e\) seja o ponto \(P\).

O desenho mostra o sentido positivo de rotação/translação das duas juntas.

Calcule a cinemática direta dele para efetuador, ou seja, a MTH \(H_0^{e}(q)\).

Resposta

Cinemática Direta

Exercício 2

Considere o manipulador abaixo, com três juntas rotativas.

Cinemática Direta

Exercício 2

Considere que o eixo \(x_0\) está alinhado com a linha da primeira junta, e que um deslocamento em \(z_0\) faz o centro do referencial \(\mathcal{F}_0\) ir para essa linha.

Considere também que as linhas das duas primeiras juntas são paralelas, e que a segunda e terceira linha são ortogonais.

(a) Crie os quatro referenciais de Denavit-Hartenberg.

(b) Derive os \(3 \times 4 = 12\) parâmetros.

(c) Usando esses referenciais, calcule a cinemática direta do referencial \(\mathcal{F}_0\) para o referencial do efetuator, \(\mathcal{F}_e\).

Resposta

Cinemática Direta

Exercício 3

Um referencial de Denavit-Hartenberg tem que ter seu centro necessariamente dentro do elo em que está grudado? Justifique.

Resposta

Cinemática Direta

Exercício 4

Podemos ter dois referenciais de Denavit-Hartenberg, para um mesmo robô, distintos que têm o mesmo centro? Justifique.

Resposta

Cinemática Direta

Exercício 5

Sabemos que uma transformação entre dois referenciais genéricos exige, no mínimo 6 números.

Sabendo disso, explique o porquê da transformação entre dois referenciais de Denavit-Hartenberg necessitar de menos parâmetros (no caso, 4).

Resposta

Cinemática Direta

Exercício 6

Podemos sempre garantir que o problema de cinemática inversa tem solução? Justifique.

Resposta

Cinemática Direta

Exercício 7

Considere o cenário ao lado, que pode ser criado pelo código a seguir no UAIBot:


import uaibot as ub
import numpy as np

#Cria o cenário
robot = ub.Robot.create_abb_crb(ub.Utils.trn([0,0,0.2]))

texture_table = ub.Texture(
    url='https://raw.githubusercontent.com/viniciusmgn/uaibot_content/master/contents/Textures/rough_metal.jpg',
    wrap_s='RepeatWrapping', wrap_t='RepeatWrapping', repeat=[1, 1])

material_table = ub.MeshMaterial(texture_map=texture_table, roughness=1, metalness=1, opacity=1)
table1 = ub.Box(name="table1", htm = ub.Utils.trn([0.8,0,0.15]), width=0.5, depth=0.5, height=0.4, mesh_material=material_table)
table2 = ub.Box(name="table2", htm = ub.Utils.trn([0,-0.8,0.15]), width=0.5, depth=0.5, height=0.4, mesh_material=material_table)
table3 = ub.Box(name="table3", htm = ub.Utils.trn([0,0,0.1]), width=0.3, depth=0.3, height=0.2, mesh_material=material_table)
obstacle = ub.Box(name="obstacle", htm = ub.Utils.trn([0.8,-0.8,0.5]), width=0.6, depth=0.6, height=1, mesh_material=material_table)

material_cube = ub.MeshMaterial(roughness=1, metalness=1, opacity=1, color="purple")
cube = ub.Box(name="cube", htm = ub.Utils.trn([0.8,0,0.4]), width=0.1, depth=0.1, height=0.1, mesh_material=material_cube)

sim = ub.Simulation.create_sim_factory([robot, table1, table2, table3, obstacle, cube])
                        

Cinemática Direta

Exercício 7

Crie um código no UAIBot para que ele pegue o bloco roxo em uma mesa e entregue na outra, sem bater nos obstáculos. O robô deve pegar e entregar o objeto por cima!

Use a cinemática inversa e interpolação linear, tal qual como neste exemplo da Aula 3.

Use a função robot.attach_object(cube) para fazer o efetuador pegar o objeto quando estiver na pose correta.

A função ikm aceita um parâmetro q0, tentando encontrar uma configuração na cinemática inversa próxima de q0. Use isso a seu favor.

Resposta