六维力传感器标定方法

六维力传感器标定方法

  • 相关背景
  • 标定策略
  • 标定步骤
  • 真实接触力计算
  • 讨论

相关背景

  随着机器人应用领域的扩展,出现了越来越多的接触式作业场景,如机器人打磨、易碎物品抓取、人形机器人精细化操作等。在这些应用中,需要对交互力/力矩进行较好控制,否则会导致任务失败的后果。此外,在交互力/力矩过大时可能会造成机器人系统及操作对象的损坏。
  为了对交互力/力矩进行较好控制,首先需要精确获取交互力/力矩。尽管目前存在基于关节电流、关节双编码器方式对末端交互力/力矩进行估计的方法,然而受到各种因素的影响误差较大,对力控算法的研发带来较大影响。目前较为常见的方式为在机械臂末端安装多维力传感器,并在此基础上对三个维度的力和绕三个轴的力矩进行测量。然而作为一种高度非线性的设备,力传感器的读数受各种因素的影响,如噪声、传感器零漂、自身重力等。为了进行精准力控,需要首先对无关数据进行剔除。
   尽管目前越来越多的商用协作臂推出了力控臂版本,并给出了基于示教器的标定接口,在使用中可自动剔除外力的影响,但仅能应对单台协作臂配备单个力传感器的场合。然而,随着应用的拓展,逐渐出现了需要多个力传感器的应用场合。在这种背景下,就需要自行对力传感器进行标定,同时对重力等因素影响进行剔除。此外,在特殊力控算法的研发中,需要对力/力矩信息进行特殊转换,而且需要和标定及外力剔除部分结合。在这种背景下,需要深入掌握力传感器离线标定方法。
在这里插入图片描述

标定策略

   力传感器标定可结合牛顿-欧拉法与优化算法进行,为了提高计算速度,本文转而以若干组特殊姿态下的力/力矩信息为基础,并基于均值加权方式获取力传感器核心参数。针对力传感器,主要受以下因素的影响:
   ★ 噪声因素;
   ★ 传感器零漂;
   ★ 负载重力;
   ★ 负载重心。
   针对噪声因素,可基于巴特沃斯低通滤波器进行处理,本文不再赘述,本文主要描述传感器零漂、负载重力、负载重心的确定方法。在此基础上,实际使用中结合力传感器读数、零漂值、负载重心、以及机械臂末端位姿,可实时获取真实接触力/力矩。

标定步骤

   力传感器标定背后涉及的理论包含机器人运动学、牛顿-欧拉法等,为了便于读者编程实现,本文省略推导过程,直接给出标定量计算公式。
   在标定前,首先假定部分变量:
   ◆ G T G_T GT: 负载重力;
   ◆ p 1 ⃗ = [ p x S p y S p z S ] T \vec{p_1}=\begin{bmatrix}{p_{xS}}&{p_{yS}}&{p_{zS}}\end{bmatrix}^T p1 =[pxSpySpzS]T: 负载重心在力传感器中的位置;
   ◆ f 0 ⃗ = [ f x 0 f y 0 f z 0 m x 0 m y 0 m z 0 ] T \vec{f_{0}}=\begin{bmatrix}{f_{x0}}&{f_{y0}}&{f_{z0}}&{m_{x0}}&{m_{y0}}&{m_{z0}}\end{bmatrix}^T f0 =[fx0fy0fz0mx0my0mz0]T: 传感器零飘,6维分别为x方向力零飘、y方向力零飘、z方向力零飘、x轴力矩零漂、y轴力矩零漂、z轴力矩零漂。
  标定步骤如下所示:
  步骤一、控制力传感器x轴竖直向下,在不施加任何外力的前提下获取N组力读数与力矩读数, 如下所示:
f 1 ⃗ = [ f x i 1 f y i 1 f z i 1 m x i 1 m y i 1 m z i 1 ] T ( 0 ≤ i < N ) \vec{f_{1}}=\begin{bmatrix}{f_{xi_1}}&{f_{yi_1}}&{f_{zi_1}}&{m_{xi_1}}&{m_{yi_1}}&{m_{zi_1}} \end{bmatrix}^T(0\leq{i}<{N}) f1 =[fxi1fyi1fzi1mxi1myi1mzi1]T(0i<N)
  步骤二、控制力传感器y轴竖直向下,在不施加任何外力的前提下获取N组力读数与力矩读数, 如下所示:
f 2 ⃗ = [ f x i 2 f y i 2 f z i 2 m x i 2 m y i 2 m z i 2 ] T ( 0 ≤ i < N ) \vec{f_{2}}=\begin{bmatrix}{f_{xi_2}}&{f_{yi_2}}&{f_{zi_2}}&{m_{xi_2}}&{m_{yi_2}}&{m_{zi_2}} \end{bmatrix}^T(0\leq{i}<{N}) f2 =[fxi2fyi2fzi2mxi2myi2mzi2]T(0i<N)
  步骤三、控制力传感器z轴竖直向下,在不施加任何外力的前提下获取N组力读数与力矩读数, 如下所示:
