Sigue la cuenta pública + star y nunca te pierdas contenido interesante
Reimpreso de | Tío Trigo
Los amigos que se han involucrado en el control motor o de movimiento deben saber que la curva S es muy importante. Compare la siguiente imagen animada y conocerá los beneficios de la curva S:
Hoy les describiré el algoritmo de planificación de curvas de velocidad S.
1. Introducción
La característica más importante de la aceleración y desaceleración en forma de S es la forma de la curva de aceleración/desaceleración del algoritmo como la letra S. La curva de velocidad de aceleración y desaceleración en forma de S es suave, lo que puede reducir el impacto en el proceso de control y hacer que el proceso de interpolación sea flexible [ ^1]. Dado que la curva en forma de T en realidad tiene un gran sobrepaso durante el proceso de cambio de aceleración a velocidad constante, aquí hay una comparación entre el proceso real de la curva T y la curva S de 7 segmentos ;
Forma de T : Acelerar->Velocidad constante->Desacelerar
Forma de S : Aceleración ( ) -> Aceleración uniforme ( ) -> Desaceleración ( ) -> Uniforme ( ) -> Aceleración ( ) -> Desaceleración uniforme ( ) -> Desaceleración ( )
La descripción del texto anterior sobre la aceleración puede ser un poco complicada de leer. Vea la imagen a continuación:
2 Análisis teórico
Dado que la aceleración de la curva S cambia durante la aceleración y desaceleración, aquí se introduce una nueva variable, a saber, tirón .
Por lo tanto, en la curva de velocidad S de 7 segmentos correspondiente a la figura anterior , la aceleración máxima se estipula como y la aceleración mínima es, entonces la relación entre aceleraciones es;
Jerk (): aumenta gradualmente;
en este momento
Aceleración uniforme (): alcanza el máximo;
en este momento
Desaceleración (): disminuir gradualmente;
en este momento
uniforme (): sin cambios;
en este momento
Aceleración/Desaceleración (): Aumentar gradualmente;
en este momento
Desaceleración uniforme (): alcanza el máximo;
en este momento
Disminución (): disminuir gradualmente;
en este momento
“es el valor absoluto de la aceleración; donde
Por lo tanto, generalmente es necesario determinar los tres parámetros más básicos del sistema: la velocidad máxima del sistema, la aceleración máxima a__{max} y la sacudida, y luego se puede determinar todo el proceso de operación [^ 2];
Velocidad máxima : refleja la capacidad operativa máxima del sistema;
Aceleración máxima : refleja la capacidad máxima de aceleración y desaceleración del sistema;
Jerk : refleja la flexibilidad del sistema;
Cuanto mayor sea la flexibilidad, mayor será el exceso y menor será el tiempo de ejecución;
Cuanto menor sea la flexibilidad, menor será el exceso y mayor será el tiempo de ejecución;
2.1 Ecuación de relación del tiempo de aceleración
Todo el proceso de cambio de aceleración se muestra específicamente en la siguiente figura;
Nuevamente, enfatice la relación entre y e introduzca variables aquí,
①
Por ejemplo, si el momento actual está en el intervalo, entonces si se usa como punto inicial, es el tiempo relativo al momento, entonces hay:
La función de relación entre aceleración y tiempo se puede obtener de la siguiente manera:
a'
Según la fórmula ①, sustituyendo en la fórmula ② podemos obtener:
En la fórmula anterior;
2.2 Ecuación de la relación velocidad-tiempo
La velocidad y la aceleración se satisfacen; la relación entre tirón y velocidad satisface:
Combinando la relación del tiempo de aceleración con la ecuación ②, se puede obtener la relación de la curva de velocidad. La relación específica se muestra en la siguiente figura; se
puede obtener una mayor simplificación:
2.3 Ecuación de relación de tiempo de desplazamiento
El desplazamiento y la sacudida satisfacen directamente la relación de la siguiente manera:
derivación simple
Entonces podemos obtener:
“Casi se me han olvidado los puntos, así que los repasaré cuando vuelva;
La ecuación para el desplazamiento final se muestra a continuación;
3 ideas para la implementación del programa
Como se mencionó anteriormente, la planificación de la curva S necesita determinar los tres parámetros más básicos del sistema: velocidad máxima del sistema, aceleración máxima a_max y sacudida, para que se pueda determinar el proceso operativo. Aquí hay una condición implícita, es decir, la velocidad máxima que se puede alcanzar durante la operación, esta es la curva S completa de 7 segmentos . Además, existen algunos parámetros intermedios:
, entonces alli esta;
idiota;
;
, el usuario especifica el tiempo requerido para todo el proceso en ejecución;
Pero normalmente en el proceso real, nos preocupamos por...
3.1 Derivación
Se supone que existe el estado ideal.y , el proceso de derivación es el siguiente:
Entonces podemos obtener:
Después de la simplificación obtenemos:
Según la fórmula ②, podemos saber:
Finalmente obtuve:
“es la velocidad inicial;
El siguiente programa de discretización se puede escribir basándose en la ecuación de relación desplazamiento-tiempo .
Suponiendo que se puede alcanzar la velocidad máxima y el usuario proporciona el tiempo de ejecución de todo el proceso, la derivación es la siguiente:
Simplificando la fórmula anterior podemos obtener:
Según la fórmula anterior, podemos obtener:
Derivación de 3.2
En este momento aún queda un cálculo por hacer, el cual se puede deducir de las mediciones; en primer lugar, los desplazamientos satisfacen la siguiente relación:
dónde está la longitud de la zona de aceleración, dónde está la longitud de la zona de desaceleración;
Derivación específica; [^2] Como se mencionó anteriormente, entonces cuando = 0, entonces
â'£
Aquí hay una deducción simple:
â'¤
Según ④, ⑤ finalmente se simplifica a :
“: es el tiempo total de carrera: es la distancia total de carrera
El proceso de derivación detallado es el siguiente:
porque:
porque:
Entonces, simplificando se obtiene:
Entonces puedes obtener:
porque:
Sustituyendo esto obtenemos:
Simplifica para obtener el resultado final :
4 programas matlab
El programa Matlab se puede ejecutar después de una prueba personal con modificaciones simples. Debido a que aquí se proporciona directamente el tiempo de todo el proceso de ejecución, el SCurvePara
valor de la aceleración debe encontrarse en la función y la distancia es 1:
SCurvePara
function [Tf1,V,A,J,T] = SCurvePara(Tf, v, a)
T = zeros(1,7);
for i=1:1000
% 加加速度 J
J = (a^2 * v) / (Tf*v*a - v^2 - a);
% Tk
T(1) = a / J;
T(2) = v / a - a / J; % t2 = v / a - t1;
T(3) = T(1);
T(4) = Tf - 2 * a / J - 2 * v / a; % t4 = Tf - 4*t1 - 2*t2;
T(5) = T(3);
T(6) = T(2);
T(7) = T(1);
% 根据T2和T4判断S曲线的类型
if T(2) < -1e-6
a = sqrt(v*J);
display('t2<0');
elseif T(4) < -1e-6
v = Tf*a/2 - a*a/J;
display('t4<0');
elseif J < -1e-6
Tf = (v^2 + a) / (v*a) + 1e-1;
display('J<0');
else
break;
end
end
A = a;
V = v;
Tf1 = Tf;
end
SCurveScaling
function s = SCurveScaling(t,V,A,J,T,Tf)
% J = (A^2 * V) / (Tf*V*A - V^2 - A);
% T(1) = A / J;
% T(2) = V / A - A / J; % T(2) = V / A - T(1);
% T(3) = T(1);
% T(4) = Tf - 2 * A / J - 2 * V / A; % T(4) = Tf - 4*T(1) - 2*T(2);
% T(5) = T(3);
% T(6) = T(2);
% T(7) = T(1);
%%
if (t >= 0 && t <= T(1))
s = 1/6 * J * t^3;
elseif ( t > T(1) && t <= T(1)+T(2) )
dt = t - T(1);
s = 1/2 * A * dt^2 + A^2/(2*J) * dt...
+ A^3/(6*J^2);
elseif ( t > T(1)+T(2) && t <= T(1)+T(2)+T(3) )
dt = t - T(1) - T(2);
s = -1/6*J*dt^3 + 1/2*A*dt^2 + (A*T(2) + A^2/(2*J))*dt ...
+ 1/2*A*T(2)^2 + A^2/(2*J)*T(2) + A^3/(6*J^2);
elseif ( t > T(1)+T(2)+T(3) && t <= T(1)+T(2)+T(3)+T(4) )
dt = t - T(1) - T(2) - T(3);
s = V*dt ...
+ (-1/6*J*T(3)^3) + 1/2*A*T(3)^2 + (A*T(2) + A^2/(2*J))*T(3) + 1/2*A*T(2)^2 + A^2/(2*J)*T(2) + A^3/(6*J^2);
elseif ( t > T(1)+T(2)+T(3)+T(4) && t <= T(1)+T(2)+T(3)+T(4)+T(5) )
t_temp = Tf - t;
dt = t_temp - T(1) - T(2);
s = -1/6*J*dt^3 + 1/2*A*dt^2 + (A*T(2) + A^2/(2*J))*dt ...
+ 1/2*A*T(2)^2 + A^2/(2*J)*T(2) + A^3/(6*J^2);
s = 1 - s;
elseif ( t > T(1)+T(2)+T(3)+T(4)+T(5) && t <= T(1)+T(2)+T(3)+T(4)+T(5)+T(6) )
t_temp = Tf - t;
dt = t_temp - T(1);
s = 1/2 * A * dt^2 + A^2/(2*J) * dt + A^3/(6*J^2);
s = 1 - s;
elseif ( t > T(1)+T(2)+T(3)+T(4)+T(5)+T(6) && t <= T(1)+T(2)+T(3)+T(4)+T(5)+T(6)+T(7) + 1e5 )
t_temp = Tf - t;
s = 1/6 * J * t_temp^3;
s = 1 - s;
end
end
El código para la prueba es el siguiente:TEST
%%
N = 500;
ThetaStart = 0; %起始位置
ThetaEnd = 90; %最终位置
VTheta = 90; %1 速度
ATheta = 135; %1.5 加速度
Tf = 1.8; % 总行程时间
v = VTheta/(ThetaEnd - ThetaStart);
a = ATheta/(ThetaEnd - ThetaStart);
v = abs(v);
a = abs(a);
Theta = zeros(1,N);
s = zeros(1,N);
sd = zeros(1,N);
sdd = zeros(1,N);
[TF,V,A,J,T] = SCurvePara(Tf, v, a);
display(J, 'J:');
display(TF,'Tf:');
display(V,'v:');
display(A, 'da:');
display(TF-Tf,'dTf:');
display(V-v,'dv:');
display(A-a, 'da:');
t=linspace(0,TF,N);
dt = t(2) - t(1);
for i = 1:N
if i == N
a = a;
end
s(i) = SCurveScaling(t(i),V,A,J,T,TF);
Theta(i) = ThetaStart + s(i) * (ThetaEnd - ThetaStart);
if i>1
sd(i-1) = (s(i) - s(i-1)) / dt;
end
if i>2
sdd(i-2) = (sd(i-1) - sd(i-2)) / dt;
end
end
subplot(3,1,1);
legend('Theta');
xlabel('t');
subplot(3,1,1);
plot(t,s)
legend('位移');
xlabel('t');
title('位置曲线');
subplot(3,1,2);
plot(t,sd);
legend('速度');
xlabel('t');
title('速度曲线');
subplot(3,1,3);
plot(t,sdd);
legend('加速度');
xlabel('t');
title('加速度曲线');
Vea que los resultados finales de la simulación sean los mismos que se esperaban;
Finalmente, echemos un vistazo a la comparación de los efectos de la planificación de curvas de velocidad en forma de T y en forma de S:
5 Resumen
Este artículo solo brinda una derivación detallada y una introducción a la planificación de la curva S de 7 segmentos. Los programas en Matlab se implementan tanto para segmentos de 4 como para segmentos de 5. Muchos de ellos se deducen en condiciones ideales. La velocidad inicial por defecto es 0 y la velocidad terminal también es 0, y se supone que las áreas de aceleración y desaceleración son simétricas entre sí. El resultado final de carrera está en línea con las expectativas.
6 Referencia
[1]: Chen Youdong, Wei Hongxing, Wang Qikui. Algoritmos discretos de aceleración y desaceleración lineal y en forma de S para sistemas CNC [D] Beijing: China Mechanical Engineering, 2010. [2]: Guo Xingui, Li Congxin, Investigación sobre Algoritmo de aceleración y desaceleración de curva S,
Centro de Investigación de Ingeniería CAD de Moldes Nacionales de la Universidad Jiao Tong de Shanghai, 200030
------------ FIN ------------
●Columna "Herramientas integradas "
●Columna "Desarrollo integrado"
●Tutoriales seleccionados de columnas integradas
Siga la cuenta oficial y responda " Agregar grupo " para unirse al grupo de intercambio técnico de acuerdo con las reglas, y responda " 1024 " para ver más contenido.
Haga clic en " Leer el texto original " para ver más contenido compartido.