a b/Application/Examples/StandingPosturePredictionWithLoad/Model/JointsAndDrivers.any
1
2
3
4
AnyFolder Joints = {
5
  
6
};
7
8
AnyFolder Drivers = {
9
  
10
  
11
  
12
  
13
  #if  LoadInRightHand == 1
14
  //defines spherical joint between the object and the right hand
15
  AnySphericalJoint HandControlRight ={
16
    AnyRefNode &ref1=Main.Model.Environment.HandSeg.RightHandle;
17
    AnySeg &ref2=Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Glove;
18
  };
19
  //Add reaction to spherical joint 
20
  AnyReacForce HandControlRightMoment ={
21
    AnySphericalJoint &ref=.HandControlRight;
22
  };
23
  #endif
24
  
25
  
26
  #if  LoadInLeftHand==1
27
  //defines spherical joint between the object and the left hand
28
  AnySphericalJoint HandControlLeft ={
29
    AnyRefNode &ref1=Main.Model.Environment.HandSeg.LeftHandle;
30
    AnySeg &ref2=Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Glove;
31
  };
32
  //Add reaction to spherical joint 
33
  AnyReacForce HandControlLeftMoment ={
34
    AnySphericalJoint &ref=.HandControlLeft;
35
  };
36
  #endif
37
  
38
  
39
  AnyKinMeasureOrg RightFootToPlateMeasures = 
40
  {
41
    AnyKinLinear TranslationHeel =    {
42
      AnyRefFrame &ref1 = Main.Model.Environment.GlobalRef.RightFootPoint;
43
      AnyRefFrame &ref2 =  Main.HumanModel.BodyModel.Right.Leg.Seg.Foot.HeelContactNode;
44
    };
45
    
46
    AnyKinMeasureOrg HeelHeight ={
47
      MeasureOrganizer={2};
48
      AnyKinLinear &ref=.TranslationHeel;
49
    };
50
    
51
    AnyKinLinear TranslationMedialFront = {
52
      AnyRefFrame &ref1 = Main.Model.Environment.GlobalRef.RightFootPoint;
53
      AnyRefFrame &ref2 =  Main.HumanModel.BodyModel.Right.Leg.Seg.Foot.ToeMedialContactNode;
54
    };
55
    
56
    AnyKinMeasureOrg TranslationMedialFrontHeight ={
57
      MeasureOrganizer={2};
58
      AnyKinLinear &ref=.TranslationMedialFront;
59
    };
60
    
61
    AnyKinLinear TranslationLateralFront = {
62
      AnyRefFrame &ref1 = Main.Model.Environment.GlobalRef.RightFootPoint;
63
      AnyRefFrame &ref2 =  Main.HumanModel.BodyModel.Right.Leg.Seg.Foot.ToeLateralContactNode;
64
    };
65
    
66
    AnyKinMeasureOrg TranslationLateralFrontHeight ={
67
      MeasureOrganizer={2};
68
      AnyKinLinear &ref=.TranslationLateralFront;
69
    };
70
    
71
    AnyKinRotational Rotation = {
72
      AnyRefFrame &ref1 = Main.Model.Environment.GlobalRef.RightFootPoint.RotNode;
73
      AnyRefFrame &ref2 = Main.HumanModel.BodyModel.Right.Leg.Seg.Foot.ConditionalContact_Nodes.Node0;
74
      Type = RotAxesAngles;
75
    };
76
    
77
  };
78
  
79
  
80
  
81
  AnyKinEq ConstrainRightFoot = {
82
    AnyKinLinear &ref1= .RightFootToPlateMeasures.TranslationMedialFront ;
83
    AnyKinLinear &ref2= .RightFootToPlateMeasures.TranslationLateralFront ;
84
    AnyKinRotational &ref3= .RightFootToPlateMeasures.Rotation ;
85
    CType = {Hard,Hard,Hard,Soft,Soft};
86
    Reaction.Type = {Off,Off,Off,Off,Off}; // Switch off reactions, predicted GRF enforces constraints
87
    MeasureOrganizer={0,1,2,5,7};
88
  };
89
  
90
  //Conditional constraint on heel height means heel can lift off  
91
  KinLimitsDriver DriverRight(
92
  KinMeasure= .RightFootToPlateMeasures.HeelHeight
93
  ) = { LowerLimit =0;HighLimit = 0.1; MeasureConversion=1;ErrorAtHardLimit= 2*0.05;};
94
  
95
  
96
  
97
  
98
  
99
  
100
  AnyKinMeasureOrg LeftFootToPlateMeasures = 
101
  {
102
    AnyKinLinear TranslationHeel =  {
103
      AnyRefFrame &ref1 = Main.Model.Environment.GlobalRef.LeftFootPoint;
104
      AnyRefFrame &ref2 =  Main.HumanModel.BodyModel.Left.Leg.Seg.Foot.HeelContactNode;
105
    };
106
    
107
    AnyKinMeasureOrg HeelHeight ={
108
      MeasureOrganizer={2};
109
      AnyKinLinear &ref=.TranslationHeel;
110
    };
111
    
112
    AnyKinLinear TranslationMedialFront =    {
113
      AnyRefFrame &ref1 = Main.Model.Environment.GlobalRef.LeftFootPoint;
114
      AnyRefFrame &ref2 =  Main.HumanModel.BodyModel.Left.Leg.Seg.Foot.ToeMedialContactNode;
115
    };
116
    
117
    AnyKinMeasureOrg TranslationMedialFrontHeight ={
118
      MeasureOrganizer={2};
119
      AnyKinLinear &ref=.TranslationMedialFront;
120
    };
121
    
122
    AnyKinLinear TranslationLateralFront =
123
    {
124
      AnyRefFrame &ref1 = Main.Model.Environment.GlobalRef.LeftFootPoint;
125
      AnyRefFrame &ref2 =  Main.HumanModel.BodyModel.Left.Leg.Seg.Foot.ToeLateralContactNode;
126
    };
127
    AnyKinMeasureOrg TranslationLateralFrontHeight ={
128
      MeasureOrganizer={2};
129
      AnyKinLinear &ref=.TranslationLateralFront;
130
    };
131
    AnyKinRotational Rotation =
132
    {
133
      AnyRefFrame &ref1 = Main.Model.Environment.GlobalRef.LeftFootPoint.RotNode;
134
      AnyRefFrame &ref2 = Main.HumanModel.BodyModel.Left.Leg.Seg.Foot.ConditionalContact_Nodes.Node0;
135
      
136
      Type = RotAxesAngles;
137
    };
138
    
139
  };
140
  
141
  
142
  
143
  AnyKinEq ConstrainLeftFoot = {
144
    
145
    AnyKinLinear &ref1= .LeftFootToPlateMeasures.TranslationMedialFront ;
146
    AnyKinLinear &ref2= .LeftFootToPlateMeasures.TranslationLateralFront ;
147
    AnyKinRotational &ref3= .LeftFootToPlateMeasures.Rotation;
148
    CType = {Hard,Hard,Hard,Soft,Soft};
149
    Reaction.Type = {Off,Off,Off,Off,Off}; // Switch off reactions, predicted GRF enforces constraints
150
    MeasureOrganizer={0,1,2,5,7};
151
  };
152
  
153
  
154
  KinLimitsDriver DriverLeft(
155
  KinMeasure= .LeftFootToPlateMeasures.HeelHeight
156
  ) = { LowerLimit =0;HighLimit = 0.1; MeasureConversion=1;ErrorAtHardLimit= 2*0.05;};
157
  
158
  
159
  
160
  
161
  RangeOfMotionLimits JointLimits( 
162
  ARM_RIGHT = BM_ARM_RIGHT,
163
  ARM_LEFT = BM_ARM_LEFT,
164
  LEG_RIGHT = BM_LEG_RIGHT,
165
  LEG_LEFT = BM_LEG_LEFT,
166
  PELVIS_THORAX_EXTENSION = "Off",
167
  PELVIS_THORAX_LATERAL_BENDING = "Off",
168
  PELVIS_THORAX_ROTATION = "Off",
169
  SKULL_THORAX_FLEXION = "Off",
170
  SKULL_THORAX_LATERALBENDING = "Off",
171
  SKULL_THORAX_ROTATION = "Off",
172
  STERNO_CLAVICULAR_PROTRACTION = "On",
173
  STERNO_CLAVICULAR_ELEVATION = "On",
174
  STERNO_CLAVICULAR_AXIALROTATION = "Off",
175
  GLENOHUMERAL_FLEXION = "On",
176
  GLENOHUMERAL_EXTERNAL_ROTATION = "On",
177
  GLENOHUMERAL_ABDUCTION = "On",
178
  ELBOW_FLEXION = "On",
179
  ELBOW_PRONATION = "Off",
180
  WRIST_FLEXION = "Off",
181
  WRIST_ABDUCTION = "Off",
182
  HIP_ABDUCTION = "Off",
183
  HIP_FLEXION = "On",
184
  HIP_EXTERNAL_ROTATION = "Off",
185
  KNEE_FLEXION = "On",
186
  ANKLE_PLANTAR_FLEXION = "Off",
187
  SUBTALAR_EVERSION = "Off",
188
  SKULL_THORAX_FLEXION = "Off",
189
  SKULL_THORAX_LATERALBENDING = "Off",
190
  SKULL_THORAX_ROTATION = "Off"
191
  )={
192
    Main.Model.ModelEnvironmentConnection.Drivers.JointLimits.Limits.Right.SternoClavicularElevation={0,20};
193
    Main.Model.ModelEnvironmentConnection.Drivers.JointLimits.Limits.Left.SternoClavicularElevation={0,20};
194
    
195
  };
196
  
197
  //Here the Zero Moment Point (ZMP) is constrained to be within the foot stance area
198
  // A segment PointWithZeroMoment (red sphere) has been created by the balance driver and here the motion of it is constrained
199
  CreateCoMLimitDriversFootStanceArea CoMLimits(CoM=Main.Model.OverallWeightBalanceControl.PointWithZeroMoment)={};
200
  
201
202
  Main.HumanModel.DefaultMannequinDrivers.PelvisGroundDriverRotX.DriverPos={0};
203
  Main.HumanModel.DefaultMannequinDrivers.PelvisGroundDriverRotY.DriverPos={0};
204
  Main.HumanModel.DefaultMannequinDrivers.PelvisGroundDriverRotZ.DriverPos={0};
205
  
206
  Main.HumanModel.DefaultMannequinDrivers.SkullThoraxFlexionDriver.DriverPos={0};
207
  //Main.HumanModel.DefaultMannequinDrivers.SkullThoraxLateralBendingDriver.DriverPos={0};
208
  //Main.HumanModel.DefaultMannequinDrivers.SkullThoraxRotationDriver.DriverPos={0};
209
  Main.HumanModel.DefaultMannequinDrivers.PostureDriverBending.DriverPos ={0};
210
  Main.HumanModel.DefaultMannequinDrivers.PostureDriverRotation.DriverPos ={0};
211
  Main.HumanModel.DefaultMannequinDrivers.PostureDriverExtension.DriverPos ={-5*pi/180};
212
  
213
  Main.HumanModel.DefaultMannequinDrivers.SCProtractionDriverRight.DriverPos = {-0.4014257};
214
  Main.HumanModel.DefaultMannequinDrivers.SCElevationDriverRight.DriverPos = {0.2007129};
215
  Main.HumanModel.DefaultMannequinDrivers.GHDriverRightAbduction.DriverPos ={0};
216
  Main.HumanModel.DefaultMannequinDrivers.GHDriverRightFlexion.DriverPos ={0};
217
  Main.HumanModel.DefaultMannequinDrivers.GHDriverRightExternalRotation.DriverPos ={0};
218
  Main.HumanModel.DefaultMannequinDrivers.ElbowFlexionDriverRight.DriverPos ={30*pi/180};
219
  Main.HumanModel.DefaultMannequinDrivers.ElbowPronationDriverRight.DriverPos ={0*pi/180};
220
  Main.HumanModel.DefaultMannequinDrivers.WristDriverRightFlexion.DriverPos ={0};
221
  Main.HumanModel.DefaultMannequinDrivers.WristDriverRightAbduction.DriverPos ={0};
222
  
223
  Main.HumanModel.DefaultMannequinDrivers.SCProtractionDriverLeft.DriverPos = {-0.4014257};
224
  Main.HumanModel.DefaultMannequinDrivers.SCElevationDriverLeft.DriverPos = { 0.2007129};
225
  Main.HumanModel.DefaultMannequinDrivers.GHDriverLeftAbduction.DriverPos= {0};
226
  Main.HumanModel.DefaultMannequinDrivers.GHDriverLeftFlexion.DriverPos= {0};
227
  Main.HumanModel.DefaultMannequinDrivers.GHDriverLeftExternalRotation.DriverPos= {0};
228
  Main.HumanModel.DefaultMannequinDrivers.ElbowFlexionDriverLeft.DriverPos= {30*pi/180};
229
  Main.HumanModel.DefaultMannequinDrivers.ElbowPronationDriverLeft.DriverPos= {0};
230
  Main.HumanModel.DefaultMannequinDrivers.WristDriverLeftFlexion.DriverPos= {0};
231
  Main.HumanModel.DefaultMannequinDrivers.WristDriverLeftAbduction.DriverPos= {0};
232
  
233
  Main.HumanModel.DefaultMannequinDrivers.HipDriverRightFlexion.DriverPos= {0};
234
  Main.HumanModel.DefaultMannequinDrivers.HipDriverRightExternalRotation.DriverPos= {0};
235
  Main.HumanModel.DefaultMannequinDrivers.HipDriverRightAbduction.DriverPos= {0};
236
  Main.HumanModel.DefaultMannequinDrivers.KneeDriverRight.DriverPos= {0};
237
  Main.HumanModel.DefaultMannequinDrivers.AnkleDriverRightFlexion.DriverPos= {0};
238
  Main.HumanModel.DefaultMannequinDrivers.AnkleDriverRightEversion.DriverPos= {0};
239
  
240
  Main.HumanModel.DefaultMannequinDrivers.HipDriverLeftFlexion.DriverPos= {0};
241
  Main.HumanModel.DefaultMannequinDrivers.HipDriverLeftExternalRotation.DriverPos= {0};
242
  Main.HumanModel.DefaultMannequinDrivers.HipDriverLeftAbduction.DriverPos= {0};
243
  Main.HumanModel.DefaultMannequinDrivers.KneeDriverLeft.DriverPos= {0};
244
  Main.HumanModel.DefaultMannequinDrivers.AnkleDriverLeftFlexion.DriverPos= {0};
245
  Main.HumanModel.DefaultMannequinDrivers.AnkleDriverLeftEversion.DriverPos= {0};
246
  
247
  
248
  
249
  
250
  
251
  
252
  //weights
253
  Main.HumanModel.DefaultMannequinDrivers.PelvisGroundDriverPosX.WeakDriverWeight=0.0000;  //zero weight on pelvis pos
254
  Main.HumanModel.DefaultMannequinDrivers.PelvisGroundDriverPosY.WeakDriverWeight=0.0000;
255
  Main.HumanModel.DefaultMannequinDrivers.PelvisGroundDriverPosZ.WeakDriverWeight=0.0000;
256
  Main.HumanModel.DefaultMannequinDrivers.PelvisGroundDriverRotZ.WeakDriverWeight=0.0000;
257
  Main.HumanModel.DefaultMannequinDrivers.PelvisGroundDriverRotY.WeakDriverWeight=0.0000;
258
  Main.HumanModel.DefaultMannequinDrivers.PelvisGroundDriverRotX.WeakDriverWeight=0.0000;
259
  //  Main.HumanModel.DefaultMannequinDrivers.NeckJntDriver.WeakDriverWeight=0.00001;
260
  //  Main.HumanModel.DefaultMannequinDrivers.PostureDriverBending.WeakDriverWeight=0.00001;
261
  //  Main.HumanModel.DefaultMannequinDrivers.PostureDriverRotation.WeakDriverWeight=0.00001;
262
  //  Main.HumanModel.DefaultMannequinDrivers.PostureDriverExtension.WeakDriverWeight=0.00001;
263
  
264
  //  Main.HumanModel.DefaultMannequinDrivers.SCProtractionDriverRight.WeakDriverWeight =0.002;
265
  //  Main.HumanModel.DefaultMannequinDrivers.SCProtractionDriverRight.WeakDriverWeight = 0.0001;
266
  //  Main.HumanModel.DefaultMannequinDrivers.SCElevationDriverRight.WeakDriverWeight = 0.0001;
267
  //  Main.HumanModel.DefaultMannequinDrivers.SCAxialRotationDriverRight.WeakDriverWeight = 0.0001;
268
  Main.HumanModel.DefaultMannequinDrivers.GHDriverRightAbduction.WeakDriverWeight =0.0001;
269
  Main.HumanModel.DefaultMannequinDrivers.GHDriverRightFlexion.WeakDriverWeight =0.00001;
270
  Main.HumanModel.DefaultMannequinDrivers.GHDriverRightExternalRotation.WeakDriverWeight =0.0001;
271
  Main.HumanModel.DefaultMannequinDrivers.ElbowFlexionDriverRight.WeakDriverWeight =0.0001;
272
  //  Main.HumanModel.DefaultMannequinDrivers.ElbowPronationDriverRight.WeakDriverWeight =0.00001;
273
  //  Main.HumanModel.DefaultMannequinDrivers.WristDriverRightFlexion.WeakDriverWeight =0.00001;
274
  //  Main.HumanModel.DefaultMannequinDrivers.WristDriverRightAbduction.WeakDriverWeight =0.00001;
275
  //  
276
  //  Main.HumanModel.DefaultMannequinDrivers.SCProtractionDriverLeft.WeakDriverWeight = 0.00001;
277
  //  Main.HumanModel.DefaultMannequinDrivers.SCElevationDriverLeft.WeakDriverWeight = 0.00001;
278
  //  Main.HumanModel.DefaultMannequinDrivers.SCAxialRotationDriverLeft.WeakDriverWeight =0.00001;
279
  Main.HumanModel.DefaultMannequinDrivers.GHDriverLeftAbduction.WeakDriverWeight= 0.0001;
280
  Main.HumanModel.DefaultMannequinDrivers.GHDriverLeftFlexion.WeakDriverWeight= 0.0001;
281
  Main.HumanModel.DefaultMannequinDrivers.GHDriverLeftExternalRotation.WeakDriverWeight= 0.0001;
282
  Main.HumanModel.DefaultMannequinDrivers.ElbowFlexionDriverLeft.WeakDriverWeight= 0.0001;
283
  //  Main.HumanModel.DefaultMannequinDrivers.ElbowPronationDriverLeft.WeakDriverWeight= 0.00001;
284
  //  Main.HumanModel.DefaultMannequinDrivers.WristDriverLeftFlexion.WeakDriverWeight= 0.00001;
285
  //  Main.HumanModel.DefaultMannequinDrivers.WristDriverLeftAbduction.WeakDriverWeight= 0.00001;
286
  
287
  
288
  
289
  Main.HumanModel.DefaultMannequinDrivers.HipDriverRightFlexion.WeakDriverWeight= 0.00001;
290
  //  Main.HumanModel.DefaultMannequinDrivers.HipDriverRightExternalRotation.WeakDriverWeight= 0.00001;
291
  //  Main.HumanModel.DefaultMannequinDrivers.HipDriverRightAbduction.WeakDriverWeight= 0.00001;;
292
  Main.HumanModel.DefaultMannequinDrivers.KneeDriverRight.WeakDriverWeight= 0.00001;
293
  Main.HumanModel.DefaultMannequinDrivers.AnkleDriverRightFlexion.WeakDriverWeight=100* 0.00001;
294
  //  Main.HumanModel.DefaultMannequinDrivers.AnkleDriverRightEversion.WeakDriverWeight= 0.00001;
295
  //  
296
  Main.HumanModel.DefaultMannequinDrivers.HipDriverLeftFlexion.WeakDriverWeight= 0.00001;
297
  //  Main.HumanModel.DefaultMannequinDrivers.HipDriverLeftExternalRotation.WeakDriverWeight= 0.00001;
298
  //  Main.HumanModel.DefaultMannequinDrivers.HipDriverLeftAbduction.WeakDriverWeight= 0.00001;
299
  Main.HumanModel.DefaultMannequinDrivers.KneeDriverLeft.WeakDriverWeight= 0.00001;
300
  Main.HumanModel.DefaultMannequinDrivers.AnkleDriverLeftFlexion.WeakDriverWeight= 100*0.00001;
301
  //  Main.HumanModel.DefaultMannequinDrivers.AnkleDriverLeftEversion.WeakDriverWeight= 0.00001;
302
  //
303
  
304
  
305
};