IRDYn/r1000dynamics/r1000_dynamic_analysis/calculateArmRot.m

29 lines
1.3 KiB
Mathematica
Raw Normal View History

2024-10-21 13:49:49 +00:00
function [rotInfo] = calculateArmRot(dynamicBasicInfo,theta)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 姿/...
% dynamicBasicInfo: PSA
% setupInfo: SUA(setup arm) []
% state:
% 姿
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
rotInfo = struct;
temp = struct;
temp.rot = eye(3);
temp.rotTran = eye(3);
rotInfo.link = ([temp temp temp temp temp temp temp temp temp]);
rotInfo.motor = ([temp temp temp temp temp temp temp temp temp]);
rotInfo.link(1).rot = rot(dynamicBasicInfo.link(1).jointAxis,theta(1));
rotInfo.link(1).rotTran = rotInfo.link(1).rot';
rotInfo.motor(1).rot = rotInfo.link(1).rot;
rotInfo.motor(1).rotTran = rotInfo.motor(1).rot';
for i=2:9
if dynamicBasicInfo.link(i).jointAxis>3
rotInfo.link(i).rot = rotInfo.link(i-1).rot*rot(dynamicBasicInfo.link(i).jointAxis-3,theta(i));
else
rotInfo.link(i).rot = rotInfo.link(i-1).rot;
end
rotInfo.link(i).rotTran = rotInfo.link(i).rot';
rotInfo.motor(i).rot = rotInfo.link(i).rot;
rotInfo.motor(i).rotTran = rotInfo.motor(i).rot';
end