El generador de trayectorias en control cinemático opera desacoplando la planificación espacial cartesiana y el mapeo a variables articulares mediante las siguientes etapas:
Se discretiza el segmento rectilíneo en $N=10$ puntos temporales $t_k \in [0, T]$: $$p(t) = p_i + s(t)(p_f - p_i)$$ donde $s(t) \in [0, 1]$ es la ley de evolución temporal suave (polinomio cúbico con velocidad nula en extremos: $s(\tau) = 3\tau^2 - 2\tau^3$, con $\tau = t/T$).
$$\dot{p}(t) = \dot{s}(t)(p_f - p_i), \quad \ddot{p}(t) = \ddot{s}(t)(p_f - p_i)$$Para cada instante $t_k$, se resuelve la cinemática inversa y la cinemática diferencial:
$$q_r(t_k) = f_{\text{cin}}^{-1}(p(t_k))$$ $$\dot{q}_r(t_k) = J^{-1}(q_r(t_k)) \dot{p}(t_k)$$ $$\ddot{q}_r(t_k) = J^{-1}(q_r(t_k)) [\ddot{p}(t_k) - \dot{J}(q_r, \dot{q}_r)\dot{q}_r]$$function [qr, qdr, qddr] = generador_recta_cartesianas(pi, pf, T, N)
% pi, pf: [3x1] vectores posición inicial y final cartesianos
% T: tiempo total de maniobra; N = 10 puntos de evaluación
t = linspace(0, T, N)';
tau = t / T;
s = 3*tau.^2 - 2*tau.^3; % Ley de avance suave cúbico
sd = (6*tau - 6*tau.^2) / T; % Derivada primera
sdd = (6 - 12*tau) / (T^2); % Derivada segunda
qr = zeros(N, 3); qdr = zeros(N, 3); qddr = zeros(N, 3);
for k = 1:N
pk = pi + s(k) * (pf - pi);
vk = sd(k) * (pf - pi);
ak = sdd(k) * (pf - pi);
% 1. Posición articular mediante cinemática inversa
qr(k, :) = cinematica_inversa_3gdl(pk);
% 2. Velocidad articular mediante el Jacobiano
J = jacobiano_geometrico(qr(k, :));
qdr(k, :) = (J \ vk)';
% 3. Aceleración articular
Jdot_qdot = jacobiano_derivada(qr(k, :), qdr(k, :)) * qdr(k, :)';
qddr(k, :) = (J \ (ak - Jdot_qdot))';
end
end
El marco $\{0\}$ se sitúa en el vértice inferior frontal de la base, mientras que $\{1\}$ se ubica en el vértice superior posterior de la rampa: $$p_0^1 = \begin{bmatrix} 4 \\ 2 \\ 3 \end{bmatrix}$$
La hipotenusa de la rampa en el plano $x_0 - z_0$ tiene longitud $L = \sqrt{4^2 + 3^2} = 5$. El ángulo de inclinación es $\theta = \arctan(3/4) \approx 36.87^\circ$, por lo que $\cos\theta = 4/5 = 0.8$ y $\sin\theta = 3/5 = 0.6$.
En un robot con accionamiento indirecto, los motores se acoplan a las articulaciones mediante reductores de engranajes con relación $r_i \gg 1$ ($r_i = \dot{q}_{m,i} / \dot{q}_i$). En notación vectorial: $$q_m = R\, q \iff q = R^{-1} q_m, \qquad R = \text{diag}(r_1, r_2, \dots, r_n)$$ Por conservación de la potencia mecánica transmitida: $\tau = R\, \tau_m \iff \tau_m = R^{-1} \tau$.
La dinámica completa del manipulador formulada en el espacio de los motores ($q_m$) resulta: $$\tau_m = M_{\text{eq}}(q)\,\ddot{q}_m + C_{\text{eq}}(q, \dot{q})\,\dot{q}_m + G_{\text{eq}}(q)$$ donde los tensores reflejados son: $$M_{\text{eq}}(q) = J_m + R^{-1} M(q) R^{-1} = \text{diag}(J_{m1}, \dots, J_{mn}) + \begin{bmatrix} \frac{M_{11}(q)}{r_1^2} & \frac{M_{12}(q)}{r_1 r_2} & \dots \\ \frac{M_{21}(q)}{r_2 r_1} & \frac{M_{22}(q)}{r_2^2} & \dots \\ \vdots & \vdots & \ddots \end{bmatrix}$$
Dado que las reductoras industriales operan en rangos $r_i \approx 50 \sim 150$: