基于动力学模型的机械臂pid控制

参考资料:

一、如何实现机械臂的控制

  • 在最常见的对机械臂动力学实现控制的问题中,我们会有一段机械臂末端的期望轨迹S,希望通过对机械臂关节处电机转矩的控制实现末端沿期望轨迹的完美运动。
  • 控制问题主要分为镇定和跟踪两种,上面说的沿期望轨迹运动就是跟踪问题,目标点关于时间一直在变化。镇定问题就是目标点不变,只要快准稳的到达指定位置即可。后面的控制问题为了简化问题,都是讨论的镇定问题
  • 最常用的机械臂控制框架如下:
    在这里插入图片描述
    被控对象的数学形式就是动力徐模型,即输入力输出加速度,之后通过两次积分得到速度和轨迹,这里没有将两次积分画出,在求误差时根据控制器的需要给出轨迹、速度、加速度全部或者部分的误差
  • 关于上面这个图,让我比较疑惑的是工作空间期望轨迹通过逆运动学映射到关节空间期望轨迹这一步。因为这一步是离线的,无法规避运动学模型导致的误差,不知道有没有解决的办法。
  • 最常见的机械臂动力学模型形式如下:
    在这里插入图片描述

二、基础想法

  • 面对机械臂控制的问题,比较容易的想法有两种,一种是基于逆动力学模型的开环控制,另一种就是基于误差的反馈控制。

逆动力学控制器

  • 逆动力学可以通过关节的运动情况求出关节所需的力,如果我们的动力学模型和驱动器器都是完美的,就可以完成控制。但是,完美的模型和驱动器是不存在的,难免会出现误差。并且由于是开环控制系统,无法对产生的误差进行控制。

独立pid控制器

  • 基于误差反馈的控制思路最常见的就是pid,通过期望加速度和实际加速度的差值进行控制 在这里插入图片描述
  • 机械臂是非线性的时变系统,而pid是定常线性控制器。在pid进行独立控制时,将所有系统关于时间和非线性导致的变化全部认为是干扰,这些干扰的来源包括重力、其他关节速度导致的离心力和科氏力、角度变化导致模型参数的变化、摩擦力等,这导致固定参数的独立pid控制难以适应所有工况。
  • 在仿真中,如果假设环境中没有重力,并且其他干扰较小的情况下,独立pid还勉强可以完成工作。

三、基于前馈的pid控制器

  • 上面提到的两种方法都没办法很好的解决实际的控制问题,但如果将两种方法结合在一起就可以成为比较实用的方法了。
  • 开环无法控制误差,反馈没法适应所有工况,将二者结合前馈+反馈即可分别解决系统变化时所需的控制量和剩余误差

1、基于重力补偿的pid控制器

  • 上面提到在假设没有重力时,独立pd可以实现控制,这也说明机械臂姿态变化导致的重力受力情况的变化是较大的干扰量。如果在输出力之前,通过模型对重力进行补偿,则可以解决这一问题。
    在这里插入图片描述

2、基于模型补偿的pid控制器

  • 将重力补偿的思路继续扩展到整个动力学模型,就形成了基于模型补偿的pid控制器
    在这里插入图片描述

四、基于计算力矩法的pid控制器

1、设计思路

  • 前面的方法写出控制器后,都可以在结合被控对象模型后通过李雅普诺夫函数实现稳定判定。但是控制器设计和判定稳定之间没有联系,在设计控制器的过程中,主要源于简单直觉,不够“数学”。
  • 计算力矩法的核心就是通过设置控制器,进而将系统(控制器+受控对象)的数学模型变成一个必然稳定的闭环系统,即系统模型的数学形式如下:
    在这里插入图片描述
    这种数学形式是齐次二阶微分方程,在特定的参数情况下,误差e必然指数级快速趋于0

2、控制器设计

  • 不考虑模型参数误差
    在忽略力矩输出误差情况下,被控对象动力学模型:
    在这里插入图片描述
    在忽略动力学模型参数误差的情况下,控制率如下:
    在这里插入图片描述
    将控制率带入动力学模型:
    在这里插入图片描述
  • 考虑模型参数和控制输出误差
    被控对象动力学模型:
    在这里插入图片描述
    控制率如下:
    在这里插入图片描述
    将控制率带入动力学模型:
    在这里插入图片描述
  • 从上式可知,误差和扰动导致控制器性能下降。处理方式有很多,增加鲁棒项(滑模控制)、增加前馈项(rbf不确定性补偿)等

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

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

相关文章

LabVIEW实现变风量VAV终端干预PID控制

LabVIEW实现变风量VAV终端干预PID控制 变风量(VAV)控制方法的研究一直是VAV空调研究的重点。单端PID控制在温差较大时,系统容易出现过冲。针对空调终端单端PID控制的不足,设计一种干预控制与PID控制耦合的控制方法。项目使用LabV…

利用shp文件构建mask【MATLAB和ARCGIS】两种方法

1 ARCGIS (推荐!!!-速度很快) 利用Polygon to Raster 注意:由于我们想要的mask有效值是1,在进行转换的时候,注意设置转换字段【Value field】 【Value field】通过编辑shp文件属性表…

el-table样式

1、实现效果,外部框是蓝绿色边框,深色背景,里面的表格首先设置透明色,然后应用自定义斑马纹。 2、代码 template代码,其中样式frameBordStyle是深色背景框,不负责表格样式,表格样式由tableStyl…

OSG多视口创建:osgViewer::CompositeViewer

