KUKA LBR iiwa 机械手是如何实现精密力控制的?

您所在的位置:网站首页 kuka机械手 KUKA LBR iiwa 机械手是如何实现精密力控制的?

KUKA LBR iiwa 机械手是如何实现精密力控制的?

2023-04-12 22:43| 来源: 网络整理| 查看: 265

原来还有这么好玩且没答过的问题。

(当然,在控制方面,我真的是外行,下面的只是大概写一下,不了解的部分我会说明)。

先说原理

机械臂实现触停、拖动示教等力控制的关键是『检测到外力』,或者确切的说,是检测到每一个驱动器(不一定是电机输出端,而是提供力的模块)所受的外力

这时候就要看看我们的动力学公式了。

你看,\tau_m 是电机输出的力矩,但是,经过谐波减速后(n 是减速比),力矩会成倍增大;但是,在减速的过程中,也会引入摩擦力\tau_f ;这样,再减去外力\tau_{ext} 就得到机器本体所受的所有力了。

右边就是机器人的动力学模型,其实就约等于F=ma ,只不过,各项系数跟机器人的关节角度有关、而且多了科氏力、离心力、重力等。

后面,我们要做的就是把除了\tau_{ext} 外的其他项都求/测出来即可:

看左边

根据电机的原理,有:

其中转矩常数K_T 和转子惯量J_m 可以直接从电机规格书上查到,减速比n固定已知,电枢电流I_A 和连杆角加速度\ddot{q} 可以通过测量得到(可能需要用到一些滤波算法)。

关节摩擦力\tau_f 这个就比较复杂了,需要进行辨识。

摩擦力辨识这一块我不是很了解,而且,据我所知,我们目前还没有一个通用、权威的摩擦力模型。当然,普遍上认为,摩擦力主要由三部分组成:Stribeck, Coulomb 和 viscous friction,所以,一般是采用一些能覆盖这三种力的经验公式:

在辨识的时候,如果采用的是线性模型,那么可以把它跟机器人的其他动力学参数一起辨识(具体后面介绍);如果是非线性模型,那么,可以每次固定其他轴,单独对某一轴的摩擦力进行辨识。

这里的主要难度是,如何获得一个比较好的摩擦力模型,就我了解的范围来讲,好像是暂时无解。

既然摩擦力比较难建模的话,我们也有另外一个方法可以绕过摩擦力,那就是直接在减速器的输出端安装一个力矩传感器,直接测量给连杆提供的力矩\tau_j ,这样,上面的动力学公式就变成了如下形式:

看右边

这个就是机器人的动力学模型了,工作主要分为建模与参数辨识。

动力学建模

这块没什么好说的,属于机器人学的基础内容,但就是比较繁琐一些。有牛顿法、拉格朗日法等,具体推荐看下面这本书

Craig, John J. Introduction to robotics: mechanics and control. Vol. 3. Upper Saddle River: Pearson Prentice Hall, 2005. 参数辨识

这一点会比较复杂一点。我先说整体思路。

在没有外力的时候,动力学公式变成如下形式:

我们只需要稍微整理一下右边的公式,把它改写成矩阵形式:

其中,矩阵A 里面就是各种跟机器人运动有关的项,如\ddot{q}, sin(q), \dot{q} 等等,而\Theta 则是需要辨识的参数向量(如I_{xx}+md^2)。换句话说,我们不需要具体求出每个参数的实际数值,只需要求出\Theta的系数即可,这组系数就叫做 BPS (base parameters set)。

好了,你看,上面就是你们熟悉的Ax=b 形式,可以用各种方法(如最小二乘法)求解了。

当然,其中在实施的时候有几个细节可能需要注意一下:

如果要考虑摩擦力,当摩擦力是线性模型时,可以把它一起写入上式中,同时进行辨识。在采集数据的时候,激励函数(输入\tau_j )不能随便选择,这个在系统辨识理论里有很多方法的,如采用逆重复M序列、傅里叶序列等。在采集数据的时候,输出数据 q,\dot{q},\ddot{q} 往往只能直接通过编码器测量得到一个角度q ,角速度和角加速度没法直接测量,为了提高准确度,建议采用卡尔曼滤波进行处理。输入、输出可能有噪声,最好滤波处理一下。但是,滤波会造成延时,所以,应该用同一个滤波器进行处理。直接用最小二乘法求解的话,可能对噪声比较敏感,可以采用其他的一些方法,如最大似然法等多轴机械臂的动力学模型比较复杂,需要进行一定的简化处理。这一块我没做过,所以具体不是很了解,我之后有时间看到相关内容后,会更新这部分。

