Problem with C3D

Hello everyone,
I am a student at the University of Kassel and I am going to write my bachelor Thesis at the institute Mensch-Maschine-Systemtechnik. In the thesis I try to identify and to investigate different variables to simulate walking postures of older people by using a motion capturing system (ART-System - Advanced Realtime Tracking). Since two weeks I am working with the A anybody software (version 5.2) . Now my problem is that I cannot import the created c3d-file from ART-Human Tool in the Anybody software, in to the Example GaitFullBody. I read the tutorials and the complete documentation but there are still the same problems. The following error message is shown when I try to load the model:

ERROR(SCR.PRS9) : C:/U…s/s…g/A…a/R…g/A…y/A…x/A…o/A…n/E…s/G…y/ModelSetup.any : Defined At : C:/U…s/s…g/A…a/R…g/A…y/A…x/A…o/Body/A…n/T…x/M…p/CreateMarkerClassTD.any : ‘PosInterpol’ : Unresolved object - Model loading skipped

Maybe you can help me to solve this problem. The data was recorded with a whole bodykit including 17 markers (standard bodykit). I would appreciate a short feedback from you, maybe with a suggestion for solving this problem. Thanks for your support

With best regards
Chris

Hi Chris,

It looks like you have a mismatch between defined in AnyBody and actual C3D markers. You need to go to the ModelSetup.any by clicking on the error message and check whether you have the same marker in your data or not. Effectively you need corresponding markers to be in your ModelSetup and in the C3D file.

Try also reading the following article, which might help to start working:

Wiki on MoCap models

Regards,
Pavel

Thanks for your help,
but now I have the next Problem. The ART Human creates for each bone 3 markers (one marker for one point in space) in the C3D-File. The example C3D-File form Anybody has created only one marker for each bone. Is AnyScript able to read these markers or do I need to aggregate them to one marker? Or are there any other solutions)
For example in the ART-Human C3D-File the markers are stored like this (3 markers per bone are stored with the names):

"XXmYY_0
XXmYY_1
XXmYY_2
XX: ID of the model
YY: ID of the bone

In bonecoordinates (and model units):
_0:0,0,0;_1:0,20,0;_2:0,0,20"

Thanks for any further help.

Regards,
Chris

Chris,

AnyBody is supposed to read the C3D file as is and get all markers out. Can you see all markers as different objects in the C3D viewer that you are using? Could you check it in Mokka?

If all objects are present, but AnyBody still does not load them all - please upload the file to the debug section and I will have a look.

Regards,
Pavel

Ok, thank you. I Have upload the file at debug section.

Ok, thank you. But what is the difference between the markers with “prefixDef” and the markers without “prefixDef”?