1、效果 在osg的实际应用场景中,有时候需要同时创建多个场景视图,并保证各个场景视图中有不一样的显示和操作:例如:漫游器、照相机、粒子效果、多个模型组合等。此时就要用到OSG提供的osgViewer::CompositeViewer类来实现这个需求…

零信任网络:一种全新的网络安全架构

随着网络技术的不断发展,网络安全问题日益凸显。传统的网络安全策略往往基于信任和验证,但这种信任策略存在一定的局限性。为了解决这一问题,零信任网络作为一种全新的网络安全架构,逐渐受到人们的关注。本文将对零信任网络的概念…

推荐PHP付费进群源码

PHP付费进群源码带自动定位基于ThinkPHP框架开发的,可以快速搭建知识付费粉丝进群。 更新: 1.首页付款轮播 2.城市定位功能 3.更新及优化域名库及支付设置 4.新增一张图模板设置模式,简化后台模板设置 5.前后台其他优化 演示地址&#xff1a…

centos7部署nginx

CentOS7安装Nginx-1.16.1稳定版 小白教程,一看就会,一做就成。 1.安装依赖环境 yum -y install gcc gcc-c automake pcre pcre-devel zlib zlib-devel openssl openssl-devel 2.下载安装包(不能联网的不行),可以留言…

电路正负反馈,电压电流反馈,串并联反馈详细判别方法

正/负反馈:假设输出升高,转一圈回来仍使其升高就是正反馈,反之就是负反馈。作图法:在RL的信号端画一个向上的小箭头,沿着反馈环路,每经过一个元器件就画一个相应的箭头,一直画到放大器的输出端&…

计算机组成与结构-安全性和可靠性

系统可靠性分析 概念 平均无故障时间 MTTF 1/失效率 平均故障修复时间 MTTR1/修复率 平均故障间隔时间 MTBFMTTFMTTR 系统可用性 MTTF/(MTTFMTTR)*100% 计算 串联系统 一个设备不可靠,整个系统崩溃RR1R2Rn 并联系统 所有设备不可靠,整个系统崩溃R1-(1…

基于单片机的商场防盗防火系统设计

收藏和点赞,您的关注是我创作的动力 文章目录 概要 一、系统分析二、系统总设计2.1基于单片机的商场防火防盗系统的总体功能2.2系统的组成 三 软件设计4.1软件设计思路4.2软件的实现4.2.1主控模块实物 四、 结论五、 文章目录 概要 本课题设计一种商场防火防盗报警…

Quartus II 13.0波形仿真(解决无法产生仿真波形问题)

目录 前言 新建工程 创建Verilog文件,写代码 波形仿真(解决没有输出波问题) 前言 这么说把Quartus II 13.0是我目前来讲见过最恶心的软件,总是一大堆麻烦事,稍微哪里没弄好就后面全都出问题。很多人在写完Verilog代…

【PWN · heap | Overlap | off-by-one】HITCON Trainging lab13

记录一道wiki学习overlap的题目 前言 通过overlap可以造成堆的重叠,进而通过堆的修改、访问等操作,劫持或泄露另一个堆的信息,如果堆上存在指针,而存在对指针的读写,就可以控制修改该指针,进行任意地址读/…

【每日一题】移除链表元素(C语言)

移除链表元素,链接奉上 目录 思路:代码实现:链表题目小技巧: 思路: 在正常情况: 下我们移除链表元素时,需要该位置的前结点与后节点, 在特别情况时: 例如 我们发现&…

基于STC12C5A60S2系列1T 8051单片机EEPROM应用

基于STC12C5A60S2系列1T 8051单片机EEPROM应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍STC12C5A60S2系列1T 8051单片机EEPROM介绍基于STC12C5A60S2系列1T 8051单…

Proxysql读写分离

Proxysql读写分离 主从配置 # /etc/my.cnf 主节点 [mysqld] log-binmysql-bin server-id1从节点 [mysqld] server-id2 read_only1#初始化以及创建主从复制用户 mysql> alter user rootlocalhost identified with mysql_native_password by Jianren123; Query OK, 0 rows …

交叉编译工具链(以STM32MP1为例)

1.什么是交叉编译工具链? 在一个系统上进行编译,在另一个系统上进行执行 2.STM32MP1交叉编译工具链 3.交叉编译器内容 4.两种工具链模式 5.两种链接模式 6.工具使用 注意:OpenSTLinux已经提供了编译框架,不需要命令行手工编译 …

界面控件DevExpress WPF Gauge组件 - 轻松实现个性化商业仪表盘

DevExpress WPF Gauge(仪表)控件包含了多种圆形仪表类型、水平和垂直线性仪表、分段和矩阵数字仪表以及状态指示器,同时还具有最终用户交互性的集成支持。 P.S:DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至…

Android Studio的Java项目种运行main()的方法

首先随便在项目里面建一个类 public class TestSocket {public static void main(String[] args) {System.out.println("hahah");}}直接运行时会直接报错的 在项目的 .idea 添加代码 <option name"delegatedBuild" value"false"/> 再…

SpringBoot框架使用AOP + 自定义注解实现请求日志记录

一、SpringBoot记录日志 文章目录 一、SpringBoot记录日志1.1、环境搭建1.2、配置FastJson1.3、自定义LogRecord注解1.4、定义日志实体类1.5、创建HttpRequestUtil工具类1.6、定义AOP切面1.7、编写测试类1.8、运行测试 1.1、环境搭建 搭建SpringBoot工程。引入【spring-boot-st…

python-列表推导式、生成器表达式

一、列表推导式 列表推导式&#xff1a;用一句话来生成列表 语法&#xff1a;[结果 for循环 判断] 筛选模式&#xff1a; 二、生成器表达式