Skip to content

Commit e853c08

Browse files
authored
Update muscle modelling lesson 6 tutorial (#9)
* Update muscle modelling lesson 6 tutorial * Update installation instructions for AnyPyTools library * Fix links * Update link to pixi package manager in contributing.md * ci: Allowed tagged link check to fail
1 parent 01247f2 commit e853c08

14 files changed

Lines changed: 374 additions & 190 deletions

File tree

.github/workflows/build.yaml

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -49,25 +49,12 @@ jobs:
4949
ref: ${{ needs.find-tag.outputs.latest-tag }}
5050

5151
- uses: prefix-dev/setup-pixi@v0.5.1
52-
continue-on-error: true
53-
id: pixisetup
5452
with:
5553
cache: true
5654
cache-write: ${{ github.event_name == 'push' && github.ref_name == 'master' }}
5755

58-
- if: steps.pixisetup.outcome == 'success'
59-
run: pixi run sphinx-build -M linkcheck . _build -W --keep-going -a -q
60-
61-
- name: Install mamba
62-
if: steps.pixisetup.outcome == 'failure'
63-
uses: mamba-org/setup-micromamba@v1
64-
with:
65-
environment-file: environment.yaml
66-
67-
- name: build with mamba
68-
if: steps.pixisetup.outcome == 'failure'
69-
shell: bash -leo pipefail {0} {0}
70-
run: sphinx-build -M linkcheck . _build -W --keep-going -a -q
56+
- run: pixi run sphinx-build -M linkcheck . _build -W --keep-going -a -q
57+
continue-on-error: true
7158

7259

7360

Muscle_modeling/Downloads/MuscleDemo.6.any

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,15 @@ Main = {
7373
AnyRevoluteJoint &Jnt = ..Jnts.Shoulder;
7474
DriverPos = {-1.7};
7575
DriverVel = {0.4};
76-
Reaction.Type = {0};
76+
Reaction.Type = {Off};
7777
}; // Shoulder driver
7878

7979
//---------------------------------
8080
AnyKinEqSimpleDriver ElbowMotion = {
8181
AnyRevoluteJoint &Jnt = ..Jnts.Elbow;
8282
DriverPos = {1.5};
8383
DriverVel = {0.7};
84-
Reaction.Type = {0};
84+
Reaction.Type = {Off};
8585
}; // Elbow driver
8686
}; // Driver folder
8787

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
// Demo example for general muscles.
2+
3+
Main = {
4+
5+
// The actual body model goes in this folder
6+
AnyFolder ArmModel = {
7+
8+
// Global Reference Frame
9+
AnyFixedRefFrame GlobalRef = {
10+
11+
AnyRefNode Shoulder = {
12+
sRel = {0,0,0};
13+
};
14+
}; // Global reference frame
15+
16+
// Segments
17+
AnyFolder Segs = {
18+
19+
AnySeg UpperArm = {
20+
r0 = {0,-0.15,0};
21+
Axes0 = {{0,1,0},{-1,0,0},{0,0,1}};
22+
Mass = 2.0;
23+
Jii = {0.002,0.005,0.005};
24+
AnyDrawSeg DrwSeg = {};
25+
AnyRefNode ShoulderNode = {
26+
sRel = {-0.2,0,0};
27+
};
28+
AnyRefNode ElbowNode = {
29+
sRel = {0.2,0,0};
30+
};
31+
}; // UpperArm
32+
33+
AnySeg LowerArm = {
34+
r0 = {0.25,-0.3,0};
35+
Mass = 2.0;
36+
Jii = {0.002,0.005,0.005};
37+
AnyRefNode ElbowNode = {
38+
sRel = {-0.2,0,0};
39+
};
40+
AnyRefNode HandNode = {
41+
sRel = {0.2,0,0};
42+
};
43+
AnyRefNode PalmNode = {
44+
sRel = {0.27,0,0};
45+
ARel = {{0,0,1},{0,1,0},{-1,0,0}};
46+
};
47+
AnyDrawSeg DrwSeg = {};
48+
}; // LowerArm
49+
50+
}; // Segs folder
51+
52+
AnyFolder Jnts = {
53+
54+
//---------------------------------
55+
AnyRevoluteJoint Shoulder = {
56+
Axis = z;
57+
AnyRefNode &GroundNode = ..GlobalRef.Shoulder;
58+
AnyRefNode &UpperArmNode = ..Segs.UpperArm.ShoulderNode;
59+
}; // Shoulder joint
60+
61+
AnyRevoluteJoint Elbow = {
62+
Axis = z;
63+
AnyRefNode &UpperArmNode = ..Segs.UpperArm.ElbowNode;
64+
AnyRefNode &LowerArmNode = ..Segs.LowerArm.ElbowNode;
65+
}; // Elbow joint
66+
67+
}; // Jnts folder
68+
69+
70+
AnyKinLinear HandPos = {
71+
AnyRefFrame &ref1 = .GlobalRef.Shoulder;
72+
AnyRefFrame &ref2 = .Segs.LowerArm.PalmNode;
73+
};
74+
75+
AnyFolder Drivers = {
76+
AnyKinEqSimpleDriver HandDriver = {
77+
AnyKinLinear &Measure = ..HandPos;
78+
MeasureOrganizer = {0,1};
79+
DriverPos = {0.45, -0.6};
80+
DriverVel = {0, 0.5};
81+
Reaction.Type = {Off, Off};
82+
};
83+
/*
84+
//---------------------------------
85+
AnyKinEqSimpleDriver ShoulderMotion = {
86+
AnyRevoluteJoint &Jnt = ..Jnts.Shoulder;
87+
DriverPos = {-1.7};
88+
DriverVel = {0.4};
89+
Reaction.Type = {0};
90+
}; // Shoulder driver
91+
92+
//---------------------------------
93+
AnyKinEqSimpleDriver ElbowMotion = {
94+
AnyRevoluteJoint &Jnt = ..Jnts.Elbow;
95+
DriverPos = {1.5};
96+
DriverVel = {0.7};
97+
Reaction.Type = {0};
98+
}; // Elbow driver
99+
100+
*/
101+
102+
}; // Driver folder
103+
104+
105+
AnyRecruitedActuator WallReaction = {
106+
Type = NonNegative;
107+
Volume = 1e-6; // Ignore this value. Only used in special volume weighted recruitement
108+
Strength = 10000;
109+
AnyKinMeasureOrg Org = {
110+
AnyKinMeasure &wall = ..HandPos;
111+
MeasureOrganizer = {0};
112+
};
113+
};
114+
115+
AnyMuscleModel MusModel = {
116+
F0 = 100.0;
117+
};
118+
119+
AnyMuscleGeneric ShoulderTorque =
120+
{
121+
//viewForce.Visible = Off;
122+
Type = NonNegative;
123+
AnyMuscleModel &Model = .MusModel;
124+
AnyKinMeasure &Angle = .Jnts.Shoulder;
125+
};
126+
127+
AnyMuscleGeneric ElbowTorque =
128+
{
129+
//viewForce.Visible = Off;
130+
Type = NonNegative;
131+
AnyMuscleModel &Model = .MusModel;
132+
AnyKinMeasure &Angle = .Jnts.Elbow;
133+
};
134+
AnyFolder Loads = {
135+
136+
//---------------------------------
137+
AnyForce3D Dumbbell = {
138+
AnyRefNode &PalmNode = ..Segs.LowerArm.PalmNode;
139+
F = {0,-100,0}; // Force in Newton
140+
};
141+
}; // Loads folder
142+
143+
// Todo. Add the model elements such as
144+
// segments, joints, and muscles here.
145+
146+
}; // ArmModel
147+
148+
// The study: Operations to be performed on the model
149+
AnyBodyStudy ArmStudy = {
150+
AnyFolder &Model = .ArmModel;
151+
// InverseDynamics.Criterion.Type = MR_MinMaxStrict;
152+
InverseDynamics.Criterion.Type = MR_Quadratic;
153+
Gravity = {0.0, -9.81, 0.0};
154+
};
155+
156+
}; // Main
11.3 KB
Loading
145 KB
Loading
-14.8 KB
Binary file not shown.
94.2 KB
Loading
13.3 KB
Loading
13.4 KB
Loading
15.2 KB
Loading

0 commit comments

Comments
 (0)