KUKA机械臂的导纳控制

KUKA机械臂的导纳控制

在近期的实验中,需要根据传感器的给出的实时位置信息进行导纳控制,并实时改变导纳控制的参数。由于KUKA自带的实时导纳控制模型无法实时修改参数,因此尝试了自己实现导纳控制。网上这方面的资料比较少,整理并分享一下自己的思路。相关代码在 KUKA_AdmittanceControl

导纳控制的目的在于使得末端的受力和末端的位置两者之间保持一种“平衡”,这种平衡用阻抗模型来一般性表述。
F e x t = M x e ¨ + B x e ˙ + K x e ; F_{ext} = M \ddot{x_e} + B \dot{xe} + K xe;\\ Fext=Mxe¨+Bxe˙+Kxe;
那么,末端收到的外力和末端的轨迹之间的关系为(在受到外力作用下,使得轨迹产生了多大的偏差):
x e ¨ = M − 1 ∗ ( F e x t − B x e ˙ − K x e ) ; x e ˙ = x e ˙ o l d + x e ¨ ∗ Δ T ; x e = x e o l d + x e ˙ ∗ Δ T ; \ddot{x_e} =M^{-1} * (F_{ext} - B \dot{xe} - K xe); \\ \dot{x_e} = \dot{x_e}_{old} + \ddot{x_e} * \Delta T;\\ {x_e} = {x_e}_{old} + \dot{x_e} * \Delta T;\\ xe¨=M1(FextBxe˙Kxe);xe˙=xe˙old+xe¨ΔT;xe=xeold+xe˙ΔT;
进一步的,就可以在原来规划的轨迹上更新,得到新的期望轨迹:
x t a r ˙ = x 0 ˙ + x e ˙ ; x t a r = x 0 + x e ; \dot{x_{tar}} = \dot{x_0} + \dot{x_e};\\ x_{tar} = {x_0} + {x_e};\\ xtar˙=x0˙+xe˙;xtar=x0+xe;
一般情况下,导纳控制器根据规划好的轨迹(加速度、速度、位置)和测量得到的外力基础上进行控制。在本实验中,传感器估计得到的只有腕关节的角度,只能将其作为末端位置 或 末端速度。

基于位置轨迹的导纳控制

在基于位置轨迹的导纳控制中,如果按照原来的阻抗模型,则需要对位置求微分得到速度,在实际人机交互的实验中,人腕关节的移动可能会比较快,那么微分求得的速度很容易超过安全限速。因此,考虑简化阻抗模型为
F e x t = B x e ˙ + K x e ; F_{ext} = B \dot{xe} + K xe;\\ Fext=Bxe˙+Kxe;
这样一来,式子中就没有了速度项,就可以完全根据位置轨迹进行导纳控制。

外力使轨迹产生的偏差:
x e ˙ = B − 1 ∗ ( F e x t − K x e ) ; x e = x e o l d + x e ˙ ∗ Δ T ; \dot{x_e} =B^{-1} * (F_{ext} - K xe);\\ {x_e} = {x_e}_{old} + \dot{x_e} * \Delta T;\\ xe˙=B1(FextKxe);xe=xeold+xe˙ΔT;
新的位置轨迹为:
x t a r = x 0 + x e ; x_{tar} = {x_0} + {x_e};\\ xtar=x0+xe;
这样的话,就处理好了位置和外力之间的关系,接下里的任务则是对KUKA的位置环的控制,利用kuka实现的位置伺服控制API即可,外力的求解和距离控制流程详见代码。

实机实验的结果:

  • 高导纳系数(受外力影响大)
    在这里插入图片描述

  • 低导纳系数(受外力影响小)

在这里插入图片描述

基于速度轨迹的导纳控制

在完成基于位置的导纳控制之后,发现控制效果并不够顺滑,而且把传感器的输出当作位置轨迹,对传感器精度要求较高,如果把传感器的输出映射为速度轨迹,那么整体的控制效果应该会好一些。

既然得到了末端的速度轨迹,那么其实也就可以直接利用一般性的阻抗模型进行控制了,只不过这里的被控量是速度,需要计算出关节速度发送给KUKA,具体流程见代码。

实机实验的结果:

  • 高导纳系数(受外力影响大)

在这里插入图片描述

  • 低导纳系数(受外力影响小)

在这里插入图片描述

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
库卡机械臂是一种先进的工业机器人系统,而S7-1200是西门子公司推出的一款先进的工业自动化控制器。要实现库卡机械臂与S7-1200的通讯,可以通过以下步骤完成。 首先,需要在S7-1200控制器上配置一个能够与库卡机械臂进行通讯的模块。这个模块可以是一个以太网模块或者是一个Profibus模块,具体选择根据机械臂控制器的通讯接口而定。 接下来,我们需要在库卡机械臂控制系统中进行相应的设置和配置。首先,确保库卡机械臂的网络通讯模块正常工作,并设置好IP地址及其他网络参数。然后,在机械臂控制系统中,添加一个新的通讯任务,将其配置为与S7-1200控制器进行通讯的任务。在任务中,需要设置好通讯的协议类型、通讯接口以及S7-1200控制器的IP地址等参数。 一旦完成了以上配置,S7-1200控制器和库卡机械臂之间的通讯就可以开始了。可以使用Socket或者Modbus等通讯协议进行数据交换。在程序中,我们可以通过读取S7-1200控制器中的数据,来控制机械臂的动作。同时,也可以通过读取机械臂的反馈数据,来实现实时的监控和控制。 总结起来,要实现库卡机械臂与S7-1200的通讯,首先需要在S7-1200控制器上配置通讯模块,然后在机械臂控制系统中设置通讯任务,并在程序中使用适当的通讯协议进行数据交换。通过这样的步骤,就可以实现两者之间的可靠通讯,实现更加灵活和高效的生产自动化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值