本文是对文献 [1] 的复现。

文章目录

  • 更新日志
  • 关于阻抗控制
  • 离散化阻抗控制控制器的实现
  • 基于阻抗控制的工业机器人轨迹跟踪系统仿真
    • ■ 环境说明
    • ■ 系统说明
    • ■ 结果展示
  • 后记
  • 项目开源
  • 参考文献
  • Q&A

更新日志

  • Github 仓库

    • 2021/02/03

      • 第一次上传
    • 2021/04/18
      • 修改贴图路径为相对路径
      • 在 Model Properties 中手动添加模型装配数据脚本回调函数,解决中文路径问题
      • 添加 2018a - 2020b 版本仿真模型文件
      • 添加参考文献文件
  • 文章本身
    • 2021/04/28

      • 读者 Q&A 更新

关于阻抗控制

  阻抗控制的提出可以追溯到 1984 年,Neville Hogan 在 American Control Conference 发表的 Impedance Control:An Approach to Manipulation ,次年,Hogan N. 又在 Journal of Dynamic Systems Measurement and Control-transactions of The Asme 发表了阻抗控制经典三部曲 —— Impedance Control:An Approach to Manipulation, Part I --Theory, Part II – Implementation, Part III – Applications。

图为 2021/01/21 时博主做的组会 Presentation

  博主理解的阻抗控制,实际其控制的目标是调节机器人的末端位置(笛卡尔坐标空间)和末端作用力之间的动态关系,以保证机器人在适当的柔顺运动过程中进行轨迹跟踪,至于是更加柔顺还是更注重轨迹跟踪精度则是由阻抗控制模型(算法)式(1)进行调节的。为了更好的理解阻抗模型各项的作用,可以对该阻抗模型进行简化,例如 fe=k(xd−x)f_e =k(x_d-x)fe​=k(xd​−x), 这个时候说明我们只考虑了控制机器人末端与环境之间的位置关系(由胡克定律,此时两者之间就像只有一个弹簧连接一样);同样地,我们让 fe=b(x˙d−x˙)+k(xd−x)f_e = b(\dot{x}_d -\dot{x}) + k(x_d-x)fe​=b(x˙d​−x˙)+k(xd​−x),这个时候就同时考虑了控制机器人末端与环境之间的位置关系和速度关系(此时两者之间应该是一个弹簧-阻尼系统);进一步同时考虑考虑位移-速度-加速度时(即弹簧-阻尼-质量系统),则得到了 fe=m(x¨d−x¨)+b(x˙d−x˙)+k(xd−x)f_e = m(\ddot{x}_d -\ddot{x}) + b(\dot{x}_d -\dot{x}) + k(x_d-x)fe​=m(x¨d​−x¨)+b(x˙d​−x˙)+k(xd​−x) 这样完整的阻抗控制模型了。
  当然,在这里所做的简单陈述只是为了更好地理解阻抗控制的核心思想,其内容远不止博主上面所说的这些(自己其实也学得稀里糊涂的),谨记。

离散化阻抗控制控制器的实现

  这里使用了简化的阻抗控制模型,即要求机器人末端执行器在 X/Y/Z 三个方向的运动是解耦的,这样我们便可以对三个方向分别进行控制,也便于我们调节阻抗参数。
  对于阻抗模型 fe=m(x¨d−x¨)+b(x˙d−x˙)+k(xd−x)f_e = m(\ddot{x}_d -\ddot{x}) + b(\dot{x}_d -\dot{x}) + k(x_d-x)fe​=m(x¨d​−x¨)+b(x˙d​−x˙)+k(xd​−x),我们可以采用下面的方式进行离散化:

  利用该离散化表达式,借助 Simulink 中的 MATLAB Function 模块,编辑 m 脚本便可以实现离散化的阻抗控制控制器。

离散化阻抗控制器

