问题描述
我正在设计一个 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 (将#修改为@)