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

实机实验的结果:

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

在这里插入图片描述

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue自定义指令

需求1:定义一个v-big指令,和v-text功能类似,但会把绑定的数值放大10倍。 需求2:定义一个v-fbind指令,和v-bind功能类似,但可以让其所绑定的input元素默认获取焦点。 自定义指令函数式v-big: &l…

Flutter 小技巧之滑动控件即将“抛弃” shrinkWrap 属性

相信对于 Flutter 开发的大家来说, ListView 的 shrinkWrap 配置都不会陌生,如下图所示,每当遇到类似的 unbounded error 的时候,总会有第一反应就是给 ListView 加上 shrinkWrap: true 就可以解决问题,那为什么现在会…

2023云曦期末复现

目录 WEB sign SSTI serialize WEB sign 有10000个 进行bp爆破 能发现 410 和 414长度 还有 420 410 414存在16进制的字符 拼凑出来为 \x66\x6c\x61\x67\x7b\x61\x63\x63\x39\x39\x66\x39\x30\x34\x66\x30\x65\x61\x66\x61\x34\x31\x63\x30\x36\x34\x33\x36\x38\x31\x3…

手机外壳缺陷视觉检测软硬件方案

单独使用一种光源效果图 同轴光会出现亮度不够的情况;回形面光因为光源中间的圆孔会使图像有阴影,造成图像效果不均衡,所以不采用单独光源打光 使用同轴回形面光源效果图 回形光源照亮产品要寻找的边缘,同轴光源起到补光的作用&a…

【100天精通python】Day5:python 基本语句,流程控制语句

目录 1. 条件语句 1.1 if语句 1.2 if-else语句 1.3 if-elif-else语句 2 循环语句 2.1 for循环 2.2 while循环: 3 跳转语句 3.1 break语句 3.2 continue语句 3.3 pass语句 4 异常处理语句(try-except语句) 5 语句嵌套 5.1 条…

Spring框架概述及核心设计思想

文章目录 一. Spring框架概述1. 什么是Spring框架2. 为什么要学习框架?3. Spring框架学习的难点 二. Spring核心设计思想1. 容器是什么?2. IoC是什么?3. Spring是IoC容器4. DI(依赖注入)5. DL(依赖查找&…

2023-7-13-第十八式观察者模式

🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 💥💥💥欢迎来到🤞汤姆🤞的csdn博文💥💥💥 💟💟喜欢的朋友可以关注一下&#xf…

2023年iOS App Store上架流程详解(上)

目录 1.注册开发者账号 2.登录并配置人员 3.申请证书和配置文件 一.证书管理​ 二.新建证书​ 三.使用appuploader服务同步证书​ 1)申请证书 2)添加Identifiers和配置App ID 3)申请配置文件 1.在Xcode项目中配置签名 2.上传应用包…

谷歌和加州大学伯克利分校的“改革者”在单个GPU上运行64K序列

转换器模型是自然语言处理(NLP)研究领域越来越流行的神经网络架构,大型变压器可以在许多任务上实现最先进的性能。代价是转换器过多的计算消耗和成本,尤其是对于长序列上的训练模型。 谷歌和加州大学伯克利分校的研究人员最近发表…

设计模式——解释器模式

解释器模式 定义 解释器模式(Interpreter Pattern)是一种按照规定语法进行解析的模式,现实项目中用得较少。 给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句…

Java 设计模式——观察者模式

目录 1.概述2.结构3.案例实现3.1.抽象观察者3.2.观察对象3.3.具体观察者3.4.具体观察对象3.5.测试 4.优缺点5.使用场景6.JDK 源码解析——Observable / Observer6.1.Observable 类6.2.Observer 接口6.3.案例 1.概述 观察者模式 (Observer Pattern) 是一种行为型设计模式&#…

HP惠普暗影精灵9笔记本原装出厂Win11系统预装专用OEM系统镜像

暗影9笔记本电脑原厂Windows11系统包 OMEN by HP 16.1英寸游戏本16-wf0000,16-wf0001,16-wf0003,16-wf0004,16-wf0006,16-wf0008,16-wf0009,16-wf0010,16-wf0011,16-wf0012,16-wf0028,16-wf0029,16-wf0007,16-wf0032,16-wf0036,16-wf0043 链接:https://pan.baidu.…

[SQL系列] 从头开始学PostgreSQL Union Null 别名 触发器

初级的操作就是CRUD,但是高级的操作也是CRUD,只是语句写的更加复杂,不再是select * from table;这样简单,这次咱们学一些稍微高级点的。下面是上一篇文章。 [SQL系列] 从头开始学PostgreSQL 约束连接_Edward.W的博客-…

划片机的作用将晶圆分割成独立的芯片

划片机是将晶圆分割成独立芯片的关键设备之一。在半导体制造过程中,晶圆划片机用于将整个晶圆切割成单个的芯片,这个过程被称为“晶圆分割”或“晶圆切割”。 晶圆划片机通常采用精密的机械传动系统、高精度的切割刀具和先进的控制系统,以确保…

【C++ 重要知识点总结】表达式

表达式 1 基础 组合运算 优先级结合律 类型转换 运算符重载 左值和右值 2 算数运算符 3 逻辑和关系运算法 短路求值 逻辑与,当第一个判定为否的时候,不再执行第二个判定,可以用来屏蔽第二步的计算,代替条件判断&#xff0…

rabbitmq延时队列自动解锁库存

一、库存服务自动解锁库存 使用了最终一致性来解决分布式事务 当order服务出现异常回滚,此时ware服务无法回滚,怎么办? 使用seata全局事务虽然能在order服务出现异常导致回滚时使其他服务的也能同时回滚,但在流量大的情况下是使用…

【SpringBoot】从零开始封装自己的starter并且引入到其他项目中使用

从零开始封装自己的starter并且引入到其他项目中使用 简介 本文将介绍如何从零开始封装自己的starter并且引入到其他项目中使用 为什么要自己封装starter? 这样可以对spring以及其他第三方提供的starter做二次封装或者封装一些自己需要的内容提供给其他项目使用&…

【milvus】向量数据库,用来做以图搜图+人脸识别的特征向量

1. 安装milvus ref:https://milvus.io/docs 第一次装东西,要把遇到的问题和成功经验都记录下来。 1.Download the YAML file wget https://github.com/milvus-io/milvus/releases/download/v2.2.11/milvus-standalone-docker-compose.yml -O docker-compose.yml看…

行为型模式 - 策略模式

概述 先看下面的图片,我们去旅游选择出行模式有很多种,可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。 作为一个程序猿,开发需要选择一款开发工具,当然可以进行代码开发的工具有很多,可以选择Idea进行开发&…

准备WebUI自动化测试面试?这30个问题你必须掌握(二)

本文共有11000字,包含了后十五个问题,如需要前十五个问题,可查看文末链接~ 16. 在WebUI自动化测试中,你如何处理验证码或图像识别的问题? 1. 人工识别:一种简单但费时费力的方法是使用人工手动识别验证码。…