至此,我们就能够通过检测机器人的运动状态,从而计算出机器人实际收到的外力大小,甚至可以计算出外力作用在哪个连杆

剩下的就是各种力控制的内容了,如触停、拖动示教、阻抗控制。这块没深入研究过,所以就不详细写了。

了解了基本原理之后,我们就可以回答题主的三个问题了:

1. 介绍中说他使用了关节力矩传感器,那么请问现在市场上能够实现这个功能的传感器有哪些

当然,其他的几个回答似乎在争论 DLR 是否用了关节力矩传感器。我觉得这个好像没什么好争论的,iiwa 基本上就是 DLR ,所以,它的相关信息可以看这篇论文:

Albu-Schäffer, A., et al. "The DLR lightweight robot: design and control concepts for robots in human environments." Industrial Robot: an international journal 34.5 (2007): 376-385.

它七个轴都安装有力矩传感器,据说力矩传感器的价格就占了 iiwa 总成本的一半以上。

所以,问题就是,还有没有其他能够实现这一功能(测量力矩)的传感器。这部分我没有专门研究过,网上搜一下,应该能找到不少,但价格估计都挺贵。

这里,我介绍几种自己制作的测力矩传感器:

应变片式

就是直接在输出轴上贴应变片,然后通过桥电路计算输出轴的形变量,进而估计力矩。

原理可以看这篇论文

Taghirad H D, Bélanger P R. Intelligent built-in torque sensor for harmonic drive systems[J]. Instrumentation and Measurement, IEEE Transactions on, 1999, 48(6): 1201-1207.

使用这种方法的代表就是 kinova 的机械臂了

这个问题就是对生产制造要求比较高,而且每个关节生产出来后都要单独标定。当时,在他们总部参观的时候就看到他们的工人在贴应变片。(生产车间内不能拍照,不要问我要照片。)

双编码器式

简单而言,这种方法就是在电机输出端与连杆输入端各放置一个编码器,通过编码器测量的偏差量计算传动轴的变形量,进而估计出力矩。

这种方法的代表(应该)就是 Universal Robot 了,之前实验室拆 UR 的时候(Universal Robots 的关节到底是怎么样设计的?)似乎是说有两个编码器。

这个的问题就是精度没有应变片的方式精度高,所以 UR 机器人的拖动示教会比 Kinova 或者 iiwa 更费力。

串联弹性驱动器(SEA)

简单的说,就是在连杆输入端前面加一个弹簧,从而实现一些控制目的。

这样,我们只要用一个编码器直接测量弹簧的变形,就可以比较准确的知道力矩大小了。这种方法的代表就是 Rethink 的 Baxter 机器人了

当然,这个的问题就是在位置控制精度上有一定问题。Baxter 的精度真的只能用于科研,据说 Sewyer 会好点,但没用过就不评论了。

之后,我们就来看看第二个问题了:

2. 如果不用关节力矩传感器可以么?

这当然是可以的。

电流估计力矩

因为我们一开始的公式就是不用力矩传感器的形式。所以,如果我们能精确估计出摩擦力(或者摩擦力可忽略——直驱),那样的话,就可以通过驱动器测量的电流来估计连杆输入力矩了。

这个我之前有做过类似的实验,就是用一个单轴旋转平台,通过电流估计力矩、参数辨识等实现了高精度的碰撞检测、拖动示教等,甚至可以检测到一张纸张的碰撞。

具体可以看里面的视频:听说现在协作机器人很火,所以我也做了1/7个

末端力传感器

由于机器人一般是末端进行工作,如果我们可以直接测量得到末端的力大小,那么也可以实现很多好玩的功能。当然,这种力传感器也不便宜。

触觉传感器

就是在机器人的连杆上安装类似皮肤功能的力觉/触觉传感器,如下面这篇论文里就有介绍

Cirillo, A., et al. "A Conformable Force/Tactile Skin for Physical Human–Robot Interaction." IEEE Robotics and Automation Letters 1.1 (2016): 41-48.

目前来说,似乎还没有廉价、可靠的方案。

然后,就是最后一个问题了:

3. 机械手力控制的难点在哪里?

因为没做过,所以这方面不了解。

但单从外力估计的角度来讲,对于稍微复杂点的系统,动力学参数辨识、摩擦力建模都是难点。

而且,还有一个难点:如果你用的是直接购买的机器人,那么,九成(甚至更高)以上几率,你只能控制它的关节位置,无法控制到速度环或者力矩/电流环。这样一来,上面这些东西可能就都没法做了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3