为了减小机器人加速过程的冲击,这里梳理一下S形加减速相关知识。
1. S加减速曲线

计算公式:
加加速度
j(t)={J0≤t≤t1−Jt1≤t≤t20t2≤t≤t3−Jt3≤t≤t4Jt4≤t≤t5 j(t)=\begin{cases} J & 0\leq t \leq t_1\\ -J & t_1\leq t \leq t_2\\ 0 & t_2\leq t \leq t_3\\ -J & t_3\leq t \leq t_4\\ J & t_4\leq t \leq t_5\\ \end{cases} j(t)=⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧J−J0−JJ0≤t≤t1t1≤t≤t2t2≤t≤t3t3≤t≤t4t4≤t≤t5
加速度:
a(t)={J∗t0≤t≤t1J∗T1−J∗(t−t1)t1≤t≤t20t2≤t≤t3−J∗(t−t3)t3≤t≤t4−J∗T4+J∗(t−t4)t4≤t≤t5 a(t)=\begin{cases} J*t & 0\leq t \leq t_1\\ J*T_1 - J*(t-t_1) & t_1\leq t \leq t_2\\ 0 & t_2\leq t \leq t_3\\ -J*(t-t_3) & t_3\leq t \leq t_4\\ -J*T_4 + J*(t-t_4) & t_4\leq t \leq t_5\\ \end{cases} a(t)=⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧J∗tJ∗T1−J∗(t−t1)0−J∗(t−t3)−J∗T4+J∗(t−t4)0≤t≤t1t1≤t≤t2t2≤t≤t3t3≤t≤t4t4≤t≤t5
速度:
v(t)={vs+J∗t2/20≤t≤t1v1+J∗T1∗(t−t1)−J∗(t−t1)2/2t1≤t≤t2v2t2≤t≤t3v3−J∗(t−t3)2/2t3≤t≤t4v4−J∗T4∗(t−t4)+J∗(t−t4)2/2t4≤t≤t5 v(t)=\begin{cases} v_s + J*t^2/2 & 0\leq t \leq t_1\\ v_1 + J*T_1*(t-t_1) - J*(t-t_1)^2/2 & t_1\leq t \leq t_2\\ v_2 & t_2\leq t \leq t_3\\ v_3 - J*(t-t_3)^2/2 & t_3\leq t \leq t_4\\ v_4 - J*T_4*(t-t_4) + J*(t-t_4)^2/2 & t_4\leq t \leq t_5\\ \end{cases} v(t)=⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧vs+J∗t2/2v1+J∗T1∗(t−t1)−J∗(t−t1)2/2v2v3−J∗(t−t3)2/2v4−J∗T4∗(t−t4)+J∗(t−t4)2/20≤t≤t1t1≤t≤t2t2≤t≤t3t3≤t≤t4t4≤t≤t5
位移:
s(t)={vs∗t+J∗t3/60≤t≤t1s1+v1∗(t−t1)+J∗T1∗(t−t1)2/2−J∗(t−t1)3/6t1≤t≤t2s2+v2∗(t−t2)t2≤t≤t3s3+v3∗(t−t3)−J∗(t−t3)3/6t3≤t≤t4s4+v4∗(t−t4)−J∗T4∗(t−t4)2/2+J∗(t−t4)3/6t4≤t≤t5
s(t)=\begin{cases}
v_s*t + J*t^3/6 & 0\leq t \leq t_1\\
s_1 + v_1*(t-t_1) + J*T_1*(t-t_1)^2/2 - J*(t-t_1)^3/6 & t_1\leq t \leq t_2\\
s_2 + v_2*(t-t_2) & t_2\leq t \leq t_3\\
s_3 + v_3*(t-t_3) - J*(t-t_3)^3/6 & t_3\leq t \leq t_4\\
s_4 + v_4*(t-t_4) - J*T_4*(t-t_4)^2/2 + J*(t-t_4)^3/6 & t_4\leq t \leq t_5\\
\end{cases}
s(t)=⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧vs∗t+J∗t3/6s1+v1∗(t−t1)+J∗T1∗(t−t1)2/2−J∗(t−t1)3/6s2+v2∗(t−t2)s3+v3∗(t−t3)−J∗(t−t3)3/6s4+v4∗(t−t4)−J∗T4∗(t−t4)2/2+J∗(t−t4)3/60≤t≤t1t1≤t≤t2t2≤t≤t3t3≤t≤t4t4≤t≤t5
2. 算法流程(vs=0, ve=0)
已知 位移S,最大速度V 加加速度J,按照如下流程进行速度规划:
第一步,计算加速减速距离:
Sa=Sd=V∗VJ S_a = S_d = V*\sqrt\frac{V}{J} Sa=Sd=V∗JV
第二步,比较位移关系
如果Sa+Sd<=S则:t1=t2=t4=t5=VJt3=S−Sa−SdV 如果 S_a + S_d <= S \\ 则:\\ t_1 = t_2 = t_4 = t_5 = \sqrt\frac{V}{J}\\ t_3 = \frac{S-S_a-S_d}{V} 如果Sa+Sd<=S则:t1=t2=t4=t5=JVt3=VS−Sa−Sd
如果Sa+Sd>S则:V,=(S∗J2)13t1=t2=t4=t5=V,Jt3=0 如果 S_a + S_d > S \\ 则:\\ V^, = (\frac{S*J}{2})^\frac{1}{3} \\ t_1 = t_2 = t_4 = t_5 = \sqrt\frac{V^,}{J}\\ t_3 = 0 如果Sa+Sd>S则:V,=(2S∗J)31t1=t2=t4=t5=JV,t3=0
第三步,即得到每阶段对应的插补时间,即可进行速度插补
3. 算法流程(vs>0或 ve>0)
已知 位移S,起始速度Vs,终止速度Ve,最大速度V 加加速度J,按照如下流程进行速度规划:
第一步,计算加速减速距离:
Sa=(V+Vs)∗V−VsJSd=(V+Ve)∗V−VeJ S_a = (V+V_s)*\sqrt\frac{V-V_s}{J} \\ S_d = (V+V_e)*\sqrt\frac{V-V_e}{J} Sa=(V+Vs)∗JV−VsSd=(V+Ve)∗JV−Ve
第二步,比较位移关系
如果Sa+Sd<=S则:t1=t2=V−VsJt4=t5=V−VeJt3=S−Sa−SdV 如果 S_a + S_d <= S \\ 则:\\ t_1 = t_2 = \sqrt\frac{V-V_s}{J}\\ t_4 = t_5 = \sqrt\frac{V-V_e}{J}\\ t_3 = \frac{S-S_a-S_d}{V} 如果Sa+Sd<=S则:t1=t2=JV−Vst4=t5=JV−Vet3=VS−Sa−Sd
如果 S_a + S_d > S
重新计算最大速度V,因为解析解计算复杂,这里通过二分法逼近,方法如下:
(1)设置v1 = V,v2设置为Vs,Ve中较大的数值
(2)二分法计算最大速度
V=v1+v22 V = \frac{v1+v2}{2} V=2v1+v2
(3)计算加减速距离
Sa=(V+Vs)∗V−VsJSd=(V+Ve)∗V−VeJ S_a = (V+V_s)*\sqrt\frac{V-V_s}{J} \\ S_d = (V+V_e)*\sqrt\frac{V-V_e}{J} Sa=(V+Vs)∗JV−VsSd=(V+Ve)∗JV−Ve
(3)比较位移
如果S>Sa+Sd则:v2=V如果S<Sa+Sd则:v1=V 如果 S > S_a + S_d \\ 则:\\ v2 = V 如果 S < S_a + S_d \\ 则:\\ v1 = V 如果S>Sa+Sd则:v2=V如果S<Sa+Sd则:v1=V
(4) 重复步骤(1)(2)(3),直到
∣S−Sa−Sd∣<ϵ |S-S_a-S_d| < \epsilon ∣S−Sa−Sd∣<ϵ
阈值ε根据实际需求进行设置,通常设置为0.000001,迭代次数不超过10次.

2403

被折叠的 条评论
为什么被折叠?



