diff --git a/source/RobotAPI/components/units/HeadIKUnit.cpp b/source/RobotAPI/components/units/HeadIKUnit.cpp index 1882ee6185d08d15f7824296eb44eb758d890d7e..766d076c5d4c4f7ebbed4f8c466325fa855ee099 100644 --- a/source/RobotAPI/components/units/HeadIKUnit.cpp +++ b/source/RobotAPI/components/units/HeadIKUnit.cpp @@ -202,23 +202,28 @@ namespace armarx ikSolver.enableJointLimitAvoidance(true); auto globalPos = targetPosition->toGlobal(localRobot); - ARMARX_VERBOSE << deactivateSpam(1) << "Calculating IK for target position " << globalPos->output(); + ARMARX_VERBOSE << "Calculating IK for target position " << globalPos->output(); if (!ikSolver.solve(globalPos->toEigen())) { ARMARX_WARNING << "IKSolver found no solution!"; } else { + ARMARX_DEBUG << "Solution found"; NameValueMap targetJointAngles; + NameControlModeMap controlModes; for (int i = 0; i < (signed int)kinematicChain->getSize(); i++) { if (kinematicChain->getNode(i)->getName().compare("VirtualCentralGaze") != 0) { targetJointAngles[kinematicChain->getNode(i)->getName()] = kinematicChain->getNode(i)->getJointValue(); + controlModes[kinematicChain->getNode(i)->getName()] = ePositionControl; } + ARMARX_DEBUG << kinematicChain->getNode(i)->getName() << ": " << kinematicChain->getNode(i)->getJointValue(); } try { + kinematicUnitPrx->switchControlMode(controlModes); kinematicUnitPrx->setJointAngles(targetJointAngles); } catch (...) {