文章目录
- 0. 前言
- 1. 全微分几何参数误差模型
- 1.1 末端位置全微分
- 1.2 末端姿态全微分
- 1.3 末端位姿全微分
- 2 机器人运动学参数辨识算法
- 2.1 偏差辨识流程
- 2.2 最小二乘法
- 2.3 机器人定位误差补偿
- 3 参考文献
0. 前言
用于辨识几何参数误差的方法众多,其中较为常用的是最小二乘法和智能搜索算法。本文基于MDH参数建立两岸坐标系,不清楚的可以参考机器人修正DH参数(MDH)和标准DH(SDH)参数这篇文章
1. 全微分几何参数误差模型
根据建立的机器人MDH模型,机器人相邻关节坐标系之间的齐次变换矩阵表示为:
i
i
−
1
T
=
R
X
(
α
i
−
1
)
D
X
(
a
i
−
1
)
R
Z
(
θ
i
)
D
Z
(
d
i
)
=
[
c
θ
i
−
s
θ
i
0
a
i
−
1
s
θ
i
c
α
i
−
1
c
θ
i
c
α
i
−
1
−
s
α
i
−
1
−
s
α
i
−
1
d
i
s
θ
i
s
α
i
−
1
c
θ
i
s
α
i
−
1
c
α
i
−
1
c
α
i
−
1
d
i
0
0
0
1
]
(1)
\begin{aligned} _i^{i-1}T&=R_X(\alpha_{i-1})D_X(a_{i-1})R_Z(\theta_i)D_Z(d_i)\\&=\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}&-s\alpha_{i-1}d_i\\s\theta_is\alpha_{i-1}&c\theta_is\alpha_{i-1}&c\alpha_{i-1}&c\alpha_{i-1}d_i\\0&0&0&1\end{bmatrix}\end{aligned}\tag{1}
ii−1T=RX(αi−1)DX(ai−1)RZ(θi)DZ(di)=
cθisθicαi−1sθisαi−10−sθicθicαi−1cθisαi−100−sαi−1cαi−10ai−1−sαi−1dicαi−1di1
(1)
如果按照上述方法将连杆坐标系固定于连杆上时,连杆的几何参数可以定义为
- a i − 1 a_{i-1} ai−1:沿 X ˆ i − 1 \^X_{i-1} Xˆi−1轴,从 Z ˆ i − 1 \^Z_{i-1} Zˆi−1移动到 Z ˆ i \^Z_{i} Zˆi的距离,通常取正值;
- α i − 1 \alpha_{i-1} αi−1:绕 X ˆ i − 1 \^X_{i-1} Xˆi−1轴,从 Z ˆ i − 1 \^Z_{i-1} Zˆi−1旋转到 Z ˆ i \^Z_{i} Zˆi的角度,采用右手法则判断正负;
- d i d_i di:沿 Z ˆ i \^Z_{i} Zˆi轴,从 X ˆ i − 1 \^X_{i-1} Xˆi−1移动到 X ˆ i \^X_{i} Xˆi的距离;
- θ i \theta_i θi:绕 Z ˆ i \^Z_{i} Zˆi轴,从 X ˆ i − 1 \^X_{i-1} Xˆi−1旋转到 X ˆ i \^X_{i} Xˆi的角度,采用右手法则判断正负;
几何参数的微小误差影响各关节的齐次变换矩阵,设四个运动学参数的微小误差值为
δ
θ
i
\delta\theta_i
δθi,
δ
d
i
\delta d_i
δdi,
δ
α
i
−
1
\delta \alpha_{i-1}
δαi−1,
δ
a
i
−
1
\delta a_{i-1}
δai−1。
对旋转变换矩阵进行全微分,由于几何参数误差本身就属于微小误差,忽略高阶误差得:
d
(
i
i
−
1
T
)
=
∂
i
i
−
1
T
∂
a
i
−
1
Δ
a
i
−
1
+
∂
i
i
−
1
T
∂
α
i
−
1
Δ
α
i
−
1
+
∂
i
i
−
1
T
∂
d
i
Δ
d
i
+
∂
i
i
−
1
T
∂
θ
i
Δ
θ
i
d(^{i-1}_iT)=\frac{\partial^{i-1}_iT}{\partial a_{i-1}}\Delta a_{i-1}+\frac{\partial^{i-1}_iT}{\partial\alpha_{i-1}}\Delta\alpha_{i-1}+\frac{\partial^{i-1}_iT}{\partial d_i}\Delta d_{i}+\frac{\partial^{i-1}_iT}{\partial\theta_i}\Delta\theta_{i}
d(ii−1T)=∂ai−1∂ii−1TΔai−1+∂αi−1∂ii−1TΔαi−1+∂di∂ii−1TΔdi+∂θi∂ii−1TΔθi
机器人第i关节位置误差和几何参数的关系:
d
(
P
i
)
=
∂
P
i
∂
a
i
−
1
Δ
a
i
−
1
+
∂
P
i
∂
α
i
−
1
Δ
α
i
−
1
+
∂
P
i
∂
d
i
Δ
d
i
+
∂
P
i
∂
θ
i
Δ
θ
i
d(P_i)=\frac{\partial P_i}{\partial a_{i-1}}\Delta a_{i-1}+\frac{\partial P_i}{\partial\alpha_{i-1}}\Delta\alpha_{i-1}+\frac{\partial P_i}{\partial d_i}\Delta d_{i}+\frac{\partial P_i}{\partial\theta_i}\Delta\theta_{i}
d(Pi)=∂ai−1∂PiΔai−1+∂αi−1∂PiΔαi−1+∂di∂PiΔdi+∂θi∂PiΔθi
机器人第i关节姿态误差和几何参数的关系:
δ
i
=
∂
O
i
∂
a
i
−
1
Δ
a
i
−
1
+
∂
O
i
∂
α
i
−
1
Δ
α
i
−
1
+
∂
O
i
∂
d
i
Δ
d
i
+
∂
O
i
∂
θ
i
Δ
θ
i
\delta_i=\frac{\partial O_i}{\partial a_{i-1}}\Delta a_{i-1}+\frac{\partial O_i}{\partial\alpha_{i-1}}\Delta\alpha_{i-1}+\frac{\partial O_i}{\partial d_i}\Delta d_{i}+\frac{\partial O_i}{\partial\theta_i}\Delta\theta_{i}
δi=∂ai−1∂OiΔai−1+∂αi−1∂OiΔαi−1+∂di∂OiΔdi+∂θi∂OiΔθi
把两者组合起来可写作雅可比行列式形式:
Δ
X
i
=
[
d
P
i
δ
i
]
=
Ψ
i
Δ
ξ
i
\left.\Delta X_i=\left[\begin{array}{c}dP_{i}\\\delta_{i}\end{array}\right.\right]=\Psi_i\Delta\xi_i
ΔXi=[dPiδi]=ΨiΔξi
式中,
d
P
i
=
[
d
x
i
,
d
y
i
,
d
z
i
]
T
dP_i=[dx_i ,dy_i ,dz_i]^T
dPi=[dxi,dyi,dzi]T,
Δ
ξ
i
=
[
Δ
a
i
−
1
,
Δ
α
i
−
1
,
Δ
d
i
,
Δ
θ
i
]
T
\Delta\xi_i=[\Delta a_{i-1} ,\Delta\alpha_{i-1},\Delta d_i, \Delta\theta_i]^T
Δξi=[Δai−1,Δαi−1,Δdi,Δθi]T,
δ
i
=
[
δ
x
i
,
δ
y
i
,
δ
z
i
]
T
\delta_i=\begin{bmatrix}\delta x_i,\delta y_i,\delta z_i\end{bmatrix}^T
δi=[δxi,δyi,δzi]T,
Ψ
i
\Psi_i
Ψi是一个6*4的矩阵
1.1 末端位置全微分
由于位置变换是平移变换,所以总的位置误差可以由各关节误差累加得到:
d
P
n
=
[
d
x
d
y
d
z
]
=
[
M
a
M
α
M
d
M
θ
]
[
Δ
a
Δ
α
Δ
d
Δ
θ
]
(2)
dP_n=\begin{bmatrix}dx\\dy\\dz\end{bmatrix}=\begin{bmatrix}M_a&M_\alpha&M_d&M_\theta\end{bmatrix}\begin{bmatrix}\Delta a\\\Delta\alpha\\\Delta d\\\Delta\theta\end{bmatrix} \tag{2}
dPn=
dxdydz
=[MaMαMdMθ]
ΔaΔαΔdΔθ
(2)
d
P
n
dP_n
dPn表示机器人末端位置的偏差值,
M
a
,
M
α
,
M
d
,
M
θ
M_a,M_\alpha,M_d,M_\theta
Ma,Mα,Md,Mθ为3*n矩阵,是机器人的运动学参数偏差的系数矩阵,对应着上述对应下标为i时雅可比矩阵的前三行,
Δ
a
,
Δ
α
,
Δ
d
,
Δ
θ
\Delta a,\Delta\alpha,\Delta d,\Delta\theta
Δa,Δα,Δd,Δθ时机器人运动学的参数偏差,其中
Δ
a
=
[
Δ
a
1
,
Δ
a
2
,
.
.
.
,
Δ
a
n
]
T
\Delta a=[\Delta a_1,\Delta a_2,...,\Delta a_n]^T
Δa=[Δa1,Δa2,...,Δan]T,其他三个参数同理。
1.2 末端姿态全微分
δ
n
=
[
δ
x
δ
y
δ
z
]
=
[
M
a
M
α
M
d
M
θ
]
[
Δ
a
Δ
α
Δ
d
Δ
θ
]
(3)
\delta_n=\begin{bmatrix}\delta x\\\delta y\\\delta z\end{bmatrix}=\begin{bmatrix}M_a&M_\alpha&M_d&M_\theta\end{bmatrix}\begin{bmatrix}\Delta a\\\Delta\alpha\\\Delta d\\\Delta\theta\end{bmatrix} \tag{3}
δn=
δxδyδz
=[MaMαMdMθ]
ΔaΔαΔdΔθ
(3)
δ
n
\delta_n
δn表示机器人末端姿态的偏差值,
M
a
,
M
α
,
M
d
,
M
θ
M_a,M_\alpha,M_d,M_\theta
Ma,Mα,Md,Mθ为3*n矩阵,是机器人的运动学参数偏差的系数矩阵,对应着上述对应下标为i时雅可比矩阵的后三行,
Δ
a
,
Δ
α
,
Δ
d
,
Δ
θ
\Delta a,\Delta\alpha,\Delta d,\Delta\theta
Δa,Δα,Δd,Δθ时机器人运动学的参数偏差,其中
Δ
a
=
[
Δ
a
1
,
Δ
a
2
,
.
.
.
,
Δ
a
n
]
T
\Delta a=[\Delta a_1,\Delta a_2,...,\Delta a_n]^T
Δa=[Δa1,Δa2,...,Δan]T,其他三个参数同理。
1.3 末端位姿全微分
结合前面所述,位姿全微分可写为:
Δ
X
n
=
[
d
P
n
δ
n
]
=
Ψ
Δ
ξ
(4)
\left.\Delta X_n=\left[\begin{array}{c}dP_{n}\\\delta_{n}\end{array}\right.\right]=\Psi \Delta\xi \tag{4}
ΔXn=[dPnδn]=ΨΔξ(4)
其中
-
d
P
n
dP_n
dPn:(3x1)来自
T
n
T_n
Tn第四列的位置偏差
-
δ
n
\delta_n
δn:(3x1)来自旋转矩阵
R
n
R_n
Rn的姿态偏差
-
Ψ
\Psi
Ψ:(6x(nx4))广义雅可比矩阵
-
Δ
ξ
\Delta \xi
Δξ:(nx4)n个关节的几何参数偏差
2 机器人运动学参数辨识算法
2.1 偏差辨识流程
流程如下:
2.2 最小二乘法
以位置误差为例:多组位置误差数据构建的几何参数误差模型是超定方程,公式(4)的微分几何参数误差模型实际上是一个线性方程组,包含3个线性方程,方程中的位置误差
Δ
P
n
\Delta P_n
ΔPn可以通过测量直接得到,nx4个几何误差是未知数,需要对多个位置进行测量构建超定方程组,从而求几何参数误差的近似解,以六轴机器人为例,共有24个几何误差未知数,而一个点的位置误差可以增加三个求解条件(即x,y,z),所以至少需要8组位置误差数据才能求解,而实际中应采集的点数应该大于这个数。
公式(4)可以写成
A
x
=
b
Ax=b
Ax=b的形式,辨识机器人运动学参数的具体误差就是求出
x
x
x的值。如果矩阵 A 是可逆的,可以直接计算出 x 的值:
x
=
A
−
1
⋅
b
x=A^{-1}\cdot b
x=A−1⋅b。但是为了辨识机器人的运动学参数偏差,矩阵 A 的行数(采集点的数量*3)总是会大于列数(需要辨识的参数),也就是待求解参数的数量小于方程的数量,不能通过矩阵的逆运算求取机器人的运动学参数偏差,则需要通过最小二乘法来求取。
最小二乘法的具体过程如下:
结合(4)式,这里用最小二乘法求得的运动学参数偏差可以写为如下形式:
Δ
ξ
=
(
Ψ
T
Ψ
)
−
1
Ψ
T
Δ
P
^
\Delta\xi=(\Psi^T\Psi)^{-1}\Psi^T \Delta \hat{P}
Δξ=(ΨTΨ)−1ΨTΔP^
由于最小二乘法只进行一次计算,所以使用该方法进行参数辨识时可以和迭代 方法结合,从而减少位置误差,提高参数辨识效果
2.3 机器人定位误差补偿
根据辨识得 到的机器人运动学参数偏差值和机器人运动到期望位姿的各个关节的理论关节角,可以 计算出机器人在该目标位置的位姿偏差
Δ
T
\Delta T
ΔT ,使用期望位姿减去该位姿偏差就可以得到 补偿后的位姿,将 补偿后的位姿赋予机器人控制器可使机器人运动到期望位置,笛卡尔空间补偿法,如图所示:
3 参考文献
[1] 闻了然和张方, 《机器人运动学模型参数修正》, 数字技术与应用, 卷 41, 期 4, 页 1-4+29, 2023.
[2] 潘钊, 《基于机器学习的工业机器人位置误差标定研究》, 华中科技大学, 2022.
[3] 郭哲, 《垂直六关节工业机器人运动学参数标定》, 东南大学, 2019.