圆弧轨迹速度梯形轨迹规划
1. 点到点轨迹规划简介
点到点轨迹规划是让机器人(如机械臂、智能车)在规定时间 T T T内完成一段轨迹(如直线、曲线)。轨迹规划跟路径规划概念不同,轨迹规划是对时间 T T T做规划,也映射到了速度、加速度、加加速度等。路径规划只是规划一条路径,起点到目标点,对时间不做要求,但是对路径的平滑度、距离最短、能量最少、甚至是时间最优(以某个速度完成这段路径)。他们最大的差异在于是否对时间 T T T做规划
PTP(Point to Point,点到点)轨迹规划是已知
起点
θ
s
t
a
r
t
运动到终点
θ
e
n
d
起点\theta_{start}运动到终点\theta_{end}
起点θstart运动到终点θend ,在时间
T
T
T内完成运动。 这里会引入中间变量
s
(
t
)
s(t)
s(t),它是时间的函数,定义域为
[
0
,
T
]
[0,T]
[0,T],值域为
[
0
,
1
]
[0,1]
[0,1]。当
s
=
0
,
θ
=
θ
s
t
a
r
t
。当
s
=
1
,
θ
=
θ
e
n
d
s = 0, \theta = \theta_{start}。当 s = 1, \theta = \theta_{end}
s=0,θ=θstart。当s=1,θ=θend。
因此角度值
θ
在规定时间
T
内从
θ
s
t
a
r
t
到
θ
e
n
d
完成运动,
θ
关于
s
的函数如下
\theta 在规定时间T内从\theta_{start}到\theta_{end}完成运动,\theta关于s的函数如下
θ在规定时间T内从θstart到θend完成运动,θ关于s的函数如下
θ
(
s
)
=
θ
s
t
a
r
t
+
(
θ
e
n
d
−
θ
s
t
a
r
t
)
s
,
s
∈
[
0
,
1
]
s
=
s
(
t
)
,
t
∈
[
0
,
T
]
(1)
\begin{aligned} \theta(s) &= \theta_{start}+(\theta_{end} - \theta_{start})s, s\in\left[ 0,1\right] \\ s &= s(t), t\in\left[ 0,T\right] \tag{1} \end{aligned}
θ(s)s=θstart+(θend−θstart)s,s∈[0,1]=s(t),t∈[0,T](1)
将
θ
对
t
进行求偏导得到速度
将\theta 对 t 进行求偏导得到速度
将θ对t进行求偏导得到速度:
∂
θ
∂
t
=
∂
θ
∂
s
∗
∂
s
∂
t
∵
∂
θ
∂
s
=
θ
e
n
d
−
θ
s
t
a
r
t
∴
∂
θ
∂
t
=
(
θ
e
n
d
−
θ
s
t
a
r
t
)
∂
s
∂
t
(2)
\begin{aligned} \frac{\partial \theta}{\partial t} &= \frac{\partial \theta}{\partial s} * \frac{\partial s}{\partial t} \\ \because \frac{\partial \theta}{\partial s} & = \theta_{end} - \theta_{start} \tag{2} \\ \therefore \frac{\partial \theta}{\partial t} &= (\theta_{end} - \theta_{start}) \frac{\partial s}{\partial t} \end{aligned}
∂t∂θ∵∂s∂θ∴∂t∂θ=∂s∂θ∗∂t∂s=θend−θstart=(θend−θstart)∂t∂s(2)
将
θ
对
t
进行求二阶偏导得到加速度
将\theta 对 t 进行求二阶偏导得到加速度
将θ对t进行求二阶偏导得到加速度:
∂
2
θ
∂
t
2
=
(
θ
e
n
d
−
θ
s
t
a
r
t
)
∂
2
s
∂
t
2
(3)
\begin{aligned} \frac{\partial ^{2} \theta}{\partial t^{2}} =(\theta_{end} - \theta_{start}) \frac{\partial^{2} s}{\partial t^{2}} \tag{3} \end{aligned}
∂t2∂2θ=(θend−θstart)∂t2∂2s(3)
因为
θ
s
t
a
r
t
和
θ
e
n
d
\theta_{start}和\theta_{end}
θstart和θend是已知的,所以速度和加速度随时间的变化取决于
s
=
s
(
t
)
,
t
∈
[
0
,
T
]
s=s(t),t\in[0,T]
s=s(t),t∈[0,T]。一般会有三次多项式、五次多项式、梯形曲线、S型曲线做规划。具体可以参考下面链接点到点轨迹规划。
2. 圆弧轨迹梯形规划
2.1 速度梯形规划
梯形规划是指
s
˙
\dot s
s˙的曲线是梯形。如图所示
s为分段函数,即:
s
(
t
)
=
{
1
2
a
t
2
0
≤
t
≤
v
a
v
t
−
v
2
2
a
v
a
<
t
≤
T
−
v
a
2
a
v
T
−
2
v
2
−
a
2
(
t
−
T
)
2
2
a
T
−
v
a
<
t
≤
T
(4.1)
s(t)= \begin{cases} \frac{1}{2}at^2& 0\leq t \leq \frac{v}{a}\\ vt - \frac{v^2}{2a} & \frac{v}{a} <t \leq T - \frac{v}{a} \\ \frac{ 2avT - 2v^2-a^2(t-T)^2 }{2a}& T-\frac{v}{a}<t\leq T \tag{4.1} \end{cases}
s(t)=⎩
⎨
⎧21at2vt−2av22a2avT−2v2−a2(t−T)20≤t≤avav<t≤T−avT−av<t≤T(4.1)
s
˙
\dot s
s˙为:
s
˙
(
t
)
=
{
a
t
0
≤
t
≤
v
a
v
v
a
<
t
≤
T
−
v
a
−
a
(
t
−
T
)
T
−
v
a
<
t
≤
T
(5.1)
\dot s(t)= \begin{cases} at& 0\leq t \leq \frac{v}{a}\\ v& \frac{v}{a} <t \leq T - \frac{v}{a} \\ -a(t - T)& T-\frac{v}{a}<t\leq T \tag{5.1} \end{cases}
s˙(t)=⎩
⎨
⎧atv−a(t−T)0≤t≤avav<t≤T−avT−av<t≤T(5.1)
这里的
v
,
a
,
T
v ,a, T
v,a,T均有约束条件:
s
(
T
)
=
a
v
T
−
v
2
a
=
1
s(T) = \frac{avT-v^2}{a} = 1
s(T)=aavT−v2=1,且加速段
t
a
=
v
a
≤
T
2
,
a
≥
0
t_a = \frac{v}{a} \leq \frac{T}{2}, a \geq0
ta=av≤2T,a≥0
- 指定 v , a v,a v,a, T = a + v 2 a v T = \frac{a+v^2}{av} T=ava+v2,且需要满足 v 2 a ≤ 1 \frac{v^2}{a}\leq1 av2≤1
- 指定 v , T v,T v,T, a = v 2 v T − 1 a=\frac{v^2}{vT-1} a=vT−1v2,且需要满足 1 < v T ≤ 2 1<vT\leq2 1<vT≤2
- 指定 a , T a,T a,T, v = 1 2 ( a T − a a T 2 − 4 ) v=\frac{1}{2}(aT-\sqrt a \sqrt{aT^2-4}) v=21(aT−aaT2−4),且需要满足 a T 2 ≥ 4 aT^2\geq4 aT2≥4
若起始速度
v
0
v_0
v0和终点速度
v
e
v_e
ve不为0,则梯形规划分段函数为:
s
(
t
)
=
{
v
0
t
+
1
2
a
t
2
0
≤
t
≤
v
−
v
0
a
v
t
−
(
v
−
v
0
)
2
2
a
v
−
v
0
a
<
t
≤
T
−
v
−
v
e
a
2
a
v
T
−
(
v
−
v
0
)
2
−
(
v
−
v
e
)
2
−
a
2
(
t
−
T
)
2
+
2
a
v
e
(
t
−
T
)
2
a
T
−
v
−
v
e
a
<
t
≤
T
(4.2)
s(t)= \begin{cases} v_0t+\frac{1}{2}at^2& 0\leq t \leq \frac{v-v_0}{a}\\ vt - \frac{(v-v_0)^2}{2a} & \frac{v-v_0}{a} <t \leq T - \frac{v-v_e}{a} \\ \frac{ 2avT - (v-v_0)^2-(v-v_e)^2-a^2(t-T)^2+2av_e(t-T) }{2a}& T-\frac{v-v_e}{a}<t\leq T \tag{4.2} \end{cases}
s(t)=⎩
⎨
⎧v0t+21at2vt−2a(v−v0)22a2avT−(v−v0)2−(v−ve)2−a2(t−T)2+2ave(t−T)0≤t≤av−v0av−v0<t≤T−av−veT−av−ve<t≤T(4.2)
s
˙
\dot s
s˙为:
s
˙
(
t
)
=
{
v
0
+
a
t
0
≤
t
≤
v
−
v
0
a
v
v
−
v
0
a
<
t
≤
T
−
v
−
v
e
a
v
e
−
a
(
t
−
T
)
T
−
v
−
v
e
a
<
t
≤
T
(5.2)
\dot s(t)= \begin{cases} v_0+at& 0\leq t \leq \frac{v-v_0}{a}\\ v& \frac{v-v_0}{a} <t \leq T - \frac{v-v_e}{a}\\ v_e-a(t - T)& T-\frac{v-v_e}{a}<t\leq T \tag{5.2} \end{cases}
s˙(t)=⎩
⎨
⎧v0+atvve−a(t−T)0≤t≤av−v0av−v0<t≤T−av−veT−av−ve<t≤T(5.2)
这里的
v
,
a
,
T
v ,a, T
v,a,T均有约束条件:
s
(
T
)
=
2
a
v
T
−
(
v
−
v
0
)
2
−
(
v
−
v
e
)
2
2
a
=
1
s(T) = \frac{2avT-(v-v_0)^2-(v-v_e)^2}{2a} = 1
s(T)=2a2avT−(v−v0)2−(v−ve)2=1,且加速段和减速度段
t
a
+
t
b
=
2
v
−
v
0
−
v
e
a
≤
T
,
a
≥
0
t_a +t_b = \frac{2v-v_0-v_e}{a} \leq T, a \geq0
ta+tb=a2v−v0−ve≤T,a≥0
- 指定 v , a v,a v,a, T = 2 a + ( v − v 0 ) 2 + ( v − v e ) 2 2 a v T = \frac{2a+(v-v_0)^2+(v-v_e)^2}{2av} T=2av2a+(v−v0)2+(v−ve)2,且需要满足 2 v 2 − v 0 2 − v e 2 2 a ≤ 1 \frac{2v^2-v_0^2-v_e^2}{2a}\leq1 2a2v2−v02−ve2≤1
- 指定 v , T v,T v,T, a = ( v − v 0 ) 2 + ( v − v e ) 2 2 ( v T − 1 ) a=\frac{(v-v_0)^2+(v-v_e)^2}{2(vT-1)} a=2(vT−1)(v−v0)2+(v−ve)2,且需要满足 1 < v T ≤ ( v 0 2 + v e 2 ) T − 2 ( v 0 + v e ) + 4 v 2 v 1<vT\leq \frac{(v_0^2+v_e^2)T-2(v_0+v_e)+4v}{2v} 1<vT≤2v(v02+ve2)T−2(v0+ve)+4v
- 指定 a , T a,T a,T, v = 1 2 ( v 0 + v e + a T − ( a T + v 0 + v e ) 2 − 2 v 0 2 − 2 v e 2 − 4 a ) v=\frac{1}{2}(v_0+v_e+aT- \sqrt{(aT+v_0+v_e)^2-2v_0^2-2v_e^2-4a}) v=21(v0+ve+aT−(aT+v0+ve)2−2v02−2ve2−4a),且需要满足 ( a T + v 0 + v e ) 2 − 2 v 0 2 − 2 v e 2 − 4 a ) ≥ 0 (aT+v_0+v_e)^2-2v_0^2-2v_e^2-4a)\geq0 (aT+v0+ve)2−2v02−2ve2−4a)≥0
2.2 圆弧轨迹规划
以需要让小车转360°一个圈为例,让小车以特定的最大角速度
θ
˙
\dot \theta
θ˙绕半径
R
R
R旋转360°,进行轨迹规划。
已知起始角度为
0
°
0°
0°,目标角度为
360
°
360°
360°。
因此可以得到每个时刻转动角速度
θ
˙
\dot\theta
θ˙的值为:
θ
˙
=
360
s
˙
s
˙
是关于速度梯形规划
(6)
\dot \theta = 360\dot s\\ \tag{6} \dot s是关于速度梯形规划
θ˙=360s˙s˙是关于速度梯形规划(6)
因为限制了最大角速度
θ
˙
\dot\theta
θ˙,因此,在
s
˙
\dot s
s˙梯形规划中,
v
=
s
˙
m
a
x
=
θ
˙
360
v = \dot s max = \frac{\dot \theta}{360}
v=s˙max=360θ˙ (注意这里的
θ
˙
单位为
d
e
g
/
s
\dot \theta单位为deg/s
θ˙单位为deg/s),设
a
=
v
2
+
1
a = v^2+1
a=v2+1, 在已知
a
,
v
a,v
a,v可以得到规划周期
T
T
T.
通过公式(5)对
s
˙
\dot s
s˙进行梯形速度规划,相当于对
θ
˙
\dot \theta
θ˙进行梯形速度规划,从公式(6)可以得出该结论。
从跟随圆弧路径原理这一篇文章我们得知
θ
˙
与
x
˙
,
y
˙
\dot \theta与\dot x,\dot y
θ˙与x˙,y˙的关系如下:
x
˙
=
−
R
s
i
n
θ
θ
˙
y
˙
=
R
c
o
s
θ
θ
˙
(7)
\begin{aligned} \dot x &= -Rsin\theta\dot\theta \\ \dot y &= Rcos\theta\dot\theta \\ \tag{7} \end{aligned}
x˙y˙=−Rsinθθ˙=Rcosθθ˙(7)
最后通过公式(5)(6)(7),我们得到在时间
t
t
t下规划出来的瞬时速度并将速度下发给智能车让小车进行圆弧轨迹规划。
3. 圆弧轨迹规划进阶
如何让小车按着圆弧切线方向进行轨迹规划或者是朝着车头刷锅进行轨迹规划。甚至是让小车进行圆弧轨迹规划的同时,小车可以圆弧运动,也能到达期望的角度(车与世界坐标系的夹角 α \alpha α)小车可以边自旋,边绕圆,像陀螺运动。
3.1 车头绕圆弧切线和刷锅运动
从跟随圆弧路径原理这一篇文章我们得知:
x
˙
r
=
−
R
s
i
n
(
θ
−
α
)
θ
˙
y
˙
r
=
R
c
o
s
(
θ
−
α
)
θ
˙
θ
˙
r
=
θ
˙
(8)
\begin{aligned} \dot x_r &= -Rsin(\theta -\alpha)\dot \theta\\ \dot y_r &= Rcos(\theta-\alpha)\dot \theta\\ \dot \theta_r &= \dot\theta \tag{8} \end{aligned}
x˙ry˙rθ˙r=−Rsin(θ−α)θ˙=Rcos(θ−α)θ˙=θ˙(8)
θ
是圆弧角,
α
是机器人坐标系与圆弧世界坐标系的夹角。
\theta是圆弧角,\alpha 是机器人坐标系与圆弧世界坐标系的夹角。
θ是圆弧角,α是机器人坐标系与圆弧世界坐标系的夹角。见下图:
当智能车切线圆弧运动,
θ
=
α
\theta = \alpha
θ=α,公式(8)变成:
y
˙
r
=
R
θ
˙
θ
˙
r
=
θ
˙
(9)
\begin{aligned} \dot y_r &= R\dot \theta\\ \dot \theta_r &= \dot\theta \tag{9} \end{aligned}
y˙rθ˙r=Rθ˙=θ˙(9)
通过上述章节2.2,对
θ
˙
\dot\theta
θ˙进行轨迹规划即可。 刷锅运动轨迹规划原理一样,
α
−
θ
=
π
2
\alpha - \theta = \frac{\pi}{2}
α−θ=2π。
3.2 小车圆弧运动且能达到期望角度
由于小车的角速度和线速度是非耦合的关系,当小车在圆弧运动时,期望绕一圈后,小车已经转了特定角度。 例如,小车圆弧运动360°的同时,小车的方向与原来的方向已经旋转了
β
\beta
β ,如90°。
因为对圆弧进行了轨迹规划,已知在
T
T
T时间内,小车会走完圆弧轨迹,因此小车旋转
β
\beta
β也对应在该规划的
T
T
T时间内。
∵
θ
˙
=
(
θ
e
n
d
−
θ
s
t
a
r
t
)
s
˙
∴
β
˙
=
β
s
˙
(10)
\begin{aligned} \because \dot \theta &= (\theta_{end} - \theta_{start})\dot s\\ \therefore \dot \beta &= \beta\dot s \tag{10} \end{aligned}
∵θ˙∴β˙=(θend−θstart)s˙=βs˙(10)
s
˙
\dot s
s˙ 属于梯形规划,得到运动周期
T
T
T。通过公式(10),得到了关于自转角度
β
\beta
β的规划。因此关于
(
x
˙
r
,
y
˙
r
,
θ
˙
r
)
(\dot x_r,\dot y_r, \dot \theta_r)
(x˙r,y˙r,θ˙r)解算公式如下:
x
˙
r
=
−
R
s
i
n
(
θ
−
α
−
γ
)
θ
˙
y
˙
r
=
R
c
o
s
(
θ
−
α
−
γ
)
θ
˙
θ
˙
r
=
θ
˙
+
β
˙
γ
=
γ
l
a
s
t
+
θ
˙
r
t
(11)
\begin{aligned} \dot x_r &= -Rsin(\theta -\alpha - \gamma)\dot \theta\\ \dot y_r &= Rcos(\theta-\alpha - \gamma)\dot \theta\\ \dot \theta_r &= \dot\theta + \dot \beta \tag{11} \\ \gamma &= \gamma_{last} + \dot \theta_rt \end{aligned}
x˙ry˙rθ˙rγ=−Rsin(θ−α−γ)θ˙=Rcos(θ−α−γ)θ˙=θ˙+β˙=γlast+θ˙rt(11)
通过下发
(
x
˙
r
,
y
˙
r
,
θ
˙
r
)
(\dot x_r,\dot y_r, \dot \theta_r)
(x˙r,y˙r,θ˙r)三组速度即可达到期望的运动状态。
3.3 小车圆弧运动且像陀螺旋转
跟上一个小节3.2一样,小车陀螺旋转就是多了一个固定自转角速度 β ˙ \dot \beta β˙,当规划开始与结束的时候 β ˙ = 0 \dot \beta = 0 β˙=0,期间速度恒定,就能让小车边走圆弧边陀螺运动,解算公式与公式(11)一样,但是 β ˙ \dot \beta β˙是没有经过轨迹规划的。而小车走圆弧是经过轨迹规划的。