function [Xr,Xr_dot,Xr_dotdot]  = fcnlmp(Xd,Xd_dot,Xd_dotdot,f)  m =1;b = 200;k=1200;T = 0.005; % 参数初始化  persistent Xr_pre Xr_dot_pre;% 持久变量 https://ww2.mathworks.cn/help/matlab/ref/persistent.html  if isempty(Xr_pre)   Xr_pre = 0;  end  if isempty(Xr_dot_pre)   Xr_dot_pre = 0;  end  Xr_dotdot_pre = Xd_dotdot + 1/m*(-f + b*(Xd_dot - Xr_dot_pre) + k*(Xd - Xr_pre)); % 上一采样时间 nT 机器人末端的实际运动加速度  Xr = Xr_pre + Xr_dot_pre*T;           % 当前采样时间 (n+1)T 机器人末端的实际运动位置  Xr_dot = Xr_dot_pre + Xr_dotdot_pre*T;% 当前采样时间 (n+1)T 机器人末端的实际运动速度  Xr_dotdot = Xr_dotdot_pre;            % 当前采样时间 (n+1)T 机器人末端的实际运动加速度  Xr_dot_pre = Xr_dot;                  % 上一采样时间 nT 机器人末端的实际运动速度  Xr_pre = Xr;                          % 上一采样时间 nT 机器人末端的实际运动位置
end

图为 2021/01/21 时博主做的组会 Presentation

基于阻抗控制的工业机器人轨迹跟踪系统仿真

  本项目已开源,【仓库地址】: ER-16-Simulation 。

■ 环境说明

  参考文献 [1],对埃夫特公司的 ER-16 系列六轴机器人进行 Simulink/Simscape 仿真,环境说明如下:

类别 下载地址
ER16 系列机器人 3D-Model 埃夫特智能装备股份有限公司
Matlab 2020b (版本 9.9) MathWorks 官网
Simulink (版本 10.2) Matlab 菜单栏 -> 附加功能 -> 搜索安装即可
Simscape(版本 5.0) Matlab 菜单栏 -> 附加功能 -> 搜索安装即可
Simscape Multibody(版本 7.2 ) Matlab 菜单栏 -> 附加功能 -> 搜索安装即可
Simscape Multibody Link (版本 7.2) 参考文章 《Matlab模型可视化…》 安装即可

