diff --git a/src/sot-dynamic.cpp b/src/sot-dynamic.cpp index bafad0e9414bfed5fb1ecbb3e342c84c21e82383..2fa4b4d2b7372e76f083f5807ad0b6ae5faaa491 100644 --- a/src/sot-dynamic.cpp +++ b/src/sot-dynamic.cpp @@ -1430,6 +1430,9 @@ void Dynamic::cmd_createOpPointSignals( const std::string& opPointName, const std::string& jointName ) { CjrlJoint* joint = getJointByName(jointName); + if (!joint) { + throw runtime_error ("Robot has no joint corresponding to " + jointName); + } createEndeffJacobianSignal(std::string("J")+opPointName, joint); createPositionSignal(opPointName, joint); } @@ -1437,18 +1440,27 @@ void Dynamic::cmd_createJacobianWorldSignal( const std::string& signalName, const std::string& jointName ) { CjrlJoint* joint = getJointByName(jointName); + if (!joint) { + throw runtime_error ("Robot has no joint corresponding to " + jointName); + } createJacobianSignal(signalName, joint); } void Dynamic::cmd_createJacobianEndEffectorSignal( const std::string& signalName, const std::string& jointName ) { CjrlJoint* joint = getJointByName(jointName); + if (!joint) { + throw runtime_error ("Robot has no joint corresponding to " + jointName); + } createEndeffJacobianSignal(signalName, joint); } void Dynamic::cmd_createPositionSignal( const std::string& signalName, const std::string& jointName ) { CjrlJoint* joint = getJointByName(jointName); + if (!joint) { + throw runtime_error ("Robot has no joint corresponding to " + jointName); + } createPositionSignal(signalName, joint); }