• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

PUMA560_臂形机器人动力学与控制_torque feedforward control

人工智能 unique_jie 2507次浏览 0个评论

本文讨论串联机械臂的动力学与控制问题,在加入力矩的情况下控制机器人以期望的位姿运动。以标准的puma560为例做前馈力矩控制(robotics toolbox for matlab 10.3 工具箱中的puma560对象,simulink模型,sl_fforward)。考虑驱动串联机械臂的单个电机,其受力情况可以用一组矩阵形式的耦合微分方程表示。

在这里插入图片描述

其中,q,qd,qdd 分别为广义的关节位置、速度和加速度的向量,H是关节空间惯性矩阵,C是科氏力和向心力耦合矩阵,G是重力负荷,F为摩擦力,Q是广义坐标,最后一项是施加在末端执行器上的力旋量所产生的关节力。在给定关节角度、关节速度和加速度的情况下,转动惯量和耦合力矩都能够由该微分方程计算出来。
然而在整个串联机械臂的控制中,采用独立关节控制具有局限性,惯性变化和动态耦合力没有明确的处理方法。采用前馈控制加上计算力矩控制两种方法相结合,前馈控制项能够补偿由于惯性参数的不确定性、未建模的力或外部干扰引起的任何误差。力矩前馈控制表达式由下式给出(此式中,直接对位置误差和速度误差乘以比例系数作为反馈项与力矩合成在一起,而没有对误差进行对应于物理意义上处理):

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

图a为前馈控制,根据期望机械臂状态计算所需的关节力;图b为计算力矩控制,其原理是:非线性系统通过他的逆被级联,从而使整个系统具有恒定的单位增益。由于非线性系统求逆进行前馈力矩控制是不完美的,加入反馈回路来处理误差能够达到更好的效果。

本文对应的matlab工具箱环境为,matlab2018b环境下Robotics Toolbox for MATLAB 10.3, 首先创建SerialLink对象:

>>mdl_puma560

载入力矩前馈控制器模型

>>sl_fforward

其中,jtraj模块在初始化过程中,即生成期望位姿序列,通过jtraj函数实现:

t=[0:100]'/100*tmax;            %仿真时间步,无因子时间序列乘以时间长度
[q,qd,qdd] = jtraj(q0, qf, t);

NF/Puma560是一个去除库仑摩擦力的puma560机器人对象,封装里你动力学模型:

p560.nofriction()

模块初始化,输出机器人对象的自由度

if isa(robot, 'SerialLink')
    n = robot.n
    rname = robot.name;
else
    n = 0;
    rname = '';
end

封装内容中,使用rne牛顿欧拉法求解逆动力学,输入对象[q, qd, qdd]为3×6的矩阵,输出torque

rne(robot, u(1:n)', u(n+1:2*n)', u(2*n+1:3*n)')

使用Zero-Order Hold模块控制采样时间,前馈力矩计算的采样时间与反馈采样时间可以不同。

在这里插入图片描述

输出关节角度监视结果如下:

在这里插入图片描述

关节角度误差监视结果如下:

在这里插入图片描述

对于惯性变化和动态耦合力矩的处理,采用计算力矩前馈控制能够显著提升控制性能,在前馈控制的基础上加入位置环和速度环的反馈控制项,使整个控制系统达到更好的控制效果。

references:

  1. Robotics, Vision and Control ——Fundamental Algorithms in Matlab, Peter Corke


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明PUMA560_臂形机器人动力学与控制_torque feedforward control
喜欢 (0)

您必须 登录 才能发表评论!

加载中……