Hi, I am working on the exoskeletons. I want to set the "soft" constraints like the example in this paper. All kinematic constraints, in this work, are dened as soft constraints, where the allowable kinematic error for the solver is set to 0.1%. Could you give me one example of this? Thanks!
“Modeling and Analysis of Physical Human-Robot Interaction of an Upper Body Exoskeleton in Assistive Applications”
Best,
TJ
To work with "Soft" constraints you need two things:
- Mark the constraints which must be soft, and provide them with weight function.
- Configure the study to use the "over-determinate" kinematic solver.
The first is done by specifying the constraints of a specific joint to "Soft". Here is an example of how to mark all four constraints of a Cylindrical joint as "Soft".
AnyCylindricalJoint MyJoint = {
AnyRefFrame& ReferenceToFrame1 = ..Body.Right.ShoulderArm.Seg.Radius.ExoAttachmentNode;
AnyRefFrame& ReferenceToFrame2 = ..EnvironmentModel.Exo.Seg.C4.CuffNode;
Axis = z;
Constraints =
{
CType = {Soft, Soft, Soft, Soft};
};
};
I don't know what the authors of the paper mean with:
where the allowable kinematic error for the solver is set to 0.1%
But I imagine that they added some weights to their soft constraints. Those weights are applied to the before the solver minimizes the kinematic error. Hence, you can use the weights to control how much different soft kinematic constraints are violated with respect to each other.
Adding weights is done by adding a weight function. That could in principle be something which changed over time, but here I just showing how it would look with constant function.
Constraints =
{
CType = {Soft, Soft, Soft, Soft};
// This assigns which weight function is used.
WeightFun = {&Weights.Fun};
// Here we create the weight function which we referenced above.
AnyFolder Weights = {
AnyFunConst Fun = {
Value = {0.001, 0.001, 0.001, 0.001};
};
};
};
Great! I can't thank you enough !
This topic was automatically closed 125 days after the last reply. New replies are no longer allowed.