微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用带有系统对象的 MATLAB 函数作为 Simulink 中的输入之一?

如何解决如何使用带有系统对象的 MATLAB 函数作为 Simulink 中的输入之一?

我正在设计一个 7 DoF 机械臂的反推控制,我在 MATLAB 中创建并导入它作为刚体树对象。考虑到控制律,有一个术语,所以我在知道我的机器人 q 和质量矩阵的当前配置的情况下实时计算科里奥利矩阵。考虑到来自顺序积分的数值数据,我通过 Christoffel 参数化做了它,但它非常慢。 作为查看它是否比前一个更轻的替代方法,我想使用 Corke 方法(RTB 的)来解决问题,该方法考虑计算由于和对积的单个术语(更多信息在这里)。我可以在 for 循环中定义一个包含逆动力学命令的外部 MATLAB 函数,而不是设置多个 Inverse Dynamics Simulink 和 MATLAB Function Blocks?我认为它应该更高效和优雅。换句话说,我如何在 Simulink 中使用下面的这个 MATLAB 函数? “解释的 MATLAB 函数”块是正确的块吗?

function C = computeCoriolisMatrix(q,dq,robot_free)
N = length(q);
C = zeros(N,N);
Csq = C;
    for j = 1:N
        QD = zeros(1,N);
        QD(j) = 1;
        tau = inverseDynamics(robot_free,q,QD);
        Csq(:,j) = Csq(:,j) + tau';
    end
    
    for j = 1:N
        for k = j+1:N
            % find a product term  qd_j * qd_k
            QD = zeros(1,N);
            QD(j) = 1;
            QD(k) = 1;
            tau = inverseDynamics(robot_free,QD);
            C(:,k) = C(:,k) + (tau' - Csq(:,k) - Csq(:,j)) * dq(j);
        end
    end
    C = C + Csq * diag(dq);
    
end

谢谢大家,V。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。