Hi Katsunari,
your analog data’s names are different from the standard ones. You can find the definitions in AnyBody under Main.ModelSetup.C3DFileData.Analog.Data or in the metadata of you C3D file with Mokka or sth like that. The correct definition of your forceplates is:
ForcePlateType2AutoDetection Plate1 (
PlateName = Plate1,
Folder =Main.ModelSetup.C3DFileData,
Limb1= .BodyModelRef.Right.Leg.Seg.Foot,
Limb2= .BodyModelRef.Left.Leg.Seg.Foot,
No=0,
VerticalDirection ="Z",
HeightTolerance=0.07,
VelThreshold=2.2,
Fx=Main.ModelSetup.C3DFileData.Analog.DataFiltered._1Fx,
Fy=Main.ModelSetup.C3DFileData.Analog.DataFiltered._1Fy,
Fz=Main.ModelSetup.C3DFileData.Analog.DataFiltered._1Fz,
Mx=Main.ModelSetup.C3DFileData.Analog.DataFiltered._1Mx,
My=Main.ModelSetup.C3DFileData.Analog.DataFiltered._1My,
Mz=Main.ModelSetup.C3DFileData.Analog.DataFiltered._1Mz,
FootPresent=HumanModelPresent)
={
// Cal=Main.ModelSetup.C3DFileData.Groups.FORCE_PLATFORM.CAL_MATRIX.Data[0];
// Cal = .Ident;
};
ForcePlateType2AutoDetection Plate2 (
PlateName = Plate2,
Folder =Main.ModelSetup.C3DFileData,
Limb1= .BodyModelRef.Right.Leg.Seg.Foot,
Limb2= .BodyModelRef.Left.Leg.Seg.Foot,
No=1,
VerticalDirection ="Z",
HeightTolerance=0.07,
VelThreshold=2.2,
Fx=Main.ModelSetup.C3DFileData.Analog.DataFiltered._2Fx,
Fy=Main.ModelSetup.C3DFileData.Analog.DataFiltered._2Fy,
Fz=Main.ModelSetup.C3DFileData.Analog.DataFiltered._2Fz,
Mx=Main.ModelSetup.C3DFileData.Analog.DataFiltered._2Mx,
My=Main.ModelSetup.C3DFileData.Analog.DataFiltered._2My,
Mz=Main.ModelSetup.C3DFileData.Analog.DataFiltered._2Mz,
FootPresent=HumanModelPresent)
={
// Cal=Main.ModelSetup.C3DFileData.Groups.FORCE_PLATFORM.CAL_MATRIX.Data[0];
// Cal = .Ident;
};
If you change you ForcePlate definition like that the error you mentioned will not occur any more, but only two of you six force plates will be implemented at this point. You’ll have to copy and adapt the code above for the other plates.
If you load your model now another error will appear because you have used floats for the FrameOffsets in TrialSpecificData.any.
Change
// ********** Time ***********
// FrontFrameOffset is the offset value from the first frame of C3D file
AnyIntVar FrontFrameOffset = 1.0;
// LastFrameOffset is the offset value from the last frame of C3D file
AnyIntVar LastFrameOffset = -1.0;
to
// ********** Time ***********
// FrontFrameOffset is the offset value from the first frame of C3D file
AnyIntVar FrontFrameOffset = 1;
// LastFrameOffset is the offset value from the last frame of C3D file
AnyIntVar LastFrameOffset = -1;
and your model will load.
The problem which occurs next is that you have used the full body model for a very reduced marker set, where somehow every marker of the plugin gait model exists in the origin. You need to manually delete (comment out) every marker not used in the gait measurement because at the moment no kinematic optimisation is possible. If only the markers which have trajectories different from (0,0,0) are present optimisation might be possible. Also I would crop the c3d file to frames 342 - 574 because before this range markers are missing and also there is no information to obtain from the time frame where not force plate data is available.