文章目录
- 一、7种速度规划对比
- 二、7种速度规划示例演示
一、7种速度规划对比
一般地,速度规划输入参数为:长度 L L L,起始速度 v s v_s vs,结束速度 v e v_e ve,最大速度 v c v_c vc,加速度 a c c acc acc,减速度 d e c dec dec,二次加速度 j e r k jerk jerk,三次加速度 s n a p snap snap,四次加速度 c r a c k l e crackle crackle。下面通过对比7种速度规划生成的位置、速度、加速度、二次加速度、三次加速度及四次加速度曲线的连续性与平滑性,可控性(是否可以限制在给定值以内),规划总时间长短,算法计算量四个方面来比较7种速度规划算法。
1、梯形速度规划
(1) 位置平滑,速度连续但不平滑,加速度跳变,二次加速度出现无穷大跳变;
(2) 速度、加速度可控,更高阶不可控;
(3) 所有速度规划算法中规划时间最短;
(4) 算法最简单、计算量最小。
1.1 只有一段
当 L = 1 , v s = 0 , v c = 10 , v e = 10 , a c c = 50 , d e c = 123 ( 任 意 ) L=1, v_s=0, v_c=10, v_e=10, acc =50, dec=123(任意) L=1,vs=0,vc=10,ve=10,acc=50,dec=123(任意)时,只有加速段。
当 L = 1 , v s = 1 , v c = 1 , v e = 1 , a c c = 123 ( 任 意 ) , d e c = 123 ( 任 意 ) L=1, v_s=1, v_c=1, v_e=1, acc =123(任意), dec=123(任意) L=1,vs=1,vc=1,ve=1,acc=123(任意),dec=123(任意)时,只有匀速段。
当 L = 1 , v s = 10 , v c = 10 , v e = 0 , a c c = 123 ( 任 意 ) , d e c = 50 L=1, v_s=10, v_c=10, v_e=0, acc =123(任意), dec=50 L=1,vs=10,vc=10,ve=0,acc=123(任意),dec=50时,只有减速段。
1.2 只有两段
当 L = 1 , v s = 0 , v c = 10 , v e = 10 , a c c = 80 , d e c = 123 ( 任 意 ) L=1, v_s=0, v_c=10, v_e=10, acc =80, dec=123(任意) L=1,vs=0,vc=10,ve=10,acc=80,dec=123(任意)时,只有加速段+匀速段 。
当 L = 1 , v s = 10 , v c = 10 , v e = 0 , a c c = 123 ( 任 意 ) , d e c = 80 L=1, v_s=10, v_c=10, v_e=0, acc =123(任意), dec=80 L=1,vs=10,vc=10,ve=0,acc=123(任意),dec=80时,只有匀速段 +减速段。
当 L = 1 , v s = 1 , v c = 6 , v e = 2 , a c c = 20 , d e c = 30 L=1, v_s=1, v_c=6, v_e=2, acc =20,dec=30 L=1,vs=1,vc=6,ve=2,acc=20,dec=30时,只有加速段+减速段 。
1.3 有三段(加速段+匀速段 +减速段)
当 L = 1 , v s = 1 , v c = 3 , v e = 2 , a c c = 40 , d e c = 30 L=1, v_s=1, v_c=3, v_e=2, acc =40 ,dec=30 L=1,vs=1,vc=3,ve=2,acc=40,dec=30时,有加速段+匀速段 +减速段。
2、余弦速度规划
(1) 位置平滑,速度平滑,加速度连续但不够平滑,二次加速度跳变;
(2) 速度、加速度可控,更高阶不可控;
(3) 规划时间较长;
(4) 算法较简单、计算量较小。
2.1 只有一段
当 L = 1 , v s = 0 , v c = 10 , v e = 10 , a c c = 78.5398 , d e c = 123 ( 任 意 ) L=1, v_s=0, v_c=10, v_e=10, acc =78.5398, dec=123(任意) L=1,vs=0,vc=10,ve=10,acc=78.5398,dec=123(任意)时,只有加速段。
当 L = 1 , v s = 1 , v c = 1 , v e = 1 , a c c = 123 ( 任 意 ) , d e c = 123 ( 任 意 ) L=1, v_s=1, v_c=1, v_e=1, acc =123(任意), dec=123(任意) L=1,vs=1,vc=1,ve=1,acc=123(任意),dec=123(任意)时,只有匀速段。
当$L=1, v_s=10, v_c=10, v_e=0, acc =123(任意), dec=78.5398时,只有减速段。
2.2 只有两段
当 L = 1 , v s = 0 , v c = 10 , v e = 10 , a c c = 100 , d e c = 123 ( 任 意 ) L=1, v_s=0, v_c=10, v_e=10, acc =100, dec=123(任意) L=1,vs=0,vc=10,ve=10,acc=100,dec=123(任意)时,只有加速段+匀速段 。
当 L = 1 , v s = 10 , v c = 10 , v e = 0 , a c c = 123 ( 任 意 ) , d e c = 100 L=1, v_s=10, v_c=10, v_e=0, acc =123(任意), dec=100 L=1,vs=10,vc=10,ve=0,acc=123(任意),dec=100时,只有匀速段 +减速段。
当 L = 1 , v s = 1 , v c = 6 , v e = 2 , a c c = 20 , d e c = 30 L=1, v_s=1, v_c=6, v_e=2, acc =20, dec=30 L=1,vs=1,vc=6,ve=2,acc=20,dec=30时,只有加速段+减速段 。
2.3 有三段(加速段+匀速段 +减速段)
当 L = 1 , v s = 1 , v c = 3 , v e = 2 , a c c = 40 , d e c = 30 L=1, v_s=1, v_c=3, v_e=2, acc =40 ,dec=30 L=1,vs=1,vc=3,ve=2,acc=40,dec=30时,有加速段+匀速段 +减速段。
3、多项式速度规划
(1) 位置平滑,速度平滑,加速度平滑,二次加速度连续但不够平滑,三次加速度跳变;
(2) 速度、加速度、二次加速度可控,更高阶不可控;
(3) 规划时间长;
(4) 算法较简单、计算量较小。
3.1 只有一段
当 L = 1 , v s = 0 , v c = 10 , v e = 10 , a c c = 93.75 , d e c = 123 ( 任 意 ) , j e r k = 2000 L=1, v_s=0, v_c=10, v_e=10, acc =93.75, dec=123(任意),jerk=2000 L=1,vs=0,vc=10,ve=10,acc=93.75,dec=123(任意),jerk=2000时,只有加速段。
当 L = 1 , v s = 1 , v c = 1 , v e = 1 , a c c = 123 ( 任 意 ) , d e c = 123 ( 任 意 ) , j e r k = 123 ( 任 意 ) L=1, v_s=1, v_c=1, v_e=1, acc =123(任意), dec=123(任意), jerk=123(任意) L=1,vs=1,vc=1,ve=1,acc=123(任意),dec=123(任意),jerk=123(任意)时,只有匀速段。
当 L = 1 , v s = 10 , v c = 10 , v e = 0 , a c c = 123 ( 任 意 ) , d e c = 93.75 , j e r k = 2000 L=1, v_s=10, v_c=10, v_e=0, acc =123(任意), dec=93.75,jerk=2000 L=1,vs=10,vc=10,ve=0,acc=123(任意),dec=93.75,jerk=2000时,只有减速段。
2.2 只有两段
当 L = 1 , v s = 0 , v c = 10 , v e = 10 , a c c = 150 , d e c = 123 ( 任 意 ) , j e r k = 2000 L=1, v_s=0, v_c=10, v_e=10, acc =150, dec=123(任意),jerk=2000 L=1,vs=0,vc=10,ve=10,acc=150,dec=123(任意),jerk=2000时,只有加速段+匀速段 。
当 L = 1 , v s = 10 , v c = 10 , v e = 0 , a c c = 123 ( 任 意 ) , d e c = 150 , j e r k = 2000 L=1, v_s=10, v_c=10, v_e=0, acc =123(任意), dec=150,jerk=2000 L=1,vs=10,vc=10,ve=0,acc=123(任意),dec=150,jerk=2000时,只有匀速段 +减速段。
当 L = 1 , v s = 1 , v c = 6 , v e = 2 , a c c = 20 , d e c = 30 , j e r k = 2000 L=1, v_s=1, v_c=6, v_e=2, acc =20,dec=30,jerk=2000 L=1,vs=1,vc=6,ve=2,acc=20,dec=30,jerk=2000时,只有加速段+减速段 。
3.3 有三段(加速段+匀速段 +减速段)
当 L = 1 , v s = 1 , v c = 3 , v e = 2 , a c c = 40 , d e c = 30 , j e r k = 2000 L=1, v_s=1, v_c=3, v_e=2, acc =40 ,dec=30,jerk=2000 L=1,vs=1,vc=3,ve=2,acc=40,dec=30,jerk=2000时,有加速段+匀速段 +减速段。
4、7段S型速度规划
(1) 位置平滑,速度平滑,加速度连续但不平滑,二次加速度跳变;
(2) 速度、加速度、二次加速度可控,更高阶不可控;
(3) 规划时间较短;
(4) 算法稍复杂、计算量稍大。
4.1 只有加速段
L = 0.36742346 , v s = 0 , v c = 3 , v e = 3 , a c c = 40 , d e c = 123 ( 任 意 ) , j e r k = 200 L=0.36742346, v_s=0, v_c=3, v_e=3, acc =40 ,dec=123(任意),jerk=200 L=0.36742346,vs=0,vc=3,ve=3,acc=40,dec=123(任意),jerk=200
L = 0.24 , v s = 0 , v c = 3 , v e = 3 , a c c = 30 , d e c = 123 ( 任 意 ) , j e r k = 500 L=0.24, v_s=0, v_c=3, v_e=3, acc =30 ,dec=123(任意),jerk=500 L=0.24,vs=0,vc=3,ve=3,acc=30,dec=123(任意),jerk=500
4.2 只有匀速段
L = 1 , v s = 1 , v c = 1 , v e = 1 , a c c = 123 ( 任 意 ) , d e c = 123 ( 任 意 ) , j e r k = 123 ( 任 意 ) L=1, v_s=1, v_c=1, v_e=1, acc =123(任意), dec=123(任意), jerk=123(任意) L=1,vs=1,vc=1,ve=1,acc=123(任意),dec=123(任意),jerk=123(任意)
4.3 只有减速段
L = 0.36742346 , v s = 3 , v c = 3 , v e = 0 , a c c = 123 ( 任 意 ) , d e c = 40 , j e r k = 200 L=0.36742346, v_s=3, v_c=3, v_e=0, acc =123(任意) ,dec=40,jerk=200 L=0.36742346,vs=3,vc=3,ve=0,acc=123(任意),dec=40,jerk=200
L = 0.24 , v s = 3 , v c = 3 , v e = 0 , a c c = 123 ( 任 意 ) , d e c = 30 , j e r k = 500 L=0.24, v_s=3, v_c=3, v_e=0, acc =123(任意) ,dec=30,jerk=500 L=0.24,vs=3,vc=3,ve=0,acc=123(任意),dec=30,jerk=500
4.4 只有加速段+匀速段
L = 0.36742346 , v s = 0 , v c = 2 , v e = 2 , a c c = 40 , d e c = 123 ( 任 意 ) , j e r k = 200 L=0.36742346, v_s=0, v_c=2, v_e=2, acc =40 ,dec=123(任意),jerk=200 L=0.36742346,vs=0,vc=2,ve=2,acc=40,dec=123(任意),jerk=200
L = 0.24 , v s = 0 , v c = 3 , v e = 3 , a c c = 30 , d e c = 123 ( 任 意 ) , j e r k = 1000 L=0.24, v_s=0, v_c=3, v_e=3, acc =30 ,dec=123(任意),jerk=1000 L=0.24,vs=0,vc=3,ve=3,acc=30,dec=123(任意),jerk=1000
4.5 只有匀速段+减速段
L = 0.36742346 , v s = 2 , v c = 2 , v e = 0 , a c c = 123 ( 任 意 ) , d e c = 40 , j e r k = 200 L=0.36742346, v_s=2, v_c=2, v_e=0, acc =123(任意) ,dec=40,jerk=200 L=0.36742346,vs=2,vc=2,ve=0,acc=123(任意),dec=40,jerk=200
L = 0.24 , v s = 3 , v c = 3 , v e = 0 , a c c = 123 ( 任 意 ) , d e c = 30 , j e r k = 1000 L=0.24, v_s=3, v_c=3, v_e=0, acc =123(任意) ,dec=30,jerk=1000 L=0.24,vs=3,vc=3,ve=0,acc=123(任意),dec=30,jerk=1000
4.6 只有加速段+减速段
L = 1 , v s = 1 , v c = 6 , v e = 2 , a c c = 60 , d e c = 80 , j e r k = 500 L=1, v_s=1, v_c=6, v_e=2, acc =60 ,dec=80,jerk=500 L=1,vs=1,vc=6,ve=2,acc=60,dec=80,jerk=500
L = 1 , v s = 1 , v c = 6 , v e = 2 , a c c = 50 , d e c = 80 , j e r k = 800 L=1, v_s=1, v_c=6, v_e=2, acc =50 ,dec=80,jerk=800 L=1,vs=1,vc=6,ve=2,acc=50,dec=80,jerk=800
L = 1 , v s = 2 , v c = 6 , v e = 1 , a c c = 80 , d e c = 60 , j e r k = 800 L=1, v_s=2, v_c=6, v_e=1, acc =80 ,dec=60,jerk=800 L=1,vs=2,vc=6,ve=1,acc=80,dec=60,jerk=800
L = 1 , v s = 2 , v c = 6 , v e = 1 , a c c = 40 , d e c = 50 , j e r k = 800 L=1, v_s=2, v_c=6, v_e=1, acc =40 ,dec=50,jerk=800 L=1,vs=2,vc=6,ve=1,acc=40,dec=50,jerk=800
4.7 加速段+匀速段+减速段
L = 1 , v s = 2 , v c = 4 , v e = 1 , a c c = 40 , d e c = 50 , j e r k = 400 L=1, v_s=2, v_c=4, v_e=1, acc =40 ,dec=50,jerk=400 L=1,vs=2,vc=4,ve=1,acc=40,dec=50,jerk=400
L = 1 , v s = 2 , v c = 4 , v e = 1 , a c c = 20 , d e c = 40 , j e r k = 400 L=1, v_s=2, v_c=4, v_e=1, acc =20 ,dec=40,jerk=400 L=1,vs=2,vc=4,ve=1,acc=20,dec=40,jerk=400
L = 1 , v s = 2 , v c = 4 , v e = 1 , a c c = 40 , d e c = 30 , j e r k = 400 L=1, v_s=2, v_c=4, v_e=1, acc =40 ,dec=30,jerk=400 L=1,vs=2,vc=4,ve=1,acc=40,dec=30,jerk=400
L = 1 , v s = 2 , v c = 4 , v e = 1 , a c c = 30 , d e c = 40 , j e r k = 800 L=1, v_s=2, v_c=4, v_e=1, acc =30 ,dec=40,jerk=800 L=1,vs=2,vc=4,ve=1,acc=30,dec=40,jerk=800
5、7段修正S型速度规划
(1) 位置平滑,速度平滑,加速度连续但不够平滑,二次加速度跳变;
(2) 速度、加速度、二次加速度可控,更高阶不可控;
(3) 规划时间较短;
(4) 算法稍复杂、计算量稍大。
5.1 只有加速段
L = 0.496729413289805 , v s = 0 , v c = 10 , v e = 10 , a c c = 200 , d e c = 123 ( 任 意 ) , j e r k = 5000 L=0.496729413289805, v_s=0, v_c=10, v_e=10, acc =200 ,dec=123(任意),jerk=5000 L=0.496729413289805,vs=0,vc=10,ve=10,acc=200,dec=123(任意),jerk=5000
L = 0.614159265358979 , v s = 0 , v c = 10 , v e = 10 , a c c = 100 , d e c = 123 ( 任 意 ) , j e r k = 5000 L=0.614159265358979, v_s=0, v_c=10, v_e=10, acc =100 ,dec=123(任意),jerk=5000 L=0.614159265358979,vs=0,vc=10,ve=10,acc=100,dec=123(任意),jerk=5000
5.2 只有匀速段
L = 1 , v s = 1 , v c = 1 , v e = 1 , a c c = 123 ( 任 意 ) , d e c = 123 ( 任 意 ) , j e r k = 123 ( 任 意 ) L=1, v_s=1, v_c=1, v_e=1, acc =123(任意), dec=123(任意), jerk=123(任意) L=1,vs=1,vc=1,ve=1,acc=123(任意),dec=123(任意),jerk=123(任意)
5.3 只有减速段
L = 0.496729413289805 , v s = 10 , v c = 10 , v e = 0 , a c c = 123 ( 任 意 ) , d e c = 200 , j e r k = 5000 L=0.496729413289805, v_s=10, v_c=10, v_e=0, acc =123(任意),dec=200,jerk=5000 L=0.496729413289805,vs=10,vc=10,ve=0,acc=123(任意),dec=200,jerk=5000
L = 0.614159265358979 , v s = 10 , v c = 10 , v e = 0 , a c c = 123 ( 任 意 ) , d e c = 100 , j e r k = 5000 L=0.614159265358979, v_s=10, v_c=10, v_e=0, acc =123(任意) ,dec=100,jerk=5000 L=0.614159265358979,vs=10,vc=10,ve=0,acc=123(任意),dec=100,jerk=5000
5.4 只有加速段+匀速段
L = 0.61415926 , v s = 0 , v c = 10 , v e = 10 , a c c = 300 , d e c = 123 ( 任 意 ) , j e r k = 5000 L=0.61415926, v_s=0, v_c=10, v_e=10, acc =300 ,dec=123(任意),jerk=5000 L=0.61415926,vs=0,vc=10,ve=10,acc=300,dec=123(任意),jerk=5000
L = 0.61415926 , v s = 0 , v c = 10 , v e = 10 , a c c = 150 , d e c = 123 ( 任 意 ) , j e r k = 8000 L=0.61415926, v_s=0, v_c=10, v_e=10, acc =150 ,dec=123(任意),jerk=8000 L=0.61415926,vs=0,vc=10,ve=10,acc=150,dec=123(任意),jerk=8000
5.5 只有匀速段+减速段
L = 0.61415926 , v s = 10 , v c = 10 , v e = 0 , a c c = 123 ( 任 意 ) , d e c = 300 , j e r k = 5000 L=0.61415926, v_s=10, v_c=10, v_e=0, acc =123(任意) ,dec=300,jerk=5000 L=0.61415926,vs=10,vc=10,ve=0,acc=123(任意),dec=300,jerk=5000
L = 0.61415926 , v s = 10 , v c = 10 , v e = 0 , a c c = 123 ( 任 意 ) , d e c = 150 , j e r k = 8000 L=0.61415926, v_s=10, v_c=10, v_e=0, acc =123(任意) ,dec=150,jerk=8000 L=0.61415926,vs=10,vc=10,ve=0,acc=123(任意),dec=150,jerk=8000
5.6 只有加速段+减速段
L = 1 , v s = 1 , v c = 6 , v e = 2 , a c c = 60 , d e c = 80 , j e r k = 500 L=1, v_s=1, v_c=6, v_e=2, acc =60 ,dec=80,jerk=500 L=1,vs=1,vc=6,ve=2,acc=60,dec=80,jerk=500
L = 1 , v s = 1 , v c = 6 , v e = 2 , a c c = 40 , d e c = 80 , j e r k = 1200 L=1, v_s=1, v_c=6, v_e=2, acc =40 ,dec=80,jerk=1200 L=1,vs=1,vc=6,ve=2,acc=40,dec=80,jerk=1200
L = 1 , v s = 2 , v c = 6 , v e = 1 , a c c = 80 , d e c = 40 , j e r k = 1200 L=1, v_s=2, v_c=6, v_e=1, acc =80 ,dec=40,jerk=1200 L=1,vs=2,vc=6,ve=1,acc=80,dec=40,jerk=1200
L = 1 , v s = 2 , v c = 6 , v e = 1 , a c c = 40 , d e c = 30 , j e r k = 1200 L=1, v_s=2, v_c=6, v_e=1, acc =40 ,dec=30,jerk=1200 L=1,vs=2,vc=6,ve=1,acc=40,dec=30,jerk=1200
5.7 加速段+匀速段+减速段
L = 1 , v s = 2 , v c = 3 , v e = 1 , a c c = 40 , d e c = 50 , j e r k = 400 L=1, v_s=2, v_c=3, v_e=1, acc =40 ,dec=50,jerk=400 L=1,vs=2,vc=3,ve=1,acc=40,dec=50,jerk=400
L = 1 , v s = 2 , v c = 3 , v e = 1 , a c c = 20 , d e c = 40 , j e r k = 1000 L=1, v_s=2, v_c=3, v_e=1, acc =20 ,dec=40,jerk=1000 L=1,vs=2,vc=3,ve=1,acc=20,dec=40,jerk=1000
L = 1 , v s = 2 , v c = 3 , v e = 1 , a c c = 40 , d e c = 20 , j e r k = 1000 L=1, v_s=2, v_c=3, v_e=1, acc =40 ,dec=20,jerk=1000 L=1,vs=2,vc=3,ve=1,acc=40,dec=20,jerk=1000
L = 1 , v s = 2 , v c = 4 , v e = 1 , a c c = 30 , d e c = 40 , j e r k = 3000 L=1, v_s=2, v_c=4, v_e=1, acc =30 ,dec=40,jerk=3000 L=1,vs=2,vc=4,ve=1,acc=30,dec=40,jerk=3000
6、15段S型速度规划
(1) 位置平滑,速度平滑,加速度平滑,二次加速度连续但不平滑,三次加速度跳变;
(2) 速度、加速度、二次加速度、三次加速度可控,四次加速度不可控;
(3) 规划时间稍长;
(4) 算法较复杂、计算量较大。
7、31段S型速度规划
(1) 位置平滑,速度平滑,加速度平滑,二次加速度平滑,三次加速度连续但不平滑,四次加速度跳变;
(2) 位置的各阶导皆可控;
(3) 规划时间稍长;
(4) 算法较复杂、计算量较大。
总体来说:
连续性与平滑性:31段S型 > > > 多项式 ≈ \approx ≈ 15段S型 > > > 7段修正S型 > > > 余弦 > > > 7段S型 > > > 梯形;
可控性:31段S型 > > > 15段S型 > > > 7段修正S型 = = = 7段S型 = = = 多项式 > > > 余弦 = = = 梯形;
规划总时间:多项式 > > > 余弦 > > > 31段S型 > > > 15段S型 > > > 7段修正S型 > > > 7段S型 > > > 梯形;
算法计算量:31段S型 > > > 15段S型 > > > 7段修正S型 > > > 7段S型 > > > 多项式 ≈ \approx ≈ 余弦 > > > 梯形。
根据以上的对比,7种速度规划算法大致可分为低中高端三档。
低档:梯形、余弦(普通学者,自身“阶数”较低,专业技能浮于表面,自律能力较差)
中档:多项式、7段S型、7段修正S型(专家,自身“阶数”较高,专业技能深入,需要深入了解才能知道其学术造诣之深,自律能力强)
高档:15段S型、31段S型(大师,自身“阶数”高,专业技能出神入化,需要一定造诣的人深入洞悉才能领悟其所思所为之精妙,自律能力非常人所能及)
二、7种速度规划示例演示
笔者采用统一的框架实现了以上7种速度规划算法,所有核心算法均用c语言实现,不调用第三方算法库,采用QT实现图形用户界面。下载链接:robot_velocity_planning _V2.0.rar。下面是示例演示,取长度 L = 300 L=300 L=300,起始速度 v s = 100 v_s = 100 vs=100,结束速度 v e = 200 v_e = 200 ve=200,最大速度 v c = 500 v_c = 500 vc=500,加速度 a c c = 2000 acc = 2000 acc=2000,减速度 d e c = 3000 dec = 3000 dec=3000,二次加速度 j e r k = 50000 jerk = 50000 jerk=50000,三次加速度 s n a p = 3000000 snap = 3000000 snap=3000000,四次加速度 c r a c k l e = 500000000 crackle = 500000000 crackle=500000000。
(73条消息) 速度规划(梯形、余弦、多项式、7段S型、7段修正S型、15段S型、31段S型)_Marc Pony-CSDN博客_速度规划