diff options
-rw-r--r-- | LocomotorPrimitivesController.cpp | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/LocomotorPrimitivesController.cpp b/LocomotorPrimitivesController.cpp index ccf45e5..74ce21c 100644 --- a/LocomotorPrimitivesController.cpp +++ b/LocomotorPrimitivesController.cpp @@ -22,8 +22,42 @@ int LocomotorPrimitivesController::checkControls() * available in the loaded storage */ for (int i = 0; i < act_set_siz; i++) { const OpenSim::Muscle *muscle = dynamic_cast<const OpenSim::Muscle *>(&getActuatorSet().get(i)); - const OpenSim::Array<int> indices = _act.getColumnIndicesForIdentifier(muscle->getName()); + std::string muscle_name = muscle->getName(); + + /* If it is one of the 'special' combined muscles, check the + * combination instead. See comment in computeControls() for + * details. */ + if (muscle_name.compare("bifemlh_r") == 0) { + muscle_name = "hs_r"; + } else if (muscle_name.compare("bifemlh_l") == 0) { + muscle_name = "hs_l"; + } else if (muscle_name.compare("bifemsh_r") == 0) { + muscle_name = "hs_r"; + } else if (muscle_name.compare("bifemsh_l") == 0) { + muscle_name = "hs_l"; + } else if (muscle_name.compare("semimem_r") == 0) { + muscle_name = "hs_r"; + } else if (muscle_name.compare("semimem_l") == 0) { + muscle_name = "hs_l"; + } else if (muscle_name.compare("semiten_r") == 0) { + muscle_name = "hs_r"; + } else if (muscle_name.compare("semiten_l") == 0) { + muscle_name = "hs_l"; + } else if (muscle_name.compare("glut_max1_r") == 0) { + muscle_name = "gm_r"; + } else if (muscle_name.compare("glut_max1_l") == 0) { + muscle_name = "gm_l"; + } else if (muscle_name.compare("glut_max2_r") == 0) { + muscle_name = "gm_r"; + } else if (muscle_name.compare("glut_max2_l") == 0) { + muscle_name = "gm_l"; + } else if (muscle_name.compare("glut_max3_r") == 0) { + muscle_name = "gm_r"; + } else if (muscle_name.compare("glut_max3_l") == 0) { + muscle_name = "gm_l"; + } + const OpenSim::Array<int> indices = _act.getColumnIndicesForIdentifier(muscle_name); if (indices.getSize() == 0) { logger.err("no actuation data for muscle '%s' found\n", muscle->getName().c_str()); ret--; |