Hello,
I'm currently working on a model of human-device interaction, where the device is constructed as two beams with common rotation axis, where both feet are attached to the free ends of both beams. It's the MoCap-driven model, where both human and device kinematics are driven by markers. It's the movement of lifting the knees up. The GRF prediction was implemented on both feet within the body-device interaction area, with the beam ref frame as a PLATE_BASE_FRAME. I also used the modified GRF prediction for the beams-ground interaction and for the axis-ground interaction. The feet-beams interaction is also constructed similar to the CrossTrainer example with the use of joints. The device is also connected by joints and moves well in marker tracking. I made all the necessary steps according to the GRF prediction documentation.
My marker tracking analysis goes well but the inverse dynamics study breaks with the OBJ.MCH.KIN1 error: Model is kinematically indetermined.
How can I fix it?
I am not really able to imagine your model, but my guess is that somehow your model is not included in the inverse dynamics study. The error states that. All the joints and segments that you have made for your device are probably included in only the marker tracking study.
Can you please check if this is the case? To fix this, you can open the scope of the inverse dynamics study and include reference to the folder containing your model.
You're right.
So I figured out that indeed, my device segments position was not implemented in the inverse dynamics study. I made some additional coding based on the mocap example with the box. The method worked for my model with the bar with loads placed on the shoulders but when I used that for this model, the error now shows my model is kinematically over-constrained. When I use a diffrent solver, the study breaks in step 0 too.
I think, it's simply a question of counting the degrees of freedom and constraints. You want to have the same number of constraints as the degrees of freedom. I would suggest making a simple sketch and determining all the constraints that you need for your device and then implementing them in AnyBody. From your message, there are too many constraints that you have added, and the kinematics can't be solved.
An alternative could be to use the over determinate solver, but I don't think it's needed. And it can still break if you have constraints that conflict with each other.
Thank you for the response. The model has indeed too many constraints but I don't know how to reduce it.
The axis has 6DOF and 1 constraint in rotation applied with a driver. It also has 2 markers on it to determine its position in marker tracking study. Both beams are attached to the axis with the revolute joints with only 1DOF left for x-axis rotation. Beams are also driven with 2 markers for each beam. The beams' ends are attached to the feet with soft linear drivers, leaving 3DOF for each connection. The axis and beams lin and rot position is exported in marker tracking and implemented in inverse dynamics, similar to the box example. All of the legs' joints drivers are off. I don't know what else can I do to reduce the number of constraints.
I managed to even out the DOF and constraints of the whole model and currently both are 456. I did it by excluding from inverse dynamics some joints and drivers that are needed for the marker tracking. However, the error still appears that the model is kinematically over-constrained and when the other solver is used, the error "solver aborted due to singular KKT matrix" appears.
I also measure reaction forces both in the device drivers and in device-foot connections.
It's a little bit hard for me to visualize the device and the connections. Is it possible for you to share an illustration, maybe a screenshot of the model view, or just a simple sketch? You can send it to me as a private message if you don't want to share it publicly on the forum.
I understand that there are 3 segments. The two beams are linked via revolute joints to the axis. So, in all, you have 8 DOFs for your device. And now, you see an error about singular KKT matrix. That means, that kinematically, your model is working fine. You can also check that by running the Kinematics operation in the Inverse Dynamics study.
However, I am not sure of the drivers and constraints you have excluded to make your model work. It's also possible that you have excluded some reactions that are needed. You should normally not exclude anything related purely to the human body model. I also think you should check if your GRF prediction is correctly implemented. Especially since you mention that the feet interact with the device and the device with the ground. You need to ensure that all the connections are correctly set up.
To debug your model, you could start by adding AnyReacForce to the 3 segments that you have in all 6 DOF to the global. Then you will end up in a situation with redundant reactions. At this point your model should run, and from here, you can start switching the reactions off one by one to see which segment is not supported and in which direction.
Here is a link where you can also read generally about connecting an exoskeleton to a human model. I think some of the points are applicable to your work as well...
Thank you for all your insights. Your comments really help me a lot.
So yes, you're correct in most parts. I searched the forum for a few days and found some clues for my model and they are coincident with your advice on reaction forces. I've chosen the overdetermined model sollution and applied a missing reaction forces in the axis-global ref node. The drivers I removed were only the connections I decided to redefine in Inverse dynamics study.
The model is working. However, as you pointed out, there is still something wrong with GRF prediction. I decided to only measure the pulling force in the foot-beam connection node and it works almost well. Except the GRF prediction for beam-ground contact is pretty wild. It shows values of 0 and 10.0e+09 for no contact and contact respectively. When I measure all reactions in the foot-beam connection node, the beam-ground GRF predictions are correct, but the foot-beam GRF predictions are almost zero (which seems logical, since all forces were included in foot-beam connection reactions). When I remove all reactions from the foot-beam connection node, the model breaks in inverse dynamics study when the pulling motion starts to lift the beam. Do you know how to fix that?
I've made a mistake in reading the graphs (didn't zoom in enough). When only the pulling force is measured in foot-beam connection, the GRF predictions for the beam-ground are as follows: the forces are predicted correctly untill the connection breaks; then the 10.0e+09 values appeare untill the contact between the beam and the ground is restored.
I'd be very grateful for any tips on that.
You mentioned about pulling force: GRF prediction doesn't predict pulling force. In other words, there is only a normal force between the two objects (a force that will prevent penetration, theoretically), but it can't provide a force that will prevent the objects from separating.
My understanding is that when the foot and beam moves up, there is no force or reaction in the model that supports it. It ends up that the feet must pull the beam upwards, which they can't in the case of GRF prediction. If you want that, for example, you have the feet strapped to the beam so they are able to pull also, then you need to use another method. You could simply add a reaction force (AnyReacForce) or a recruited actuator (AnyRecruitedActuator) that acts in the pulling direction only. The classes have settings to specify unidirectional reactions.
I am not sure if that helps because I don't completely understand the device and how it supports the human.