KUKA机械臂的导纳控制

news2024/11/25 22:37:30

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,具体流程见代码。

实机实验的结果:

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

在这里插入图片描述

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/771546.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java阶段五Day09

Java阶段五Day09 文章目录 Java阶段五Day09网关Gateway跨域的问题熔断限流组件sentinel微服务场景熔断降级限流降级 sentinel学习案例sentinel介绍重要的核心概念准备一个测试的工程定义资源定义规则sentinel运行原理本地文件定义规则整合nacos实现规则的远程读取规则的内容详解…

【C++初阶】构造函数和析构函数

文章目录 一、类的六个默认成员函数二、构造函数三、析构函数 一、类的六个默认成员函数 📖默认成员函数 用户没有显式实现,编译器会自动生成的成员函数,称为默认成员函数。 构造函数:完成对象的初始化工作。析构函数&#xff…

在dell server的UEFI mode下指定ISO安装Ubuntu

1.重启系统 在蓝色界面出现提示后选择F2进入 然后保存设置即可

Linux系统部署Nginx详细教程(图文讲解)

前言:本篇博客记录了我是如何使用Linux系统一步一步部署Nginx的完整过程,也是我学习之路上的一个笔记总结,每一行代码都进行了严格的测试,特此做一个技术分享! 目录 一、安装依赖 二、安装Nginx 三、配置Nginx 四、…

【Docker】Docker基本管理命令

目录 一、Docker概述1.1容器化受欢迎的原因1.2Docker核心概念 二、安装 Docker2.1环境准备 三、Doker镜像操作镜像操作选项 四 、Docker 容器操作容器操作选项 一、Docker概述 Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。 Docker是…

Pycharm远程服务器上运行程序报错:Can‘t get remote credentials for deployment server

一、问题描述: 二、解决方法: 1.依次选择 文件 -> 设置 -> 项目 -> Python 解释器,出现如下界面: 2. 点击python 解释器右侧的小齿轮,选择全部显示: 3. 在弹出的窗口中发现存在多个连接到同一个服务器的解释…

亚马逊卖家该如何调整心态帮助自己“放松”?

作为亚马逊卖家,具备良好的心理承受能力是非常重要的。由于竞争激烈、市场变化快速等因素,卖家可能会面临各种压力和挑战。所以对于卖家而言,应该怎样调整自己的心态呢? 接受现实: 亚马逊市场是一个竞争激烈的环境&am…

python3GUI--仿win10任务管理器By:PyQt5(附UI源码)

文章目录 一.前言二.展示1.主界面1.进程2.性能1.CPU2.内存 3.简略信息4.新建任务 三.设计思路1.UI设计1.主界面1.进程2.性能3.详细信息4.新建任务5.图表信息组件 2.代码整体设计1.项目设计心得2.项目设计其他心得 3.其他心得 四.源…

【交点】直线与多边形相交显示

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 python 求直线与多边形交点并显示 1. 正文 1.1 步骤 import matplotlib.pyplot as plt from shapely.geometry import LineString, Polygon导入所需的…

Spring整合Junit

Spring整合Junit 在之前文章中Spring的测试方法几乎都能够看到如下的代码: ApplicationContext context new ClassPathXmlApplicationContext("xxx.xml"); XXX xxx context.getBean(XXX.class);它的作用是创建Spring容器,最终获取到对象&…

初识vue3/setup/ ref()/ computed/watch/生命周期/父传子

创建项目先不着急学 main.js变了 新加setup reactive ref() computed watch 生命周期 父传子 子传父 ref/模板引用 暴露子组件属性 跨层传数据 defineOptions

高效又安全的企业大数据传输解决方案推荐

在当前的商业领域中,企业大数据传输是一个重要而复杂的问题。随着企业规模和数据量的扩大,如何安全可靠、高效快速地传输大数据成为了许多企业需要面对的挑战。本文将介绍几种值得考虑的企业大数据传输解决方案,以帮助企业有效应对这一挑战。…

Unity基础 弹簧关节SpringJoint

弹簧关节 在游戏开发中,物体之间的交互性是非常重要的。为了模拟现实世界中的弹性特性,Unity提供了弹簧关节(Spring Joint)组件。通过弹簧关节,我们可以轻松实现物体之间的弹性交互效果。本文将详细介绍Unity中的弹簧…

C#上位机软件支持中英文多语言切换MultiLanguage

最近遇到一个项目,客户是国外的,开发上位机程序是在中国。需支持中英文多语言切换。 多语言切换思路: 使用不同的xml配置文件来映射不同的语言,窗体加载时从默认语言DefaultLanguage.xml中读取配置,比如中文语言 对应…

计算机网络 day11 tcpdump - 传输层 - netstat - socket - nc - TCP/UDP头部

目录 故障排查 tcpdump抓包工具 传输层(TCP和UDP协议) 传输层的作用 应用程序和端口号有什么关系? 传输层端对端连接实现拓扑图 如何查看自己的linux机器开放了哪些端口? 1、netstat(network status 网络的状态) netsta…

CKE和RippleNet阅读

这两篇文章都是把KGC和推荐任务联合训练的。 CKE知识库嵌入向量COLLABORATIVE JOINT LEARNING RippleNetRipple Set偏好传播 CKE 作者提出了一种将协同过滤和知识库相结合的推荐系统。作者设计了三个组件,利用异构网络嵌入和深度学习嵌入方法,分别从知…

Java版Spring Cloud+Spring Boot+Mybatis+uniapp知识付费平台讲解

Java版知识付费-轻松拥有知识付费平台 多种直播形式,全面满足直播场景需求 公开课、小班课、独立直播间等类型,满足讲师个性化直播场景需求;低延迟、双向视频,亲密互动,无论是互动、答疑,还是打赏、带货、…

三菱PLC 单按钮启停

方法一思路:使用 ALT 交替输出指令交替输出 NO/OFF。 方法二思路:C0 计数器没计满时 Y1 ON,计满时 OFF。 方法三思路:使用 DIV 除法指令,将 DO 中的数据除以二取余数,余数等于0时 OFF,不等于0时…

【tio-websocket】7、什么是半包和粘包?

粘包和半包问题是数据传输中比较常见的问题,所谓的粘包问题是指数据在传输时,在一条消息中读取到了另一条消息的部分数据,这种现象就叫做粘包。比如发送了两条消息,分别为 “ABC” 和 “DEF”,那么正常情况下接收端也应该收到两条消息 “ABC” 和 “DEF”,但接收端却收到…

MySQL—变量、存储过程和函数(十一)

一、变量 1 变量的种类 1.1 系统变量 系统变量一共分为两种: 1)全局变量 2)会话变量 系统变量:变量由系统定义,不是用户定义&#xff0…