Models and tasks are the most important aspects of Myosuite. To provide further,
MyoSuite consists of five models: :ref:`myoFinger`, :ref:`myoElbow`, :ref:`myoHand`, :ref:`myoArm` and :ref:`myoLeg`. Using these models, we design a rich collection of tasks ranging across simple reaching movements, contact-rich movements involving object-manipulation such as pen-twirling and baoding balls, as well as locomotion behaviors.
Simplified and intuitive model (based on Xu et al. (2012)[https://ieeexplore.ieee.org/document/6290710]) of a 4 Degree of Freedom (DoF) finger which is actuated through a series of 5 simplified antagonistic muscle-tendon units. We also provide its robotic counterpart with simple torque actuators to facilitate the comparative investigation.
Details of this model can be found at myoFinger
Acronym | Muscle |
---|---|
EXTN | Central Extensor |
adabR | Abduction Tendon(Right) |
adabL | Abduction Tendon(left) |
mflx | Pip Flexor |
dflx | DIP Flexor |
A model of 2 DoF human elbow joint -- based on OpenSim’s default testing arm model (Delp et al. (2007); Seth et al. (2018)) -- and actuated using multiple agonist/antagonist pairs (3 flexors and 3 extensors).
Details of this model can be found at myoElbow
Acronym | Muscle |
---|---|
TRIlong | Triceps long |
TRIlat | Triceps lateral |
TRImed | Triceps medial |
BIClong | Biceps long |
BICshort | Biceps short |
BRA | Brachioradialis |
The dexterous human hand requires coordination of multiple highly redundant muscles, which have complementary and antagonistic effects on various joints. This musculoskeletal model is comprised of 29 bones, 23 joints, and 39 muscles-tendon units.
Details of this model can be found at myoHand
Acronym | Muscle |
---|---|
ECRL | Extensor Carpis Radialis Longus |
ECRB | Extensor Carpis Radialis Brevis |
ECU | Extensor Carpi Ulnaris |
FCR | Flexor Carpi Radialis |
FCU | Flexor Carpi Ulnaris |
PL | Palmaris longus |
PT | Pronator teres |
PQ | Pronator |
EIP | Extensor Indicis Proprius |
EPL | Extensor Pollicis Longus |
EPB | Extensor Pollicis Brevis |
FPL | Flexor Pollicis Longus |
APL | Abductor Pollicis Longus |
OP | Opponens Pollicis |
FDS | Flexor Digitorum Superficialis (2- index, 3- middle, 4- ring, 5- little) |
FDP | Flexor Digitorum Profundus (2- index, 3- middle, 4- ring, 5- little) |
EDC | Extensor Digitorum Communis (2- index, 3- middle, 4- ring, 5- little) |
EDM | Extensor Digiti Minimi |
RI | Radial Interosseous (2- index, 3- middle, 4- ring, 5- little) |
LU-RB | Lumbrical (2- index, 3- middle, 4- ring, 5- little) |
UI-UB | Palmar or Ulnar Interosseous (2- index, 3- middle, 4- ring, 5- little) |
The 3D dexterous human leg requires coordination of multiple highly redundant muscles, which have complementary and antagonistic effects on various joints.
This musculoskeletal model is comprised of 10 joints, 20 DoFs, and 80 muscles-tendon units. This musculoskeletal model takes Rajagopal's full body gait model [https://github.com/opensim-org/opensim-models/tree/master/Models/RajagopalModel] as close reference.
Joints and muscle details can be found in Rajagopal's paper [https://ieeexplore.ieee.org/document/7505900]
The model implementation details can be found on our github repo at myoLeg
Acronym | Muscle |
---|---|
addbrev_r | Adductor brevis |
addlong_r | Adductor longus |
addmagDist_r | Adductor magnus (distal) |
addmagIsch_r | Adductor magnus (ischial) |
addmagMid_r | Adductor magnus (middle) |
addmagProx_r | Adductor magnus (proximal) |
bflh_r | Biceps femoris long head |
bfsh_r | Biceps femoris short head |
edl_r | Extensor digitorum longusc |
ehl_r | Extensor hallucis longusc |
fdl_r | Flexor digitorum longus |
fhl_r | Flexor hallucis longus |
gaslat_r | Gastrocnemius lateral head |
gasmed_r | Gastrocnemius medial head |
glmax1_r | Gluteus maximus (superior) |
glmax2_r | Gluteus maximus (middle) |
glmax3_r | Gluteus maximus (inferior) |
glmed1_r | Gluteus medius (anterior) |
glmed2_r | Gluteus medius (middle) |
glmed3_r | Gluteus medius (posterior) |
glmin1_r | Gluteus minimus (anterior) |
glmin2_r | Gluteus minimus (middle) |
glmin3_r | Gluteus minimus (posterior) |
grac_r | Gracilis |
iliacus_r | Iliacus |
perbrev_r | Peroneus brevis |
perlong_r | Peroneus longus |
piri_r | Piriformis |
psoas_r | Psoas |
recfem_r | Rectus femoris |
sart_r | Sartorius |
semimem_r | Semimembranosus |
semiten_r | Semitendinosus |
soleus_r | Soleus |
tfl_r | Tensor fascia latae |
tibant_r | Tibialis anterior |
tibpost_r | Tibialis posterior |
vasint_r | Vastus intermedius |
vaslat_r | Vastus lateralis |
vasmed_r | Vastus medialis |
The 3D dexterous human arm reaching and manipulation.
This musculoskeletal model is comprised of 27 Degree of Freedom, and 63 muscles-tendon units.
Model specification can be found on our github repo of myoArm
- Objective:
- Strike a joint pose
- Variants:
- Easy: Move to a fixed specified joint pose
myoFingerPoseFixed-v0
- Hard: Move to randomly selected joint poses
myoFingerPoseRandom-v0
- More: Random resets, no resets, dense rewards, sparse rewards
- Easy: Move to a fixed specified joint pose
- Objective:
- Reach using finger tips
- Variants:
- Easy: Reach to a fixed location
myoFingerReachFixed-v0
- Hard: Reach to random locations
myoFingerReachRandom-v0
- More: Random resets, no resets, dense rewards, sparse rewards
- Easy: Reach to a fixed location
:ref:`myoElbow` model with 6 muscles (3 flexors and 3 extensors) was simplified to have only elbow rotations. Although it is not a physiologically accurate model it can be a very simple model for troubleshooting initial control schemes.
- Objective:
- Move elbow to a specified pose.
- Variants:
- Easy: Move to random joint poses using 1 muscle
ElbowPose1D1MRandom-v0
- Hard: Move to random joint poses using 6 muscles
myoElbowPose1D6MRandom-v0
- More: Random resets, no resets, dense rewards, sparse rewards
- Easy: Move to random joint poses using 1 muscle
Drive the :ref:`myoHand` model to achieve a joint poses. In addition to making co-ordinated movements, avoiding self collisions poses additional challenges in solving this task.
- Objective:
- Strike a hand pose
- Variants:
- Easy: Move to a fixed joint pose
myoHandPoseFixed-v0
- Hard: Move to a randomly selected joint pose
myoHandPoseRandom-v0
- More: Random resets, no resets, dense rewards, sparse rewards
- Easy: Move to a fixed joint pose
Make reaching movements using the :ref:`myoHand` model to have finger tips achieve a specific spatial position. In addition to making co-ordinated movements, avoiding self collisions poses additional challenges in solving this task.
- Objective:
- Reach using finger tips
- Variants:
- Easy: Reach fixed positions using finger tips
myoHandReachFixed-v0
- Hard: Reach random positions using finger tips
myoHandReachRandom-v0
- More: Random resets, no resets, dense rewards, sparse rewards
- Easy: Reach fixed positions using finger tips
Use the the :ref:`myoHand` model to rotate a key. The complexity of this task is due to the use of only index and thumb fingers to solve the task with intermittent contact with the key.
- Objective:
- Coordinate finger movements to rotate a key
- Variants:
- Easy: Achieve half rotation of the key
myoHandKeyTurnFixed-v0
- Hard: Achieve full rotation + random initial configuration
myoHandKeyTurnRandom-v0
- More: Random resets, no resets, dense rewards, sparse rewards
- Easy: Achieve half rotation of the key
A :ref:`myoHand` model moves an object in the hand to a given orientation without dropping it. The complexity of this task is due to the intermittent contacts between the object and multiple fingers needing co-ordination to stabilize the object.
- Objective:
- Reposition an object to reach a given target without dropping it.
- Variants:
- Easy: Reposition to a fixed position
myoHandObjHoldFixed-v0
- Hard: Reposition a random object to random positions
myoHandObjHoldRandom-v0
- More: sparse rewards, dense rewards, random resets, reset free
- Easy: Reposition to a fixed position
A :ref:`myoHand` model rotates a pen in the hand to a given orientation without dropping it. The complexity of this task is due to the intermittent contacts between the object and multiple fingers while trying to stabilize the object.
- Objective:
- Rotate the object to reach a given orientation (indicated by the green object in the scene) without dropping it.
- Variants:
- Easy: Rotate to fixed orientation
myoHandPenTwirlFixed-v0
- Hard: Rotate of random orientation
myoHandPenTwirlRandom-v0
- More: sparse rewards, dense rewards, random resets, reset free
- Easy: Rotate to fixed orientation
A :ref:`myoHand` model reorients a set of parameterized geometries to a given target orientation without dropping it. As with before, the complexity of this task is due to the intermittent contacts between the object and multiple fingers while trying to stabilize the object, as well as the multiobject nature of the task.
- Objective:
- Rotate one randomly chosen object in the set to reach a given orientation without dropping it.
- Variants:
- Easiest: Eight-object reorientation
myoHandReorient8-v0
- Easy: 100-object reorientation
myoHandReorient100-v0
- Hard: 1000-object orientation (in-domain parameterized geoms)
myoHandReorientID-v0
- Hardest: 1000-object orientation (out-of-domain parameterized geoms)
myoHandReorientOOD-v0
- Easiest: Eight-object reorientation
A :ref:`myoHand` model involved for reconfiguring a die to match desired goal orientations. This task require delicate coordination of various muscles to manipulate the die without dropping it.
- Objective:
- Rotate the object to reach a given orientation (indicated by the green reference object in the scene) without dropping it.
- Action Space:
- The whole set of muscle [0, 1]
- Observation Space:
- All joints angles [-\pi, \pi]
- Variants:
- Easy: Goal position and orientation limited
myoChallengeDieReorientP1-v0
- Hard: Large range of goal position and rotations. Variability in object size and frictions.
myoChallengeDieReorientP2-v0
- More: Sparse rewards, 3 different dense reward options to choose from
- Easy: Goal position and orientation limited
A :ref:`myoHand` model involved for simultaneous rotation of two free-floating spheres over the palm. This task requires both dexterity and coordination.
- Objective:
- Achieve relative rotation of the balls around each other without dropping them.
- Action Space:
- The whole set of muscle [0, 1]
- Observation Space:
- All joints angles [-\pi, \pi]
- Variants:
- Easy: Swap the position of the balls
myoChallengeBaodingP1-v1
- Hard: Large range of goal position and rotations. Variability in object size and frictions.
myoChallengeBaodingP2-v1
- More: Sparse rewards, 3 different dense reward options to choose from
- Easy: Swap the position of the balls
A :ref:`myoLeg` model walks across a flat (or rough) surface. This task requires the control of 80 muscles while stabilizing the body to not fall down.
- Objective:
- Achieve target velocities while periodically moving your hip joints.
- Variants:
- Easy: Achieve a forward velocity in the y-direction without moving in the x-direction.
myoLegWalk-v0
- Hard: Achieve a forward velocity in the y-direction without moving in the x-direction on uneven terrain.
myoLeg<Rough|Hilly|Stair>Walk-v0
- Easy: Achieve a forward velocity in the y-direction without moving in the x-direction.
For convenience, Myosuite has implemented a set of muscle decifiencies that currently includes: :ref:`test_muscle_fatigue` , sarcopenia and tendon transfer alongside with the tasks.
Here are a list of the tasks currently implement in Myosuite. See :ref:`task_variation` on how to include the additional features.
:ref:`tasks` | Environment | Difficulty | :ref:`test_sarcopenia` | :ref:`test_muscle_fatigue` | :ref:`test_tendon_transfer` |
Finger Joint Pose | myoFingerPoseFixed-v0 |
Easy | ✓ | ✓ | |
Finger Joint Pose | myoFingerPoseRandom-v0 |
Hard | ✓ | ✓ | |
Finger Tip Reach | myoFingerReachFixed-v0 |
Easy | ✓ | ✓ | |
Finger Tip Reach | myoFingerReachRandom-v0 |
Hard | ✓ | ✓ | |
Elbow Joint Pose | myoElbowPose1D6MRandom-v0 |
Hard | ✓ | ✓ | |
Hand Joints Pose | myoHandPoseFixed-v0 |
Easy | ✓ | ✓ | ✓ |
Hand Joints Pose | myoHandPoseRandom-v0 |
Hard | ✓ | ✓ | ✓ |
Hand Tips Reach | myoHandReachFixed-v0 |
Easy | ✓ | ✓ | ✓ |
Hand Tips Reach | myoHandReachRandom-v0 |
Hard | ✓ | ✓ | ✓ |
Hand Key Turn | myoHandKeyTurnFixed-v0 |
Easy | ✓ | ✓ | ✓ |
Hand Key Turn | myoHandKeyTurnRandom-v0 |
Hard | ✓ | ✓ | ✓ |
Hand Object Hold | myoHandObjHoldFixed-v0 |
Easy | ✓ | ✓ | ✓ |
Hand Object Hold | myoHandObjHoldRandom-v0 |
Hard | ✓ | ✓ | ✓ |
Hand Pen Twirl | myoHandPenTwirlFixed-v0 |
Easy | ✓ | ✓ | ✓ |
Hand Pen Twirl | myoHandPenTwirlRandom-v0 |
Hard | ✓ | ✓ | ✓ |
Die Rotation | myoChallengeDieReorientP1-v1 |
Easy | ✓ | ✓ | ✓ |
Die Rotation | myoChallengeDieReorientP2-v1 |
Hard | ✓ | ✓ | ✓ |
Hand Baoding Balls | myoChallengeBaodingP1-v1 |
Easy | ✓ | ✓ | ✓ |
Hand Baoding Balls | myoChallengeBaodingP2-v1 |
Hard | ✓ | ✓ | ✓ |
8 Obj. Rotation | myoHandReorient8-v0 |
Easy | ✓ | ✓ | ✓ |
100 Obj. Rotation | myoHandReorient100-v0 |
Easy | ✓ | ✓ | ✓ |
1000 Obj. Rotation | myoHandReorientID-v0 |
Hard | ✓ | ✓ | ✓ |
1000 Obj. Rotation | myoHandReorientOOD-v0 |
Hard | ✓ | ✓ | ✓ |
Leg walk | myoLegWalk-v0 |
Easy | ✓ | ✓ | |
Leg walk Rough Ground | myoLegRoughTerrainWalk-v0 |
Hard | ✓ | ✓ | |
Leg walk Hilly Ground | myoLegHillyTerrainWalk-v0 |
Hard | ✓ | ✓ | |
Leg walk Stair Ground | myoLegStairTerrainWalk-v0 |
Hard | ✓ | ✓ | |
Grasping & Placing | myoChallengeRelocateP1-v0 |
Easy | ✓ | ✓ | |
Chase Tag | myoChallengeChaseTagP1-v0 |
Easy | ✓ | ✓ |
- Variations
- Sarcopenia: myoSarc<Environment> e.g. myoSarcHandPoseFixed-v0
- Fatigue: myoFati<Environment> e.g. myoFatiElbowPose1D6MRandom-v0
- TTransfer / Reafferentation: myoReaf<Environment> e.g. myoReafHandPoseFixed-v0