本文以puma560m机械臂为例子进行动力学参数辨识的讲解,puma560m可以在robotic toolbox中找到,这里以它真实机械臂对他的动力学参数进行辨识。

此外这里还有要说的是,机械臂参数辨识其实是一个系统工程,其中和机械、电子、嵌入式都有着很深的联系,并不是仿真这么简单的。

但是仿真又是很重要的,如果仿真都做不出来,那么实验结果不可能有理论依据,仿真做不出来的,实验也是做不出来的。

本篇文章的思路和我的另一篇是完全一样的,只不过是扩展到了多自由度->【机器人算法】二连杆机器人动力学参数辨识。

仿真环境

因为这里是仿真,所以要有一个仿真环境,这里为了简单直接用matlab中的mdl_p560akb,把他当成真实的机械臂,此外这里再对其进行建模作为真实机械臂的仿真。
下图为“真实”机械臂和仿真结果的对比,其中线是真实机械臂的数据,点是我们仿真出来的数据,可以看出仿真结果完全正确。

线性化

线性化实际上就是将辨识参数分离出来,不考虑关节动力学和不考虑摩擦力,那么一个杆子就有10个待辨识参数,p560就有6*10个待辨识参数。那么动力学公式就可以转化为如下的形式:

其中K就是一个和DH参数和关节位置、速度和加速度有关的矩阵。

一般思路来说我们直接采集实验数据然后,用最小二乘法就可以了:

但是,由于机械臂靠近基座关节的自由度缺失和我们只关心关节轴的力矩的原因(力传感缺失),K.'K是不可逆的。有人说可以用SVD求伪逆云云,但是SVD求得的伪逆是一个没有物理意义的“假”值,用这个值求出的待辨识参数也一定是不真实的,辨识没有意义。
因此我们需要通过转化,使得K.'K可逆,这个过程就是提取最小参数集。

最小惯性参数集

我们不可能辨识出所有的动力学参数,但是我们可以通过提取最小参数集来辨识出动力学参数的线性组合。
提取最小参数集的方式在网上有很多种,例如霍伟老师所著《机器人动力学与控制》中提到的使用DH参数直接推导出来。
本博客使用的是根据观测矩阵推导出最小惯性参数集。这里参考了一篇论文核心思想是通过QR分解K来对惯量矩阵Psi进行重组。通过论文中所提到的方法,我们得出最小惯性参数集为36个,具体如下:

我们随机对关节位置速度加速度进行赋值,进行仿真,仿真结果如下,左侧为真实的最小惯性参数集,右侧为辨识出的最小惯性参数集,可以看出结果有效。

激励轨迹设计

为什么要有激励轨迹设计?可以看出线性化后的动力学方程为tau=K*Psi,其中K是和机器人关节位置速度加速度有关的量,如果我们的轨迹设计不合理,那么K矩阵很容易成为病态矩阵,这十分不利于参数辨识。同时,激励轨迹还需要满足不损坏机器人本体。因此需要一定的考究。
激励轨迹的设计问题实质上是一个优化问题,你可以用各种各样的优化算法比如说图搜索,fmincon、GA等等的,这里直接调用matlab的函数包就可以了。优化的目标就是要满足以上要求,转化为公式的话,如下:

cost function是使得K的条件数最小。

这里我首先建议用一台性能高的电脑去完成,用轻薄本的话注定要跑很久,同时也要注意计算技巧,如果计算方法选不对那么也会耗费很多的时间。

这里给出我是用上述方法计算出来的激励轨迹,共花费三个半小时,如下图:

激励轨迹的执行如上图,因为我这里给的限位都比较大,所以看起来有些夸张。

实验

基于使用franka emika panda,进行参数辨识实验。这里见我的另一篇博文->【机械臂算法】Franka Emika Panda动力学参数辨识。

