summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--LocomotorPrimitivesController.cpp36
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--;