bool PR2ArmKinematicsPlugin::searchPositionIK(const geometry_msgs::Pose &ik_pose,
                                              const std::vector<double> &ik_seed_state,
                                              double timeout,
                                              std::vector<double> &solution,
                                              const IKCallbackFn &solution_callback,
                                              moveit_msgs::MoveItErrorCodes &error_code) const
{
  static std::vector<double> consistency_limits;  
  return searchPositionIK(ik_pose, ik_seed_state, timeout, consistency_limits, solution, solution_callback, error_code);  
}
bool KDLKinematicsPlugin::getPositionIK(const geometry_msgs::Pose &ik_pose,
                                        const std::vector<double> &ik_seed_state,
                                        std::vector<double> &solution,
                                        moveit_msgs::MoveItErrorCodes &error_code) const
{
  const IKCallbackFn solution_callback = 0;  
  std::vector<double> consistency_limits;
  
  return searchPositionIK(ik_pose,
                          ik_seed_state,
                          MAX_TIMEOUT_KDL_PLUGIN,
                          solution,
                          solution_callback,
                          error_code,
                          consistency_limits);
}
bool KDLKinematicsPlugin::searchPositionIK(const geometry_msgs::Pose &ik_pose,
                                           const std::vector<double> &ik_seed_state,
                                           double timeout,
                                           const std::vector<double> &consistency_limits,
                                           std::vector<double> &solution,
                                           const IKCallbackFn &solution_callback,
                                           moveit_msgs::MoveItErrorCodes &error_code,
                                           const kinematics::KinematicsQueryOptions &options) const
{
  return searchPositionIK(ik_pose,
                          ik_seed_state,
                          timeout,
                          solution,
                          solution_callback,
                          error_code,
                          consistency_limits,
                          options);
}
bool SrvKinematicsPlugin::getPositionIK(const geometry_msgs::Pose &ik_pose,
  const std::vector<double> &ik_seed_state,
  std::vector<double> &solution,
  moveit_msgs::MoveItErrorCodes &error_code,
  const kinematics::KinematicsQueryOptions &options) const
{
  const IKCallbackFn solution_callback = 0;
  std::vector<double> consistency_limits;

  return searchPositionIK(ik_pose,
    ik_seed_state,
    default_timeout_,
    solution,
    solution_callback,
    error_code,
    consistency_limits,
    options);
}
bool SrvKinematicsPlugin::searchPositionIK(const geometry_msgs::Pose &ik_pose,
  const std::vector<double> &ik_seed_state,
  double timeout,
  std::vector<double> &solution,
  const IKCallbackFn &solution_callback,
  moveit_msgs::MoveItErrorCodes &error_code,
  const std::vector<double> &consistency_limits,
  const kinematics::KinematicsQueryOptions &options) const
{
  // Convert single pose into a vector of one pose
  std::vector<geometry_msgs::Pose> ik_poses;
  ik_poses.push_back(ik_pose);

  return searchPositionIK(ik_poses,
    ik_seed_state,
    timeout,
    consistency_limits,
    solution,
    solution_callback,
    error_code,
    options);
}