■ 系统说明

  完整的轨迹跟踪系统模型模型如下,其中涉及了机器人本体模型的搭建离散化阻抗控制器的实现,以及末端轨迹生成器的设计

  机器人本体模型的搭建 是从 Solidworks 导出 xml 文件,再在 Matlab 中用 SimMechanics Link 读取该 xml 文件从而获取装配信息得到的,相比于手动装配确实省事了不少。SimMechanics Link 的使用可以参考文章 Matlab模型可视化仿真:SimMechanics Link的安装与使用。机器人模型子系统呈现如下:

  离散化阻抗控制器 是直接利用了之前的成果,将其拓展到 X/Y/Z 三个维度即可。
  对于机器人的运动控制,一个很棘手的问题就是逆运动学求解,这里的处理方式是在机器人末端执行器的顶端额外添加一个关节(Bushing Joint 模块),将 X/Y/Z 三个方向的位置信息作为输入,由该关节 “牵” 着这个庞大的六轴机器人运动(有牵着鼻子走内味了嗷

基于阻抗控制的工业机器人轨迹跟踪系统 Simulink/Simscape 仿真相关推荐

  1. 解读文献(五)------基于阻抗控制

    文章目录 背景 主动柔顺控制 阻抗控制 基于力的阻抗控制 基于位置的阻抗控制 力位混合控制 直接力位混合控制 间接力位混合控制 机器人运动学分析 单腿正向运动学分析 腿部速度分析 四足机器人稳定性分析 ...

  2. 基于激光视觉传感器的工业机器人焊缝跟踪系统的优缺点

    一.总体项目情况概述 开发发那科工业机器人和上位机之间的通讯功能并完成测试. 开发发那科工业机器人和焊缝跟踪传感器的位置标定功能并完成测试. 开发焊接实时跟踪的图像预处理功能并完成测试. 开发常用焊缝 ...

  3. 基于OpenCV车牌识别及轨迹跟踪

    系统总体设计 本系统主要由三个模块构成分别是:图像采集模块,车牌识别模块和轨迹处理模块. 因为实验条件限制,所以实验时采用一个摄像头拍多个不同时间段的视频,代替多个摄像头的拍摄效果.右图中小矩形框代表 ...

  4. 基于JAVA社区老人健康服务跟踪系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA社区老人健康服务跟踪系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA社区老人健康服务跟踪系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B ...

  5. matlab机器人轨迹规划仿真程序,基于MATLAB_Robotics工具箱的工业机器人轨迹规划及仿真研究...

    [实例简介] 基于MATLAB_Robotics工具箱的工业机器人轨迹规划及仿真研究 //CAD/CAM/CAE/ CAPP MANUFACTURING INF( ti=i:025:1+1 i=0:3 ...

  6. 基于Matlab使用地面雷达探测和跟踪LEO卫星星座仿真(附源码)

    目录 一.从 TLE 文件导入卫星星座 二.模拟合成检测和跟踪星座 2.1 对空间监视雷达进行建模 2.2 雷达处理链 2.3 定义跟踪器 2.4 运行模拟 三.总结 四.程序 此示例演示如何导入卫星 ...

  7. 基于matlab的数字调制,基于MATLAB的多功能数字调制系统信号源仿真

    内容简介: 毕业设计 基于MATLAB的多功能数字调制系统信号源仿真,共60页,27225字 摘要 数字通信与模拟通信系统相比有着灵活性.高效性和保密性等突出特点.数字通信系统仿真对于系统分析起着越来 ...

  8. 基于51单片机轮胎胎压监测系统-压力传感器(仿真+程序+报告)

    本设计: 基于51单片机轮胎胎压监测系统-压力传感器(仿真+程序+报告) Proteus仿真版本:proteus7.8 程序编译器:keil 4 编程语言:C语言 编号C0018 ----本设计分享下 ...

  9. 简述工业机器人示教再现的一般步骤_基于激光焊缝跟踪传感器的工业机器人焊缝跟踪系统的应用焊接寻位...

    近年来随着现代制造业的蓬勃发展,焊接技术的应用愈发广泛.传统的焊接工作是人工完成的,虽然操作方便,灵活多变,但对经验的依赖非常大,重复精度不高,工作效率也比较低,并且随着用工成本的越来越高,焊接的主流 ...

最新文章

  1. 内存的分配方式有几种? 动态内存的的传递注意事项!
  2. 4*4矩阵按键控制数码管显示0-F
  3. java 创建string_Java 如何创建一个String
  4. 《On the Momentum Term in Gradient Descent Learning Algorithm》原文解读
  5. hive(II)--sql考查的高频问题
  6. python 切片器_PowerBI-将日期显示为星期作为切片器
  7. (扩展欧几里德算法)zzuoj 10402: C.机器人
  8. Java中的关键字--volatile
  9. 当安防撞上AI风潮 会迸出怎样火花?
  10. go有没有php的array,实现类似php的array_column方法
  11. iOS开发-获取rootViewController的正确方式
  12. 一个简单实用的boost升压电路
  13. navicat的注册码
  14. java 使用socks代理
  15. Hackintosh-OpenCore系列篇-macOS install
  16. 利用matlab设计矩形脉冲信号,信号课程设计
  17. 百度磁盘搜索和git、ssh的试用
  18. uniapp 下载视频到本地
  19. 中职计算机教师试讲技巧,中职教师资格面试原来是这样考的的!
  20. 腾讯云服务器的项目部署

热门文章

  1. 日历+石墨做团队管理
  2. [课业] 25 | 数据库基础 | 基础SQL查询语言
  3. [7 kyu] Exes and Ohs
  4. Error:A fatal exception has occurred.Program will exit
  5. SpringMVC实现全局异常处理器
  6. 计算机DNS怎么配置,如何设置计算机dns?电脑dns设置教程
  7. SylixOS快问快答
  8. 云开发表情包制作神器微信小程序源码下载,支持各种自定义
  9. sodo与visodo的日常使用
  10. 机器学习平台基础知识