1
1
/**
2
- File: Demo.Arm2D.any
3
-
4
- Copyright (c) 1999-2011, AnyBody Technology A/S
5
-
6
- All rights reserved.
7
-
8
-
9
-
10
2
This is a demonstration of a simple arm model comprising
11
3
two degrees of freedom and a selected number of muscles.
12
4
Features in this model are
13
5
14
- - definition of muscles
15
- - application of muscle recruitment analysis in
16
- the AnyBodyStudy
17
- - redundancy of the muscle configuration
18
6
7
+ * definition of muscles
8
+ * application of muscle recruitment analysis in the AnyBodyStudy</li>
9
+ * redundancy of the muscle configuration</li>
19
10
20
11
The file has the following sections:
21
- - The Arm Model
22
- - Reference frames
23
- - Segments
24
- - Joints
25
- - Drivers
26
- - Loads
27
- - Muscles
28
- - "The body study"
12
+
13
+ * The Arm Model
14
+
15
+ * Reference frames
16
+ * Segments
17
+ * Joints
18
+ * Drivers
19
+ * Loads
20
+ * Muscles
21
+
22
+ * "The body study"
29
23
30
24
Notice that all these section could be separate files
31
25
that are assemble in a single main file by #include
32
26
statements. All include statements must be inside the
33
- " Main = {};" statement in this main file.
27
+ `` Main = {};`` statement in this main file.
34
28
35
29
*/
36
30
Main = {
31
+
32
+
33
+ // Control if the external load is applied
34
+ #ifndef CONFIG
35
+ #define CONFIG "Loaded"
36
+ #endif
37
+
38
+ AnyFolder InputVariables = {
39
+ AnyVar MassArm ??= DesignVar(2);
40
+ AnyString Configuration = CONFIG;
41
+ };
37
42
38
-
43
+ ArmModelStudy = {
44
+ AnyFolder OutputVariables =
45
+ {
46
+ AnyVar DeltodeusA = Main.ArmModel.Muscles.DeltodeusA.Activity;
47
+ AnyVar DeltodeusB = Main.ArmModel.Muscles.DeltodeusB.Activity;
48
+ AnyVar Brachialis = Main.ArmModel.Muscles.Brachialis.Activity;
49
+ AnyVar Brachioralis = Main.ArmModel.Muscles.Brachioralis.Activity;
50
+ AnyVar BicepsShort = Main.ArmModel.Muscles.BicepsShort.Activity;
51
+ AnyVar BicepsLong = Main.ArmModel.Muscles.BicepsLong.Activity;
52
+ };
53
+ };
39
54
40
-
55
+
41
56
// =======================================================
42
57
// The Arm Model
43
58
// =======================================================
@@ -67,7 +82,7 @@ AnyFolder ArmModel = {
67
82
AnySeg UpperArm = {
68
83
r0 = {0,0,-0.2};
69
84
Axes0 = {{0,0,1},{0,1,0},{-1,0,0}};
70
- Mass = 2.0 ;
85
+ Mass = Main.InputVariables.MassArm ;
71
86
Jii = {0.005,0.01,0.01};
72
87
AnyRefNode ShoulderNode = {
73
88
sRel = {-0.2,0,0};
@@ -82,14 +97,16 @@ AnyFolder ArmModel = {
82
97
AnyRefNode Brachioradialis = { sRel = {0.05,0,0}; };
83
98
AnyRefNode TricepsShort = { sRel = {-0.1,0,0}; };
84
99
85
- AnyDrawSeg DrwSeg= {};
100
+ viewRefFrame.Visible = On;
101
+ viewInertia.Visible = On;
102
+ viewNodes.Visible = On;
86
103
};
87
104
88
105
//---------------------------------
89
106
AnySeg LowerArm = {
90
107
r0 = {0.2,0,-0.4};
91
- Mass = Main.InputVariables.MassArm ;
92
- Jii = {0.005,0.01,0.01};
108
+ Mass = 1.5 ;
109
+ Jii = Mass* {0.005,0.01,0.01};
93
110
AnyRefNode ElbowNode = {
94
111
sRel = {-0.2,0,0};
95
112
};
@@ -102,7 +119,9 @@ AnyFolder ArmModel = {
102
119
AnyRefNode Biceps = { sRel = {-0.15,0,0}; };
103
120
AnyRefNode Triceps = { sRel = {-0.25,0,-0.05}; };
104
121
105
- AnyDrawSeg DrwSeg= {};
122
+ viewRefFrame.Visible = On;
123
+ viewInertia.Visible = On;
124
+ viewNodes.Visible = On;
106
125
};
107
126
108
127
};
@@ -174,15 +193,22 @@ AnyFolder ArmModel = {
174
193
AnyFolder Loads = {
175
194
176
195
//---------------------------------
196
+ #if CONFIG == "Loaded"
177
197
AnyForce3D HandLoad = {
178
198
AnyRefNode &HandNode = ..Segs.LowerArm.HandNode;
179
199
F = {0,0,-100}; // Global force in Newton
200
+ viewForce.Visible = On;
201
+
202
+
203
+ AnyFloat FoutTest = Fout;
180
204
};
205
+ #endif
181
206
182
207
//---------------------------------
183
208
AnyForce ElbowTorque = {
184
209
AnyJoint& Jnt = ..Jnts.Elbow;
185
210
F = {10}; // Force, equivalent to torque in Newton
211
+ viewForce.Visible = On;
186
212
};
187
213
188
214
@@ -198,100 +224,113 @@ AnyFolder ArmModel = {
198
224
// We define one simple muscle model, which we will use
199
225
// use for all muscles
200
226
AnyMuscleModel MusMdl = {
201
- F0 = 300 ;
227
+ F0 = 3000 ;
202
228
};
203
229
204
230
//---------------------------------
205
- AnyViaPointMuscle DeltodeusA = {
231
+ AnyMuscleViaPoint DeltodeusA = {
206
232
AnyMuscleModel &MusMdl = .MusMdl;
207
233
AnyRefNode &Org = Main.ArmModel.GlobalRef.DeltodeusA;
208
234
AnyRefNode &Ins = ..Segs.UpperArm.DeltodeusA;
209
- AnyDrawMuscle DrwMus = {
235
+ viewMuscle = {
236
+ Visible = On;
210
237
RGB = {149/256,51/256,55/256};
211
238
Bulging =1.0;
212
239
ColorScale =1.0;
213
240
RGBColorScale = {0.957031, 0.785156, 0.785156};
214
241
MaxStress = 50000; //N/m^2 //This number is for graphics only!
215
242
};
243
+
216
244
};
217
245
218
246
//---------------------------------
219
- AnyViaPointMuscle DeltodeusB = {
247
+ AnyMuscleViaPoint DeltodeusB = {
220
248
AnyMuscleModel &MusMdl = .MusMdl;
221
249
AnyRefNode &Org = Main.ArmModel.GlobalRef.DeltodeusB;
222
250
AnyRefNode &Ins = ..Segs.UpperArm.DeltodeusB;
223
- AnyDrawMuscle DrwMus = {
251
+ viewMuscle = {
252
+ Visible = On;
224
253
RGB = {149/256,51/256,55/256};
225
254
Bulging =1.0;
226
255
ColorScale =1.0;
227
256
RGBColorScale = {0.957031, 0.785156, 0.785156};
228
257
MaxStress = 50000; //N/m^2 //This number is for graphics only!
229
258
};
259
+
230
260
};
231
261
232
262
233
263
//---------------------------------
234
- AnyViaPointMuscle Brachialis = {
264
+ AnyMuscleViaPoint Brachialis = {
235
265
AnyMuscleModel &MusMdl = .MusMdl;
236
266
AnyRefNode &Org = ..Segs.UpperArm.Brachialis;
237
267
AnyRefNode &Ins = ..Segs.LowerArm.Brachialis;
238
- AnyDrawMuscle DrwMus = {
268
+ viewMuscle = {
269
+ Visible = On;
239
270
RGB = {149/256,51/256,55/256};
240
271
Bulging =1.0;
241
272
ColorScale =1.0;
242
273
RGBColorScale = {0.957031, 0.785156, 0.785156};
243
274
MaxStress = 50000; //N/m^2 //This number is for graphics only!
244
275
};
276
+
245
277
};
246
278
247
279
//---------------------------------
248
- AnyViaPointMuscle Brachioralis = {
280
+ AnyMuscleViaPoint Brachioralis = {
249
281
AnyMuscleModel &MusMdl = .MusMdl;
250
282
AnyRefNode &Org = ..Segs.UpperArm.Brachioradialis;
251
283
AnyRefNode &Ins = ..Segs.LowerArm.Brachioradialis;
252
- AnyDrawMuscle DrwMus = {
284
+ viewMuscle = {
285
+ Visible = On;
253
286
RGB = {149/256,51/256,55/256};
254
287
Bulging =1.0;
255
288
ColorScale =1.0;
256
289
RGBColorScale = {0.957031, 0.785156, 0.785156};
257
290
MaxStress = 50000; //N/m^2 //This number is for graphics only!
258
291
};
292
+
259
293
};
260
294
261
295
//---------------------------------
262
- AnyViaPointMuscle BicepsShort = {
296
+ AnyMuscleViaPoint BicepsShort = {
263
297
AnyMuscleModel &MusMdl = .MusMdl;
264
298
AnyRefNode &Org = ..Segs.UpperArm.BicepsShort;
265
299
AnyRefNode &Ins = ..Segs.LowerArm.Biceps;
266
- AnyDrawMuscle DrwMus = {
300
+ viewMuscle = {
301
+ Visible = On;
267
302
RGB = {149/256,51/256,55/256};
268
303
Bulging =1.0;
269
304
ColorScale =1.0;
270
305
RGBColorScale = {0.957031, 0.785156, 0.785156};
271
306
MaxStress = 50000; //N/m^2 //This number is for graphics only!
272
307
};
308
+
273
309
};
274
310
275
311
//---------------------------------
276
- AnyViaPointMuscle TricepsShort = {
312
+ AnyMuscleViaPoint TricepsShort = {
277
313
AnyMuscleModel &MusMdl = .MusMdl;
278
314
AnyRefNode &Org = ..Segs.UpperArm.TricepsShort;
279
315
AnyRefNode &Ins = ..Segs.LowerArm.Triceps;
280
- AnyDrawMuscle DrwMus = {
316
+ viewMuscle = {
317
+ Visible = On;
281
318
RGB = {149/256,51/256,55/256};
282
319
Bulging =1.0;
283
320
ColorScale =1.0;
284
321
RGBColorScale = {0.957031, 0.785156, 0.785156};
285
322
MaxStress = 50000; //N/m^2 //This number is for graphics only!
286
323
};
324
+
287
325
};
288
326
289
327
//---------------------------------
290
- AnyViaPointMuscle BicepsLong = {
328
+ AnyMuscleViaPoint BicepsLong = {
291
329
AnyMuscleModel &MusMdl = .MusMdl;
292
330
AnyRefNode &Org = Main.ArmModel.GlobalRef.BicepsLong;
293
331
AnyRefNode &Ins = ..Segs.LowerArm.Biceps;
294
- AnyDrawMuscle DrwMus = {
332
+ viewMuscle = {
333
+ Visible = On;
295
334
RGB = {149/256,51/256,55/256};
296
335
Bulging =1.0;
297
336
ColorScale =1.0;
@@ -301,11 +340,12 @@ AnyFolder ArmModel = {
301
340
};
302
341
303
342
//---------------------------------
304
- AnyViaPointMuscle TricepsLong = {
343
+ AnyMuscleViaPoint TricepsLong = {
305
344
AnyMuscleModel &MusMdl = .MusMdl;
306
345
AnyRefNode &Org = Main.ArmModel.GlobalRef.TricepsLong;
307
346
AnyRefNode &Ins = ..Segs.LowerArm.Triceps;
308
- AnyDrawMuscle DrwMus = {
347
+ viewMuscle = {
348
+ Visible = On;
309
349
RGB = {149/256,51/256,55/256};
310
350
Bulging =1.0;
311
351
ColorScale =1.0;
@@ -322,26 +362,10 @@ AnyFolder ArmModel = {
322
362
// =======================================================
323
363
// "The body study"
324
364
// =======================================================
325
- AnyBodyStudy Study = {
365
+ AnyBodyStudy ArmModelStudy = {
326
366
AnyFolder& Model = Main.ArmModel;
327
367
Gravity = {0,0,-9.81};
328
- nStep = 40;
329
-
330
- AnyOutputFile FileOutput = {
331
- // Write output to a csv file with the number of steps in filename
332
- FileName = "Output/TestOutput_"+ANYBODY_NAME_MAINFILEDIR+ ".csv";
333
- Header = {
334
- TitleSectionOnOff = Off;
335
- ConstSectionOnOff = Off;
336
- VarSectionOnOff = Off;
337
- ColumnNamesOnOff = On;
338
- };
339
- AnyFloat MaxMusAct = .MaxMuscleActivity;
340
- AnyFloat ElbowAngle = .Model.Drivers.ElbowMotion.Pos;
341
- AnyFloat BicepsLong = .Model.Muscles.BicepsLong.Activity;
342
- };
343
-
344
-
368
+
345
369
};
346
370
347
371
0 commit comments