Ir al contenido

P13 — Marco local, marco global y odometría con paso de tiempo

La pose de un robot diferencial en el plano es ξG=(x,y,θ)\xi_G = (x, y, \theta). Sus velocidades en el marco local del robot son ξ˙L=(x˙L,y˙L,θ˙L)\dot\xi_L = (\dot x_L, \dot y_L, \dot\theta_L), con y˙L=0\dot y_L = 0 porque las ruedas no se deslizan de lado. La relación entre los dos marcos es ξ˙G=R(θ)−1 ξ˙L\dot\xi_G = R(\theta)^{-1}\,\dot\xi_L, con

R(θ)=[cos⁡θsin⁡θ0−sin⁡θcos⁡θ0001]R(\theta) = \begin{bmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix}

La odometría con paso Δt\Delta t es

xk+1=xk+x˙Lcos⁡θk Δtyk+1=yk+x˙Lsin⁡θk Δtθk+1=θk+θ˙L Δtx_{k+1} = x_k + \dot x_L \cos\theta_k\,\Delta t \qquad y_{k+1} = y_k + \dot x_L \sin\theta_k\,\Delta t \qquad \theta_{k+1} = \theta_k + \dot\theta_L\,\Delta t

Marco global y marco local del robot con θ = 30°

El robot parte de (0, 0, 30°)(0,\ 0,\ 30°) con velocidades constantes x˙L=0.10\dot x_L = 0.10 m/s y θ˙L=0.4\dot\theta_L = 0.4 rad/s.

  1. Escriba R(θ)−1R(\theta)^{-1} y calcule ξ˙G\dot\xi_G en el instante inicial. Interprete el resultado.
  2. Con Δt=0.5\Delta t = 0.5 s, calcule la pose después de 3 pasos (1.5 s). Dé θ\theta en grados.
  3. Con velocidades constantes el robot recorre un arco de circunferencia de radio R=x˙L/θ˙LR = \dot x_L / \dot\theta_L. La posición exacta después de un tiempo TT es x=R [sin⁡(θ0+θ˙LT)−sin⁡θ0]y=−R [cos⁡(θ0+θ˙LT)−cos⁡θ0]x = R\,[\sin(\theta_0 + \dot\theta_L T) - \sin\theta_0] \qquad y = -R\,[\cos(\theta_0 + \dot\theta_L T) - \cos\theta_0] Calcule RR y la posición exacta en T=1.5T = 1.5 s. ¿De cuánto es el error de la odometría de la parte 2?
  4. Repita el cálculo de la parte 2 usando θk+θ˙L Δt/2\theta_k + \dot\theta_L\,\Delta t/2 en vez de θk\theta_k dentro del seno y el coseno. ¿Cuánto cambia el error? Explique por qué.
  5. Sin calcular, ¿qué pasaría con el error de la parte 2 si se usara Δt=0.05\Delta t = 0.05 s?
Mostrar solución
  1. R(θ)R(\theta) es una rotación, así que su inversa es su transpuesta:

    R(θ)−1=[cos⁡θ−sin⁡θ0sin⁡θcos⁡θ0001]R(\theta)^{-1} = \begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix}

    Con θ=30°\theta = 30°: x˙=0.10cos⁡30°=0.0866\dot x = 0.10\cos 30° = 0.0866 m/s, y˙=0.10sin⁡30°=0.050\dot y = 0.10 \sin 30° = 0.050 m/s, θ˙=0.4\dot\theta = 0.4 rad/s. El robot avanza a 0.10 m/s en la dirección en que mira, que es 30° respecto al eje xx global; el giro es igual en los dos marcos.

  2. Cada paso avanza 0.10×0.5=0.050.10 \times 0.5 = 0.05 m y gira 0.4×0.5=0.20.4 \times 0.5 = 0.2 rad =11.46°= 11.46°.

    Pasoxx (m)yy (m)θ\theta
    00030.00°
    10.04330.025041.46°
    20.08080.058152.92°
    30.11090.098064.38°
  3. R=0.10/0.4=0.25R = 0.10/0.4 = 0.25 m. Ángulo final θ0+0.6\theta_0 + 0.6 rad =64.38°= 64.38°. x=0.25(sin⁡64.38°−sin⁡30°)=0.1004x = 0.25(\sin 64.38° - \sin 30°) = 0.1004 m; y=−0.25(cos⁡64.38°−cos⁡30°)=0.1084y = -0.25(\cos 64.38° - \cos 30°) = 0.1084 m. Error: (0.1109−0.1004)2+(0.0980−0.1084)2=0.0148\sqrt{(0.1109 - 0.1004)^2 + (0.0980 - 0.1084)^2} = 0.0148 m, unos 1.5 cm en solo 15 cm de recorrido.

  4. Con el ángulo medio, la posición después de 3 pasos es (0.1006, 0.1086)(0.1006,\ 0.1086) m y el error baja a unos 0.25 mm, 60 veces menos. La fórmula de la parte 2 avanza todo el paso en la dirección inicial θk\theta_k, aunque durante el paso el robot va girando: siempre “se sale” hacia afuera de la curva. Usar el ángulo de la mitad del paso es usar la dirección promedio, que es casi exactamente la de la cuerda del arco.

  5. El error disminuye mucho: con pasos 10 veces más cortos, el giro en cada paso es 10 veces menor y la aproximación de “avanzar en línea recta” se parece más al arco. Por eso la odometría se actualiza muchas veces por segundo.