1. 引言
在机器人进行工业装配[1]、工业加工[2]及医疗应用[3]开发时,力传感器扮演着重要的角色。受环境结构的复杂性影响,工作人员经常利用力传感器及机器人柔顺控制算法实现与机器人的交互,保证机器人工作的安全性。机器人柔顺控制算法需要实时获取工作人员所施加的力和力矩,然而,当力传感器连接工具时,力传感器的读数包括力传感器初始值、工具重力所施加的力和力矩及工作人员所施加的力和力矩,因此无法直接从力传感器读数获取工作人员所施加的力和力矩,利用重力补偿算法估计力传感器初始值及工具所施加的力和力矩,进而获取工作人员所施加的力和力矩成为必要的工作。
与文献[4]六维力传感器动态力补偿不同,本文认为机器人在低速运动时,工具重力不会带来惯性力,因此本文聚焦于六维力传感器的静态重力补偿。重力补偿本质问题是一个参数估计的问题,具体的参数包括:1) 机器人安装倾角;2) 力传感器坐标系相对机器人末端坐标系的旋转变换矩阵;3) 力传感器初始值;4) 工具的重力及重心位置。
针对机器人安装倾角的估计方法,文献[5]-[8]将安装倾角参数带入力传感器的物理约束方程中,利用最小二乘法对参数进行估计,由此可得到重力方向在机器人基坐标系下的表示。有两种针对力传感器坐标系相对于机器人末端坐标系的旋转变换矩阵的估计方法,文献[9]-[11]假设了力传感器坐标系和机器人末端坐标系平行,两个坐标系之间相差一个坐标原点的距离。文献[12]利用最小二乘法标定力传感器坐标系相对于机器人末端坐标系Z轴的旋转角度,但没有标定相对于X、Y轴的旋转角度。有三种针对力传感器初始值的估计方法。文献[13]-[15]通过变换机器人多组姿态,并保证工具重力对力传感器的施力方向在同组姿态中相反,将多组结果进行相加即可求得力传感器的初始值。文献[9]-[13] [16] [17]通过拆卸末端工具直接获得力传感器初始值,但该方法增加了操作的复杂度。文献[5]-[8]通过变换多组机器人末端的任意姿态,将初始值参数带入力传感器的物理约束方程中,利用最小二乘法对该参数进行估计。有三种针对工具重力及重心位置进行估计的方法,文献[5]-[8] [13]-[16]将待估计参数代入力传感器的物理约束方程中,利用最小二乘法对参数进行估计。文献[9]-[11] [17]通过测量称重和CAD模型直接得出重力和重心位置。文献[11]没有估计工具的重心位置,直接从清零后的力传感器读数中得到工具的重力参数值。
综上所述,针对机器人安装倾角参数主要采用最小二乘法估计,但一般机器人底座和地面平行,该参数估计可以省略。针对力传感器坐标系相对于机器人末端坐标系的旋转变换矩阵的估计,大多文献都认为两个坐标系平行,或只针对力传感器坐标系相对于机器人末端坐标系Z轴的旋转角度进行估计,但上述文献都不能精准地标定出两个坐标系之间的旋转变换矩阵。当力传感器坐标系没有安装示意时,很难判断力传感器坐标系与机器人末端坐标系平行的安装位置,需要反复拆卸旋转调整力传感器的安装姿态。同时,受器件加工精度的影响,力传感器坐标系Z轴往往和机械臂末端坐标系的Z轴不平行,导致重力补偿的效果变差。当将重力补偿应用到机械臂力控模型时,如果不能获得力传感器坐标系和机械臂末端坐标系的旋转变换矩阵,重力补偿效果变差,不能保证力控模型的有效性,因此需要提出一种对力传感器坐标系和机械臂末端坐标系的旋转矩阵精准估计方法。针对力传感器初始值的估计方法,通过拆卸工具进而获得初始值参数的方法无疑增加了操作的复杂度。通过变换机械臂多组姿态获得力传感器初始值的方法需要保证工具重力对力传感器的施力方向相反,也增加了操作的复杂度。针对工具重力及重心位置进行估计的方法,通常会受加工和安装精度的影响,无法直接从CAD中直接获得参数。因此本文选择采用参数估计的方法对力传感器初始值,工具重力及重心位置进行估计。
本文提出一种带有力传感器初始值的力牵引重力补偿方法,与已有方法不同,为解决力传感器因安装不精确,无法保证力传感器坐标系和机械臂末端坐标系平行,进而需要反复拆卸调整安装力传感器的问题,本文通过测试并保证机器人底座和地面基本平行的前提下,变换机器人多组任意姿态,利用最小二乘法估计力传感器的初始值、工具的重力及工具的重心位置,变换机器人多组特定姿态精准标定力传感器坐标系相对机器人末端坐标系的旋转变换矩阵,从而解决力传感器因安装不精确,需要反复拆卸调整安装的问题。基于以上步骤,可以实现重力补偿自动化,进而实时获得工作人员所施加的力和力矩。
2. 算法原理
2.1. 重力补偿原理
如图1所示,为重力补偿原理示意图,
表示机器人基坐标系,
表示机器人末端坐标系,
表示六维力传感器坐标系,工具重心在
处,且工具对六维力传感器
、
、
轴所施加力及力矩为
、
、
、
、
、
。
设施加给力传感器的外力和外力矩为
、
、
、
、
、
,本文讨论的是带有力传感器初始值的重力补偿算法,虽然力传感器可以在空载情况下将初始值重新标零,但该方法存在两个弊端:第一个弊端为需要在每次进行重力补偿实验中拆卸工具,步骤繁琐且耗时较长;第二个弊端为所安装工具会对力传感器产生挤压,对力传感器初始值造成影响,造成力传感器空载标零失效。在本文的算法中力传感器初始值是需要待估计的参数,因此设力传感器的初始值为
、
、
、
、
、
,力传感器的读数为
、
、
、
、
、
,工具重心
在力传感器坐标系
、
、
轴的坐标为
、
、
。重力补偿的目标为离线标定力传感器的初始值,实时估计工具对六维力传感器所施加的力和力矩,进而通过力传感器的读数去实时估计出施加给力传感器的外力和外力矩。下文详细叙述重力补偿具体的算法流程。
本文假定机器人基座水平,则工具重力的方向和机器人基坐标系的
轴平行。由此工具重力在机器人基坐标系中的单位矢量方向为:
Figure 1. Schematic diagram of gravity compensation principle
图1. 重力补偿原理示意图
(1)
工具重力在六维力学传感器坐标系的矢量方向为:
(2)
式中:
为机器人末端坐标系在机器人基坐标系下的旋转矩阵,
为力传感器坐标系在机器人末端坐标系下的旋转矩阵。
则工具重力与力传感器坐标系
、
、
轴的夹角为:
(3)
则工具重力对六维力传感器所施加的力为:
(4)
由此可以得到估计出施加给力传感器的外力和外力矩的公式为:
(5)
由式(5)可知,实时估计施加给力传感器的外力和外力矩需要获得多个未知参数,其中包括
、
、
、
、
、
、
、
、
、
、
。下文1.2节介绍基于最小二乘法对
、
、
、
、
、
、
、
、
、
参数估计方法。1.3节介绍变换机器人多组特定姿态精准标定
的方法。
2.2. 基于最小二乘法的参数估计
力传感器安装工具且不受外力情况下,机器人末端坐标系变换
种不同的姿态,获得力传感器测得的数据为
,且此时工具重力对力传感器的力及力矩为
,所施加给力学传感器的力及力矩为
,由此可得:
(6)
(7)
从力传感器测得的
组数据中选择
对不同且不线性相关数据为
,代入式(6)中得:
(8)
则:
(9)
式中:
利用最小二乘法求解出初始值
、
、
。将
、
、
代入式(6)中可以得出
组
的结果,将
组结果求平均值,即可求得工具重力
的值。
将
、
、
带入式(6)中可得到
、
、
,将此值代入式(7)中,可得:
(10)
式中:
利用最小二乘法求得工具质心在六维力学传感器的坐标
、
、
,力传感器力矩初始值
、
、
。
2.3. 力传感器坐标系标定
本文假定工具重力的方向和机器人基坐标系的
轴平行,则重力方向与机器人基坐标系的
轴重合,方向相反。
调整机器人位姿,保证机器人末端坐标系
轴与机器人基坐标系
轴重合,方向相反,获得工具对力传感器所施加的力和力矩为:
,调整机器人位姿,保证机器人末端坐标系
轴与机器人基坐标系
轴重合,方向相反,获得工具对力传感器所施加的力和力矩为:
,该调整机器人位姿过程可以通过编写笛卡尔空间规划代码自动实现。设力学传感器坐标系和机器人末端坐标系两者之间初始估计的变换矩阵为:
(11)
式中:
为机器人末端坐标系
轴在力学传感器坐标系中的方向余弦,
为机器人末端坐标系
轴在力学传感器坐标系中的方向余弦,
为机器人末端坐标系
轴在力学传感器坐标系中的方向余弦。
则由采集的力传感器信息可得到:
(12)
为保证最终结果的正交性,这里需要对初始结果进行叉乘的处理。设力学传感器坐标系和机器人末端坐标系两者之间最终结果的旋转矩阵为:
(13)
式中:
为机器人末端坐标系
轴在力学传感器坐标系中的方向余弦,
为机器人末端坐标系
轴在力学传感器坐标系中的方向余弦,
为机器人末端坐标系
轴在力学传感器坐标系中的方向余弦。
则力学传感器坐标系和机器人末端坐标系两者之间最终结果的旋转矩阵为:
(14)
3. 实验验证
3.1. 实验系统
如图2所示,为真实实验示意图,本文所采用的机械臂为AUBO-I5六轴机械臂,额定负载为5 kg,重复定位精度为±0.02 mm,具有防碰撞停止功能,并提供了对应的SDK控制包。本文所采用的力传感器为ATI-Gamma六维力学传感器,
、
轴的力量程为±130 N,
轴的力量程为±400 N,力矩量程为±10 N∙m,最小力分辨率为0.0063 N,最小力矩分辨率为0.0005 N∙m,在机械臂末端利用连接件固连施力工具。
Figure 2. Schematic diagram of real experiment
图2. 真实实验示意图
3.2. 实验结果
为验证算法的精度,将力传感器安装到机械臂末端,随机生成N (本文实验N = 10)组机械臂六个关节角度,并将所生成的六个关节角的角度记录到表1中。由于此时没有施加外力和外力矩,因此经过重力补偿后所测得的施加的力和力矩的真值应为[0 0 0 0 0 0]。这里将N个机械臂末端处于不同位姿时所测得的施加的力和力矩求平均值,并将该值定义为残差D。
(15)
该残差越接近于0,说明重力补偿的效果越好。表2显示了未进行重力补偿时的残差,表3显示了有重力补偿且无力传感器坐标系标定时残差,表4显示了有重力补偿且有力传感器坐标系标定时残差。
从表2、表3及表4中可以看出,在重力补偿中添加力传感器坐标系标定的步骤后,重力补偿的残差最小,本文重力补偿算法的残差为[0.237/N 0.395/N 0.928/N 0.032/N∙m 0.018/N∙m 0.002/N∙m],对比于原算法的重力补偿残差[5.011/N 3.171/N 0.3/N 0.214/N∙m 0.339/N∙m 0.010/N∙m],该算法具有一定的优越性,因此本文的重力补偿算法具有有效性。
图3表示3种方法的重力补偿残差示意图,
表示力维度上的重力补偿后残差,
表示力矩维度上的重力补偿后残差,从曲线变化图可以看出本文的重力补偿
Table 1. Ten groups of robot joint angles
表1. 十组不同的机器人关节角
次数 |
J1˚ |
J2˚ |
J3˚ |
J4˚ |
J5˚ |
J6˚ |
1 |
25 |
15 |
30 |
43 |
−17 |
2 |
2 |
−33 |
−15 |
37 |
34 |
42 |
28 |
3 |
−10 |
−19 |
18 |
2 |
48 |
−11 |
4 |
−37 |
23 |
30 |
−38 |
−22 |
−43 |
5 |
13 |
22 |
37 |
−29 |
−48 |
−19 |
6 |
40 |
−26 |
49 |
47 |
4 |
1 |
7 |
46 |
20 |
−32 |
29 |
31 |
21 |
8 |
−22 |
20 |
−21 |
20 |
−7 |
−48 |
9 |
48 |
−19 |
−28 |
11 |
−33 |
−24 |
10 |
9 |
16 |
34 |
37 |
−5 |
−44 |
Table 2. Residual error without gravity compensation
表2. 无重力补偿时残差
次数 |
(N) |
(N) |
(N) |
(N∙m) |
(N∙m) |
(N∙m) |
1 |
1.722 |
9.868 |
0.343 |
0.648 |
0.043 |
0.020 |
2 |
9.231 |
3.492 |
0.103 |
0.215 |
0.554 |
0.004 |
3 |
8.286 |
5.907 |
1.234 |
0.387 |
0.494 |
0.003 |
4 |
1.335 |
8.897 |
2.821 |
0.590 |
0.035 |
0.013 |
5 |
5.234 |
7.093 |
3.296 |
0.464 |
0.414 |
0.016 |
6 |
0.741 |
8.381 |
5.858 |
0.559 |
0.132 |
0.017 |
7 |
3.002 |
9.792 |
0.593 |
0.655 |
0.126 |
0.023 |
8 |
5.695 |
5.501 |
5.493 |
0.380 |
0.284 |
0.025 |
9 |
8.164 |
5.645 |
0.154 |
0.372 |
0.481 |
0.005 |
10 |
6.065 |
7.854 |
0.821 |
0.524 |
0.344 |
0.014 |
error |
4.948 |
7.243 |
2.072 |
0.480 |
0.291 |
0.140 |
Table 3. Residual error after gravity compensation without force sensor frame calibration
表3. 力传感器坐标系无标定时的重力补偿后残差
次数 |
(N) |
(N) |
(N) |
(N∙m) |
(N∙m) |
(N∙m) |
1 |
6.051 |
1.628 |
0.421 |
0.119 |
0.399 |
0.003 |
2 |
4.221 |
5.133 |
0.508 |
0.340 |
0.284 |
0.019 |
3 |
5.421 |
3.455 |
0.006 |
0.218 |
0.366 |
0.014 |
4 |
5.558 |
1.508 |
0.424 |
0.117 |
0.376 |
0.001 |
5 |
2.902 |
5.732 |
0.244 |
0.396 |
0.209 |
0.020 |
6 |
4.771 |
2.839 |
0.514 |
0.212 |
0.323 |
0.008 |
7 |
6.494 |
0.945 |
0.251 |
0.085 |
0.429 |
0.005 |
8 |
2.666 |
4.790 |
0.218 |
0.307 |
0.192 |
0.009 |
9 |
5.508 |
3.916 |
0.176 |
0.246 |
0.370 |
0.013 |
10 |
6.522 |
1.760 |
0.241 |
0.098 |
0.440 |
0.005 |
error |
5.011 |
3.171 |
0.300 |
0.214 |
0.339 |
0.010 |
Table 4. Residual error after gravity compensation with force sensor frame calibration
表4. 力传感器坐标系标定后的重力补偿后残差
次数 |
(N) |
(N) |
(N) |
(N∙m) |
(N∙m) |
(N∙m) |
1 |
0.580 |
0.488 |
1.341 |
0.042 |
0.049 |
0.002 |
2 |
0.058 |
0.256 |
0.675 |
0.021 |
0.003 |
0.000 |
3 |
0.022 |
0.732 |
|
|
0.003 |
0.001 |
4 |
0.484 |
0.465 |
1.263 |
0.047 |
0.032 |
0.002 |
5 |
0.028 |
0.391 |
1.035 |
0.014 |
0.014 |
0.001 |
6 |
0.240 |
0.535 |
1.385 |
0.015 |
0.016 |
0.001 |
7 |
0.310 |
0.435 |
1.149 |
0.051 |
0.030 |
0.005 |
8 |
0.550 |
0.368 |
0.498 |
0.010 |
0.026 |
0.003 |
9 |
0.076 |
0.086 |
0.606 |
0.022 |
0.005 |
0.002 |
10 |
0.019 |
0.190 |
0.930 |
0.033 |
0.002 |
0.003 |
error |
0.237 |
0.395 |
0.928 |
0.032 |
0.018 |
0.002 |
Figure 3. Residual errors under different gravity compensation
图3. 不同重力补偿情况下的残差示意图
算法残差最小且平稳性最好。
4. 结论
1) 目前重力补偿算法普遍假设力传感器坐标系和机器人末端坐标系平行,而受加工件的影响,工作人员需要不断设计加工件并拆卸调整安装力传感器,从而保证力传感器坐标系和机器人末端坐标系平行。本文提出一种具有标定力传感器坐标系相对于机器人末端坐标系的带有力传感器初始值的重力补偿算法,从算法层面解决了力传感器坐标系和机器人末端坐标系不平行的问题,降低了重力补偿操作的复杂度。
2) 给出了所提出方法的理论分析,说明了重力补偿所需要估计的参数量,介绍了利用最小二乘法估计力传感器初始值、工具重力及重心坐标及利用多个特定机器人位姿精准标定力传感器坐标系相对于机器人末端坐标系的方法,确保了模型的有效性。
3) 实验结果表明,在力传感器坐标系和机器人末端坐标系不平行的情况下,本文的算法与原有的重力补偿算法相比,降低了重力补偿残差,提高了重力补偿算法的场景实用度。
后续工作将深入研究力传感器坐标系标定的精确度及基于动态力的重力补偿算法,提高机器人运动过程中的重力补偿效果,进而提高机器人力控算法的稳定性。
基金项目
国家自然科学基金共融机器人重大研究计划重点项目(No. 92148206)与北京市自然科学基金(7202103)。
NOTES
*通讯作者Email: Tsai@buaa.edu.cn