a b/Application/Examples/ArmCurl/Model/JointsAndDrivers.any
1
//
2
3
4
AnyFolder Drivers = {
5
  AnyComponentDefinition obj = {};
6
  // Aliases for convenient referencing
7
  AnyFolder &JntPos=..Mannequin.Posture;  
8
  AnyFolder &JntVel=..Mannequin.PostureVel;  
9
  AnyFolder &Thorax = ..BodyModel.Trunk.SegmentsThorax.ThoraxSeg;
10
  
11
  AnyFolder &RefHM = Main.Model.BodyModel;
12
  AnyFolder &RefEM = Main.Model.EnvironmentModel ; 
13
  
14
  // Use default mannequin drivers to control the hand posture
15
  AnyFolder& HandPostureRight = Main.HumanModel.DefaultMannequinDrivers.HandDriversRight;
16
  AnyFolder& HandPostureLeft= Main.HumanModel.DefaultMannequinDrivers.HandDriversLeft;
17
  
18
  AnyKinEqSimpleDriver PelvisDrv={
19
    AnyKinRotational PelvisGroundRotMeasure = {
20
      AnyRefFrame &Ref1 = ..RefEM.GlobalRef.PelvisNode;
21
      AnyRefFrame &Ref2 = ..RefHM.Trunk.SegmentsLumbar.PelvisSeg;
22
      Type = RotVector;
23
    };
24
    AnyKinLinear PelvisGroundLinMeasure = {
25
      AnyRefFrame &Ref1 = ..RefEM.GlobalRef.PelvisNode;
26
      AnyRefFrame &Ref2 = ..RefHM.Trunk.SegmentsLumbar.PelvisSeg;
27
    };
28
    MeasureOrganizer={0,1,3,4,5};
29
    DriverPos={0,0,0,0,0};
30
    DriverVel={0,0,0,0,0};
31
  };
32
  
33
  //Make a linear measure between ThoraxRest and thorax
34
  AnyKinEqSimpleDriver ThoraxDrv={
35
    AnyKinLinear  lin={
36
      Ref=0;
37
      AnySeg &ref1=..RefEM.ThoraxRest;
38
      AnyRefNode &ref2=..RefHM.Trunk.SegmentsThorax.ThoraxSeg.ij;     
39
    };
40
    MeasureOrganizer={1};
41
    DriverPos={-0.05};
42
    DriverVel={0.0};
43
  };
44
  
45
  
46
  AnyFolder &ref=Main.Model.BodyModel.Trunk;
47
  
48
  
49
  // ************************************
50
  // Drivers for the spine
51
  // ************************************
52
  
53
  //Neck driver 
54
  AnyKinEqSimpleDriver NeckJntDriver = {
55
    AnyKinMeasure& lb = ...BodyModel.Interface.Trunk.SkullThoraxLateralBending;
56
    AnyKinMeasure& ar = ...BodyModel.Interface.Trunk.SkullThoraxRotation;
57
    AnyKinMeasure& fe = ...BodyModel.Interface.Trunk.SkullThoraxFlexion;
58
    DriverPos = pi/180*{.JntPos.NeckLateralBending, .JntPos.NeckRotation, -1*.JntPos.NeckExtension};
59
    DriverVel = pi/180*{.JntVel.NeckLateralBending, .JntVel.NeckRotation, -1*.JntVel.NeckExtension};
60
    Reaction.Type = {Off, Off, Off};
61
  };
62
  
63
  
64
  
65
  //Thorax pelvis rotation driver
66
  AnyKinEqSimpleDriver PostureDriver ={
67
    AnyKinMeasure& Ref2 = ...BodyModel.Interface.Trunk.PelvisThoraxLateralBending;        
68
    AnyKinMeasure& Ref3 = ...BodyModel.Interface.Trunk.PelvisThoraxRotation;   
69
    AnyKinMeasure& Ref1 = ...BodyModel.Interface.Trunk.PelvisThoraxExtension;
70
    
71
    DriverPos = pi/180*{
72
      .JntPos.PelvisThoraxLateralBending,
73
      .JntPos.PelvisThoraxRotation,
74
      .JntPos.PelvisThoraxExtension
75
    };
76
    DriverVel = pi/180*{
77
      .JntVel.PelvisThoraxLateralBending,
78
      .JntVel.PelvisThoraxRotation,
79
      .JntVel.PelvisThoraxExtension
80
    };
81
    Reaction.Type = {Off,Off,Off};  
82
  };  
83
  
84
  
85
  
86
  AnyFolder Right ={
87
    
88
    Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Hand.Carpals = {
89
      AnyRefNode GripCenter = {sRel = .PalmJoint.sRel + {0.025, -0.02, 0}; };
90
    };
91
    
92
    
93
    //Make a linear measure between the hand and the handle
94
    AnyKinEqSimpleDriver HandDrv={
95
      AnyKinLinear  lin={
96
        AnyRefNode &ref1=...RefEM.Right.Handle.Node2;
97
        AnyRefFrame &ref2=...RefHM.Right.ShoulderArm.Seg.Hand.Carpals.GripCenter;
98
      };
99
      DriverPos={0,0,0};
100
      DriverVel={0,0,0};
101
    };
102
    
103
    //Make a rotational reaction in the hand
104
    AnyReacForce HandRotCon={
105
      AnyKinRotational  rot={
106
        AnyRefNode &ref1=...RefEM.Right.Handle.Node2;
107
        AnyRefFrame &ref2=...RefHM.Right.ShoulderArm.Seg.Hand.Carpals.GripCenter;
108
        Type=RotVector;
109
      };
110
    };
111
    
112
    
113
    
114
    
115
    //Make a linear measure between ArmRest and elbow
116
    AnyKinEqSimpleDriver ElbowDrv={
117
      AnyKinLinear  lin={
118
        Ref=0;
119
        AnySeg &ref1=...RefEM.ArmRest;
120
         AnyRefNode &ref2=...RefHM.Right.ShoulderArm.Seg.Humerus.fe;     
121
      };
122
      MeasureOrganizer={1};
123
      DriverPos={-0.05};
124
      DriverVel={0.0};
125
    };
126
    
127
    //Make a reaction force measure between ArmRest and elbow
128
    AnyReacForce ElbowReactions={
129
      AnyKinMeasureOrg MeasureOrg={
130
        AnyKinLinear  lin={
131
          Ref=0;
132
          AnySeg &ref1=....RefEM.ArmRest;
133
//          ref1={AnyDrawRefFrame drw={};};
134
          AnyRefNode &ref2=....RefHM.Right.ShoulderArm.Seg.Humerus.fe;     
135
        };
136
        MeasureOrganizer={0,2};
137
        
138
      };
139
    };
140
    
141
    //Sterno clavicular joint driver
142
    AnyKinEqSimpleDriver SCDriverRight ={
143
      AnyKinMeasure& ref1 =....BodyModel.Interface.Right.SternoClavicularProtraction;
144
      AnyKinMeasure& ref2 =....BodyModel.Interface.Right.SternoClavicularElevation;
145
      DriverPos = pi/180*{
146
        ..JntPos.Right.SternoClavicularProtraction,
147
        ..JntPos.Right.SternoClavicularElevation
148
      };
149
      DriverVel = {
150
        ..JntVel.Right.SternoClavicularProtraction,
151
        ..JntVel.Right.SternoClavicularElevation
152
      };
153
      Reaction.Type={Off,Off};
154
    };
155
    
156
    
157
    //Wrist driver 
158
    AnyKinEqSimpleDriver WristDriverRight ={
159
      AnyKinMeasure& ref1 =....BodyModel.Interface.Right.WristFlexion;
160
      AnyKinMeasure& ref2 =....BodyModel.Interface.Right.WristAbduction;
161
      DriverPos = pi/180*{
162
        ..JntPos.Right.WristFlexion,
163
        ..JntPos.Right.WristAbduction
164
      };
165
      
166
      DriverVel = pi/180*{
167
        ..JntVel.Right.WristFlexion,
168
        ..JntVel.Right.WristAbduction};
169
      Reaction.Type={Off,Off};
170
    };
171
    
172
   
173
    //Glenohumeral joint 
174
    AnyKinEqSimpleDriver GHDriverRight={
175
      AnyKinMeasure& ref1 =....BodyModel.Interface.Right.GlenohumeralAbduction;
176
      DriverPos=pi/180*{
177
        ..JntPos.Right.GlenohumeralAbduction  //GH joint
178
      };
179
      DriverVel = pi/180*{
180
        ..JntVel.Right.GlenohumeralAbduction  //GH joint
181
      };    
182
      Reaction.Type={Off};
183
    };
184
    //Elbow pronation driver
185
    AnyKinEqSimpleDriver ElbowPSDriverRight={
186
      AnyKinMeasure& Elbow =....BodyModel.Interface.Right.ElbowPronation;
187
      DriverPos=pi/180*{..JntPos.Right.ElbowPronation };  
188
      DriverVel = pi/180*{..JntVel.Right.ElbowPronation };  
189
      Reaction.Type={Off};
190
    };
191
    
192
    
193
    //Hip driver 
194
    AnyKinEqSimpleDriver HipDriverRight={
195
      AnyKinMeasure& ref2 =....BodyModel.Interface.Right.HipExternalRotation;
196
      DriverPos= pi/180*{
197
        ..JntPos.Right.HipExternalRotation
198
      };    
199
      DriverVel = pi/180*{
200
        ..JntVel.Right.HipExternalRotation
201
      }; 
202
      Reaction.Type={Off};
203
      
204
    };
205
    
206
    
207
  };//right
208
  
209
  
210
  AnyFolder Left ={
211
    
212
    Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Hand.Carpals = {
213
      AnyRefNode GripCenter = {sRel = .PalmJoint.sRel + {0.025, -0.02, 0}; };
214
    };
215
216
    //Make a linear measure between the hand and the handle
217
    AnyKinEqSimpleDriver HandDrv={
218
      AnyKinLinear  lin={
219
        AnyRefNode &ref1=...RefEM.Left.Handle.Node2;
220
        AnyRefFrame &ref2=...RefHM.Left.ShoulderArm.Seg.Hand.Carpals.GripCenter;
221
      };
222
      DriverPos={0,0,0};
223
      DriverVel={0,0,0};
224
    };
225
    
226
    //Make a rotational reaction in the hand
227
    AnyReacForce HandRotCon={
228
      AnyKinRotational  rot={
229
        AnyRefNode &ref1=...RefEM.Left.Handle.Node2;
230
        AnyRefFrame &ref2=...RefHM.Left.ShoulderArm.Seg.Hand.Carpals.GripCenter;
231
        Type=RotVector;
232
      };
233
    };
234
    
235
    //Make a linear measure between ArmRest and elbow
236
    AnyKinEqSimpleDriver ElbowDrv={
237
      AnyKinLinear  lin={
238
        Ref=0;
239
        AnySeg &ref1=...RefEM.ArmRest;
240
        AnyRefNode &ref2=...RefHM.Left.ShoulderArm.Seg.Humerus.fe;     
241
      };
242
      MeasureOrganizer={1};
243
      DriverPos={-0.05};
244
      DriverVel={0.0};
245
    };
246
    
247
    //Make a reaction force measure between ArmRest and elbow
248
    AnyReacForce ElbowReactions={
249
      AnyKinMeasureOrg MeasureOrg={
250
        AnyKinLinear  lin={
251
          Ref=0;
252
          AnySeg &ref1=....RefEM.ArmRest;
253
          AnyRefNode &ref2=....RefHM.Left.ShoulderArm.Seg.Humerus.fe;     
254
        };
255
        MeasureOrganizer={0,2};
256
        
257
      };
258
    };
259
    //Sterno clavicular joint driver
260
    AnyKinEqSimpleDriver SCDriverLeft ={
261
      AnyKinMeasure& ref1 =....BodyModel.Interface.Left.SternoClavicularProtraction;
262
      AnyKinMeasure& ref2 =....BodyModel.Interface.Left.SternoClavicularElevation;
263
      
264
      DriverPos = pi/180*{
265
        ..JntPos.Left.SternoClavicularProtraction,
266
        ..JntPos.Left.SternoClavicularElevation
267
      };
268
      
269
      DriverVel = pi/180*{
270
        ..JntVel.Left.SternoClavicularProtraction,
271
        ..JntVel.Left.SternoClavicularElevation
272
      };
273
      
274
      Reaction.Type={Off,Off};
275
    };
276
    
277
    
278
   
279
 //Wrist driver
280
  AnyKinEqSimpleDriver WristDriverLeft ={
281
    AnyKinMeasure& ref1 =....BodyModel.Interface.Left.WristFlexion;
282
    AnyKinMeasure& ref2 =....BodyModel.Interface.Left.WristAbduction;
283
    DriverPos = pi/180*{
284
      ..JntPos.Left.WristFlexion,
285
      ..JntPos.Left.WristAbduction};
286
    
287
    DriverVel = pi/180*{
288
      ..JntVel.Left.WristFlexion,
289
      ..JntVel.Left.WristAbduction};
290
    Reaction.Type={Off,Off};
291
  };
292
  
293
    //Glenohumeral joint driver
294
    AnyKinEqSimpleDriver GHDriverLeft={
295
      AnyKinMeasure& ref1 =....BodyModel.Interface.Left.GlenohumeralAbduction;
296
      DriverPos=pi/180*{
297
        ..JntPos.Left.GlenohumeralAbduction  //GH joint
298
        
299
      };    
300
      DriverVel = pi/180*{
301
        ..JntVel.Left.GlenohumeralAbduction  //GH joint
302
        
303
      };    
304
      Reaction.Type={Off};
305
    };
306
    
307
    //Elbow pronation driver 
308
    AnyKinEqSimpleDriver ElbowPSDriverLeft={
309
      AnyKinMeasure& Elbow =....BodyModel.Interface.Left.ElbowPronation;
310
      DriverPos= pi/180*{..JntPos.Left.ElbowPronation };  
311
      DriverVel = pi/180*{..JntVel.Left.ElbowPronation };  
312
      Reaction.Type={Off};
313
    };
314
    
315
    //Left hip driver
316
    AnyKinEqSimpleDriver HipDriverLeft={
317
      
318
      AnyKinMeasure& ref2 =....BodyModel.Interface.Left.HipExternalRotation;
319
      
320
      DriverPos=pi/180*{
321
        
322
        ..JntPos.Left.HipExternalRotation
323
        
324
      };    
325
      DriverVel = pi/180*{
326
        
327
        ..JntVel.Left.HipExternalRotation
328
        
329
      };    
330
      Reaction.Type={Off};
331
    };
332
    
333
    //    
334
    //    AnyKinRotational GHRotL = {
335
    //    AnyRefNode &scapula_gh = ....BodyModel.Trunk.SegmentsThorax.ThoraxSeg.ij;
336
    //    AnyRefNode &humerus_gh = ....BodyModel.Left.ShoulderArm.Seg.Humerus.gh;
337
    //    Type = RotAxesAngles;
338
    //    Axis1 = z;
339
    //    Axis2 = x;
340
    //    Axis3 = y;
341
    //    }; 
342
    //    
343
    //    
344
    //    // This kinematic measure compiles all the degrees of freedom controlled by the
345
    //    //  manikin.
346
    //    AnyKinMeasureOrg Left = {
347
    //    
348
    //    // Arm movements
349
    //    AnyKinRotational &GH = .GHRotL; 
350
    //    
351
    //    AnyRevoluteJoint  &Elbow =....BodyModel.Left.ShoulderArm.Jnt.HumeroUlnarJoint;
352
    //    
353
    //    // Forearm pronation/supination
354
    //    AnyKinMeasure& ForearmPronat = ....BodyModel.Interface.Left.ElbowPronation;
355
    //    
356
    //    
357
    //    // Leg movements
358
    //    AnySphericalJoint &Hip = ....BodyModel.Left.Leg.Jnt.Hip;
359
    //    AnyRevoluteJoint  &Knee = ....BodyModel.Left.Leg.Jnt.Knee;
360
    //    AnyUniversalJoint  &Ankle = ....BodyModel.Left.Leg.Jnt.Ankle;
361
    //    
362
    //    
363
    //    MeasureOrganizer={0,4,7};
364
    //    
365
    //    };
366
    //    
367
    //    
368
    //    AnyKinEqSimpleDriver DriverLeft ={
369
    //    AnyKinMeasure& AllDofs = .Left;
370
    //    DriverPos = pi/180*{
371
    //    0,  //GH abduction joint
372
    //    -160,//.JntPos.Right.ElbowPronationSupination//not in use
373
    //    
374
    //    220//..JntPos.Left.HipExternalExternalRotation
375
    //    
376
    //    };  
377
    //    
378
    //    // This is static posture, so all velocities are zero.
379
    //    DriverVel = pi/180*{
380
    //    0,
381
    //    0,
382
    //    0 
383
    //    
384
    //    };
385
    //    
386
    //    Reaction.Type = {
387
    //    Off,Off,Off
388
    //    };  
389
    //    };
390
  }; //Left
391
  
392
  
393
  
394
  // Place the right toe and heel on the ground
395
  AnyKinEq RToeGroundConstraint ={
396
    AnyKinLinear ToePos = {
397
      AnyRefFrame &Ground = Main.Model.EnvironmentModel.GlobalRef.FloorNode.Right;
398
      AnyRefNode &Ball = Main.Model.BodyModel.Right.Leg.Seg.Foot.ToeLateralContactNode;
399
    };
400
    MeasureOrganizer = {0,1,2};  // Only the y coordinate
401
    Reaction.Type={On,On,On};
402
  };
403
  
404
  AnyKinEq RToePGroundConstraint ={
405
    AnyKinLinear ToePos = {
406
      AnyRefFrame &Ground = Main.Model.EnvironmentModel.GlobalRef.FloorNode;
407
      AnyRefNode &Ball = Main.Model.BodyModel.Right.Leg.Seg.Foot.ToeMedialContactNode;
408
    };
409
    MeasureOrganizer = {1};  // Only the y coordinate
410
    Reaction.Type={Off};
411
  };
412
  
413
  AnyKinEqSimpleDriver RHeelGroundConstraint ={
414
    AnyKinLinear HeelPos = {
415
      AnyRefNode &Ground = Main.Model.EnvironmentModel.GlobalRef.FloorNode;
416
      AnyRefNode &Ball = Main.Model.BodyModel.Right.Leg.Seg.Foot.HeelContactNode;
417
    };
418
    MeasureOrganizer = {1};  // Only the y coordinate
419
    DriverPos = {0.0};
420
    DriverVel = {0};
421
    Reaction.Type = {Off};   // Provide ground reaction forces
422
  };
423
  
424
  // Place the left toe and heel on the ground
425
  AnyKinEq LToeGroundConstraint ={
426
    AnyKinLinear ToePos = {
427
      AnyRefNode &Ground = Main.Model.EnvironmentModel.GlobalRef.FloorNode.Left;
428
      AnyRefNode &Ball = Main.Model.BodyModel.Left.Leg.Seg.Foot.ToeLateralContactNode;
429
    };
430
    MeasureOrganizer = {0,1,2};  // Only the y coordinate
431
    Reaction.Type={On,On,On};
432
  };
433
  
434
  
435
  AnyKinEq LToePGroundConstraint ={
436
    AnyKinLinear ToePos = {
437
      AnyRefNode &Ground = Main.Model.EnvironmentModel.GlobalRef.FloorNode;
438
      AnyRefNode &Ball = Main.Model.BodyModel.Left.Leg.Seg.Foot.ToeMedialContactNode;
439
    };
440
    MeasureOrganizer = {1};  // Only the y coordinate
441
    Reaction.Type={Off};
442
  };
443
  
444
  AnyKinEqSimpleDriver LHeelGroundConstraint ={
445
    AnyKinLinear HeelPos = {
446
      AnyRefNode &Ground = Main.Model.EnvironmentModel.GlobalRef.FloorNode;
447
      AnyRefNode &Ball = Main.Model.BodyModel.Left.Leg.Seg.Foot.HeelContactNode;
448
    };
449
    MeasureOrganizer = {1};  // Only the y coordinate
450
    DriverPos = {0.0};
451
    DriverVel = {0};
452
    Reaction.Type = {Off};  // Do not Provide ground reaction
453
  };  
454
  
455
  
456
  
457
  
458
  
459
  
460
  AnyVar Strength=2500;
461
  AnyVar FrictionStrength=400;
462
  
463
  AnyFolder HeelSupportLeft = {
464
    AnyComponentDefinition obj = {
465
      SubGroupRegexSearch = "([_[:alnum:]]+?)\.([_[:alnum:]]+?)";
466
      SubGroupRegexReplace = "$1";
467
    };  
468
    AnyFixedRefFrame &StartNode = Main.Model.EnvironmentModel.GlobalRef;
469
    AnyRefNode &EndNode = Main.Model.BodyModel.Left.Leg.Seg.Foot.HeelJoint;
470
    //The terms push and pull are determined wrt. the coordinate system of the StartNode!
471
    //StrenghtOfReactionsLin         = {XPush,XPull,YPush,YPull,ZPush,ZPull}
472
    AnyVector StrengthOfReactionsLin = {.FrictionStrength,.FrictionStrength,.Strength,.FrictionStrength,.FrictionStrength,.FrictionStrength}; //List of strengths for the linear muscles
473
    AnyFolder &DrawRef=Main.DrawSettings;
474
    AnyVar ScaleFactor=1;
475
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPush.any"
476
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPull.any"
477
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPush.any"
478
    //  #include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPull.any"
479
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPush.any" 
480
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPull.any" 
481
    
482
  };
483
  
484
  
485
  AnyFolder ToeSupportLeft = {
486
    AnyComponentDefinition obj = {
487
      SubGroupRegexSearch = "([_[:alnum:]]+?)\.([_[:alnum:]]+?)";
488
      SubGroupRegexReplace = "$1";
489
    };      
490
    AnyFixedRefFrame &StartNode = Main.Model.EnvironmentModel.GlobalRef;
491
    AnyRefNode &EndNode = Main.Model.BodyModel.Left.Leg.Seg.Foot.ToeJoint;
492
    
493
    //The terms push and pull are determined wrt. the coordinate system of the StartNode!
494
    //StrenghtOfReactionsLin         = {XPush,XPull,YPush,YPull,ZPush,ZPull}
495
    AnyVector StrengthOfReactionsLin = {.FrictionStrength,.FrictionStrength,.Strength,.FrictionStrength,.FrictionStrength,.FrictionStrength}; //List of strengths for the linear muscles
496
    AnyFolder &DrawRef=Main.DrawSettings;
497
    AnyVar ScaleFactor=1;
498
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPush.any"
499
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPull.any"
500
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPush.any"
501
    //#include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPull.any"
502
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPush.any" 
503
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPull.any" 
504
  };
505
  
506
  
507
  AnyFolder ToeSupportPosteriorLeft = {
508
    AnyComponentDefinition obj = {
509
      SubGroupRegexSearch = "([_[:alnum:]]+?)\.([_[:alnum:]]+?)";
510
      SubGroupRegexReplace = "$1";
511
    };      
512
    AnyFixedRefFrame &StartNode = Main.Model.EnvironmentModel.GlobalRef;
513
    AnyRefNode &EndNode = Main.Model.BodyModel.Left.Leg.Seg.Foot.ToeMedialContactNode;
514
    
515
    //The terms push and pull are determined wrt. the coordinate system of the StartNode!
516
    //StrenghtOfReactionsLin         = {XPush,XPull,YPush,YPull,ZPush,ZPull}
517
    AnyVector StrengthOfReactionsLin = {.FrictionStrength,.FrictionStrength,.Strength,.FrictionStrength,.FrictionStrength,.FrictionStrength}; //List of strengths for the linear muscles
518
    AnyFolder &DrawRef=Main.DrawSettings;
519
    AnyVar ScaleFactor=1;
520
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPush.any"
521
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPull.any"
522
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPush.any"
523
    //#include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPull.any"
524
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPush.any" 
525
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPull.any" 
526
  };
527
  
528
  
529
  
530
  
531
  AnyFolder HeelSupportRight = {
532
    AnyComponentDefinition obj = {
533
      SubGroupRegexSearch = "([_[:alnum:]]+?)\.([_[:alnum:]]+?)";
534
      SubGroupRegexReplace = "$1";
535
    };      
536
    AnyFixedRefFrame &StartNode = Main.Model.EnvironmentModel.GlobalRef;
537
    AnyRefNode &EndNode = Main.Model.BodyModel.Right.Leg.Seg.Foot.HeelJoint;
538
    //The terms push and pull are determined wrt. the coordinate system of the StartNode!
539
    //StrenghtOfReactionsLin         = {XPush,XPull,YPush,YPull,ZPush,ZPull}
540
    AnyVector StrengthOfReactionsLin = {.FrictionStrength,.FrictionStrength,.Strength,.FrictionStrength,.FrictionStrength,.FrictionStrength}; //List of strengths for the linear muscles
541
    AnyFolder &DrawRef=Main.DrawSettings;
542
    AnyVar ScaleFactor=1;
543
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPush.any"
544
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPull.any"
545
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPush.any"
546
    //#include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPull.any"
547
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPush.any" 
548
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPull.any" 
549
  };
550
  
551
  
552
  AnyFolder ToeSupportRight = {
553
    AnyComponentDefinition obj = {
554
      SubGroupRegexSearch = "([_[:alnum:]]+?)\.([_[:alnum:]]+?)";
555
      SubGroupRegexReplace = "$1";
556
    };      
557
    AnyFixedRefFrame &StartNode = Main.Model.EnvironmentModel.GlobalRef;
558
    AnyRefNode &EndNode = Main.Model.BodyModel.Right.Leg.Seg.Foot.ToeJoint;
559
    
560
    //The terms push and pull are determined wrt. the coordinate system of the StartNode!
561
    //StrenghtOfReactionsLin         = {XPush,XPull,YPush,YPull,ZPush,ZPull}
562
    AnyVector StrengthOfReactionsLin = {.FrictionStrength,.FrictionStrength,.Strength,.FrictionStrength,.FrictionStrength,.FrictionStrength}; //List of strengths for the linear muscles
563
    AnyFolder &DrawRef=Main.DrawSettings;
564
    AnyVar ScaleFactor=1;
565
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPush.any"
566
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPull.any"
567
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPush.any"
568
    //#include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPull.any"
569
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPush.any" 
570
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPull.any" 
571
  };
572
  
573
  
574
  
575
  AnyFolder ToeSupportPRight = {
576
    AnyComponentDefinition obj = {
577
      SubGroupRegexSearch = "([_[:alnum:]]+?)\.([_[:alnum:]]+?)";
578
      SubGroupRegexReplace = "$1";
579
    };      
580
    AnyFixedRefFrame &StartNode = Main.Model.EnvironmentModel.GlobalRef;
581
    AnyRefNode &EndNode = Main.Model.BodyModel.Right.Leg.Seg.Foot.ToeMedialContactNode;
582
    
583
    //The terms push and pull are determined wrt. the coordinate system of the StartNode!
584
    //StrenghtOfReactionsLin         = {XPush,XPull,YPush,YPull,ZPush,ZPull}
585
    AnyVector StrengthOfReactionsLin = {.FrictionStrength,.FrictionStrength,.Strength,.FrictionStrength,.FrictionStrength,.FrictionStrength}; //List of strengths for the linear muscles
586
    AnyFolder &DrawRef=Main.DrawSettings;
587
    AnyVar ScaleFactor=1;
588
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPush.any"
589
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPull.any"
590
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPush.any"
591
    //#include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPull.any"
592
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPush.any" 
593
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPull.any" 
594
  };
595
  
596
  
597
};
598