Ir al contenido

Ejercicios resueltos 📝

P1 — Composición e inversión de transformaciones homogéneas

Sección titulada «P1 — Composición e inversión de transformaciones homogéneas»

Un robot tiene un sistema de referencia O1O_1 ligado al codo que, respecto a la base O0O_0, está rotado θ=60°\theta = 60° alrededor de ZZ y trasladado v1=(150,0,300)v_1 = (150, 0, 300) mm. El efector final tiene un sistema O2O_2 que, respecto a O1O_1, está rotado ϕ=30°\phi = -30° alrededor de ZZ y trasladado v2=(100,50,0)v_2 = (100, 50, 0) mm.

  1. Construya las matrices 0T1^{0}T_1 y 1T2^{1}T_2.
  2. Obtenga 0T2=0T11T2^{0}T_2 = {}^0T_1 \cdot {}^1T_2 (matriz 4×44\times4 completa).
  3. Un punto P2=(20,0,0)P_2 = (20, 0, 0) mm está definido en el sistema del efector final. Calcule su posición P0P_0 respecto a la base.
  4. Calcule la transformación inversa 2T0=(0T2)1^{2}T_0 = ({}^0T_2)^{-1} usando las propiedades R1=RTR^{-1} = R^T y vinv=RTvv_{inv} = -R^T v. Verifique aplicando 2T0^{2}T_0 al punto P0P_0 hallado en el punto 3: debe recuperar P2P_2.
Mostrar solución
  1. Con cos60°=0.5\cos 60°=0.5, sin60°=0.866\sin 60°=0.866, cos(30°)=0.866\cos(-30°)=0.866, sin(30°)=0.5\sin(-30°)=-0.5:

    0T1=[0.50.86601500.8660.5000013000001],1T2=[0.8660.501000.50.86605000100001]^{0}T_1 = \begin{bmatrix}0.5&-0.866&0&150\\0.866&0.5&0&0\\0&0&1&300\\0&0&0&1\end{bmatrix}, \qquad ^{1}T_2 = \begin{bmatrix}0.866&0.5&0&100\\-0.5&0.866&0&50\\0&0&1&0\\0&0&0&1\end{bmatrix}
  2. La rotación se compone sumando ángulos (60°30°=30°60°-30°=30°), ya que ambas son alrededor de ZZ:

    R02=Rz(60°)Rz(30°)=Rz(30°)=[0.8660.500.50.8660001]R_{02} = R_z(60°)R_z(-30°) = R_z(30°) = \begin{bmatrix}0.866&-0.5&0\\0.5&0.866&0\\0&0&1\end{bmatrix}

    La traslación es t02=Rz(60°)v2+v1t_{02} = R_z(60°)\cdot v_2 + v_1:

    Rz(60°)(100,50,0)=(0.5(100)0.866(50), 0.866(100)+0.5(50), 0)=(6.7, 111.6, 0)R_z(60°)\cdot(100,50,0) = (0.5(100)-0.866(50),\ 0.866(100)+0.5(50),\ 0) = (6.7,\ 111.6,\ 0) t02=(6.7, 111.6, 0)+(150, 0, 300)=(156.7, 111.6, 300)t_{02} = (6.7,\ 111.6,\ 0) + (150,\ 0,\ 300) = (156.7,\ 111.6,\ 300) 0T2=[0.8660.50156.70.50.8660111.60013000001]^{0}T_2 = \begin{bmatrix}0.866&-0.5&0&156.7\\0.5&0.866&0&111.6\\0&0&1&300\\0&0&0&1\end{bmatrix}
  3. P0=R02P2+t02P_0 = R_{02}\cdot P_2 + t_{02}:

    R02(20,0,0)=(0.866(20), 0.5(20), 0)=(17.32, 10.0, 0)R_{02}\cdot(20,0,0) = (0.866(20),\ 0.5(20),\ 0) = (17.32,\ 10.0,\ 0) P0=(17.32+156.7, 10.0+111.6, 0+300)=(174.0, 121.6, 300) mmP_0 = (17.32+156.7,\ 10.0+111.6,\ 0+300) = (174.0,\ 121.6,\ 300)\ mm
  4. R021=R02T=Rz(30°)R_{02}^{-1} = R_{02}^T = R_z(-30°):

    R02T=[0.8660.500.50.8660001]R_{02}^T = \begin{bmatrix}0.866&0.5&0\\-0.5&0.866&0\\0&0&1\end{bmatrix} R02Tt02=(0.866(156.7)+0.5(111.6), 0.5(156.7)+0.866(111.6), 300)=(191.5, 18.3, 300)R_{02}^T \cdot t_{02} = (0.866(156.7)+0.5(111.6),\ -0.5(156.7)+0.866(111.6),\ 300) = (191.5,\ 18.3,\ 300) vinv=(191.5, 18.3, 300)=(191.5, 18.3, 300)v_{inv} = -(191.5,\ 18.3,\ 300) = (-191.5,\ -18.3,\ -300) 2T0=[0.8660.50191.50.50.866018.30013000001]^{2}T_0 = \begin{bmatrix}0.866&0.5&0&-191.5\\-0.5&0.866&0&-18.3\\0&0&1&-300\\0&0&0&1\end{bmatrix}

    Verificación: 2T0P0=R02TP0+vinv^{2}T_0 \cdot P_0 = R_{02}^T\cdot P_0 + v_{inv}:

    R02T(174.0,121.6,300)=(0.866(174.0)+0.5(121.6), 0.5(174.0)+0.866(121.6), 300)=(211.3, 18.3, 300)R_{02}^T\cdot(174.0,121.6,300) = (0.866(174.0)+0.5(121.6),\ -0.5(174.0)+0.866(121.6),\ 300) = (211.3,\ 18.3,\ 300) (211.3, 18.3, 300)+(191.5, 18.3, 300)=(19.8, 0, 0)(20,0,0)=P2(211.3,\ 18.3,\ 300) + (-191.5,\ -18.3,\ -300) = (19.8,\ 0,\ 0) \approx (20, 0, 0) = P_2 \checkmark

    (la pequeña diferencia con 2020 es por redondeo intermedio a 1 decimal).

