Switch to unified view

a b/Application/Examples/FreePosture/Model/InterpolationFunctions.any
1
2
3
AnyFolder InterpolationFunctions = {
4
  
5
  // Aliases for convenient referencing
6
  AnyFolder &JntPos=.Posture;  
7
  AnyFolder &Thorax = ...HumanModel.BodyModel.Trunk.SegmentsThorax.ThoraxSeg;
8
 
9
  // ************************************
10
  // Functions for attaching the pelvis to the global reference system
11
  // ************************************  
12
  
13
  AnyFunInterpol PelvisGroundFunction ={
14
    
15
    Data={
16
      .JntPos.PelvisPosXVec,
17
      .JntPos.PelvisPosYVec,
18
      .JntPos.PelvisPosZVec,
19
      pi/180*.JntPos.PelvisRotZVec,
20
      pi/180*.JntPos.PelvisRotYVec,
21
      pi/180*.JntPos.PelvisRotXVec
22
    };
23
    T=.JntPos.PelvisPosTime;
24
    Type=Bspline;
25
  };
26
  
27
  
28
  // ************************************
29
  // Functions for the spine
30
  // ************************************
31
  
32
  //Neck Function 
33
  AnyFunInterpol NeckFunction = {
34
    Data = pi/180*{
35
      .JntPos.NeckLateralBendingVec, 
36
      .JntPos.NeckAxialRotationVec,
37
      .JntPos.NeckExtensionVec 
38
    };
39
    T=.JntPos.NeckTime;
40
    Type=Bspline;
41
  };
42
  
43
  //Thorax pelvis rotation Function
44
  AnyFunInterpol PostureFunction = {
45
    Data = pi/180*{
46
      .JntPos.PelvisThoraxLateralBendingVec,
47
      .JntPos.PelvisThoraxRotationVec,
48
      .JntPos.PelvisThoraxExtensionVec
49
    };
50
    T=.JntPos.PelvisThoraxTime;
51
    Type=Bspline;
52
  };  
53
  
54
  // ************************************
55
  // Functions for the right arm
56
  // ************************************
57
  
58
  //Sterno clavicular joint Function
59
  AnyFunInterpol SCFunctionRight ={
60
    Data = pi/180*{
61
      .JntPos.Right.SternoClavicularProtractionVec,
62
      .JntPos.Right.SternoClavicularElevationVec
63
    };
64
    T=.JntPos.Right.SternoClavicularTime;
65
    Type=Bspline;
66
  };
67
  
68
  //Glenohumeral joint 
69
  AnyFunInterpol GHFunctionRight={
70
    Data=pi/180*{
71
      .JntPos.Right.GlenohumeralAbductionVec,  //GH joint
72
      .JntPos.Right.GlenohumeralFlexionVec,  //GH joint
73
      .JntPos.Right.GlenohumeralExternalRotationVec //GH joint
74
    };
75
    T=.JntPos.Right.GlenohumeralTime;
76
    Type=Bspline;
77
  };
78
  
79
  //Elbow flexion Function  
80
  AnyFunInterpol ElbowFlexionFunctionRight={
81
    Data=pi/180*{.JntPos.Right.ElbowFlexionVec};  
82
    T=.JntPos.Right.ElbowFlexionTime;
83
    Type=Bspline;
84
  };
85
  
86
  //Elbow pronation Function
87
  AnyFunInterpol ElbowPronationFunctionRight={
88
    Data = pi/180*{.JntPos.Right.ElbowPronationVec };  
89
    T=.JntPos.Right.ElbowPronationTime;
90
    Type=Bspline;
91
  };
92
  
93
  //Wrist Function 
94
  AnyFunInterpol WristFunctionRight ={
95
    Data = pi/180*{
96
      .JntPos.Right.WristFlexionVec,
97
      .JntPos.Right.WristAbductionVec
98
    };
99
    T=.JntPos.Right.WristTime;
100
    Type=Bspline;
101
  };
102
  
103
  // ************************************
104
  // Functions for the left arm
105
  // ************************************
106
  
107
  //Sterno clavicular joint Function
108
  AnyFunInterpol SCFunctionLeft ={
109
    Data = pi/180*{
110
      .JntPos.Left.SternoClavicularProtractionVec,
111
      .JntPos.Left.SternoClavicularElevationVec
112
    };
113
    T=.JntPos.Left.SternoClavicularTime;
114
    Type=Bspline;
115
  };
116
  
117
  //Glenohumeral joint Function
118
  AnyFunInterpol GHFunctionLeft={
119
    Data=pi/180*{
120
      .JntPos.Left.GlenohumeralAbductionVec,  //GH joint
121
      .JntPos.Left.GlenohumeralFlexionVec,  //GH joint
122
      .JntPos.Left.GlenohumeralExternalRotationVec  //GH joint
123
    };    
124
    T=.JntPos.Left.GlenohumeralTime;
125
    Type=Bspline;
126
  };
127
  
128
  //Elbow flexion Function
129
  AnyFunInterpol ElbowFEFunctionLeft={
130
    Data=pi/180*{.JntPos.Left.ElbowFlexionVec};  
131
    T=.JntPos.Left.ElbowFlexionTime;
132
    Type=Bspline;
133
  };
134
  
135
  //Elbow pronation Function 
136
  AnyFunInterpol ElbowPSFunctionLeft={
137
    Data= pi/180*{.JntPos.Left.ElbowPronationVec };  
138
    T=.JntPos.Left.ElbowPronationTime;
139
    Type=Bspline;
140
  };
141
  
142
  //Wrist Function
143
  AnyFunInterpol WristFunctionLeft = {
144
    Data = pi/180*{
145
      .JntPos.Left.WristFlexionVec,
146
      .JntPos.Left.WristAbductionVec};
147
    T=.JntPos.Left.WristTime;
148
    Type=Bspline;
149
  };
150
  
151
  // ************************************
152
  // Functions for the right leg
153
  // ************************************
154
  
155
  //Hip Function 
156
  AnyFunInterpol HipFunctionRight={
157
    Data= pi/180*{
158
      .JntPos.Right.HipFlexionVec,
159
      .JntPos.Right.HipExternalRotationVec,
160
      .JntPos.Right.HipAbductionVec
161
    };    
162
    T=.JntPos.Left.HipTime;
163
    Type=Bspline;
164
  };
165
  
166
  //Knee Function
167
  AnyFunInterpol KneeFunctionRight={
168
    Data=pi/180*{.JntPos.Right.KneeFlexionVec};  
169
    T=.JntPos.Left.KneeTime;
170
    Type=Bspline;
171
  };
172
  
173
  //Ankle Function
174
  AnyFunInterpol AnkleFunctionRight={
175
    Data = pi/180*{.JntPos.Right.AnklePlantarFlexionVec,.JntPos.Right.SubTalarEversionVec};  
176
    T=.JntPos.Left.AnkleTime;
177
    Type=Bspline;
178
  };
179
  
180
  // ************************************
181
  // Functions for the Left leg
182
  // ************************************
183
  
184
  //Left hip Function
185
  AnyFunInterpol HipFunctionLeft={
186
    Data=pi/180*{
187
      .JntPos.Left.HipFlexionVec,
188
      .JntPos.Left.HipExternalRotationVec,
189
      .JntPos.Left.HipAbductionVec
190
    };    
191
    T=.JntPos.Left.HipTime;
192
    Type=Bspline;
193
  };
194
  
195
  //Knee Function
196
  AnyFunInterpol KneeFunctionLeft={
197
    Data=pi/180*{.JntPos.Left.KneeFlexionVec};  
198
    T=.JntPos.Left.KneeTime;
199
    Type=Bspline;
200
  };
201
  
202
  //Ankle Function
203
  AnyFunInterpol AnkleFunctionLeft={
204
    Data = pi/180*{.JntPos.Left.AnklePlantarFlexionVec,.JntPos.Left.SubTalarEversionVec};  
205
    T=.JntPos.Left.AnkleTime;
206
    Type=Bspline;
207
  };
208
209
// ************************************
210
// Drivers for the right fingers
211
// ************************************
212
AnyFolder Right ={
213
214
//finger1
215
AnyFunInterpol CMC1Flexion={
216
  Data= {..JntPos.Right.Finger1.CMCFlexionVec}*pi/180;  
217
  T=..JntPos.Right.Finger1.FingerTime;
218
  Type=Bspline;
219
};
220
221
AnyFunInterpol  CMC1Abduction={
222
  Data={..JntPos.Right.Finger1.CMCDeviationVec}*pi/180;  
223
  T=..JntPos.Right.Finger1.FingerTime;
224
  Type=Bspline;
225
};
226
227
228
AnyFunInterpol  MCP1Flexion={
229
  Data={..JntPos.Right.Finger1.MCPFlexionVec}*pi/180;
230
  T=..JntPos.Right.Finger1.FingerTime;
231
  Type=Bspline;
232
};
233
AnyFunInterpol  MCP1Abduction={
234
  Data={..JntPos.Right.Finger1.MCPDeviationVec}*pi/180;
235
  T=..JntPos.Right.Finger1.FingerTime;
236
  Type=Bspline;
237
};
238
239
AnyFunInterpol  DIP1={
240
  Data={..JntPos.Right.Finger1.DIPFlexionVec}*pi/180;  
241
   T=..JntPos.Right.Finger1.FingerTime; 
242
  Type=Bspline;
243
};
244
245
AnyFunInterpol  MCP2={
246
  Data={..JntPos.Right.Finger2.MCPFlexionVec}*pi/180;  
247
  T=..JntPos.Right.Finger2.FingerTime;
248
  Type=Bspline;
249
};  
250
AnyFunInterpol  PIP2={
251
  Data={..JntPos.Right.Finger2.PIPFlexionVec}*pi/180;  
252
  T=..JntPos.Right.Finger2.FingerTime;
253
  Type=Bspline;
254
};
255
AnyFunInterpol  DIP2={
256
  Data={..JntPos.Right.Finger2.DIPFlexionVec}*pi/180;  
257
  T=..JntPos.Right.Finger2.FingerTime;
258
  Type=Bspline;
259
};
260
261
262
AnyFunInterpol  MCP3={
263
  Data={..JntPos.Right.Finger3.MCPFlexionVec}*pi/180;  
264
  T=..JntPos.Right.Finger3.FingerTime;
265
  Type=Bspline;
266
};  
267
AnyFunInterpol  PIP3={
268
  Data={..JntPos.Right.Finger3.PIPFlexionVec}*pi/180;  
269
  T=..JntPos.Right.Finger3.FingerTime;
270
  Type=Bspline;
271
};
272
AnyFunInterpol  DIP3={
273
  Data={..JntPos.Right.Finger3.DIPFlexionVec}*pi/180;  
274
  T=..JntPos.Right.Finger3.FingerTime;
275
  Type=Bspline;
276
};
277
278
279
AnyFunInterpol  MCP4={
280
  Data={..JntPos.Right.Finger4.MCPFlexionVec}*pi/180;  
281
  T=..JntPos.Right.Finger4.FingerTime;
282
  Type=Bspline;
283
};  
284
AnyFunInterpol  PIP4={
285
  Data={..JntPos.Right.Finger4.PIPFlexionVec}*pi/180;  
286
  T=..JntPos.Right.Finger4.FingerTime;
287
  Type=Bspline;
288
};
289
AnyFunInterpol  DIP4={
290
  Data={..JntPos.Right.Finger4.DIPFlexionVec}*pi/180;  
291
  T=..JntPos.Right.Finger4.FingerTime;
292
  Type=Bspline;
293
};
294
295
AnyFunInterpol  MCP5={
296
  Data={..JntPos.Right.Finger5.MCPFlexionVec}*pi/180;  
297
  T=..JntPos.Right.Finger5.FingerTime;
298
  Type=Bspline;
299
};  
300
AnyFunInterpol  PIP5={
301
  Data={..JntPos.Right.Finger5.PIPFlexionVec}*pi/180;  
302
  T=..JntPos.Right.Finger5.FingerTime;
303
  Type=Bspline;
304
};
305
AnyFunInterpol  DIP5={
306
  Data={..JntPos.Right.Finger5.DIPFlexionVec}*pi/180;  
307
  T=..JntPos.Right.Finger5.FingerTime;
308
  Type=Bspline;
309
};
310
};
311
312
// ************************************
313
// Drivers for the Left fingers
314
// ************************************
315
AnyFolder Left ={
316
//finger1
317
AnyFunInterpol CMC1Flexion={
318
  Data= {..JntPos.Left.Finger1.CMCFlexionVec}*pi/180;  
319
  T=..JntPos.Left.Finger1.FingerTime;
320
  Type=Bspline;
321
};
322
323
AnyFunInterpol  CMC1Abduction={
324
  Data={..JntPos.Left.Finger1.CMCDeviationVec}*pi/180;  
325
  T=..JntPos.Left.Finger1.FingerTime;
326
  Type=Bspline;
327
};
328
329
330
AnyFunInterpol  MCP1Flexion={
331
  Data={..JntPos.Left.Finger1.MCPFlexionVec}*pi/180;
332
  T=..JntPos.Left.Finger1.FingerTime;
333
  Type=Bspline;
334
};
335
336
AnyFunInterpol  MCP1Abduction={
337
  Data={..JntPos.Left.Finger1.MCPDeviationVec}*pi/180;
338
  T=..JntPos.Right.Finger1.FingerTime;
339
  Type=Bspline;
340
};
341
342
AnyFunInterpol  DIP1={
343
  Data={..JntPos.Left.Finger1.DIPFlexionVec}*pi/180;  
344
   T=..JntPos.Left.Finger1.FingerTime; 
345
  Type=Bspline;
346
};
347
348
AnyFunInterpol  MCP2={
349
  Data={..JntPos.Left.Finger2.MCPFlexionVec}*pi/180;  
350
  T=..JntPos.Left.Finger2.FingerTime;
351
  Type=Bspline;
352
};  
353
AnyFunInterpol  PIP2={
354
  Data={..JntPos.Left.Finger2.PIPFlexionVec}*pi/180;  
355
  T=..JntPos.Left.Finger2.FingerTime;
356
  Type=Bspline;
357
};
358
AnyFunInterpol  DIP2={
359
  Data={..JntPos.Left.Finger2.DIPFlexionVec}*pi/180;  
360
  T=..JntPos.Left.Finger2.FingerTime;
361
  Type=Bspline;
362
};
363
364
365
AnyFunInterpol  MCP3={
366
  Data={..JntPos.Left.Finger3.MCPFlexionVec}*pi/180;  
367
  T=..JntPos.Left.Finger3.FingerTime;
368
  Type=Bspline;
369
};  
370
AnyFunInterpol  PIP3={
371
  Data={..JntPos.Left.Finger3.PIPFlexionVec}*pi/180;  
372
  T=..JntPos.Left.Finger3.FingerTime;
373
  Type=Bspline;
374
};
375
AnyFunInterpol  DIP3={
376
  Data={..JntPos.Left.Finger3.DIPFlexionVec}*pi/180;  
377
  T=..JntPos.Left.Finger3.FingerTime;
378
  Type=Bspline;
379
};
380
381
382
AnyFunInterpol  MCP4={
383
  Data={..JntPos.Left.Finger4.MCPFlexionVec}*pi/180;  
384
  T=..JntPos.Left.Finger4.FingerTime;
385
  Type=Bspline;
386
};  
387
AnyFunInterpol  PIP4={
388
  Data={..JntPos.Left.Finger4.PIPFlexionVec}*pi/180;  
389
  T=..JntPos.Left.Finger4.FingerTime;
390
  Type=Bspline;
391
};
392
AnyFunInterpol  DIP4={
393
 Data={..JntPos.Left.Finger4.DIPFlexionVec}*pi/180;  
394
  T=..JntPos.Left.Finger4.FingerTime;
395
  Type=Bspline;
396
};
397
398
AnyFunInterpol  MCP5={
399
  Data={..JntPos.Left.Finger5.MCPFlexionVec}*pi/180;  
400
  T=..JntPos.Left.Finger5.FingerTime;
401
  Type=Bspline;
402
};  
403
AnyFunInterpol  PIP5={
404
  Data={..JntPos.Left.Finger5.PIPFlexionVec}*pi/180;  
405
  T=..JntPos.Left.Finger5.FingerTime;
406
  Type=Bspline;
407
};
408
AnyFunInterpol  DIP5={
409
  Data={..JntPos.Left.Finger5.DIPFlexionVec}*pi/180;  
410
  T=..JntPos.Left.Finger5.FingerTime;
411
  Type=Bspline;
412
};
413
414
415
416
417
418
};
419
420
};//Functions
421