AnyMoCap+Xsens - Error in Euler angle discontinuity filtering

#1

Hi there,

we acquired a bunch of BVH data files using the Xsens suit, and plug them into the AnyMoCap framework. No matter which BVH file we analyze, we always get this error message related to Euler angles. We also see some weird arm rotations when running the MarkerTracking while the subject moves, which doesn’t seem right, and does not appear when loading the same BVH file in a generic BVH player.

Do you have any clue where does this problem may come from, and how we could fix it?

Best regards,
Marco Marra

Parsing...
Constructing model tree...
ERROR(OBJ.FILE1) :   C:/U..s/M..A/A..y/A..a/A..k/T..s/A..p/ModelSetup.any(136)  :   ModelSetup.BVHFileData.FileName  :  Problem with file :  C:\Users\MarraMA\AnyBody\ut-tno-model\model\Trials\2019-06-14_015\2019-06-14_015.bvh(1,5) :  Error in Euler angle discontinuity filtering. Jumps in third angle do not match jumps in first angle. (line# refers to the data section of BHV file)
Linking identifiers...
Evaluating constants...
Configuring model...
Evaluating model...
Loaded successfully.
Elapsed Time : 5.563000

I add an example BVH file that results in this error:
2019-05-16_001.zip (605.0 KB)

#2

Hi Marco,

The problem appears to be that there are angular jumps in the BVH data.

The AnyInputBVH object has filters which can be used to remove these jumps of e.g. 2pi or 1pi see the Rotation2PiFixOnOff or Rotation1PiFixOnOff objects.

The error you get is because AnyBody is trying to apply this filter but while doing this it detects that the jumps on different rotations in the joint do not match perfectly and throws an error.

I tried to load your file and disable the angular filtering of jumps this you can do in the BVHSetting.any file in the following way

Rotation2PiFixOnOff = Off;
Rotation1PiFixOnOff = Off;    

This seems to resolve the issue with this trial as far as i can see?

The cause of these jumps may relate to bad choices of rotational sequence in the export causing gimbal lock situations.

Best regards
Søren

#3

Hi Søren,

We will try your suggestion and get back to you. We are using the default export settings in the MVN software I believe. Are there any specific recommendations regarding the rotation sequence for a trouble-free import into the AnyMoCap framework?

Another question that arose was: is there any advantage in exporting BVH vs. C3D from an Xsens study for subsequent use in the AMS? The C3D options exports the kinematics of many (>60) virtual bony landmarks, as I understand, and could be further processed in the AMS with traditional inverse kinematics approaches. Do you have experience with the two options with Xsens data?

Marco

#4

Hi Marco

I have made a work-around for the Euler angle problem with a small matlab script that solves the Xsens kinematics with forward kinematics from which the trajectories of three points on each segment of the bvh model is saved. These trajectories are imported in the anybody model and used to drive the stick figure rather than the euler angles. My experience that the general solution anyscript mentioned by Søren does not always work as the discontinous joint angles from Xsens may be filtered.

Contact me directly if you want to discusd this further.

Best regards
Michael

#5

Hi Marco,

It is a while ago since i have tried the C3D export option, but i think it would work. I think the main motivation for using the BVH approach was to have more control of the marker protocol/placement, ensuring good correspondence between the models.

Best regards
Søren