【机械臂算法】机械臂动力学参数辨识仿真相关推荐

  1. 【参数辨识】六关节机械臂动力学参数辨识(上)

    导语:两周的动力学参数辨识,使我学到很多,但遇到的问题更多,在网上有很多六关节动力学参数辨识的资料,但大家对于最小惯性参数集的推导都不详细,不能得到最小惯性参数集的系数和对应的回归矩阵,很多东西都是直 ...

  2. 机械臂动力学参数辨识

    不多说先上代码:https://github.com/lsk-gith/robot_dynamic_identify.git 动力学参数 动力学参数一般是指转动惯量,质量,质心位置,这个三个组合起来有 ...

  3. 基于改进MRAS算法的永磁同步电机参数辨识

    基于改进MRAS算法的永磁同步电机参数辨识 摘 要 永磁同步点电机参数辨识算法介绍 永磁同步电机数学模型 改进MRAS参数辨识算法 递推最小二乘法辨识原理 递推最小二乘法结合MRAS算法原理 仿真结果 ...

  4. 【机器人算法】机器人动力学、运动学和基于动力学模型的仿真与控制

    文章目录 运动学 机器人运动学参数标定(DH参数标定) 运动学逆解 解析解 数值解 工作空间分析 可操纵性 轨迹规划 路径规划 静力学 动力学 动力学模型 动力学仿真 自由下落 遇到跳床 重力补偿 动 ...

  5. 关于机器人机械臂参数辨识

    前几天在逛github发现一个dynamic identification的仓库,代码非常全.同时也看了对应的文章,虽然参数辨识不是文章最终目的,但是仍能感受到作者在参数辨识领域的了解程度和功底.这篇 ...

  6. MATLAB 中的机械臂算法——运动学

    MATLAB 中的机械臂算法--运动学 机械臂算法 MATLAB 在 2016 年就推出了 Robotics System Toolbox(RST),其中有很多关于机械臂方面的算法.而且随着客户需求的 ...

  7. 机械臂算法中的重要概念与结论总结(不含详细推导)1

    机械臂是机器人的一种形式,属于一种多学科交叉涉及非常广泛的学科,在此将对学习过程中的重要概念与结论进行,本主要依据<Introduction to robotics mechanics and ...

  8. 六轴机械臂算法-引导篇

    最近一直在研究 6轴机械臂算法,整理出了如下几个计算六轴机械臂正解和逆解的关键点: 01_机器人坐标系和关节的说明 02_算法坐标系的建立 03_D-H参数表的建立 04_FK(正解)算法 05_Ma ...

  9. 六轴机械臂算法正解(FK)和逆解(IK)

    在之前的博客中,有一篇<六轴机械臂算法-引导篇>,目前,终于将引导篇中的各个点整理完毕. 因为文档中涉及到比较多的图片以及公式,copy的过程中发现比较麻烦,所以直接将文档截取成了图片上传 ...

最新文章

  1. 练习 hdu 5523 Game
  2. spring中事务的设计和实现
  3. UA MATH571A 多元线性回归II 变量选择
  4. Python入门100题 | 第053题
  5. JZOJ 5627. 【NOI2018模拟4.3】paint
  6. Tomcat学习笔记01【Web相关概念、Tomcat基本操作】
  7. java github_GitHub Research:超过50%的Java记录语句写错了
  8. Sharepoint的文档库用资源管理器方式浏览报错“Explorer View ”解决方案。
  9. 【转】.NET 自带的动态代理+Expression 实现AOP
  10. appcrash事件java,java – SpringBoot应用程序崩溃
  11. 将Maven集成到idea中并创建第一个Maven项目
  12. 《设计模式详解》行为型模式 - 备忘录模式
  13. 动态规划-最少硬币问题
  14. 简单html,用CSS设计一个留言板
  15. 如何获得静态IP资源?
  16. 极大团与networkx Bron-Kerbosch算法源码解读
  17. ipad和iphone切图_如何在iPhone和iPad上使用触控板模式选择文本
  18. WEKA算法开发——记一次不太成功的遗传属性加权贝叶斯算法实验
  19. 数字音频接口(I2S,PCM/TDM)
  20. 8086cpu中的寄存器(cs、ds、es、ss、ip、sp、bp、si、di)

热门文章

  1. 关于磁盘分区除c盘外消失吐槽
  2. 基于jsp,ssm进销存管理系统
  3. 单节磷酸铁锂电池充电管理芯片IC驱动方案3.6V充电芯片手电筒_低压应急球泡灯适用
  4. 会PHP如何拥有一个自己的QQ机器人?(三)
  5. 重装系统服务器不识别u盘启动,重装系统时BIOS不识别U盘启动盘如何解决?
  6. 计算机组成原理学习笔记:循环冗余校验码
  7. WinPE 安装 2003
  8. [转]联想Y450笔记本Gentoo下配置无线网卡问题
  9. 利用Matlab从图片中获取凸多边形的内角角度
  10. 基于android的通讯录,基于Android的通讯录管理系统.doc