CreateMarkerTD RTHI (
MarkerName=PrefixDef(RTHI),
MarkerPlacement =Right.Leg.Seg.Thigh,
OptX=“On”,OptY=“On”,OptZ=“On”,
WeightX=1.0,WeightY=1.0,WeightZ=1.0,

Best Regards

Chris,

in this particular case no difference, but it can be used if the MoCap system adds a certain prefix to the marker names. Right now in your code you can find the following line:

    #define PrefixDef(Arg) Arg 

Meaning it is used as is.

For example, you could use your model name as a prefix and later on just chance it in the following line.

    #define PrefixDef(Arg) hh0##Arg 

This will generate hh0x0,hh0x1,hh0x2, etc. for PrefixDef(x0),PrefixDef(x1),PrefixDef(x2)…

Or hh1x0,hh1x1,hh1x2, etc if you change hh0 to hh1 in the code above. So this way you just redefine the name of the subject, but not each marker.

Kind regards,
Pavel

Hi,
now my model is loading. I have excluded the forceplates in the EnvironmentAutoDetection.any-file. But now I get this, what you can see on the photos.

Hi Chris,

This is great, isn’t it? Basically what you see are the trajectories of your markers and judging from the first image - orientation of the model is not right. It may or may not be a problem, but you can help the solver by setting right initial positions. In case of our standard MoCap model - the orientation and position are automatically computed based on the pelvis markers.

The second image is basically a projection of trajectories of many markers - so it might make sense when you track an individual one.

Regards,
Pavel

Hi Pavel, thank you.
I have changed the PelvisRot (X,Y,Z) to bring the Model in to line of the coordinate system of the MotionCapture Laboratory. After this I have excluded most of Markers in the ModelSetup.any File. Only three markers are still included for test. The markers, which are include are
Right.Leg.Seg.Thigh
Left.Leg.Seg.Thigh
Trunk.SegmentsLumbar.PelvisSeg
Why are the assignment, of the bone coordinate system to the bones are not correct by Right- and Left.Leg.Seg.Thight? I have checked that the assignment of the markers is correct.

Regards,

Chris

Chris,

You need to check your code. When you create a new marker you need to control sides as well.

  CreateMarkerTD h00b15m0 (
  MarkerName=PrefixDef(h00b15m0),
  MarkerPlacement=[b][i]Left.Leg.Seg.Shank[/i][/b],
  OptX="On",OptY="On",OptZ="On",  
  WeightX=1.0,WeightY=1.0,WeightZ=1.0,

Regards,
Pavel

Pavel,
I have checked the code and the assignment of every marker, but if I run my modell, I get this on the pictures.

Regads
Chris

Chris,

I’ve looked into the model that you sent into debug before and there is definitely a mismatch between markers.

Please check this scheme. As well as that location and the base objects may not be correctly defined. You want to have them consistent.

Regards,
Pavel

Hi Pavel,
Thanks. I have corrected the position of the markers. I have additionally modified PelvisRot (x,y,z). But now my model is to be upside down and it doesn’t runs. If I change PelvisRot again, my model will be destroyed after the running. In either case I get the following error Messages:

Constraint no. 333 above error tolerance 0.000001, error = 0.000390.
Constraint no. 334 above error tolerance 0.000001, error = 0.001000.
Constraint no. 335 above error tolerance 0.000001, error = 0.000274.
.
.
.
Constraint no. #1 in ‘Main.Studies.HumanModel.BodyModel.Right.ShoulderArm.Jnt.HandGloveLinDrv’ above error tolerance 0.000001, error = 0.004915.
Constraint no. #2 in ‘Main.Studies.HumanModel.BodyModel.Right.ShoulderArm.Jnt.HandGloveLinDrv’ above error tolerance 0.000001, error = 0.004652.
Constraint no. #0 in ‘Main.Studies.HumanModel.BodyModel.Right.Leg.Jnt.Ankle.Constraints’ above error tolerance 0.000001, error = 0.007921.
Constraint no. #1 in ‘Main.Studies.HumanModel.BodyModel.Right.Leg.Jnt.Ankle.Constraints’ above error tolerance 0.000001, error = 0.011434.
.
.
.
ERROR(OBJ.MCH.KIN3) : C:/U…s/s…g/A…a/R…g/A…y/A…x/A…o/A…n/E…s/G…y/GaitFullBody.main.any : MotionOptimization.InitialConditions : Kinematic analysis failed in time step 0

Regards

Chris

Chris,

I am probably missing something - why would you rotate pelvis again?

Basically everything is quite straightforward - you need to give a good initial guess to your model, give some reasonable marker positions, and let the system optimize everything.

If your initial guess is too far from a solution, or your constraints (joints) do not allow the model to fit into the trajectory (in your case initial position) - it fails and gives this message. It can also be “too far” if you rotate the model by 180 degrees - in the rotation sense it is furthest you can get from the actual solution.

Try to make another iteration of refining your input. If that does not work out - we will need to upload it into the Debug section.

Kind regards,
Pavel

Hi,
Last week I had uploaded my model in the Debugsection, but I had no answer so far.
I have several problems. First: My motion capture System has no facility to record ground reaction forces. So I have no analog datas for using by forceplates. Can it be possible generally to run the model without forceplates?
Second: If not, what can I do to create forceplates anyway?

Regards
Chris

Hi Chris,

I will have a look at the model - did not have a chance yet.

Regarding the missing forceplate data try checking these threads:

http://forum.anyscript.org/showthread.php?t=3972

http://forum.anyscript.org/showthread.php?t=3974

Good idea in general to check the forum for similar existing issues.

Regards,
Pavel

Hello,
I have tried to create Forceplates anyway. For this, I was orientated by the AirlinePassenger Example, but I have problems to connect the Forceplates with the feet. In witch folder I should connect it? Can it be possible generally to create Forceplates witch doesn’t based on analog datas in the model GaitFullBody? Or can it be easier to create a new Model?
Second, I have another question. What does it means, if a dot or an doubledot is in front of an function? For example:
AnyFolder &Dim = .ChairDimensions;
AnyRefNode &Seatnode = …Seg.Seat.SeatBackRestJntNode;
There´s no statement in the tutorial.
Regards Chris

Hi Chris,

Please view one of the latest webcast on GRF prediction and this document i think this would be helpful for you.

http://wiki.anyscript.org/images/2/2a/AddingGRFpredictiontoaMoCapmodel.pdf

Ground reaction force prediction with the AnyBody Modeling System ( Assoc. Prof. Michael Skipper Andersen and Sebastian Skals, M.Sc., Aalborg University, 06. October, 2015)

http://www.anybodytech.com/199.0.html

I think this would be helpful.

Concerning the dots…

Here is a small example which should illustrate how it works, one dot means one folder out… two dots means two folders out etc.



AnyFolder MyFolder ={

   AnyVar t1=10;

   AnyFolder MySubFolder ={

      AnyVar t1_sub=.t1;

      AnyFolder MySubSubFolder ={
          AnyVar t1_sub_sub=..t1;
      }; 
   };
};

Best regards
Søren

Thank you for answer. This information is a great help.