Problem with the coordinates of VICON and AnyBody

Hi, AnyBody Support,

I got C3D data of the neck flexion movement from VICON nexus system.

Since the coordinates of y and z of VICON are different from those of AnyBody, the marker data cannot move when I run with the body model.

I tried to flip the coordinates, but the result was unchanged.

Will you please help me to solve this problem at your earliest time? I am in urgent need of solving this problem.

Thanks for your help!

Cathy

Hi Cathy,

I can see in the picture that you only have markers fro the head. In this case you have to put the trunk manually in the position and orientation corresponding to the c3d data. Use the variables in the Mannequin file to control the position and rotation of the pelvis.

Best regards, Sylvain.

Hi, Sylvain,

Thanks for your help, and it works out now. But another problem came out after that:

I watched John’s Webcast “Use motion capture data”. According to the method of attaching the three markers to the pendulum, I created 9 green markers as AnyRefNode in the separate segments of my body model: 3 markers on the SkullSeg (Fronthead, left and right head markers), 1 marker (C7) on the ThoraxSeg, 3 markers on the SegmentsCercicalSpine (leftneck, right neck, and C5 markers), and 2 markers on the ShoulderArm’s Scapula segment (left and right shoulders).

And I showed the c3d marker data as red.

When I run the analysis, only the red markers (c3d) can move, while the 9 green markers on the body model didn’t move accordingly. As you see from my attached files, I did use the AnyKinDriverMarker to connect the created markers (AnyRefNode) with the c3d marker points.

Will you please check the attached zip file and tell me how to figure this problem out: How I can make the neck move according to the c3d data file?

Your help is very valuable for us! Thank you!

Cathy

===============The below is the 9 markers that I created in the different segments of the body model:

9 markers created in the different segments of the body model: I chose TRUNK_NECK = = 1,

(1) 3 markers (FHD, LHEAD, RHEAD of c3d file) in “SegmentsThoraxWithoutNeck.any”>>“SkullSeg”:
//midpoint between eyes
AnyRefNode SinusMarker={
sRel=.Scale({0.12,0.04,0.0});
AnyDrawNodes DrwNode = {
ScaleXYZ = {0.01,0.01,0.01};
RGB = {0, 1, 0};
};
};

AnyRefNode LeftHeadMarker={
sRel=.Scale({0.056,-0.0058,-0.08});
AnyDrawNodes DrwNode = {
ScaleXYZ = {0.01,0.01,0.01};
RGB = {0, 1, 0};
};
};
//Right head marker
AnyRefNode RightHeadMarker={
sRel=.Scale({0.056,-0.0058,0.08});
AnyDrawNodes DrwNode = {
ScaleXYZ = {0.01,0.01,0.01};
RGB = {0, 1, 0};
};
};
(2) 1 marker (C7 marker) in the “SegmentsThoraxWithoutNeck.any”>>>>“ThoraxSeg”:
AnyRefNode C7Marker = {
sRel = .Scale({-0.04,0.485,0.0});
AnyDrawNodes DrwNode = {
ScaleXYZ = {0.01,0.01,0.01};
RGB = {0, 1, 0};
};
};

(3) 3 markers (c3d: LNECK, RNECK, C5) in the “SegmentsCervical Spine” >>> “C1 Seg”:
I know these markers should be put in different segments; But, to make it simpler, I just put them in the C1Seg:
AnyRefNode C5Marker = {
sRel = .Scale({-0.04,0.516,0.0});
AnyDrawNodes DrwNode = {
ScaleXYZ = {0.01,0.01,0.01};
RGB = {0, 1, 0};
};
};

AnyRefNode LeftNeckMarker = {
  sRel = .Scale({0.01,0.525,-0.06});
  AnyDrawNodes DrwNode = {
    ScaleXYZ = {0.01,0.01,0.01};
    RGB = {0, 1, 0};
  };
};
     
AnyRefNode RightNeckMarker = {
  sRel = .Scale({0.01,0.525,0.06});
  AnyDrawNodes DrwNode = {
    ScaleXYZ = {0.01,0.01,0.01};
    RGB = {0, 1, 0};
  };
};

(4) 2 markers (LSHO, RSHO of c3d points) in the “ShoulderArm” >>>>> “Seg.any” >> “Scapula”:
AnyRefNode SHO_Marker = {
sRel=.Scale({0.028,-0.0048,-0.046})*.Mirror;
AnyDrawNodes DrwNode = {
ScaleXYZ = {0.01,0.01,0.01};
RGB = {0, 1, 0};
};
};

Hi, Sylvain,

I just made my model move according to the c3d data file. I made some changes in the neck driver and markers’ placement in the segments of the cervical spine.

I checked the MaxForceNeckModel example, the simple neck drivers just set all the values of JntPos and JntVel of C7C6, C6C5, C5C4, C4C3 JntDriver as 0.
I just did the same in my model’s neck driver part.

Is there any documentation support for this statement:

When neck is flexed, only the joints of T1C7, C3C2, C2C1, and C1C0 are moving accordingly?

Thank you!

Cathy

UPDATE:

Hi, AnyBody Support,

How can I know the model I created was correct, after running the kinematic and inverse dynamic analysis? As for my neck head motion model, I am confused with these problems:

(1) I used PelvisRotX = 90 in the mannequin file to rotate the y and z coordinates. So in the study, should I use Gravity = {0, 0, -9.81}, instead of Gravity = {0, -9.81, 0} ? Which one is correct for my model?

(2) When I put the markers on the neck, I thought I put the two markers in the SegmentsCervicalSpine.C5Seg.
However in the AnyBody model, only when I put/create the markers in C2Seg, they were the closest to the c3d marker, as well as the success of the kinematic analysis finally. It would fail when I tried to put the markers in any other segments in the cervical spine.
Question: How can I know I create the marker in correct segment in the body model? like the markers of : leftneck and rightneck markers, lefe and right shoulder markers.
Based on whether the model can survive all the operation steps kinematically and inversely?

There is also a problem with the C7 Marker. When running the kinematic and inverse analysis, the model is moving according to the c3d marker data (in red color). But I found the C7Marker I created (in blue color) was not moving at all. Is there any problem with the model?

(3) I used AnyOptKinStudy to optimize the markers’ location, but I did not see any effect on my model optimization. Did I use the method incorrectly?

Please see the attached file. Any suggestions to improve the model, about the markers, drivers and analysis?

Thanks for your help! I appreciate it.

Cathy

Hi Cathy,

Post nb 3)
You had joint drivers as hard constraints on top of the marker drivers (soft constraints) for the neck. That is why it could not move. You have to remove the joint drivers if you want markers to have any effect.

Post nb 4)
I think in the MaxForceNeckModel the file with simple drivers is a remanent from an other study and should not be used. It is better to use the cervical rhythm, there all joints are part of the flexing motion which makes more sense.

Post nb 5)
(1)As you rotated the body you also have to rotate the gravity vector acordingly of course, so now you should use Gravity = {0, 0, -9.81}.
(2)This is probably because the model is not scaled, so all the markers cannot fit very well. You can scale the model manually or use the optimization for it. And the C7 marker does not move because you created it on the thorax segment instead of the C7 segment.
(3)Finaly i suggest you to use the new gait model (GaitLowerExtremity) as template for any optimisation. It will work as well for any other movement than gait. You just have to input your own c3d, adjust the markers names and create new ones as you did if necesary and use the automated optimization sequence. And remenber that you cannot optimize all markers in all directions, some must be fixed to give proper bounds to the optimization.

Best regards, Sylvain.