1. 位姿自由度
位姿自由度——系统在空间中的位姿描述所需变量的个数。任何一个没有受约束的物体,在空间均具有6个独立的运动,即有六个自由度。
六个自由度分别是:
- 横荡(sway):沿图中轴左右平动;
- 纵荡(surge):沿图中轴前后平动;
- 垂荡(heave):沿图中轴上下平动;
- 横滚(roll):绕图中轴转动;
- 俯仰(pitch):绕图中轴转动;
- 偏转(yaw):绕图中轴转动;
2. TDOFandCDOF
- TDOF(Total Degrees of Freedom):不可控自由度(总自由度)
- CDOF(Controllable Degrees of Freedom):可控自由度
若TDOF = CDOF,则被认为是完整的(Holonomic)比如直升机。
若TDOF > CDOF,则被认为是 非完整的(Nonholonomic)比如汽车。
若CDOF > TDOF,则被认为是 冗余的(Redundant)比如机械手臂(肩关节3个自由度、腕关节3个自由度、肘关节1个自由度)。
3.运动学与动力学
车辆的模型分为两类:运动学模型和动力学模型。运动学模型主要考虑车辆的运动状态,包括速度、加速度、方向等,不考虑车辆受力状态。动力学模型通过分析作用在车上的力和力矩构建模型。
- 运动学正问题指,从机器人的关节空间描述计算笛卡尔空间描述的机器人末端执行器的位置和姿态,该问题通常是一个几何问题,给定一组关节角度,计算末端坐标系相对于基坐标系的位置和姿态。
- 运动学逆问题指,从笛卡尔空间描述下的机器人末端执行器位置和姿态反算出机器人关节空间应该达到的关节角度组合,是实现机器人控制的一个基本问题。通常因为正运动学方程是非线性的,因此逆运动学问题较为困难,很难得到封闭解,甚至无解。而正运动学的像空间就形成了逆运动学的有解空间,称为机器人的工作空间。
参考链接
4. 运动控制问题描述
对于一般的运动控制问题有以下描述:
已知机器人的运动学模型/动力学模型以及机器人轮子与地面之间的接触模型,求解所要求的运动控制目标(机器人的速度、位姿以及相应的控制律)。
5. 运动学建模
在运动学模型中,通常需要对以下几个参量进行求解:
- 机器人速度 ξ ˙ = [ x ˙ y ˙ θ ˙ ] T \dot \xi = {\left[ {\begin{array}{ccccccccccccccc}{\dot x}&{\dot y}&{\dot \theta }\end{array}} \right]^T} ξ˙=[x˙y˙θ˙]T
- 轮子转速 ϕ ˙ i {\rm{ }}{\dot \phi _i} ϕ˙i
- 偏转角以及角速度 β i {\beta _i} βi β ˙ i {\dot \beta _i} β˙i
- 几何参数,比如长度、宽度等
运动学正向模型可以有以下公式描述:
ξ
˙
=
[
x
˙
y
˙
θ
˙
]
T
=
f
(
ϕ
˙
1
,
…
ϕ
˙
n
,
β
1
,
…
β
m
,
β
˙
1
,
…
β
˙
m
)
\dot \xi = {\left[ {\begin{array}{ccccccccccccccc}{\dot x}&{\dot y}&{\dot \theta }\end{array}} \right]^T} = f({\rm{ }}{\dot \phi _1}, \ldots {\dot \phi _n},{\beta _1}, \ldots {\beta _m},{\dot \beta _1}, \ldots {\dot \beta _m})
ξ˙=[x˙y˙θ˙]T=f(ϕ˙1,…ϕ˙n,β1,…βm,β˙1,…β˙m) 已知轮子转速
ϕ
˙
i
{\rm{ }}{\dot \phi _i}
ϕ˙i、偏航角以及角速度
β
i
{\beta _i}
βi
β
˙
i
{\dot \beta _i}
β˙i,求解机器人速度
ξ
˙
=
[
x
˙
y
˙
θ
˙
]
T
\dot \xi = {\left[ {\begin{array}{ccccccccccccccc}{\dot x}&{\dot y}&{\dot \theta }\end{array}} \right]^T}
ξ˙=[x˙y˙θ˙]T。
运动学逆向模型可以有以下公式描述:
[
ϕ
˙
1
⋯
ϕ
˙
n
β
1
…
β
m
β
˙
1
…
β
˙
m
]
T
=
f
(
x
˙
,
y
˙
,
θ
˙
)
{\left[ {\begin{array}{ccccccccccccccc}{{\rm{ }}{{\dot \phi }_1}}& \cdots &{{{\dot \phi }_n}}&{{\beta _1}}& \ldots &{{\beta _m}}&{{{\dot \beta }_1}}& \ldots &{{{\dot \beta }_m}}\end{array}} \right]^T} = f(\dot x,\dot y,\dot \theta )
[ϕ˙1⋯ϕ˙nβ1…βmβ˙1…β˙m]T=f(x˙,y˙,θ˙) 已知机器人速度
ξ
˙
=
[
x
˙
y
˙
θ
˙
]
T
\dot \xi = {\left[ {\begin{array}{ccccccccccccccc}{\dot x}&{\dot y}&{\dot \theta }\end{array}} \right]^T}
ξ˙=[x˙y˙θ˙]T,求解轮子转速
ϕ
˙
i
{\rm{ }}{\dot \phi _i}
ϕ˙i、偏航角以及角速度
β
i
{\beta _i}
βi
β
˙
i
{\dot \beta _i}
β˙i。
以两轮差速小车模型为例。
小车的速度以及角速度为:
{
x
˙
=
v
cos
θ
y
˙
=
v
sin
θ
θ
˙
=
ω
\left\{ {\begin{array}{ccccccccccccccc}{\dot x = v\cos \theta }\\{\dot y = v\sin \theta }\\{\dot \theta = \omega }\end{array}} \right.
⎩⎨⎧x˙=vcosθy˙=vsinθθ˙=ω
由两轮差速小车车轮转速与小车速度、角速度的关系可得,
{
v
=
ϕ
˙
r
+
ϕ
˙
l
2
ω
=
ϕ
˙
r
−
ϕ
˙
l
r
\left\{ {\begin{array}{ccccccccccccccc}{v = \frac{{{{\dot \phi }_r} + {{\dot \phi }_l}}}{2}}\\{\omega = \frac{{{{\dot \phi }_r} - {{\dot \phi }_l}}}{r}}\end{array}} \right.
{v=2ϕ˙r+ϕ˙lω=rϕ˙r−ϕ˙l 联立得到下列关系式:
{
x
˙
=
ϕ
˙
r
+
ϕ
˙
l
2
cos
θ
y
˙
=
ϕ
˙
r
+
ϕ
˙
l
2
sin
θ
θ
˙
=
ϕ
˙
r
−
ϕ
˙
l
r
\left\{ {\begin{array}{ccccccccccccccc}{\dot x = \frac{{{{\dot \phi }_r} + {{\dot \phi }_l}}}{2}\cos \theta }\\{\dot y = \frac{{{{\dot \phi }_r} + {{\dot \phi }_l}}}{2}\sin \theta }\\{\dot \theta = \frac{{{{\dot \phi }_r} - {{\dot \phi }_l}}}{r}}\end{array}} \right.
⎩⎪⎨⎪⎧x˙=2ϕ˙r+ϕ˙lcosθy˙=2ϕ˙r+ϕ˙lsinθθ˙=rϕ˙r−ϕ˙l
6. 机器人位姿
机器人的坐标系包括如下几个类别:世界坐标系(World coordinate system)、基坐标系(Base coordinate system)、工具坐标系(Tool coordinate system)和工件坐标系(Object coordinate system)。有很多大佬将这方面讲得很好,本文便不在这里多做赘述。参考链接1参考链接2
同样以两轮差速小车为例,给定小车一个方向,进行行驶。
设,世界坐标系:
{
X
I
,
Y
I
}
\left\{ {{X_I},{Y_I}} \right\}
{XI,YI};机器人坐标系:
{
X
R
,
Y
R
}
\left\{ {{X_R},{Y_R}} \right\}
{XR,YR};机器人位置坐标:
ξ
I
=
[
x
y
θ
]
T
{\xi _I} = {\left[ {\begin{array}{ccccccccccccccc}x&y&\theta \end{array}} \right]^T}
ξI=[xyθ]T
在本例中,只用考虑绕z轴方向进行旋转。其旋转矩阵R为:
R
=
[
cos
θ
sin
θ
0
−
sin
θ
cos
θ
0
0
0
1
]
R = \left[ {\begin{array}{ccccccccccccccc}{\cos \theta }&{\sin \theta }&0\\{ - \sin \theta }&{\cos \theta }&0\\0&0&1\end{array}} \right]
R=⎣⎡cosθ−sinθ0sinθcosθ0001⎦⎤ 两坐标系对应关系为:
ξ
R
=
[
cos
θ
sin
θ
0
−
sin
θ
cos
θ
0
0
0
1
T
0
1
]
⋅
ξ
I
=
[
R
T
0
1
]
⋅
ξ
I
{\xi _R} = \left[ {\begin{array}{ccccccccccccccc}{\begin{array}{ccccccccccccccc}{\cos \theta }&{\sin \theta }&0\\{ - \sin \theta }&{\cos \theta }&0\\0&0&1\end{array}}&T\\0&1\end{array}} \right] \cdot {\xi _I} = \left[ {\begin{array}{ccccccccccccccc}R&T\\0&1\end{array}} \right] \cdot {\xi _I}
ξR=⎣⎢⎢⎡cosθ−sinθ0sinθcosθ00010T1⎦⎥⎥⎤⋅ξI=[R0T1]⋅ξI 对时间求导,得
ξ
˙
R
=
R
(
θ
)
ξ
˙
I
=
R
(
θ
)
⋅
[
x
˙
y
˙
θ
˙
]
T
{\dot \xi _R} = R\left( \theta \right){\dot \xi _I} = R\left( \theta \right) \cdot {\left[ {\begin{array}{ccccccccccccccc}{\dot x}&{\dot y}&{\dot \theta }\end{array}} \right]^T}
ξ˙R=R(θ)ξ˙I=R(θ)⋅[x˙y˙θ˙]T
7. 跟踪误差
如图所示,分别对机器人两个位置的坐标进行求导,得
{
x
˙
=
v
⋅
cos
θ
y
˙
=
v
⋅
sin
θ
θ
˙
=
ω
\begin{array}{l}\left\{ {\begin{array}{ccccccccccccccc}{\dot x = v \cdot \cos \theta }\\{\dot y = v \cdot \sin \theta }\\{\dot \theta = \omega }\end{array}} \right.\\\end{array}
⎩⎨⎧x˙=v⋅cosθy˙=v⋅sinθθ˙=ω
{
x
˙
d
=
v
d
⋅
cos
θ
d
y
˙
d
=
v
d
⋅
sin
θ
d
θ
˙
d
=
ω
d
\left\{ {\begin{array}{ccccccccccccccc}{{{\dot x}_d} = {v_d} \cdot \cos {\theta _d}}\\{{{\dot y}_d} = {v_d} \cdot \sin {\theta _d}}\\{{{\dot \theta }_d} = {\omega _d}}\end{array}} \right.
⎩⎨⎧x˙d=vd⋅cosθdy˙d=vd⋅sinθdθ˙d=ωd 再求得位置偏差
x
e
、
y
e
、
θ
e
{x_e}、{y_e}、{\theta _e}
xe、ye、θe
[
x
e
y
e
θ
e
]
=
[
cos
θ
sin
θ
0
−
sin
θ
cos
θ
0
0
0
1
]
[
x
d
−
x
y
d
−
y
θ
d
−
θ
]
\left[ {\begin{array}{ccccccccccccccc}{{x_e}}\\{{y_e}}\\{{\theta _e}}\end{array}} \right] = \left[ {\begin{array}{ccccccccccccccc}{\cos \theta }&{\sin \theta }&0\\{ - \sin \theta }&{\cos \theta }&0\\0&0&1\end{array}} \right]\left[ {\begin{array}{ccccccccccccccc}{{x_d} - x}\\{{y_d} - y}\\{{\theta _d} - \theta }\end{array}} \right]
⎣⎡xeyeθe⎦⎤=⎣⎡cosθ−sinθ0sinθcosθ0001⎦⎤⎣⎡xd−xyd−yθd−θ⎦⎤ 联立求得
{
x
˙
e
=
ω
y
e
+
cos
θ
(
v
d
cos
θ
d
−
v
cos
θ
)
+
sin
θ
(
v
d
sin
θ
d
−
v
sin
θ
)
=
ω
y
e
+
v
d
cos
θ
e
−
v
y
˙
e
=
−
ω
x
e
−
sin
θ
(
v
d
cos
θ
d
−
v
cos
θ
)
+
cos
θ
(
v
d
sin
θ
d
−
v
sin
θ
)
=
−
ω
x
e
+
v
d
sin
θ
e
θ
˙
e
=
ω
d
−
ω
\left\{ \begin{array}{l}\begin{array}{ccccccccccccccc}{{{\dot x}_e} = \omega {y_e} + \cos \theta ({v_d}\cos {\theta _d} - v\cos \theta ) + \sin \theta ({v_d}\sin {\theta _d} - v\sin \theta )}\\{ = \omega {y_e} + {v_d}\cos {\theta _e} - v}\end{array}\\\begin{array}{ccccccccccccccc}{{{\dot y}_e} = - \omega {x_e} - \sin \theta ({v_d}\cos {\theta _d} - v\cos \theta ) + \cos \theta ({v_d}\sin {\theta _d} - v\sin \theta )}\\{ = - \omega {x_e} + {v_d}\sin {\theta _e}}\end{array}\\{{\dot \theta }_e} = {\omega _d} - \omega \end{array} \right.
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧x˙e=ωye+cosθ(vdcosθd−vcosθ)+sinθ(vdsinθd−vsinθ)=ωye+vdcosθe−vy˙e=−ωxe−sinθ(vdcosθd−vcosθ)+cosθ(vdsinθd−vsinθ)=−ωxe+vdsinθeθ˙e=ωd−ω
{
x
˙
e
=
ω
⋅
y
e
−
v
+
v
d
cos
θ
e
y
˙
e
=
−
ω
⋅
x
e
+
v
d
sin
θ
e
θ
˙
e
=
ω
d
−
ω
\left\{ \begin{array}{l}{{\dot x}_e} = \omega \cdot {y_e} - v + {v_d}\cos {\theta _e}\\{{\dot y}_e} = - \omega \cdot {x_e} + {v_d}\sin {\theta _e}\\{{\dot \theta }_e} = {\omega _d} - \omega \end{array} \right.
⎩⎨⎧x˙e=ω⋅ye−v+vdcosθey˙e=−ω⋅xe+vdsinθeθ˙e=ωd−ω
8. 控制律设计
在跟踪误差中,求得了 x e 、 y e 、 θ e {x_e}、{y_e}、{\theta _e} xe、ye、θe的导数 { x ˙ e = ω ⋅ y e − v + v d cos θ e y ˙ e = − ω ⋅ x e + v d sin θ e θ ˙ e = ω d − ω \left\{ \begin{array}{l}{{\dot x}_e} = \omega \cdot {y_e} - v + {v_d}\cos {\theta _e}\\{{\dot y}_e} = - \omega \cdot {x_e} + {v_d}\sin {\theta _e}\\{{\dot \theta }_e} = {\omega _d} - \omega \end{array} \right. ⎩⎨⎧x˙e=ω⋅ye−v+vdcosθey˙e=−ω⋅xe+vdsinθeθ˙e=ωd−ω 当 v d 、 ω d 、 d ω d d t 、 d v d d t {v_d}、{\omega _d}、\frac{{d{\omega _d}}}{{dt}}、\frac{{d{v_d}}}{{dt}} vd、ωd、dtdωd、dtdvd都有界时,按照一定的控制律进行设计,最终使得 { x e → 0 y e → 0 θ e → 0 \left\{ \begin{array}{l}{x_e} \to 0\\{y_e} \to 0\\{\theta _e} \to 0\end{array} \right. ⎩⎨⎧xe→0ye→0θe→0
声明
本人所有文章仅作为自己的学习记录,若有侵权,联系立删。