P2 — Composición de rotaciones con cuaternios

Sección titulada «P2 — Composición de rotaciones con cuaternios»

Se aplican dos rotaciones sucesivas a un cuerpo: primero ϕ1=90°\phi_1 = 90° alrededor del eje ZZ (a1=(0,0,1)a_1=(0,0,1)), y luego ϕ2=180°\phi_2 = 180° alrededor del eje XX (a2=(1,0,0)a_2=(1,0,0)).

  1. Calcule los cuaternios Q1Q_1 y Q2Q_2 que representan cada rotación.
  2. Calcule el cuaternio compuesto Q=Q2Q1Q = Q_2 \cdot Q_1 (aplicar primero Q1Q_1, luego Q2Q_2), usando la fórmula del producto de cuaternios (s1,v1)(s2,v2)=(s1s2v1v2, v1×v2+s1v2+s2v1)(s_1,v_1)\cdot(s_2,v_2) = (s_1s_2-v_1\cdot v_2,\ v_1\times v_2+s_1v_2+s_2v_1).
  3. Verifique que QQ es unitario.
  4. Use QQ para rotar el vector p=(1,0,0)p=(1,0,0) mediante p=Q(0,p)Q1p' = Q\cdot(0,p)\cdot Q^{-1} (recuerde que para un cuaternio unitario Q1=QQ^{-1}=Q', el conjugado). Compare el resultado con lo que esperaría geométricamente al aplicar primero una rotación de 90°90° en ZZ y luego 180°180° en XX sobre el eje XX original.
