Closed gabrielalsantos closed 10 years ago
Hi Gabriela,
could you please specify the changes you made, and where?
Thanks Davide
Hello Davide,
Of course I can! I modified the lines for the wrist and hand and somen landmarks of scapula, transformed into sentence using %. I am sending attached the file I modified by e-mail.
Thanks
Hi Gabriela,
I had a look at the body model file you created. Unfortunately, BodyMech doesn'twant lines to be commented in such a way. For instance:
MyLabelSequence{8} = 'RLA4';
%MyLabelSequence{9} = 'RH1';
%MyLabelSequence{10} = 'RH2';
%MyLabelSequence{11} = 'RH3';
MyLabelSequence{12} = 'RACR1';
should be:
MyLabelSequence{8} = 'RLA4';
%MyLabelSequence{9} = 'RH1';
%MyLabelSequence{10} = 'RH2';
%MyLabelSequence{11} = 'RH3';
MyLabelSequence{9} = 'RACR1';
to avoid "holes" in cell-arrays or struct arrays. Also for segments and joints should be the same. Example:
CreateBodyJoint('Right_Elbow', 3, [6 2], [Z X Y],'FirstSolution'); % joint 3 forearm relative to humerusH1
%CreateBodyJoint('Right_Wrist', 4, [2 3], [Z X Y],'FirstSolution'); % joint 4 hand relative to forearm
CreateBodyJoint('Right_Scapula', 5, [5 4], [Y X Z],'FirstSolution'); % joint 5 scapula relative to trunk
has to be turned into:
CreateBodyJoint('Right_Elbow', 3, [? ?], [Z X Y],'FirstSolution'); % joint 3 forearm relative to humerusH1
%CreateBodyJoint('Right_Wrist', 4, [2 3], [Z X Y],'FirstSolution'); % joint 4 hand relative to forearm
CreateBodyJoint('Right_Scapula', 4, [? ?], [Y X Z],'FirstSolution'); % joint 5 scapula relative to trunk
I have put question marks for segments numbers because I don't know what is the real segments number after renumbering them.
Hope it is clear enough.
Davide
Gabriela,
I post here the body model file you sent me:
% clear previous BODY declaration
ClearBody
CreateBodyHeader('bilat_UL');
% #############################
% ## create body model ##
% #############################
% create your own segments
% Right side technical
MyLabelSequence{1} = 'RUA1';
MyLabelSequence{2} = 'RUA2';
MyLabelSequence{3} = 'RUA3';
MyLabelSequence{4} = 'RUA4';
MyLabelSequence{5} = 'RLA1';
MyLabelSequence{6} = 'RLA2';
MyLabelSequence{7} = 'RLA3';
MyLabelSequence{8} = 'RLA4';
MyLabelSequence{9} = 'RACR1';
MyLabelSequence{10} = 'RACR2';
MyLabelSequence{11} = 'RACR3';
% Left side technical
MyLabelSequence{15} = 'LUA1';
MyLabelSequence{16} = 'LUA2';
MyLabelSequence{17} = 'LUA3';
MyLabelSequence{18} = 'LUA4';
MyLabelSequence{19} = 'LLA1';
MyLabelSequence{20} = 'LLA2';
MyLabelSequence{21} = 'LLA3';
MyLabelSequence{22} = 'LLA4';
MyLabelSequence{23} = 'LACR1';
MyLabelSequence{24} = 'LACR2';
MyLabelSequence{25} = 'LACR3';
% Common
MyLabelSequence{26} = 'ST1';
MyLabelSequence{27} = 'ST2';
MyLabelSequence{28} = 'ST3';
% Right side anatomical
MyLabelSequence{29} = 'REL';
MyLabelSequence{30} = 'REM';
MyLabelSequence{31} = 'RRS';
MyLabelSequence{32} = 'RUS';
MyLabelSequence{33} = 'RAA';
MyLabelSequence{34} = 'RAI';
MyLabelSequence{35} = 'RTS';
% Left side anatomical
MyLabelSequence{36} = 'LEL';
MyLabelSequence{37} = 'LEM';
MyLabelSequence{38} = 'LRS';
MyLabelSequence{39} = 'LUS';
MyLabelSequence{40} = 'LAA';
MyLabelSequence{41} = 'LAI';
MyLabelSequence{42} = 'LTS';
MyLabelSequence{43} = 'C7';
MyLabelSequence{44} = 'T8';
MyLabelSequence{45} = 'IJ';
MyLabelSequence{46} = 'PX';
PushLabelsToBODY(MyLabelSequence);
CreateBodySegmentAdv('Right_Humerus', 1, [1 2 3 4]); % segment 1
CreateBodySegmentAdv('Right_Forearm', 2, [5 6 7 8]); % segment 2
CreateBodySegmentAdv('Right_Acromion', 3, [9 10 11]);% segment 3
CreateBodySegmentAdv('Right_Sternum', 4, [12 13 14]); % segment 4
CreateBodySegmentAdv('Right_Hum1', 5, [1 2 3 4]); % segment 5
CreateBodySegmentAdv('Left_Humerus', 6, [15 16 17 18]); % segment 6
CreateBodySegmentAdv('Left_Forearm', 7, [19 20 21 22]); % segment 7
CreateBodySegmentAdv('Left_Acromion', 8, [23 24 25]);% segment 8
CreateBodySegmentAdv('Left_Sternum', 9, [26 27 28]); % segment 9
CreateBodySegmentAdv('Left_Hum1', 10, [15 16 17 18]); % segment 10
% #####################################
% ## define anatomic landmark names ##
% #####################################
BodyMechFuncHeader;
% right humerus (1)
% anatomical landmarks of the humerus between the ' '
% BODY.SEGMENT(1).AnatomicalLandmark(1).Name=('GHr'); % GH rotation centre
% defined in AnatCalc_UL_5Segm_Right
BODY.SEGMENT(1).AnatomicalLandmark(1).Name=('REL'); % lateral epicondyl
BODY.SEGMENT(1).AnatomicalLandmark(1).SharedWith = {'Right_Forearm'};
BODY.SEGMENT(1).AnatomicalLandmark(2).Name=('REM'); % medial epicondyl
BODY.SEGMENT(1).AnatomicalLandmark(2).SharedWith = {'Right_Forearm'};
% right forearm (2)
% anatomical landmarks of the lowerarm between the ' '
BODY.SEGMENT(2).AnatomicalLandmark(1).Name=('RRS'); % radial styloid
BODY.SEGMENT(2).AnatomicalLandmark(1).SharedWith = {'Right_Humerus'};
BODY.SEGMENT(2).AnatomicalLandmark(2).Name=('RUS'); % ulnar styloid
BODY.SEGMENT(2).AnatomicalLandmark(2).SharedWith = {'Right_Humerus'};
% right acromion (3)
% anatomical landmarks of the scapula between the ' '
BODY.SEGMENT(3).AnatomicalLandmark(1).Name=('RAA'); % ang acromialis
BODY.SEGMENT(3).AnatomicalLandmark(2).Name=('RAI'); % ang inferior
BODY.SEGMENT(3).AnatomicalLandmark(3).Name=('RTS'); % trig spin scap
% right sternum (4)
% anatomical landmarks of the trunk between the ' '
BODY.SEGMENT(4).AnatomicalLandmark(1).Name=('C7'); % proc spin C7
BODY.SEGMENT(4).AnatomicalLandmark(2).Name=('T8'); % proc spin T8
BODY.SEGMENT(4).AnatomicalLandmark(3).Name=('IJ'); % inc jungularis
BODY.SEGMENT(4).AnatomicalLandmark(4).Name=('PX'); % proc xypho�deus
% right hum1 (5)
% anatomical landmarks of the humerus between the ' '
BODY.SEGMENT(5).AnatomicalLandmark(1).Name=('REL'); % lateral epicondyl
BODY.SEGMENT(5).AnatomicalLandmark(2).Name=('REM'); % medial epicondyl
% left humerus (6)
% anatomical landmarks of the humerus between the ' '
% BODY.SEGMENT(1).AnatomicalLandmark(1).Name=('GHr'); % GH rotation centre
% defined in AnatCalc_UL_6Segm_Right
BODY.SEGMENT(6).AnatomicalLandmark(1).Name=('LEL'); % lateral epicondyl
BODY.SEGMENT(6).AnatomicalLandmark(1).SharedWith = {'Left_Forearm'};
BODY.SEGMENT(6).AnatomicalLandmark(2).Name=('LEM'); % medial epicondyl
BODY.SEGMENT(6).AnatomicalLandmark(2).SharedWith = {'Left_Forearm'};
% left forearm (7)
% fill in anatomical landmarks of the lowerarm between the ' '
BODY.SEGMENT(7).AnatomicalLandmark(1).Name=('LRS'); % radial styloid
BODY.SEGMENT(7).AnatomicalLandmark(1).SharedWith = {'Left_Humerus'};
BODY.SEGMENT(7).AnatomicalLandmark(2).Name=('LUS'); % ulnar styloid
BODY.SEGMENT(7).AnatomicalLandmark(2).SharedWith = {'Left_Humerus'};
% left acromion (8)
% anatomical landmarks of the scapula between the ' '
BODY.SEGMENT(8).AnatomicalLandmark(1).Name=('LAA'); % ang acromialis
BODY.SEGMENT(8).AnatomicalLandmark(2).Name=('LAI'); % ang inferior
BODY.SEGMENT(8).AnatomicalLandmark(3).Name=('LTS'); % trig spin scap
% left sternum (9)
% anatomical landmarks of the trunk between the ' '
BODY.SEGMENT(9).AnatomicalLandmark(1).Name=('C7'); % proc spin C7
BODY.SEGMENT(9).AnatomicalLandmark(2).Name=('T8'); % proc spin T8
BODY.SEGMENT(9).AnatomicalLandmark(3).Name=('IJ'); % inc jungularis
BODY.SEGMENT(9).AnatomicalLandmark(4).Name=('PX'); % proc xypho�deus
% left hum1 (10)
% anatomical landmarks of the humerus between the ' '
BODY.SEGMENT(10).AnatomicalLandmark(1).Name=('LEL'); % lateral epicondyl
BODY.SEGMENT(10).AnatomicalLandmark(2).Name=('LEM'); % medial epicondyl
% ####################
% ## create joints ##
% ####################
% create upper limb joints
% CreateBodyJoint ('Name_Joint', number joint, [proximal segment, distal
% segment], [decomposition order]);
%CreateBodyJoint('Right_Shoulder', 1, [3 1], [Y X Y],'SecondSolution'); % joint 1 humerus relative to scapula (ISB)
CreateBodyJoint('Right_H2Shoulder', 1, [4 1], [Y X Y],'SecondSolution'); % joint 1 humerus relative to trunk
CreateBodyJoint('Right_H1Shoulder', 2, [4 5], [Y X Y],'SecondSolution'); % joint 2 hum1 (H1 ACFrelative to trunk (ISB decomposition)
CreateBodyJoint('Right_Elbow', 3, [5 2], [Z X Y],'FirstSolution'); % joint 3 forearm relative to humerusH1
CreateBodyJoint('Right_Scapula', 4, [4 3], [Y X Z],'FirstSolution'); % joint 5 scapula relative to trunk
CreateBodyJoint('Right_Trunk', 5, [4 0], [Y X Z],'FirstSolution'); % joint 6 trunk relative to global lab frame
% global lab frame: y = lateral axis, x = forward axis and z = upward axis
% --> decomposition order fl-abd-rot = lat axis(Y), forw axis(X), upw axis(Z)
% added March 2009
CreateBodyJoint('Right_H2Sh1', 6, [4 1], [Z X Y],'FirstSolution'); % joint 7 humerus (H2 ACF) relative to trunk (FL ABD ROT)
CreateBodyJoint('Right_H2Sh2', 7, [4 1], [X Z Y],'FirstSolution'); % joint 8 humerus (H2 ACF) relative to trunk (ABD FL ROT)
CreateBodyJoint('Right_H1Sh1', 8, [4 5], [Z X Y],'FirstSolution'); % joint 9 hum1 (H1 ACF) relative to trunk (FL ABD ROT)
CreateBodyJoint('Right_H1Sh2', 9, [4 5], [X Z Y],'FirstSolution'); % joint 10 hum1 (H1 ACFrelative to trunk (ABD FL ROT)
%CreateBodyJoint('Right_Trunk', , [6 4], [Z X Y],'FirstSolution'); % joint trunk relative to chair frame
%CreateBodyJoint('Left_Shoulder', 10, [8 6], [Y X Y],'SecondSolution'); % joint 1 humerus relative to scapula (ISB)
CreateBodyJoint('Left_H2Shoulder', 10, [9 6], [Y X Y],'FirstSolution'); % joint 1 humerus relative to trunk
CreateBodyJoint('Left_H1Shoulder', 11, [9 10], [Y X Y],'FirstSolution'); % joint 2 hum1 (H1 ACFrelative to trunk (ISB decomposition)
CreateBodyJoint('Left_Elbow', 12, [10 7], [Z X Y],'FirstSolution'); % joint 3 forearm relative to humerusH1
CreateBodyJoint('Left_Scapula', 13, [9 8], [Y X Z],'FirstSolution'); % joint 5 scapula relative to trunk
CreateBodyJoint('Left_Trunk', 14, [9 0], [Y X Z],'FirstSolution'); % joint 6 trunk relative to global lab frame
% global lab frame: y = lateral axis, x = forward axis and z = upward axis
% --> decomposition order fl-abd-rot = lat axis(Y), forw axis(X), upw axis(Z)
% added March 2009
CreateBodyJoint('Left_H2Sh1', 15, [9 6], [Z X Y],'FirstSolution'); % joint 7 humerus (H2 ACF) relative to trunk (FL ABD ROT)
CreateBodyJoint('Left_H2Sh2', 16, [9 6], [X Z Y],'FirstSolution'); % joint 8 humerus (H2 ACF) relative to trunk (ABD FL ROT)
CreateBodyJoint('Left_H1Sh1', 17, [9 10], [Z X Y],'FirstSolution'); % joint 9 hum1 (H1 ACF) relative to trunk (FL ABD ROT)
CreateBodyJoint('Left_H1Sh2', 18, [9 10], [X Z Y],'FirstSolution'); % joint 10 hum1 (H1 ACFrelative to trunk (ABD FL ROT)
%joint trunk relative to chair frame
% ####################
% ## name angles ##
% ####################
SetAnglesMeaning(1, [1 1 1], {'RElevationplaneH2', 'RShoulderElevationH2', 'RShoulderRotationH2'});
SetAnglesMeaning(2, [1 1 1], {'RElevationplaneH1', 'RShoulderElevationH1', 'RShoulderRotationH1'});
SetAnglesMeaning(3, [1 1 1], {'RScapProRetraction', 'RScapRotation', 'RScapTilting'});
SetAnglesMeaning(4, [1 1 1], {'RTrunkFlExt', 'RTrunkLateralFl', 'RTrunkAxialRotation'});
SetAnglesMeaning(5, [1 1 1], {'RH2SAG_Flexion', 'RH2SAG_Abduction', 'RH2SAG_Rotation'});
SetAnglesMeaning(6, [1 1 1], {'RH2FRONT_Abduction', 'RH2FRONT_Flexion', 'RH2FRONT_Rotation'});
SetAnglesMeaning(7, [1 1 1], {'RH1SAG_Flexion', 'RH1SAG_Abduction', 'RH1SAG_Rotation'});
SetAnglesMeaning(8, [1 1 1], {'RH1FRONT_Abduction', 'RH1FRONT_Flexion', 'RH1FRONT_Rotation'});
SetAnglesMeaning(9, [-1 -1 -1], {'LElevationplaneH2', 'LShoulderElevationH2', 'LShoulderRotationH2'});
SetAnglesMeaning(10, [-1 -1 -1], {'LElevationplaneH1', 'LShoulderElevationH1', 'LShoulderRotationH1'});
SetAnglesMeaning(11, [-1 -1 1], {'LScapProRetraction', 'LScapRotation', 'LScapTilting'});
SetAnglesMeaning(12, [1 -1 -1], {'LTrunkFlExt', 'LTrunkLateralFl', 'LTrunkAxialRotation'});
SetAnglesMeaning(13, [1 -1 -1], {'LH2SAG_Flexion', 'LH2SAG_Abduction', 'LH2SAG_Rotation'});
SetAnglesMeaning(14, [-1 1 -1], {'LH2FRONT_Abduction', 'LH2FRONT_Flexion', 'LH2FRONT_Rotation'});
SetAnglesMeaning(15, [1 -1 -1], {'LH1SAG_Flexion', 'LH1SAG_Abduction', 'LH1SAG_Rotation'});
SetAnglesMeaning(16, [-1 1 -1], {'LH1FRONT_Abduction', 'LH1FRONT_Flexion', 'LH1FRONT_Rotation'});
% ##################
% ## LAB CONTEXT ##
% ##################
% Lab specific!!
% CreateBodyContext('ClinMotionAnalysis_lab_UZPellenberg');
BODY.CONTEXT.MotionCaptureToLab=eye(4);
This has still a few issues: there are still "gaps" in MyLabelSequence, Plus, the SetAnglesMeaning calls list is shorter than the CreateBodyJoint ones. Below is the correct version:
% clear previous BODY declaration
ClearBody
CreateBodyHeader('bilat_UL');
% #############################
% ## create body model ##
% #############################
% create your own segments
% Right side technical
MyLabelSequence{1} = 'RUA1';
MyLabelSequence{2} = 'RUA2';
MyLabelSequence{3} = 'RUA3';
MyLabelSequence{4} = 'RUA4';
MyLabelSequence{5} = 'RLA1';
MyLabelSequence{6} = 'RLA2';
MyLabelSequence{7} = 'RLA3';
MyLabelSequence{8} = 'RLA4';
MyLabelSequence{9} = 'RACR1';
MyLabelSequence{10} = 'RACR2';
MyLabelSequence{11} = 'RACR3';
% Left side technical
MyLabelSequence{12} = 'LUA1';
MyLabelSequence{13} = 'LUA2';
MyLabelSequence{14} = 'LUA3';
MyLabelSequence{15} = 'LUA4';
MyLabelSequence{16} = 'LLA1';
MyLabelSequence{17} = 'LLA2';
MyLabelSequence{18} = 'LLA3';
MyLabelSequence{19} = 'LLA4';
MyLabelSequence{20} = 'LACR1';
MyLabelSequence{21} = 'LACR2';
MyLabelSequence{22} = 'LACR3';
% Common
MyLabelSequence{23} = 'ST1';
MyLabelSequence{24} = 'ST2';
MyLabelSequence{25} = 'ST3';
% Right side anatomical
MyLabelSequence{26} = 'REL';
MyLabelSequence{27} = 'REM';
MyLabelSequence{28} = 'RRS';
MyLabelSequence{29} = 'RUS';
MyLabelSequence{30} = 'RAA';
MyLabelSequence{31} = 'RAI';
MyLabelSequence{32} = 'RTS';
% Left side anatomical
MyLabelSequence{33} = 'LEL';
MyLabelSequence{34} = 'LEM';
MyLabelSequence{35} = 'LRS';
MyLabelSequence{36} = 'LUS';
MyLabelSequence{37} = 'LAA';
MyLabelSequence{38} = 'LAI';
MyLabelSequence{39} = 'LTS';
MyLabelSequence{40} = 'C7';
MyLabelSequence{41} = 'T8';
MyLabelSequence{42} = 'IJ';
MyLabelSequence{43} = 'PX';
PushLabelsToBODY(MyLabelSequence);
CreateBodySegmentAdv('Right_Humerus', 1, [1 2 3 4]); % segment 1
CreateBodySegmentAdv('Right_Forearm', 2, [5 6 7 8]); % segment 2
CreateBodySegmentAdv('Right_Acromion', 3, [9 10 11]);% segment 3
CreateBodySegmentAdv('Right_Sternum', 4, [23 24 25]); % segment 4
CreateBodySegmentAdv('Right_Hum1', 5, [1 2 3 4]); % segment 5
CreateBodySegmentAdv('Left_Humerus', 6, [12 13 14 15]); % segment 6
CreateBodySegmentAdv('Left_Forearm', 7, [16 17 18 19]); % segment 7
CreateBodySegmentAdv('Left_Acromion', 8, [20 21 22]);% segment 8
CreateBodySegmentAdv('Left_Sternum', 9, [23 24 25]); % segment 9
CreateBodySegmentAdv('Left_Hum1', 10, [12 13 14 15]); % segment 10
% #####################################
% ## define anatomic landmark names ##
% #####################################
BodyMechFuncHeader;
% right humerus (1)
% anatomical landmarks of the humerus between the ' '
% BODY.SEGMENT(1).AnatomicalLandmark(1).Name=('GHr'); % GH rotation centre
% defined in AnatCalc_UL_5Segm_Right
BODY.SEGMENT(1).AnatomicalLandmark(1).Name=('REL'); % lateral epicondyl
BODY.SEGMENT(1).AnatomicalLandmark(1).SharedWith = {'Right_Forearm'};
BODY.SEGMENT(1).AnatomicalLandmark(2).Name=('REM'); % medial epicondyl
BODY.SEGMENT(1).AnatomicalLandmark(2).SharedWith = {'Right_Forearm'};
% right forearm (2)
% anatomical landmarks of the lowerarm between the ' '
BODY.SEGMENT(2).AnatomicalLandmark(1).Name=('RRS'); % radial styloid
BODY.SEGMENT(2).AnatomicalLandmark(1).SharedWith = {'Right_Humerus'};
BODY.SEGMENT(2).AnatomicalLandmark(2).Name=('RUS'); % ulnar styloid
BODY.SEGMENT(2).AnatomicalLandmark(2).SharedWith = {'Right_Humerus'};
% right acromion (3)
% anatomical landmarks of the scapula between the ' '
BODY.SEGMENT(3).AnatomicalLandmark(1).Name=('RAA'); % ang acromialis
BODY.SEGMENT(3).AnatomicalLandmark(2).Name=('RAI'); % ang inferior
BODY.SEGMENT(3).AnatomicalLandmark(3).Name=('RTS'); % trig spin scap
% right sternum (4)
% anatomical landmarks of the trunk between the ' '
BODY.SEGMENT(4).AnatomicalLandmark(1).Name=('C7'); % proc spin C7
BODY.SEGMENT(4).AnatomicalLandmark(2).Name=('T8'); % proc spin T8
BODY.SEGMENT(4).AnatomicalLandmark(3).Name=('IJ'); % inc jungularis
BODY.SEGMENT(4).AnatomicalLandmark(4).Name=('PX'); % proc xypho�deus
% right hum1 (5)
% anatomical landmarks of the humerus between the ' '
BODY.SEGMENT(5).AnatomicalLandmark(1).Name=('REL'); % lateral epicondyl
BODY.SEGMENT(5).AnatomicalLandmark(2).Name=('REM'); % medial epicondyl
% left humerus (6)
% anatomical landmarks of the humerus between the ' '
% BODY.SEGMENT(1).AnatomicalLandmark(1).Name=('GHr'); % GH rotation centre
% defined in AnatCalc_UL_6Segm_Right
BODY.SEGMENT(6).AnatomicalLandmark(1).Name=('LEL'); % lateral epicondyl
BODY.SEGMENT(6).AnatomicalLandmark(1).SharedWith = {'Left_Forearm'};
BODY.SEGMENT(6).AnatomicalLandmark(2).Name=('LEM'); % medial epicondyl
BODY.SEGMENT(6).AnatomicalLandmark(2).SharedWith = {'Left_Forearm'};
% left forearm (7)
% fill in anatomical landmarks of the lowerarm between the ' '
BODY.SEGMENT(7).AnatomicalLandmark(1).Name=('LRS'); % radial styloid
BODY.SEGMENT(7).AnatomicalLandmark(1).SharedWith = {'Left_Humerus'};
BODY.SEGMENT(7).AnatomicalLandmark(2).Name=('LUS'); % ulnar styloid
BODY.SEGMENT(7).AnatomicalLandmark(2).SharedWith = {'Left_Humerus'};
% left acromion (8)
% anatomical landmarks of the scapula between the ' '
BODY.SEGMENT(8).AnatomicalLandmark(1).Name=('LAA'); % ang acromialis
BODY.SEGMENT(8).AnatomicalLandmark(2).Name=('LAI'); % ang inferior
BODY.SEGMENT(8).AnatomicalLandmark(3).Name=('LTS'); % trig spin scap
% left sternum (9)
% anatomical landmarks of the trunk between the ' '
BODY.SEGMENT(9).AnatomicalLandmark(1).Name=('C7'); % proc spin C7
BODY.SEGMENT(9).AnatomicalLandmark(2).Name=('T8'); % proc spin T8
BODY.SEGMENT(9).AnatomicalLandmark(3).Name=('IJ'); % inc jungularis
BODY.SEGMENT(9).AnatomicalLandmark(4).Name=('PX'); % proc xypho�deus
% left hum1 (10)
% anatomical landmarks of the humerus between the ' '
BODY.SEGMENT(10).AnatomicalLandmark(1).Name=('LEL'); % lateral epicondyl
BODY.SEGMENT(10).AnatomicalLandmark(2).Name=('LEM'); % medial epicondyl
% ####################
% ## create joints ##
% ####################
% create upper limb joints
% CreateBodyJoint ('Name_Joint', number joint, [proximal segment, distal
% segment], [decomposition order]);
%CreateBodyJoint('Right_Shoulder', 1, [3 1], [Y X Y],'SecondSolution'); % joint 1 humerus relative to scapula (ISB)
CreateBodyJoint('Right_H2Shoulder', 1, [4 1], [Y X Y],'SecondSolution'); % joint 1 humerus relative to trunk
CreateBodyJoint('Right_H1Shoulder', 2, [4 5], [Y X Y],'SecondSolution'); % joint 2 hum1 (H1 ACFrelative to trunk (ISB decomposition)
CreateBodyJoint('Right_Elbow', 3, [5 2], [Z X Y],'FirstSolution'); % joint 3 forearm relative to humerusH1
CreateBodyJoint('Right_Scapula', 4, [4 3], [Y X Z],'FirstSolution'); % joint 5 scapula relative to trunk
CreateBodyJoint('Right_Trunk', 5, [4 0], [Y X Z],'FirstSolution'); % joint 6 trunk relative to global lab frame
% global lab frame: y = lateral axis, x = forward axis and z = upward axis
% --> decomposition order fl-abd-rot = lat axis(Y), forw axis(X), upw axis(Z)
% added March 2009
CreateBodyJoint('Right_H2Sh1', 6, [4 1], [Z X Y],'FirstSolution'); % joint 7 humerus (H2 ACF) relative to trunk (FL ABD ROT)
CreateBodyJoint('Right_H2Sh2', 7, [4 1], [X Z Y],'FirstSolution'); % joint 8 humerus (H2 ACF) relative to trunk (ABD FL ROT)
CreateBodyJoint('Right_H1Sh1', 8, [4 5], [Z X Y],'FirstSolution'); % joint 9 hum1 (H1 ACF) relative to trunk (FL ABD ROT)
CreateBodyJoint('Right_H1Sh2', 9, [4 5], [X Z Y],'FirstSolution'); % joint 10 hum1 (H1 ACFrelative to trunk (ABD FL ROT)
%CreateBodyJoint('Right_Trunk', , [6 4], [Z X Y],'FirstSolution'); % joint trunk relative to chair frame
%CreateBodyJoint('Left_Shoulder', 10, [8 6], [Y X Y],'SecondSolution'); % joint 1 humerus relative to scapula (ISB)
CreateBodyJoint('Left_H2Shoulder', 10, [9 6], [Y X Y],'FirstSolution'); % joint 1 humerus relative to trunk
CreateBodyJoint('Left_H1Shoulder', 11, [9 10], [Y X Y],'FirstSolution'); % joint 2 hum1 (H1 ACFrelative to trunk (ISB decomposition)
CreateBodyJoint('Left_Elbow', 12, [10 7], [Z X Y],'FirstSolution'); % joint 3 forearm relative to humerusH1
CreateBodyJoint('Left_Scapula', 13, [9 8], [Y X Z],'FirstSolution'); % joint 5 scapula relative to trunk
CreateBodyJoint('Left_Trunk', 14, [9 0], [Y X Z],'FirstSolution'); % joint 6 trunk relative to global lab frame
% global lab frame: y = lateral axis, x = forward axis and z = upward axis
% --> decomposition order fl-abd-rot = lat axis(Y), forw axis(X), upw axis(Z)
% added March 2009
CreateBodyJoint('Left_H2Sh1', 15, [9 6], [Z X Y],'FirstSolution'); % joint 7 humerus (H2 ACF) relative to trunk (FL ABD ROT)
CreateBodyJoint('Left_H2Sh2', 16, [9 6], [X Z Y],'FirstSolution'); % joint 8 humerus (H2 ACF) relative to trunk (ABD FL ROT)
CreateBodyJoint('Left_H1Sh1', 17, [9 10], [Z X Y],'FirstSolution'); % joint 9 hum1 (H1 ACF) relative to trunk (FL ABD ROT)
CreateBodyJoint('Left_H1Sh2', 18, [9 10], [X Z Y],'FirstSolution'); % joint 10 hum1 (H1 ACFrelative to trunk (ABD FL ROT)
%joint trunk relative to chair frame
% ####################
% ## name angles ##
% ####################
SetAnglesMeaning(1, [1 1 1], {'RElevationplaneH2', 'RShoulderElevationH2', 'RShoulderRotationH2'});
SetAnglesMeaning(2, [1 1 1], {'RElevationplaneH1', 'RShoulderElevationH1', 'RShoulderRotationH1'});
SetAnglesMeaning(3, [1 0 1], {'RElbowFlExt', '', 'RElbowProSupination'});
SetAnglesMeaning(4, [1 1 1], {'RScapProRetraction', 'RScapRotation', 'RScapTilting'});
SetAnglesMeaning(5, [1 1 1], {'RTrunkFlExt', 'RTrunkLateralFl', 'RTrunkAxialRotation'});
SetAnglesMeaning(6, [1 1 1], {'RH2SAG_Flexion', 'RH2SAG_Abduction', 'RH2SAG_Rotation'});
SetAnglesMeaning(7, [1 1 1], {'RH2FRONT_Abduction', 'RH2FRONT_Flexion', 'RH2FRONT_Rotation'});
SetAnglesMeaning(8, [1 1 1], {'RH1SAG_Flexion', 'RH1SAG_Abduction', 'RH1SAG_Rotation'});
SetAnglesMeaning(9, [1 1 1], {'RH1FRONT_Abduction', 'RH1FRONT_Flexion', 'RH1FRONT_Rotation'});
SetAnglesMeaning(10, [-1 -1 -1], {'LElevationplaneH2', 'LShoulderElevationH2', 'LShoulderRotationH2'});
SetAnglesMeaning(11, [-1 -1 -1], {'LElevationplaneH1', 'LShoulderElevationH1', 'LShoulderRotationH1'});
SetAnglesMeaning(12, [1 0 -1], {'LElbowFlExt', '', 'LElbowProSupination'});
SetAnglesMeaning(13, [-1 -1 1], {'LScapProRetraction', 'LScapRotation', 'LScapTilting'});
SetAnglesMeaning(14, [1 -1 -1], {'LTrunkFlExt', 'LTrunkLateralFl', 'LTrunkAxialRotation'});
SetAnglesMeaning(15, [1 -1 -1], {'LH2SAG_Flexion', 'LH2SAG_Abduction', 'LH2SAG_Rotation'});
SetAnglesMeaning(16, [-1 1 -1], {'LH2FRONT_Abduction', 'LH2FRONT_Flexion', 'LH2FRONT_Rotation'});
SetAnglesMeaning(17, [1 -1 -1], {'LH1SAG_Flexion', 'LH1SAG_Abduction', 'LH1SAG_Rotation'});
SetAnglesMeaning(18, [-1 1 -1], {'LH1FRONT_Abduction', 'LH1FRONT_Flexion', 'LH1FRONT_Rotation'});
% ##################
% ## LAB CONTEXT ##
% ##################
% Lab specific!!
% CreateBodyContext('ClinMotionAnalysis_lab_UZPellenberg');
BODY.CONTEXT.MotionCaptureToLab=eye(4);
This one is loadable at in the Kinematics options without that problem. However, before processing the data, I wanted to make sure that also the C3D content is correct. And what I noticed is that, for you C3D format, some event data is missing. I am going to open a new issue for this, to avoid content mixing and confusion.
Davide
Hi Davide,
thanks for body model and your help.
Gabriela.
In one of the previous conversations, you suggested a change in body model. deleted everything related to hand and wrist. But an error ocorred when I selected the model body created by me, following the file.
Thanks.
Gabriela.