前两节课介绍了移动机器人、机械手、类型,本节课重点讲解移动机器人运动学相关知识:包括概念、意义、描述方式、正微分运动学和逆微分运动学。
运动学是研究什么的?
运动学所研究的内容实际上像是两个空间进行映射,映射的输入不是力,在某种意义上它的输入是控制参数和系统参数(我们称之为运动参数)(也可以说是运动),输出为系统在空间中的行为。这种映射关系我们称它为机器人运动学。
总体来说,运动学研究的是运动参数与系统在状态空间中行为间的映射关系。
注:在Springer出版的
Handbook of Robotics
书中,对于运动学的定义为机器人运动学描述的是位姿、速度、加速度,以及构成机构的物体位姿的高阶导数。
- 机器人机构:由关节连接的刚体所构成的系统
- 位姿:刚体在空间的位置和姿态的统称。
我们为什么要研究机器人运动学?为什么需要运动学模型或者数学模型?
这里给出了三个目的:
我们知道了研究机器人运动学的意义。那我们怎样去描述机器人运动?我们需要多少变量才能描述一个具体的运动?即描述一个运动所需最小的变量数量是多少?
描述机器人运动中的这个变量的最小数目我们称之为自由度。比如一个轮式机器人(平面中的运动),它可以横向运动,也可以纵向运动,还可以围绕自己的垂直轴旋转。因此,它有三种运动方式,那么描述它的运动至少有3个参数,这就是我们所说的自由度。再比如说一个空间中的物体,它可以沿X、Y、Z三个方向运动,也可以绕X、Y、Z三个轴旋转,因此,描述该物体的运动至少需要6个参数,即6个自由度。
本课程所涉及的轮式机器人仅在平面上运动,因此它的自由度为3.
平面运动的描述可以两个平移、一个旋转共三个参数来描述,若对其进行量化,需要一个参照物。这个参照物,就是坐标系。常用的坐标系即笛卡尔坐标系。
① 坐标系1——世界(全局)坐标系
一个物体的位姿总是相对于其它物体进行表达。比如有一个物体,为了明确其位置,通常都习惯的称该物体在“我”的什么位置,这里的“我”就是世界(全局)坐标系。所谓世界(全局)坐标系是平面上的任意一点(上图中的 I I I )为原点的坐标系,它是为了描述物体(或其它坐标系,下文中的局部坐标系)的位置。
② 坐标系2 ——局部坐标系(物体坐标系)
世界坐标系能够描述物体(刚体)的位置坐标,为了更好的描述机器人运动,引入局部坐标系。局部坐标系以机器人上的一点(一般是质点,如上图中的 B B B)为坐标原点进行构建。
在世界坐标系中,我们可以描述移动机器人(刚体)的位置信息 [ x y ψ ] \begin{bmatrix} x\\ y\\ \psi \end{bmatrix} ?xyψ? ?,该位置信息包含 { 直线位置 : x , y 角度位置 : ψ \left\{\begin{aligned}直线位置:&x,y\\角度位置:&\psi\end{aligned}\right. {直线位置:角度位置:?x,yψ?,其中, x 为移动机器人沿 I 坐标系 x 轴的位移; y 为移动机器人沿 I 坐标系 y 轴的位移; ψ 为移动机器人旋转的角度。 x为移动机器人沿I坐标系x轴的位移;\\y为移动机器人沿I坐标系y轴的位移;\\\psi为移动机器人旋转的角度。 x为移动机器人沿I坐标系x轴的位移;y为移动机器人沿I坐标系y轴的位移;ψ为移动机器人旋转的角度。
在局部坐标系中,我们可以描述移动机器人(刚体)的瞬时状态 [ u v r ] \left[ \begin{matrix} u\\ v\\ r \end{matrix} \right] ?uvr? ? ,其中 u 为坐标系 B 中沿前进方向 ( 正向 ) 速度 ( 有时也称纵向速度 ) ; v 为坐标系 B 中沿垂直于 ( 正向 ) 移动方向的移动速度 ( 有时也称横向速度 ) ; r 为角速度 u为坐标系B中沿前进方向(正向)速度(有时也称纵向速度);\\v为坐标系B中沿垂直于(正向)移动方向的移动速度(有时也称横向速度);\\r为角速度 u为坐标系B中沿前进方向(正向)速度(有时也称纵向速度);v为坐标系B中沿垂直于(正向)移动方向的移动速度(有时也称横向速度);r为角速度。如上图所示。
=> 问题引入:
通过前面所述内容,移动机器人运动学所描述就是位姿、速度等信息。瞬时状态包含速度信息,位置信息即位姿信息,两者如何进行转换?即假设瞬时状态 [ u v r ] \left[ \begin{matrix} u\\ v\\ r \end{matrix} \right] ?uvr? ?已知,基于瞬时状态 [ u v r ] \left[ \begin{matrix} u\\ v\\ r \end{matrix} \right] ?uvr? ?,如何去推算位置信息 [ x y ψ ] \left[ \begin{matrix} x\\ y\\ \psi \end{matrix} \right] ?xyψ? ??
我们可以将 [ u v r ] \left[ \begin{matrix} u\\ v\\ r \end{matrix} \right] ?uvr? ? 及 [ x y ψ ] \left[ \begin{matrix} x\\ y\\ \psi \end{matrix} \right] ?xyψ? ?分别看作是一组变量。 [ u v r ] \left[ \begin{matrix} u\\ v\\ r \end{matrix} \right] ?uvr? ? 为线速度与角速度, [ x y ψ ] \left[ \begin{matrix} x\\ y\\ \psi \end{matrix} \right] ?xyψ? ?为线性位置与角位置,两者不能直接划等号。很明显,可通过瞬时状态积分方式推算位置信息。
=>建立联系:
我们对位置信息进行求导:
d
[
x
y
ψ
]
/
d
t
=
[
d
x
d
t
d
y
d
t
d
ψ
d
t
]
=
[
x
˙
y
˙
ψ
˙
]
{d\left[ \begin{matrix} x\\ y\\ \psi \end{matrix} \right]}/{dt} =\left[ \begin{matrix} \frac{dx}{dt}\\ \frac{dy}{dt}\\ \frac{d\psi}{dt} \end{matrix} \right] =\left[ \begin{matrix} \dot{x}\\ \dot{y}\\ \dot{\psi} \end{matrix} \right]
d
?xyψ?
?/dt=
?dtdx?dtdy?dtdψ??
?=
?x˙y˙?ψ˙??
?
从某种意义上说,上式中
x
˙
\dot{x}
x˙ 为
I
I
I 坐标系下沿
x
x
x 轴移动机器人的“瞬时位置”,
y
˙
、
ψ
˙
\dot{y}、\dot{\psi}
y˙?、ψ˙?为沿
y
、
z
y、z
y、z轴的“瞬时位置”。
“瞬时位置”无法获得,在某一时刻的“瞬时位置”可以用沿该方向瞬时速度的矢量和来表示。
如上图所示,我们利用余弦定理分别计算 u 、 v 、 r u、v、r u、v、r 沿 I I I 坐标系 x 、 y x、y x、y 轴的瞬时速度。
纵向速度u的沿 I I I 坐标系 x 、 y x、y x、y 轴的瞬时速度
沿 x x x 轴—— u u u 沿 x x x 轴分量与 v v v 沿 x x x 轴分量的矢量和
{ u 分量 : u ? c o s ψ v 分量 : ? v ? s i n ψ \left\{\begin{aligned}u分量:&u\cdot cos\psi\\v分量:&-v\cdot sin\psi\end{aligned}\right. {u分量:v分量:?u?cosψ?v?sinψ? 即: x ˙ = u ? c o s ψ ? v ? s i n ψ \dot x = u\cdot cos\psi - v\cdot sin\psi x˙=u?cosψ?v?sinψ , v v v 分量为负值是因其分量方向与正向相反。
沿 y y y 轴
{ u 分量 : u ? s i n ψ v 分量 : v ? c o s ψ \left\{\begin{aligned}u分量:&u\cdot sin\psi\\v分量:&v\cdot cos\psi\end{aligned}\right. {u分量:v分量:?u?sinψv?cosψ? 即: y ˙ = u ? s i n ψ + v ? c o s ψ \dot y = u\cdot sin\psi + v\cdot cos\psi y˙?=u?sinψ+v?cosψ
沿 z z z 轴
ψ ˙ = r \dot\psi = r ψ˙?=r
因此:
d
[
x
y
ψ
]
/
d
t
=
[
d
x
d
t
d
y
d
t
d
ψ
d
t
]
=
[
x
˙
y
˙
ψ
˙
]
=
[
u
?
c
o
s
ψ
?
v
?
s
i
n
ψ
u
?
s
i
n
ψ
+
v
?
c
o
s
ψ
r
]
{d\left[ \begin{matrix} x\\ y\\ \psi \end{matrix} \right]}/{dt} =\left[ \begin{matrix} \frac{dx}{dt}\\ \frac{dy}{dt}\\ \frac{d\psi}{dt} \end{matrix} \right] =\left[ \begin{matrix} \dot{x}\\ \dot{y}\\ \dot{\psi} \end{matrix} \right] =\left[ \begin{matrix} u\cdot cos\psi - v\cdot sin\psi\\ u\cdot sin\psi + v\cdot cos\psi\\ r \end{matrix} \right]
d
?xyψ?
?/dt=
?dtdx?dtdy?dtdψ??
?=
?x˙y˙?ψ˙??
?=
?u?cosψ?v?sinψu?sinψ+v?cosψr?
?
我们将上式换一种形式:
[
x
˙
y
˙
ψ
˙
]
=
[
u
?
c
o
s
ψ
?
v
?
s
i
n
ψ
u
?
s
i
n
ψ
+
v
?
c
o
s
ψ
r
]
=
[
c
o
s
ψ
?
s
i
n
ψ
0
s
i
n
ψ
c
o
s
ψ
0
0
0
1
]
[
u
v
r
]
\left[ \begin{matrix} \dot{x}\\ \dot{y}\\ \dot{\psi} \end{matrix} \right] =\left[ \begin{matrix} u\cdot cos\psi - v\cdot sin\psi\\ u\cdot sin\psi + v\cdot cos\psi\\ r \end{matrix} \right] = \left[ \begin{matrix} cos\psi & -sin\psi& 0\\ sin\psi & cos\psi& 0\\ 0 & 0 & 1 \end{matrix} \right]\left[ \begin{matrix} u\\ v\\ r \end{matrix} \right]
?x˙y˙?ψ˙??
?=
?u?cosψ?v?sinψu?sinψ+v?cosψr?
?=
?cosψsinψ0??sinψcosψ0?001?
?
?uvr?
?
我们将这个特定的矩阵
[
c
o
s
ψ
?
s
i
n
ψ
0
s
i
n
ψ
c
o
s
ψ
0
0
0
1
]
\left[ \begin{matrix} cos\psi & -sin\psi& 0\\ sin\psi & cos\psi& 0\\ 0 & 0 & 1 \end{matrix} \right]
?cosψsinψ0??sinψcosψ0?001?
? 称为映射矩阵(有人也称为运动学变化矩阵),也称雅可比矩阵,用
J
(
ψ
)
J(\psi)
J(ψ) 表示。
令
η
=
[
x
y
ψ
]
\eta = \left[ \begin{matrix} x\\ y\\ \psi \end{matrix} \right]
η=
?xyψ?
? ,
ξ
=
[
u
v
r
]
\xi =\left[ \begin{matrix} u\\ v\\ r \end{matrix} \right]
ξ=
?uvr?
?, 则上式变为:
η
˙
=
J
(
ψ
)
ξ
\dot\eta = J(\psi)\xi
η˙?=J(ψ)ξ
如上式所示,两个坐标系下位置信息与瞬时变量便建立起了联系。
[
u
v
r
]
\left[ \begin{matrix} u\\ v\\ r \end{matrix} \right]
?uvr?
? 映射到了
[
x
˙
y
˙
ψ
˙
]
\left[ \begin{matrix} \dot{x}\\ \dot{y}\\ \dot{\psi} \end{matrix} \right]
?x˙y˙?ψ˙??
? ,这就是要讲的运动学关系。
[
u
v
r
]
\left[ \begin{matrix} u\\ v\\ r \end{matrix} \right]
?uvr?
? 是
ξ
\xi
ξ 中的任意一个向量,它作为一个速度的输入,映射到了广义坐标导数
η
˙
\dot\eta
η˙? , 这就是移动机器人运动学,这个公式就是机器人运动学方程。
由上文所述,位置信息与瞬时变量间可通过机器人运动学方程相互映射。当输入为瞬时变量(即输入为速度),想得到在该输入下机器人是如何运动的(广义坐标导数),我们称之为机器人正微分运动学。
利用正微分运动学,我们可以以速度为输入量,看不同速度输入下机器人是如何运动的。
所谓逆微分运动学即给定广义坐标的导数,去获取相应的速度输入。即对于给定的位置轨迹,去计算机器人输入的固定速度。
当我们希望机器人以某种方式运动时,我们可以利用逆微分运动学计算以该方式运动需要输入的速度是什么。
所谓机器人运动学,实质是两个空间的相互映射:一个是输入速度(控制)命令,输出是导数(广义坐标的时间导数)。
根据映射的方向,我们将其分为正微分运动学与逆微分运动学。
喜欢我的分享可以订阅主题,持续关注。