Mostrar solución
  1. Con ϕ1/2=45°\phi_1/2=45° y ϕ2/2=90°\phi_2/2=90°:

    Q1=(cos45°, (0,0,1)sin45°)=(0.7071, 0, 0, 0.7071)Q_1 = (\cos 45°,\ (0,0,1)\sin 45°) = (0.7071,\ 0,\ 0,\ 0.7071) Q2=(cos90°, (1,0,0)sin90°)=(0, 1, 0, 0)Q_2 = (\cos 90°,\ (1,0,0)\sin 90°) = (0,\ 1,\ 0,\ 0)
  2. Con (sa,va)=Q2=(0,(1,0,0))(s_a,v_a)=Q_2=(0,(1,0,0)) y (sb,vb)=Q1=(0.7071,(0,0,0.7071))(s_b,v_b)=Q_1=(0.7071,(0,0,0.7071)):

    s=sasbvavb=0(10+00+00.7071)=0s = s_as_b - v_a\cdot v_b = 0 - (1\cdot0+0\cdot0+0\cdot0.7071) = 0 va×vb=(1,0,0)×(0,0,0.7071)=(0, 0.7071, 0)v_a\times v_b = (1,0,0)\times(0,0,0.7071) = (0,\ -0.7071,\ 0) v=va×vb+savb+sbva=(0,0.7071,0)+(0,0,0)+(0.7071,0,0)=(0.7071, 0.7071, 0)v = v_a\times v_b + s_av_b + s_bv_a = (0,-0.7071,0) + (0,0,0) + (0.7071,0,0) = (0.7071,\ -0.7071,\ 0) Q=(0, 0.7071, 0.7071, 0)Q = (0,\ 0.7071,\ -0.7071,\ 0)
  3. Q=02+0.70712+0.70712+02=0.5+0.5=1\|Q\| = \sqrt{0^2+0.7071^2+0.7071^2+0^2} = \sqrt{0.5+0.5} = 1 \checkmark
  4. Q1=Q=(0,0.7071,0.7071,0)Q^{-1}=Q'=(0,-0.7071,0.7071,0). Primero Q(0,p)Q\cdot(0,p) con (sa,va)=Q=(0,(0.7071,0.7071,0))(s_a,v_a)=Q=(0,(0.7071,-0.7071,0)), (sb,vb)=(0,(1,0,0))(s_b,v_b)=(0,(1,0,0)):

    s=0(0.7071)(1)=0.7071,v=(0,0,0.7071)s = 0 - (0.7071)(1) = -0.7071, \qquad v = (0,0,0.7071)

    Luego (0.7071,(0,0,0.7071))Q(-0.7071,(0,0,0.7071))\cdot Q' con (sb,vb)=Q=(0,(0.7071,0.7071,0))(s_b,v_b)=Q'=(0,(-0.7071,0.7071,0)):

    s=(0.7071)(0)[(0)(0.7071)+(0)(0.7071)+(0.7071)(0)]=0s' = (-0.7071)(0) - \left[(0)(-0.7071)+(0)(0.7071)+(0.7071)(0)\right] = 0 v=(0,0,0.7071)×(0.7071,0.7071,0)+(0.7071)(0.7071,0.7071,0)+0=(0.5,0.5,0)+(0.5,0.5,0)=(0,1,0)v' = (0,0,0.7071)\times(-0.7071,0.7071,0) + (-0.7071)(-0.7071,0.7071,0) + 0 = (-0.5,-0.5,0)+(0.5,-0.5,0) = (0,-1,0) p=(0, 1, 0)p' = (0,\ -1,\ 0)

    Verificación geométrica: rotar (1,0,0)(1,0,0) por 90°90° en ZZ da (0,1,0)(0,1,0); rotar ese resultado 180°180° en XX invierte yy y zz, dando (0,1,0)(0,-1,0). Coincide exactamente. ✓

P3 — Sensor esférico con traslación y verificación de distancia

Sección titulada «P3 — Sensor esférico con traslación y verificación de distancia»

Un sensor de profundidad instalado en la muñeca del robot reporta la posición de un objeto en coordenadas esféricas respecto a su propio origen: ρ=850 mm\rho = 850\ mm, θ=35°\theta = 35° (azimut, en el plano XYXY), ϕ=50°\phi = 50° (ángulo polar, medido desde el eje ZZ).

  1. Convierta (ρ,θ,ϕ)(\rho,\theta,\phi) a coordenadas cartesianas (x,y,z)(x,y,z) respecto al sensor.
  2. El origen del sensor está trasladado v=(0,0,200)v=(0,0,200) mm respecto a la base del robot (sin rotación entre ambos sistemas). Calcule la posición del objeto respecto a la base.
  3. Calcule la distancia 3D entre la base del robot y el objeto. ¿Es un resultado físicamente razonable, sabiendo que el sensor tiene un alcance máximo ρmax=850 mm\rho_{max}=850\ mm y está a 200 mm200\ mm de altura sobre la base? Justifique con un límite superior razonable para la distancia.
Mostrar solución
  1. Con sin50°=0.766\sin 50°=0.766, cos50°=0.643\cos 50°=0.643, cos35°=0.819\cos 35°=0.819, sin35°=0.574\sin 35°=0.574:

    x=ρsinϕcosθ=850(0.766)(0.819)533.4 mmx = \rho\sin\phi\cos\theta = 850(0.766)(0.819) \approx 533.4\ mm y=ρsinϕsinθ=850(0.766)(0.574)373.5 mmy = \rho\sin\phi\sin\theta = 850(0.766)(0.574) \approx 373.5\ mm z=ρcosϕ=850(0.643)546.4 mmz = \rho\cos\phi = 850(0.643) \approx 546.4\ mm
  2. Como no hay rotación entre los sistemas, basta sumar la traslación:

    (x,y,z)base=(533.4, 373.5, 546.4+200)=(533.4, 373.5, 746.4) mm(x,y,z)_{base} = (533.4,\ 373.5,\ 546.4+200) = (533.4,\ 373.5,\ 746.4)\ mm
  3. d=533.42+373.52+746.42=284,516+139,502+556,913=980,931990.4 mmd = \sqrt{533.4^2+373.5^2+746.4^2} = \sqrt{284{,}516+139{,}502+556{,}913} = \sqrt{980{,}931} \approx 990.4\ mm

    Un límite superior razonable es ρmax+200=1050 mm\rho_{max}+200 = 1050\ mm (si el objeto estuviera exactamente sobre el eje ZZ del sensor, alineado con el offset de altura). Como 990.4 mm<1050 mm990.4\ mm < 1050\ mm, el resultado es físicamente coherente.