55 template <
class Jo
intModelGroup>
 
   56 static bool hasSolver(
const JointModelGroup* 
group)
 
   60     throw std::invalid_argument(
"Group must not be null");
 
   62   return group->getSolverInstance() != 
nullptr;
 
   74 template <
class Jo
intModelGroup>
 
   75 static const std::string& getSolverTipFrame(
const JointModelGroup* 
group)
 
   77   if (!hasSolver(
group))
 
   79     throw NoSolverException(
"No solver for group " + 
group->getName());
 
   82   const std::vector<std::string>& tip_frames{ 
group->getSolverInstance()->getTipFrames() };
 
   83   if (tip_frames.size() > 1)
 
   85     throw MoreThanOneTipFrameException(
"Solver for group \"" + 
group->getName() + 
"\" has more than one tip frame");
 
   87   return tip_frames.front();
 
CREATE_MOVEIT_ERROR_CODE_EXCEPTION(NegativeBlendRadiusException, moveit_msgs::msg::MoveItErrorCodes::INVALID_MOTION_PLAN)