f 3 ⃗ = [ f x i 3 f y i 3 f z i 3 m x i 3 m y i 3 m z i 3 ] T ( 0 ≤ i < N ) \vec{f_{3}}=\begin{bmatrix}{f_{xi_3}}&{f_{yi_3}}&{f_{zi_3}}&{m_{xi_3}}&{m_{yi_3}}&{m_{zi_3}} \end{bmatrix}^T(0\leq{i}<{N}) f3 =[fxi3fyi3fzi3mxi3myi3mzi3]T(0i<N)
  步骤四、传感器零漂值基于下式计算:
{ f x 0 = ∑ i = 0 N − 1 ( f x i 2 + f x i 3 2 N ) f y 0 = ∑ i = 0 N − 1 ( f y i 1 + f y i 3 2 N ) f z 0 = ∑ i = 0 N − 1 ( f z i 1 + f z i 2 2 N ) m x 0 = ∑ i = 0 N − 1 m x i 1 N m y 0 = ∑ i = 0 N − 1 m y i 2 N m z 0 = ∑ i = 0 N − 1 m z i 3 N \begin{cases} f_{x0}=\sum_{i=0}^{N-1}(\frac{f_{xi_2}+f_{xi_3}}{2N})\\ f_{y0}=\sum_{i=0}^{N-1}(\frac{f_{yi_1}+f_{yi_3}}{2N})\\ f_{z0}=\sum_{i=0}^{N-1}(\frac{f_{zi_1}+f_{zi_2}}{2N})\\ m_{x0}=\sum_{i=0}^{N-1}\frac{m_{xi_1}}{N}\\ m_{y0}=\sum_{i=0}^{N-1}\frac{m_{yi_2}}{N}\\ m_{z0}=\sum_{i=0}^{N-1}\frac{m_{zi_3}}{N} \end{cases} fx0=i=0N1(2Nfxi2+fxi3)fy0=i=0N1(2Nfyi1+fyi3)fz0=i=0N1(2Nfzi1+fzi2)mx0=i=0N1Nmxi1my0=i=0N1Nmyi2mz0=i=0N1Nmzi3
  步骤五、末端负载重力基于下式计算:
G T = ∑ i = 0 N − 1 ( f z i 3 − f z 0 ) N G_{T}=\frac{\sum_{i=0}^{N-1}({f_{zi_3}-f_{z0})}}{N} GT=Ni=0N1(fzi3fz0)
  步骤六、负载重心基于下式计算:
{ p x S = ( ∑ i = 0 N − 1 ( ( m z i 2 − m z 0 ) − ( m y i 3 − m y 0 ) G T ) 2 N ) p y S = ( ∑ i = 0 N − 1 ( ( m x i 3 − m x 0 ) − ( m z i 1 − m z 0 ) G T ) 2 N ) p z S = ( ∑ i = 0 N − 1 ( ( m y i 1 − m y 0 ) − ( m x i 2 − m x 0 ) G T ) 2 N ) \begin{cases} p_{xS}=(\frac{\sum_{i=0}^{N-1}(\frac{(m_{zi_2}-m_{z0})-(m_{yi_3}-m_{y0})}{G_T})}{2N})\\ p_{yS}=(\frac{\sum_{i=0}^{N-1}(\frac{(m_{xi_3}-m_{x0})-(m_{zi_1}-m_{z0})}{G_T})}{2N})\\ p_{zS}=(\frac{\sum_{i=0}^{N-1}(\frac{(m_{yi_1}-m_{y0})-(m_{xi_2}-m_{x0})}{G_T})}{2N}) \end{cases} pxS=(2Ni=0N1(GT(mzi2mz0)(myi3my0)))pyS=(2Ni=0N1(GT(mxi3mx0)(mzi1mz0)))pzS=(2Ni=0N1(GT(myi1my0)(mxi2mx0)))
  至此,通过标定方法获取了全部力传感器参数。

真实接触力计算

  假设力传感器读数滤波后读数为 f ⃗ f i l t e r \vec{f}_{filter} f filter, 基坐标系在末端工具坐标系中表示的旋转部分为:
A = [ n x o x a x n y o y a y n z o z a z ] A=\begin{bmatrix}{n_x}&{o_x}&{a_x}\\ {n_y}&{o_y}&{a_y}\\ {n_z}&{o_z}&{a_z}\\ \end{bmatrix} A=nxnynzoxoyozaxayaz
  由负载重心得到的反对称矩阵为:
B = [ 0 − p z S p y S p z S 0 − p x S − p y S p x S 0 ] B=\begin{bmatrix}{0}&{-p_{zS}}&{p_{yS}}\\ {p_{zS}}&{0}&{-p_{xS}}\\ {-p_{yS}}&{p_{xS}}&{0}\\ \end{bmatrix} B=0pzSpySpzS0pxSpySpxS0
  则真实接触力和力矩由下式确定:
f ⃗ f i l t e r − [ A 0 3 ∗ 3 B A A ] [ 0 0 − G T 0 0 0 ] − [ f x 0 f y 0 f z 0 m x 0 m y 0 m z 0 ] \vec{f}_{filter}-\begin{bmatrix}{A}&{0_{3*3}}\\ {BA}&{A} \end{bmatrix}\begin{bmatrix}{0}\\{0}\\{-G_T}\\{0}\\{0}\\{0} \end{bmatrix}-\begin{bmatrix}{f_{x0}}\\{f_{y0}}\\{f_{z0}}\\{m_{x0}}\\{m_{y0}}\\{m_{z0}} \end{bmatrix} f filter[ABA033A]00GT000fx0fy0fz0mx0my0mz0
  至此,真实接触力/力矩在力传感器坐标系中的表示则可基于上式获取。

讨论

  力传感器标定及真实接触力/力矩确定过程对柔顺控制、精细化操作至关重要。在复杂力控算法的研发中,不仅需要前述计算过程,而且需要灵活构建利于控制算法的虚拟参考系,做到可靠转换与近似。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值