|
a |
|
b/leg/README.md |
|
|
1 |
# MyoLeg |
|
|
2 |
|
|
|
3 |
## General: |
|
|
4 |
|
|
|
5 |
The myoLeg mujoco musculoskeletal (MSK) models are generated with taking [Rajagopal's full body gait model](https://github.com/opensim-org/opensim-models/tree/master/Models/RajagopalModel) as close |
|
|
6 |
reference. |
|
|
7 |
|
|
|
8 |
These generated mujoco MSK models have almost identical kinematics, and very similar muscle kinematics (moment arms) and kinetic (forces) properties. |
|
|
9 |
|
|
|
10 |
|
|
|
11 |
## Conversion process: |
|
|
12 |
|
|
|
13 |
The myoLeg models were generated using our developed automatic conversion pipeline (will release at June 2023). |
|
|
14 |
|
|
|
15 |
Three Conversion steps were taken to generate the myoLeg models from the reference Osim model: |
|
|
16 |
|
|
|
17 |
1. Basic element conversion [bone meshes, joint definitions, muscle paths, wrapping objects] |
|
|
18 |
2. Moment arm optimization [matching the moment arm of each muscle by optimizing how muscles wrap over wrapping objects] |
|
|
19 |
3. Muscle force optimizaiton [matching the muscle force-length relationship by optimizing muscle parameters] |
|
|
20 |
|
|
|
21 |
After the conversion, a manual adjusting process is done to correct the abnormal results. |
|
|
22 |
|
|
|
23 |
## Maunal adjustment: |
|
|
24 |
|
|
|
25 |
1. Removed wrapping objects for glmax1_l, glmax2_l, glmax1_r, glmax2_r, psoas_l, and psoas_r muscles to avoid the wrapping path jumping. These wrapping objects are: |
|
|
26 |
- Gmax1_at_pelvis_l_wrap |
|
|
27 |
- Gmax2_at_pelvis_l_wrap |
|
|
28 |
- Gmax1_at_pelvis_r_wrap |
|
|
29 |
- Gmax2_at_pelvis_r_wrap |
|
|
30 |
- PS_at_brim_l_wrap |
|
|
31 |
- PS_at_brim_r_wrap |
|
|
32 |
|
|
|
33 |
2. Changed the wrapping objects from 'cylinder' to 'sphere' for iliacus_l and iliacus_r muscles to avoid the wrapping path jumping. These wrapping objects are: |
|
|
34 |
- IL_at_brim_l_wrap |
|
|
35 |
- IL_at_brim_r_wrap |
|
|
36 |
|
|
|
37 |
3. Adjusted the 'lmin' of gaslat_l, gaslat_r, semimem_l, and semimem_r muscles to avoid negative muscle forces. |
|
|
38 |
- changed from 0.1 to 0.05 |
|
|
39 |
|
|
|
40 |
4. Adjustments post conversion to optimize for kitnematic and dynamic behaviors |
|
|
41 |
5. Inertial properties |
|
|
42 |
6. Dynamics properties of the joints |
|
|
43 |
|
|
|
44 |
|
|
|
45 |
## Contact Geometries: |
|
|
46 |
|
|
|
47 |
The contact geometries take the well defined [Yeadon measurement method](https://yeadon.readthedocs.io/en/latest/measurements.html#measurements) as reference. Geometries are very close to the reference but slightly adjusted to fit our MKS mode. Contact properties were optimized for contact rich behaviors. |
|
|
48 |
|
|
|
49 |
|
|
|
50 |
## Issues: |
|
|
51 |
|
|
|
52 |
1. Endpoints (markers) below the knee joints have around 1 cm differences between the converted Mujoco and Osim model. |
|
|
53 |
- This may due to the constraints defined at the knee translation DoF. In Mujoco model, a polynomial function is used to approximate the Osim lookup table. Differences may generated. |
|
|
54 |
- Will look into this approximation to improve the accuracy. |
|
|
55 |
|
|
|
56 |
2. Muscle moment arms inside the reference Osim model contains sudden changes (muscle wrapping path jumping), which need to be corrected. |
|
|
57 |
- This is why the manual adjustment is needed |
|
|
58 |
|
|
|
59 |
3. Vastus muscle moment arms at the knee joint has relatively large differences (same sign, a few cm). |
|
|
60 |
- Need to check whether this is caused by the dependend joint constraints at knee. |
|
|
61 |
- This moment arm difference also affected the knee extenser muscle force, will look into in future. |
|
|
62 |
|
|
|
63 |
4. Muscle forces are not identical between the converted MuJoCo and Osim models, due to the difference in muscle model definitions (stiff vs elastic tendons). |
|
|
64 |
- Will investage to implement elastic tendon inside mujoco. |
|
|
65 |
|
|
|
66 |
## ChangeLog |
|
|
67 |
|
|
|
68 |
**myoleg_v0.51(mj120).mjb** |
|
|
69 |
- new keyposes added to mark convenient poses. |
|
|
70 |
|
|
|
71 |
**myoleg_v0.52(mj120).mjb** |
|
|
72 |
- Removing the extra body that made the torso twice as heavy. The body now is ~80 kgs. |
|
|
73 |
|
|
|
74 |
**myoleg_v0.53(mj120).mjb** |
|
|
75 |
- Improved collisions. Adding a height field. |
|
|
76 |
|
|
|
77 |
**myoleg_v0.56(mj237).mjb** |
|
|
78 |
- height field adjusted |
|
|
79 |
- moved to mujoco 2.3.7 |