IRDYn/GC_calibration/calculateMassMatrix.m

28 lines
1.4 KiB
Mathematica
Raw Normal View History

2024-11-06 15:46:33 +00:00
function [massMatrix,totalMass,gravityForce] = calculateMassMatrix(dynamicBasicInfo,...
toolMass,jacoInfo)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% dynamicBasicInfo:
% jacoInfo:
% toolMass:
%
% author:li.jiang
% e-mail:li.jiang@csrbtx.com
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
g = -9.8;
massMatrix = zeros(9,9); % init massMatrix to be zeros
totalMass = 0;
gravityForce = zeros(9,1);
for i=1:9-1
tempMatrix = [dynamicBasicInfo.link(i).mass*eye(3) zeros(3,3);
zeros(3,3) dynamicBasicInfo.link(i).inertialMatrix];
massMatrix = massMatrix + jacoInfo.link(i).jaco'*tempMatrix*jacoInfo.link(i).jaco;
totalMass = totalMass+dynamicBasicInfo.link(i).mass;
gravityForce = gravityForce + jacoInfo.link(i).jaco'*[0;0;g*dynamicBasicInfo.link(i).mass;0;0;0];
end
tempMatrix = [(dynamicBasicInfo.link(9).mass+toolMass)*eye(3) zeros(3,3);
zeros(3,3) dynamicBasicInfo.link(9).inertialMatrix];
massMatrix = massMatrix + jacoInfo.link(9).jaco'*tempMatrix*jacoInfo.link(9).jaco;
totalMass = totalMass+dynamicBasicInfo.link(9).mass+toolMass;
gravityForce = gravityForce + jacoInfo.link(9).jaco'*[0;0;g*(dynamicBasicInfo.link(9).mass+toolMass);0;0;0];