机器人动力学识别研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

识别机器人的动态参数是机器人控制中一个长期存在的话题,最近,该领域的研究见证了活动的更新。这是由于基于模型的控制(例如腿或手术机器人)所需的高性能,以及需要获得此类系统的真实仿真。

从关节位置、速度和加速度开始计算关节扭矩的操作,包括基于模型的控制方法,依赖于逆动力学的计算[1]。另一方面,直接动力学是从关节位置、速度和扭矩开始计算关节加速度的操作,例如,在数值模拟(最近更名为数字孪生)和基于模型的运动规划中是必需的。这两种操作都需要表示机器人的动态模型;此外,其他一些高级功能,如撞击检测,也需要对模型及其参数有很好的了解[2]。

因此,推导出动态模型,然后估计其参数至关重要。然而,物理上不可行的估计可能会导致在某些关节配置下出现非正惯性矩阵,或者在最坏的情况下,在整个关节空间中。这种动态模型会导致不切实际的模拟,并对基于模型的控制产生负面影响,因为使用具有非正惯性矩阵的动态模型可能会导致系统不稳定[3]。

通常,机器人动力学参数(例如质量和惯性张量)表现出物理限制,必须正确解决才能获得有意义的估计。然而,一些基于回归技术[4](有和不考虑约束)的识别解决方案会产生非物理估计,例如,由于不可避免的建模错误,识别实验的错误设置以及参数约束的错误选择。由于所有这些原因,社区在识别主题方面投入了相当大的精力,诉诸经典的数据估计算法,以考虑与机器人相关的物理限制。

在没有对未知动力学添加特定约束同时最小化特定数据重建误差的情况下识别的模型[5]-[7]通常存在过度拟合,并且可能没有表现出重要的属性,例如正链路质量和链路惯性矩阵的正确定性,这些属性构成了动态参数本身的物理意义,在部分文献中定义为一致性

[8]的作者朝着这个方向迈出了第一步,他们通过找到一组动态参数来解决识别问题,这些动态参数在最小二乘意义上是最优的,并且最接近一组物理上一致的标称参数(例如,从CAD数据中检索)。由于一致性未设置为硬约束,因此不保证此属性;事实上,作者设想,如果要保持此属性,则需要进一步修改回归器零空间中的惯性参数。

[9]中提出了一个约束非线性优化问题,通过全局优化方法(如遗传算法)解决,通过对每个动态参数施加下限和上限来解决一致性;但是,即使在这种情况下,也不能保证满足一致性属性。在这方面,[10]中提出了这个方向的扩展,其中约束优化问题通过迭代技术解决。

[11]中可以找到对机器人动态参数物理一致性的严格讨论,其中表明可行的解决方案可以在线性矩阵不等式(LMI)的框架内处理,并通过半定规划(SDP)技术(LMI-SDP)进行处理,通过该技术可以找到全局解决方案。具体而言,对于每个链接,考虑的约束包括质量的非负性、链接惯性矩阵的正确定性以及质心位置的边界。值得注意的是,[12]强调惯性矩阵不仅必须是正定的,而且还必须表现出关于其特征值的三角形不等式。

📚2 运行结果

 

 

 

 

 

 

 

 

部分代码:

function [error_CLS1, error_CLS1_rel] = validation_CLS1(Index_trajectory_VAL)
    %----------------------------------------------------------------------
    % Validation of CLS1 dynamic parameters. It uses the dynamic parameters
    % identified in identification_CLS1 method inspired by "Extracting feasible robot
    % parameters from dynamic coefficients using nonlinear optimization
    % methods", C. Gaz and F. Flacco and A. De Luca, ICRA, 2016 IEEE.
    %
    % function [error_CLS1, error_CLS1_rel] = validation_CLS1(Index_trajectory_VAL)
    %
    % inputs:
    %       Index_trajectory_VAL: Index (1,2,3,..) associated to the trajectory
    %       contained in  ../Trajectories/ directory
    %
    % outputs:
    %       error_CLS1: absolute error between torques and estimate torques
    %       error_CLS1_rel: relative error between torques and estimate torques
    %                       normalized respect to torques 
    %      
    % loaded mat files:
    %       TrajIndex_trajectory_VAL.mat: validation trajectory
    %       YvIndex_trajectory_VAL.mat: numeric validation regressor
    %       CLS1_Identification: CLS1 dynamic parameters
    %
    % saved mat files:

    
    %% Define mat files' paths 
    save_dir = '../../results/mat/';
    mkdir(save_dir);
    CLS_VAL_parameters_file_mat = strcat(save_dir,'CLS1_Validation');
    path_load_traj_VAL = strcat('../../data/Trajectories/Traj',num2str(Index_trajectory_VAL),'.mat');
    
    %% Load mat files
    load  (path_load_traj_VAL,'q_filt','dq_filt','ddq_filt','tau_filt','t');
    load (strcat('../../data/Regressors/Yv',num2str(Index_trajectory_VAL),'.mat'),'Yv');
    load (strcat(save_dir, 'CLS1_Identification.mat'),'pi_CLS1','sigma_CLS1');
        
    %% Validation on Model CLS1 

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

🌈4 Matlab代码实现

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值