Closing a kinematic loop

Provide easy-to-use, extensible software for modeling, simulating, controlling, and analyzing the neuromusculoskeletal system.
POST REPLY
User avatar
Shelby Walford
Posts: 7
Joined: Tue Sep 04, 2018 12:05 pm

Closing a kinematic loop

Post by Shelby Walford » Fri Sep 25, 2020 2:41 pm

Hi All,

I have an upper body model with the following kinematic chain: ground - torso - humerus - forearm - hand

I am trying to close the loop by adding a joint from hand - ground. I want this joint to be free (or passive) with 6 DoF (so I don't want constrained motion, but rather ultimately I want to get the joint reaction force here during a forward dynamics simulation). However, it will not open in OpenSim once I add this joint (I'm giving its 3 rotational and translational coordinates a default value, but also specifying is_free_to_satisfy_constraints as true...even though there really are no constraints? But not sure if this is causing the issue)
I think it might want me to add a WeldConstraint or PointConstraint here (but I really want free motion).

With or without the point constraint, this is the error I get: "Attempting to assign an invalid SimTK::MobilizedBodyIndex
In Object 'humphant1_slave_0_offset' of type PhysicalOffsetFrame.
Thrown at physicalframe.cpp:73 in setMobilizedBodyIndex()."

For more background, I have a humphant1 joint (connecting humerus and phantom humerus segments) but this doesn't give me any issues before I try to add the hand-ground joint.

Any help is appreciated! Thank you!

Tags:

User avatar
Carmichael Ong
Posts: 384
Joined: Fri Feb 24, 2012 11:50 am

Re: Closing a kinematic loop

Post by Carmichael Ong » Mon Sep 28, 2020 1:43 pm

It may be helpful to provide more details to this problem. Something that doesn't quite add up to me is that you want there to be free movement, but you want to calculate a joint reaction force. If there is truly free movement, then the joint reaction force should indeed be 0. I agree that it seems like a WeldConstraint or PointConstraint is most likely the correct option, but more details about this "free movement" definition would be helpful.

POST REPLY