机械臂运动学基础
机械臂运动学基础,首先描述了连杆参数,建立了连杆坐标系,进行了相邻连杆变换建模,最后得到机械臂连杆变换公式。
对于我们人类而言,我们通过肩部关节、肘部关节和腕部关节感知到手掌的位置和姿态。对于机械臂亦是如此,我们要获取机械臂的末端工具的位置和姿态,要通过机械臂的各个关节去计算。而机械臂运动学正是在已知机械臂关节角度的情况下计算机械臂末端位置和姿态,将关节空间映射到笛卡尔空间。
一、连杆变换
机械臂是由关节将一系列连杆连接组合成运动链。机械臂各个关节电机通过连杆传递运动实现末端位姿的改变,因此我们要获取机械臂末端相对于机械臂基座的位姿,首先要建立起连杆之间的变换关系,这也是运动学的主要内容。
1.1 连杆参数描述
连杆 i − 1 i-1 i−1绕关节轴 i − 1 i-1 i−1转动从而带动关节轴 i i i运动。要描述连杆 i − 1 i-1 i−1的运动,也即关节轴 i i i相对于关节轴 i − 1 i-1 i−1的运动,要通过两个参数进行描述:
- 连杆长度 a i − 1 a_{i-1} ai−1:关节轴 i − 1 i-1 i−1和关节轴 i i i之间的距离,即关节轴之间的公垂线长度
- 连杆扭转角 α i − 1 \alpha_{i-1} αi−1:关节轴 i − 1 i-1 i−1和关节轴 i i i之间夹角,即两轴线之间的夹角。作两轴公垂线的垂面,将两轴轴线投影到该垂面上,按照右手定则将关节轴 i − 1 i-1 i−1转动 α i − 1 \alpha_{i-1} αi−1到关节轴 i i i
上述已经实现了描述公垂线与关节轴 i i i轴线的交点相对于关节轴 i i i的运动,更进一步要实现的是连杆 i i i与关节轴 i i i交点的运动,也是描述连杆 i − 1 i-1 i−1和连杆 i i i之间的连接关系。同样也用两个参数描述:
- 连杆轴距 d i d_i di:连杆 i − 1 i-1 i−1和连杆 i i i沿公共轴线移动的距离
- 关节角 θ i \theta_i θi:连杆 i − 1 i-1 i−1和连杆 i i i绕公共轴线旋转的夹角
综上,机械臂的每个连杆可以用四个参数进行描述:
- 描述相邻关节轴关系两个参数:
- 连杆扭转角 α i − 1 \alpha_{i-1} αi−1:关节轴 i − 1 i-1 i−1绕公共垂线旋转到达关节轴 i i i的角度
- 连杆长度 a i − 1 a_{i-1} ai−1:关节轴 i − 1 i-1 i−1沿公垂线移动到关节轴 i i i的距离
- 描述相邻连杆关系的两个参数:
- 关节角 θ i \theta_i θi:连杆 i − 1 i-1 i−1绕关节轴 i i i旋转到达连杆 i i i的角度
- 连杆轴距 d i d_i di:连杆 i − 1 i-1 i−1沿公共轴线到达连杆 i i i移动的距离
1.2 连杆坐标系定义
为了描述连杆之间的相对位置关系,建立数学表达式,进行连杆坐标系定义和建立。
建立坐标系的过程:
- 固定在关节轴 i i i上的坐标系命名为坐标系 { i } \{ i \} {i}
- 坐标系 { i } \{ i \} {i}的 Z Z Z轴与关节轴 i i i的轴线重合
- 建立关节轴 i i i和关节轴 i + 1 i+1 i+1的公共垂线 a i a_i ai
- 坐标系 { i } \{ i \} {i}的原点为公共垂线 a i a_i ai与关节轴 i i i轴线的交点
- 坐标系 { i } \{ i \} {i}的 X X X轴与公共垂线 a i a_i ai重合
- 根据右手定则确定坐标系 { i } \{ i \} {i}的 Y Y Y轴
机械臂基座和末端坐标系定义:
- 固定在基座和末端的坐标系可以任意设定方向,但是要以问题简化为主
- 例如固定在基座的参考坐标系 { 0 } \{ 0 \} {0}的 Z 0 Z_0 Z0轴与关节轴1方向一致
- 例如关节 n n n的坐标系 { n } \{ n \} {n}与坐标系 { n − 1 } \{ n-1 \} {n−1}的 X X X轴一致
连杆参数的坐标系下定义:
- 连杆扭转角 α i − 1 \alpha_{i-1} αi−1:绕 X i − 1 X_{i-1} Xi−1轴,从 Z i − 1 Z_{i-1} Zi−1轴旋转到 Z i Z_i Zi轴的角度
- 连杆长度 a i − 1 a_{i-1} ai−1:沿 X i − 1 X_{i-1} Xi−1轴,从 Z i − 1 Z_{i-1} Zi−1轴移动到 Z i Z_i Zi轴的距离
- 关节角 θ i \theta_i θi:沿 Z i − 1 Z_{i-1} Zi−1轴,从 X i − 1 X_{i-1} Xi−1轴旋转到 X i X_i Xi轴的角度
- 连杆轴距 d i d_i di:沿 Z i − 1 Z_{i-1} Zi−1轴,从 X i − 1 X_{i-1} Xi−1轴移动到 X i X_i Xi轴的距离
上述四个参数组成机械臂DH参数。
二、运动学
2.1 相邻连杆变换
坐标系 { i } \{ i \} {i}相对于坐标系 { i − 1 } \{ i-1 \} {i−1}的变换可以通过四个DH参数构成的函数实现。为了更加清楚表述变换过程,建立中间坐标系坐标系 { R } \{ R \} {R}、坐标系 { Q } \{ Q \} {Q}和坐标系 { P } \{ P \} {P}。变换过程如下:
-
坐标系 { i − 1 } \{ i-1 \} {i−1}绕 X i − 1 X_{i-1} Xi−1轴旋转连杆扭转角 α i − 1 \alpha_{i-1} αi−1到达坐标系 { R } \{ R \} {R}
-
坐标系 { R } \{ R \} {R}沿着 X R X_R XR轴移动连杆长度 a i − 1 a_{i-1} ai−1到达坐标系 { Q } \{ Q \} {Q}
-
坐标系 { Q } \{ Q \} {Q}绕 Z Q Z_Q ZQ轴旋转关节角 θ i \theta_i θi到达坐标系 { P } \{ P \} {P}
-
坐标系 { P } \{ P \} {P}沿着 Z P Z_P ZP轴移动连杆轴距 d i d_i di到达坐标系 { i } \{ i \} {i}
因此坐标系
{
i
}
\{ i\}
{i}中定义的矢量变换为坐标系
{
i
−
1
}
\{ i-1 \}
{i−1}中描述为:
i
−
1
p
=
R
i
−
1
T
⋅
Q
R
T
⋅
P
Q
T
⋅
i
P
T
⋅
i
p
i
−
1
p
=
i
i
−
1
T
⋅
i
p
i
i
−
1
T
=
R
i
−
1
T
⋅
Q
R
T
⋅
P
Q
T
⋅
i
P
T
^{i-1}\textrm{p} = _{R}^{i-1}\textrm{T} \cdot _{Q}^{R}\textrm{T} \cdot _{P}^{Q}\textrm{T} \cdot _{i}^{P}\textrm{T} \cdot ^{i}\textrm{p} \\ ^{i-1}\textrm{p} = _{i}^{i-1}\textrm{T} \cdot ^{i}\textrm{p} \\ _{i}^{i-1}\textrm{T} = _{R}^{i-1}\textrm{T} \cdot _{Q}^{R}\textrm{T} \cdot _{P}^{Q}\textrm{T} \cdot _{i}^{P}\textrm{T}
i−1p=Ri−1T⋅QRT⋅PQT⋅iPT⋅ipi−1p=ii−1T⋅ipii−1T=Ri−1T⋅QRT⋅PQT⋅iPT
将四个DH参数代入其中,可得:
i
−
1
i
T
=
R
x
(
α
i
−
1
)
D
x
(
a
i
−
1
)
R
z
(
θ
i
)
D
z
(
d
i
)
=
[
1
0
0
0
0
c
o
s
α
i
−
s
i
n
α
i
0
0
s
i
n
α
i
c
o
s
α
i
0
0
0
0
1
]
⋅
[
1
0
0
a
i
0
1
0
0
0
0
1
0
0
0
0
1
]
⋅
[
c
o
s
θ
i
−
s
i
n
θ
i
0
0
s
i
n
θ
i
c
o
s
θ
i
0
0
0
0
1
0
0
0
0
1
]
⋅
[
1
0
0
0
0
1
0
0
0
0
0
d
i
0
0
1
1
]
[
c
θ
i
−
s
θ
i
0
a
i
−
1
s
θ
i
c
α
i
−
1
c
θ
i
c
α
i
−
1
−
s
α
i
−
1
−
d
i
s
α
i
−
1
s
θ
i
s
α
i
−
1
c
θ
i
s
α
i
−
1
c
α
i
−
1
d
i
c
α
i
−
1
0
0
0
1
]
_{i-1}^{i}\textrm{T} = R_x(\alpha_{i-1})D_x(a_{i-1})R_z(\theta_i)D_z(d_i) \\ = \begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & cos\alpha_i & -sin\alpha_i & 0\\ 0 & sin\alpha_i & cos\alpha_i & 0\\ 0 & 0 & 0 & 1 \end{bmatrix}\cdot \begin{bmatrix} 1 & 0 & 0 & a_i\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} cos\theta_i & -sin\theta_i & 0 & 0\\ sin\theta_i & cos\theta_i & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{bmatrix}\cdot \begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 0 & d_i\\ 0 & 0 & 1 & 1 \end{bmatrix} \\ \begin{bmatrix} c\theta_i & -s\theta_i & 0 & a_{i-1} \\ s\theta_ic\alpha_{i-1} & c\theta_ic\alpha_{i-1} & -s\alpha_{i-1} & -d_is\alpha_{i-1} \\ s\theta_is\alpha_{i-1} & c\theta_is\alpha_{i-1} & c\alpha_{i-1} & d_ic\alpha_{i-1} \\ 0 & 0 & 0 & 1 \end{bmatrix}
i−1iT=Rx(αi−1)Dx(ai−1)Rz(θi)Dz(di)=⎣⎢⎢⎡10000cosαisinαi00−sinαicosαi00001⎦⎥⎥⎤⋅⎣⎢⎢⎡100001000010ai001⎦⎥⎥⎤⋅⎣⎢⎢⎡cosθisinθi00−sinθicosθi0000100001⎦⎥⎥⎤⋅⎣⎢⎢⎡10000100000100di1⎦⎥⎥⎤⎣⎢⎢⎡cθisθicαi−1sθisαi−10−sθicθicαi−1cθisαi−100−sαi−1cαi−10ai−1−disαi−1dicαi−11⎦⎥⎥⎤
2.2 机械臂连杆变换
在计算出机械臂所有相邻连杆的变换矩阵之后,可以通过连乘计算出任意两个坐标系的变换矩阵。机械臂坐标系
{
N
}
\{ N \}
{N}相对于坐标系
{
0
}
\{ 0 \}
{0}的变换矩阵为:
N
0
T
=
1
0
T
⋅
2
1
T
⋅
3
2
T
⋅
.
.
.
.
.
.
N
N
−
1
T
_{N}^{0}\textrm{T} = _{1}^{0}\textrm{T} \cdot _{2}^{1}\textrm{T} \cdot _{3}^{2}\textrm{T} \cdot ...... _{N}^{N-1}\textrm{T}
N0T=10T⋅21T⋅32T⋅......NN−1T
参考
B站台大林沛群老师机器人课程https://www.bilibili.com/video/BV1v4411H7ez?from=search&seid=3067167301896237491&spm_id_from=333.337.0.0
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)