文章目录
- 约束及系统
- 移动机器人运动学模型(Kinematic Model)
- 自行车模型
- 含有加速度 a a a 的自行车模型
- 系统偏差模型
在机器人的研究领域中,移动机器人的系统建模与分析是极为关键的基础环节,本文以非完整约束的轮式移动机器人为研究对象进行建模。
约束及系统
在力学的世界里,约束是对系统位姿和运动的限制。约束的类型丰富多样
- 几何约束:主要限制系统的位姿,就像给系统的位置设定了边界,其表达式为 f ( p , t ) = 0 k f(p, t) = 0^k f(p,t)=0k 其中, p ∈ R n p\in\mathbb{R}^n p∈Rn代表系统位姿坐标向量, t t t 表示时间, k ∈ R k\in\mathbb{R} k∈R 表示约束个数。
- 运动约束:不仅仅对系统的位姿进行约束,同时对于各质点的速度也进行了约束,其表达式 f ( p , p ˙ , t ) = 0 k f(p,\dot{p},t)=0^k f(p,p˙,t)=0k 其中, p ∈ R n p\in\mathbb{R}^n p∈Rn代表系统位姿坐标向量, p ˙ ∈ R n \dot{p}\in\mathbb{R}^n p˙∈Rn代表系统位姿坐标向量, t t t 表示时间, k ∈ R k\in\mathbb{R} k∈R表示约束个数。
“非完整”和“完整”约束源于近代分析力学,由德国物理学家赫兹提出,如果利用积分运算等数学方法,可以将运动约束转化为几何约束的形式,则该约束即为完整约束,反之则为非完整约束。
- 完整约束系统:仅含有完整约束的系统。会降低系统的位置空间自由度。
- 非完整约束系统:含有至少一个非完整约束的系统。不会降低系统的位置空间自由度,但会降低速度空间自由度。
来看典型移动机器人的简化示意图,它在X - Y二维平面上运动。
当机器人进行无滑动滚动运动时,其速度方向有着特定的限制,即速度始终沿后轮中心指向前轮中心的方向,并且不会出现垂直于车轴的移动趋势。由此可以得到约束
v
c
=
x
˙
sin
(
φ
)
+
y
˙
cos
(
φ
)
=
0
v_c = \dot{x}\sin(\varphi)+\dot{y}\cos(\varphi)=0
vc=x˙sin(φ)+y˙cos(φ)=0
设定
q
=
(
x
,
y
,
φ
)
T
q=(x,y,\varphi)^T
q=(x,y,φ)T,整理成运动约束矩阵形式为
A
(
q
)
q
˙
=
[
sin
(
φ
)
−
cos
(
φ
)
0
]
[
x
˙
y
˙
φ
˙
]
=
0
A(q) \dot{q}=[\sin (\varphi) \quad -\cos (\varphi) \quad 0] \left[\begin{array}{c}\dot{x} \\ \dot{y} \\ \dot{\varphi}\end{array}\right] =0
A(q)q˙=[sin(φ)−cos(φ)0]
x˙y˙φ˙
=0
其中,
x
x
x表示后轮中心横坐标、
y
y
y表示后轮中心纵坐标和
φ
\varphi
φ表示速度方向角。
经过分析发现,利用积分运算无法将这个运动约束转化为几何约束,所以这类移动机器人属于非完整约束系统。
移动机器人运动学模型(Kinematic Model)
为了确保机器人的安全并实现轨迹跟踪,我们需要明确障碍物和机器人的位姿、运动信息,还要建立全局坐标系来统一这些信息。
自行车模型
在轨迹跟踪控制研究中,常用基于前轮转向,后轮驱动的简易自行车模型来构建移动机器人模型。
X
X
X-
Y
Y
Y空间为全局坐标,
(
X
r
,
Y
r
)
(X_r, Y_r)
(Xr,Yr) 为后轮中心参考位置,
(
X
f
,
Y
f
)
(X_f, Y_f)
(Xf,Yf) 为前轮中心参考位置,
l
l
l 为前后轮中心距离(即车长),
v
r
v_r
vr 为机器人移动速度,
φ
\varphi
φ 为机器人中心轴方向(即航向角),
δ
f
\delta_f
δf 前轮转向角表示前轮与移动方向的偏转角度(逆时针为正),
(
X
o
,
Y
o
)
(X_o, Y_o)
(Xo,Yo) 为移动机器人移动所围绕的圆心,
R
R
R 为移动机器人移动旋转半径。
对这个模型做出一些合理假设
- 左右侧车轮速度转角一致,这样可将左右侧车轮合并为一个车轮;
- 车辆行驶速度变化缓慢,忽略前后轴载荷;
- 车身及悬架系统为刚性系统;
- 车辆后轮负责驱动,前轮负责转向。
以移动机器人简化模型的后轮中心为基准点,通过一系列推导,可以得到其速度、前后轴运动学约束等关系式,进而得出移动机器人简单的运动学模型
[
X
˙
r
Y
˙
r
φ
˙
]
=
[
v
r
cos
(
φ
)
v
r
sin
(
φ
)
v
r
tan
(
δ
f
)
l
]
\left[\begin{array}{c}\dot{X}_{r} \\ \dot{Y}_{r} \\ \dot{\varphi}\end{array}\right]=\left[\begin{array}{c}v_{r} \cos (\varphi) \\ v_{r} \sin (\varphi) \\ \frac{v_{r} \tan \left(\delta_{f}\right)}{l}\end{array}\right]
X˙rY˙rφ˙
=
vrcos(φ)vrsin(φ)lvrtan(δf)
一般形式为 p ˙ = f ( p , u ) \dot{p}=f(p, u) p˙=f(p,u) ,其中 p = [ X r , Y r , ϕ ] T p=[X_r,Y_r,\phi]^T p=[Xr,Yr,ϕ]T 表示系统状态, u = [ v r , δ f ] T u=[v_r, \delta_f]^T u=[vr,δf]T 表示系统输入。
含有加速度 a a a 的自行车模型
上述简单运动学模型将速度
v
r
v_r
vr 和前轮转向角
δ
f
\delta_f
δf 作为输入,但在实际生活中,以无人车为例,驾驶员是通过油门和刹车改变车辆加速度来控制车辆的,速度不能突变。
因此,对模型进行了改进,把速度
v
r
v_r
vr 当作系统状态,引入加速度
a
r
a_{r}
ar 作为系统输入。设系统状态
p
=
[
X
r
,
Y
r
,
φ
,
v
r
]
T
p=[X_r,Y_r,\varphi,v_r]^T
p=[Xr,Yr,φ,vr]T,系统输入
u
=
[
a
r
,
δ
f
]
T
u=[a_r, \delta_f]^T
u=[ar,δf]T,新系统模型
p
˙
=
f
(
p
,
u
)
\dot{p}=f(p,u)
p˙=f(p,u) 设计如下:
[
X
˙
r
Y
˙
r
φ
˙
v
˙
r
]
=
[
v
r
cos
(
φ
)
v
r
sin
(
φ
)
v
r
tan
(
δ
f
)
l
a
r
]
\left[\begin{array}{c}\dot{X}_{r} \\ \dot{Y}_{r} \\ \dot{\varphi} \\ \dot{v}_{r}\end{array}\right]=\left[\begin{array}{c}v_{r} \cos (\varphi) \\ v_{r} \sin (\varphi) \\ \frac{v_{r} \tan \left(\delta_{f}\right)}{l} \\ a_{r}\end{array}\right]
X˙rY˙rφ˙v˙r
=
vrcos(φ)vrsin(φ)lvrtan(δf)ar
将其表示为仿射非线性系统形式为
p
˙
=
f
(
p
)
+
g
(
p
)
u
=
[
v
r
cos
(
φ
)
v
r
sin
(
φ
)
0
0
]
+
[
0
0
0
0
0
1
l
cos
2
(
δ
f
)
1
0
]
[
a
r
δ
f
]
\dot{p}=f(p)+g(p) u = \left[ \begin{array}{c}v_{r}\cos (\varphi) \\ v_{r} \sin (\varphi) \\ 0 \\ 0 \end{array} \right] + \left[ \begin{array}{c} 0 & 0\\ 0 & 0\\ 0 & \frac{1}{l \cos^2(\delta_f) } \\ 1 & 0 \end{array} \right] \left[ \begin{array}{c} a_r \\ \delta_f \end{array}\right]
p˙=f(p)+g(p)u=
vrcos(φ)vrsin(φ)00
+
000100lcos2(δf)10
[arδf]
为了简化系统便于后续计算和仿真,在误差允许范围内,对模型进行线性化处理,比如假设 δ f \delta_{f} δf数值较小,进行 tan ( δ f ) ≈ δ f \tan (\delta_{f}) \approx \delta_{f} tan(δf)≈δf的化简。
系统偏差模型
在实现轨迹跟踪目标时,选择参考轨迹上的一点作为目标轨迹点,为了让机器人跟随目标轨迹点,需要将模型线性化并通过坐标变换将目标轨迹点移动至原点,得到系统偏差模型
p
~
˙
=
A
p
~
+
B
u
~
\dot{\tilde{p}}=A \tilde{p}+B \tilde{u}
p~˙=Ap~+Bu~ ,通过控制状态偏差收敛到0,就能实现轨迹跟踪的控制目标。
在实现轨迹跟踪的目标时,在参数已知的参考轨迹上选择一点
(
x
r
e
f
,
y
r
e
f
)
(x_{ref}, y_{ref})
(xref,yref) 作为目标轨迹点,满足
p
r
e
f
=
f
(
p
r
e
f
,
u
r
e
f
)
p_{ref} = f(p_{ref}, u_{ref})
pref=f(pref,uref)
为了使机器人能够跟随目标轨迹点,使系统状态逐渐收敛至目标轨迹点状态,将模型进行线性化并通过坐标变换将目标轨迹点移动至原点。在系统本身状态处进行泰勒展开,省略高阶项只保留一阶展开,得
p
˙
=
f
(
p
,
u
)
=
f
(
p
r
e
f
,
u
r
e
f
)
+
∂
f
(
p
,
u
)
∂
p
∣
p
=
p
r
e
f
(
p
−
p
r
e
f
)
+
∂
f
(
p
,
u
)
∂
u
∣
u
=
u
r
e
f
(
u
−
u
r
e
f
)
\dot{p} = f(p, u) = f(p_{ref}, u_{ref}) + \frac{\partial f(p, u)}{\partial p}|_{p=p_{ref}} (p - p_{ref}) + \frac{\partial f(p, u)}{\partial u}|_{u=u_{ref}} (u - u_{ref})
p˙=f(p,u)=f(pref,uref)+∂p∂f(p,u)∣p=pref(p−pref)+∂u∂f(p,u)∣u=uref(u−uref)
其中,
∂
f
∂
p
\frac{\partial f}{\partial p}
∂p∂f,
∂
f
∂
u
\frac{\partial f}{\partial u}
∂u∂f 为雅克比矩阵,具体内容为
以下是提取的内容,公式符号已使用$$格式:
∂ f ( p , u ) ∂ p = [ ∂ f 1 ( p , u ) ∂ x ∂ f 1 ( p , u ) ∂ y ∂ f 1 ( p , u ) ∂ φ ∂ f 1 ( p , u ) ∂ v ∂ f 2 ( p , u ) ∂ x ∂ f 2 ( p , u ) ∂ y ∂ f 2 ( p , u ) ∂ φ ∂ f 2 ( p , u ) ∂ v ∂ f 3 ( p , u ) ∂ x ∂ f 3 ( p , u ) ∂ y ∂ f 3 ( p , u ) ∂ φ ∂ f 3 ( p , u ) ∂ v ∂ f 4 ( p , u ) ∂ x ∂ f 4 ( p , u ) ∂ y ∂ f 4 ( p , u ) ∂ φ ∂ f 4 ( p , u ) ∂ v ] = [ 0 0 − v sin ( φ ) cos ( φ ) 0 0 v cos ( φ ) sin ( φ ) 0 0 0 tan ( δ ) 0 0 0 l cos ( δ ) ] \frac{\partial f(p, u)}{\partial p} = \begin{bmatrix} \frac{\partial f_1(p, u)}{\partial x} & \frac{\partial f_1(p, u)}{\partial y} & \frac{\partial f_1(p, u)}{\partial \varphi} & \frac{\partial f_1(p, u)}{\partial v} \\ \frac{\partial f_2(p, u)}{\partial x} & \frac{\partial f_2(p, u)}{\partial y} & \frac{\partial f_2(p, u)}{\partial \varphi} & \frac{\partial f_2(p, u)}{\partial v} \\ \frac{\partial f_3(p, u)}{\partial x} & \frac{\partial f_3(p, u)}{\partial y} & \frac{\partial f_3(p, u)}{\partial \varphi} & \frac{\partial f_3(p, u)}{\partial v} \\ \frac{\partial f_4(p, u)}{\partial x} & \frac{\partial f_4(p, u)}{\partial y} & \frac{\partial f_4(p, u)}{\partial \varphi} & \frac{\partial f_4(p, u)}{\partial v} \end{bmatrix} = \begin{bmatrix} 0 & 0 & -v\sin(\varphi) & \cos(\varphi) \\ 0 & 0 & v\cos(\varphi) & \sin(\varphi) \\ 0 & 0 & 0 & \tan(\delta) \\ 0 & 0 & 0 & \frac{l}{\cos(\delta)} \end{bmatrix} ∂p∂f(p,u)= ∂x∂f1(p,u)∂x∂f2(p,u)∂x∂f3(p,u)∂x∂f4(p,u)∂y∂f1(p,u)∂y∂f2(p,u)∂y∂f3(p,u)∂y∂f4(p,u)∂φ∂f1(p,u)∂φ∂f2(p,u)∂φ∂f3(p,u)∂φ∂f4(p,u)∂v∂f1(p,u)∂v∂f2(p,u)∂v∂f3(p,u)∂v∂f4(p,u) = 00000000−vsin(φ)vcos(φ)00cos(φ)sin(φ)tan(δ)cos(δ)l
∂ f ( p , u ) ∂ u = [ ∂ f 1 ( p , u ) ∂ a ∂ f 1 ( p , u ) ∂ δ ∂ f 2 ( p , u ) ∂ a ∂ f 2 ( p , u ) ∂ δ ∂ f 3 ( p , u ) ∂ a ∂ f 3 ( p , u ) ∂ δ ∂ f 4 ( p , u ) ∂ a ∂ f 4 ( p , u ) ∂ δ ] = [ 0 0 0 0 0 v l cos ( δ ) 2 1 0 ] \frac{\partial f(p, u)}{\partial u} = \begin{bmatrix} \frac{\partial f_1(p, u)}{\partial a} & \frac{\partial f_1(p, u)}{\partial \delta} \\ \frac{\partial f_2(p, u)}{\partial a} & \frac{\partial f_2(p, u)}{\partial \delta} \\ \frac{\partial f_3(p, u)}{\partial a} & \frac{\partial f_3(p, u)}{\partial \delta} \\ \frac{\partial f_4(p, u)}{\partial a} & \frac{\partial f_4(p, u)}{\partial \delta} \end{bmatrix}= \begin{bmatrix} 0 & 0 \\ 0 & 0 \\ 0 & \frac{v}{l\cos(\delta)^2} \\ 1 & 0 \end{bmatrix} ∂u∂f(p,u)= ∂a∂f1(p,u)∂a∂f2(p,u)∂a∂f3(p,u)∂a∂f4(p,u)∂δ∂f1(p,u)∂δ∂f2(p,u)∂δ∂f3(p,u)∂δ∂f4(p,u) = 000100lcos(δ)2v0
引入偏差变量
p
~
=
p
−
p
r
e
f
u
~
=
u
−
u
r
e
f
\tilde{p} = p - p_{ref} \\ \tilde{u} = u - u_{ref}
p~=p−prefu~=u−uref
可得系统偏差模型为
p
~
˙
=
∂
f
(
p
,
u
)
∂
p
p
~
+
∂
f
(
p
u
,
)
∂
u
u
~
\dot{\tilde{p}} = \frac{\partial f(p, u)}{\partial p}\tilde{p} + \frac{\partial f(p u,)}{\partial u}\tilde{u}
p~˙=∂p∂f(p,u)p~+∂u∂f(pu,)u~
写成状态方程形式为
p
~
˙
=
A
p
~
+
B
u
~
\dot{\tilde{p}} = A\tilde{p} + B\tilde{u}
p~˙=Ap~+Bu~
其中,矩阵
A
=
∂
f
(
p
,
u
)
∂
p
A = \frac{\partial f(p, u)}{\partial p}
A=∂p∂f(p,u),
B
=
∂
f
(
p
,
u
)
∂
u
B = \frac{\partial f(p, u)}{\partial u}
B=∂u∂f(p,u)。该偏差模型的主要作用是进行系统的轨迹跟踪,控制状态偏差
p
~
\tilde{p}
p~ 逐步收敛到 0,即系统状态
p
=
p
r
e
f
p = p_{ref}
p=pref,则说明此时系统状态跟踪上目标轨迹点状态,实现轨迹跟踪的控制目标。