kinematics_base.h
Go to the documentation of this file.
1 /*********************************************************************
2  * Software License Agreement (BSD License)
3  *
4  * Copyright (c) 2008, Willow Garage, Inc.
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * * Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  * * Redistributions in binary form must reproduce the above
14  * copyright notice, this list of conditions and the following
15  * disclaimer in the documentation and/or other materials provided
16  * with the distribution.
17  * * Neither the name of Willow Garage nor the names of its
18  * contributors may be used to endorse or promote products derived
19  * from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32  * POSSIBILITY OF SUCH DAMAGE.
33  *********************************************************************/
34 
35 /* Author: Sachin Chitta, Dave Coleman */
36 
37 #pragma once
38 
39 #include <geometry_msgs/Pose.h>
40 #include <moveit_msgs/MoveItErrorCodes.h>
42 #include <ros/node_handle.h>
43 
44 #include <boost/function.hpp>
45 #include <string>
46 
47 #include <moveit/moveit_kinematics_base_export.h>
48 
49 namespace moveit
50 {
51 namespace core
52 {
53 MOVEIT_CLASS_FORWARD(JointModelGroup);
54 MOVEIT_CLASS_FORWARD(RobotState);
55 MOVEIT_CLASS_FORWARD(RobotModel);
56 } // namespace core
57 } // namespace moveit
58 
60 namespace kinematics
61 {
62 /*
63  * @enum DiscretizationMethods
64  *
65  * @brief Flags for choosing the type discretization method applied on the redundant joints during an ik query
66  */
67 namespace DiscretizationMethods
68 {
70 {
79 };
80 } // namespace DiscretizationMethods
82 
83 /*
84  * @enum KinematicErrors
85  * @brief Kinematic error codes that occur in a ik query
86  */
87 namespace KinematicErrors
88 {
90 {
91  OK = 1,
101 };
102 } // namespace KinematicErrors
104 
110 {
112  : lock_redundant_joints(false)
114  , discretization_method(DiscretizationMethods::NO_DISCRETIZATION)
115  {
116  }
117 
122 };
123 
124 /*
125  * @struct KinematicsResult
126  * @brief Reports result details of an ik query
127  *
128  * This struct is used as an output argument of the getPositionIK(...) method that returns multiple joint solutions.
129  * It contains the type of error that led to a failure or KinematicErrors::OK when a set of joint solutions is found.
130  * The solution percentage shall provide a ratio of solutions found over solutions searched.
131  *
132  */
134 {
138 };
139 
140 MOVEIT_CLASS_FORWARD(KinematicsBase); // Defines KinematicsBasePtr, ConstPtr, WeakPtr... etc
141 
147 {
148 public:
149  static MOVEIT_KINEMATICS_BASE_EXPORT const double DEFAULT_SEARCH_DISCRETIZATION; /* = 0.1 */
150  static MOVEIT_KINEMATICS_BASE_EXPORT const double DEFAULT_TIMEOUT; /* = 1.0 */
151 
153  using IKCallbackFn =
154  boost::function<void(const geometry_msgs::Pose&, const std::vector<double>&, moveit_msgs::MoveItErrorCodes&)>;
155 
168  virtual bool
169  getPositionIK(const geometry_msgs::Pose& ik_pose, const std::vector<double>& ik_seed_state,
170  std::vector<double>& solution, moveit_msgs::MoveItErrorCodes& error_code,
172 
194  virtual bool getPositionIK(const std::vector<geometry_msgs::Pose>& ik_poses, const std::vector<double>& ik_seed_state,
195  std::vector<std::vector<double> >& solutions, KinematicsResult& result,
196  const kinematics::KinematicsQueryOptions& options) const;
197 
210  virtual bool
211  searchPositionIK(const geometry_msgs::Pose& ik_pose, const std::vector<double>& ik_seed_state, double timeout,
212  std::vector<double>& solution, moveit_msgs::MoveItErrorCodes& error_code,
214 
229  virtual bool
230  searchPositionIK(const geometry_msgs::Pose& ik_pose, const std::vector<double>& ik_seed_state, double timeout,
231  const std::vector<double>& consistency_limits, std::vector<double>& solution,
232  moveit_msgs::MoveItErrorCodes& error_code,
234 
248  virtual bool
249  searchPositionIK(const geometry_msgs::Pose& ik_pose, const std::vector<double>& ik_seed_state, double timeout,
250  std::vector<double>& solution, const IKCallbackFn& solution_callback,
251  moveit_msgs::MoveItErrorCodes& error_code,
253 
269  virtual bool
270  searchPositionIK(const geometry_msgs::Pose& ik_pose, const std::vector<double>& ik_seed_state, double timeout,
271  const std::vector<double>& consistency_limits, std::vector<double>& solution,
272  const IKCallbackFn& solution_callback, moveit_msgs::MoveItErrorCodes& error_code,
274 
296  virtual bool
297  searchPositionIK(const std::vector<geometry_msgs::Pose>& ik_poses, const std::vector<double>& ik_seed_state,
298  double timeout, const std::vector<double>& consistency_limits, std::vector<double>& solution,
299  const IKCallbackFn& solution_callback, moveit_msgs::MoveItErrorCodes& error_code,
301  const moveit::core::RobotState* context_state = nullptr) const
302  {
303  (void)context_state;
304  // For IK solvers that do not support multiple poses, fall back to single pose call
305  if (ik_poses.size() == 1)
306  {
307  // Check if a solution_callback function was provided and call the corresponding function
308  if (solution_callback)
309  {
310  return searchPositionIK(ik_poses[0], ik_seed_state, timeout, consistency_limits, solution, solution_callback,
311  error_code, options);
312  }
313  else
314  {
315  return searchPositionIK(ik_poses[0], ik_seed_state, timeout, consistency_limits, solution, error_code, options);
316  }
317  }
318 
319  // Otherwise throw error because this function should have been implemented
320  ROS_ERROR_NAMED("kinematics_base", "This kinematic solver does not support searchPositionIK with multiple poses");
321  return false;
322  }
323 
331  virtual bool getPositionFK(const std::vector<std::string>& link_names, const std::vector<double>& joint_angles,
332  std::vector<geometry_msgs::Pose>& poses) const = 0;
333 
344  /* Replace by tip_frames-based method! */
345  [[deprecated]] virtual void setValues(const std::string& robot_description, const std::string& group_name,
346  const std::string& base_frame, const std::string& tip_frame,
347  double search_discretization);
348 
359  virtual void setValues(const std::string& robot_description, const std::string& group_name,
360  const std::string& base_frame, const std::vector<std::string>& tip_frames,
361  double search_discretization);
362 
377  [[deprecated]] virtual bool initialize(const std::string& robot_description, const std::string& group_name,
378  const std::string& base_frame, const std::string& tip_frame,
379  double search_discretization);
380 
395  virtual bool initialize(const std::string& robot_description, const std::string& group_name,
396  const std::string& base_frame, const std::vector<std::string>& tip_frames,
397  double search_discretization);
398 
413  virtual bool initialize(const moveit::core::RobotModel& robot_model, const std::string& group_name,
414  const std::string& base_frame, const std::vector<std::string>& tip_frames,
415  double search_discretization);
416 
421  virtual const std::string& getGroupName() const
422  {
423  return group_name_;
424  }
425 
431  virtual const std::string& getBaseFrame() const
432  {
433  return base_frame_;
434  }
435 
441  virtual const std::string& getTipFrame() const
442  {
443  if (tip_frames_.size() > 1)
444  ROS_ERROR_NAMED("kinematics_base", "This kinematic solver has more than one tip frame, "
445  "do not call getTipFrame()");
446 
447  return tip_frames_[0];
448  }
449 
455  virtual const std::vector<std::string>& getTipFrames() const
456  {
457  return tip_frames_;
458  }
459 
468  virtual bool setRedundantJoints(const std::vector<unsigned int>& redundant_joint_indices);
469 
476  bool setRedundantJoints(const std::vector<std::string>& redundant_joint_names);
477 
481  virtual void getRedundantJoints(std::vector<unsigned int>& redundant_joint_indices) const
482  {
483  redundant_joint_indices = redundant_joint_indices_;
484  }
485 
489  virtual const std::vector<std::string>& getJointNames() const = 0;
490 
494  virtual const std::vector<std::string>& getLinkNames() const = 0;
495 
512  virtual bool supportsGroup(const moveit::core::JointModelGroup* jmg, std::string* error_text_out = nullptr) const;
513 
517  void setSearchDiscretization(double sd)
518  {
520  for (unsigned int index : redundant_joint_indices_)
522  }
523 
531  void setSearchDiscretization(const std::map<int, double>& discretization)
532  {
534  redundant_joint_indices_.clear();
535  for (const auto& pair : discretization)
536  {
537  redundant_joint_discretization_.insert(pair);
538  redundant_joint_indices_.push_back(pair.first);
539  }
540  }
541 
545  double getSearchDiscretization(int joint_index = 0) const
546  {
547  if (redundant_joint_discretization_.count(joint_index) > 0)
548  {
549  return redundant_joint_discretization_.at(joint_index);
550  }
551  else
552  {
553  return 0.0; // returned when there aren't any redundant joints
554  }
555  }
556 
561  std::vector<DiscretizationMethod> getSupportedDiscretizationMethods() const
562  {
563  return supported_methods_;
564  }
565 
568  void setDefaultTimeout(double timeout)
569  {
570  default_timeout_ = timeout;
571  }
572 
575  double getDefaultTimeout() const
576  {
577  return default_timeout_;
578  }
579 
583  virtual ~KinematicsBase();
584 
585  KinematicsBase();
586 
587 protected:
588  moveit::core::RobotModelConstPtr robot_model_;
589  std::string robot_description_;
590  std::string group_name_;
591  std::string base_frame_;
592  std::vector<std::string> tip_frames_;
593 
594  // The next two variables still exists for backwards compatibility
595  // with previously generated custom ik solvers like IKFast
596  // Replace tip_frame_ -> tip_frames_[0], search_discretization_ -> redundant_joint_discretization_
597  [[deprecated]] std::string tip_frame_;
598  [[deprecated]] double search_discretization_;
599 
601  std::vector<unsigned int> redundant_joint_indices_;
602  std::map<int, double> redundant_joint_discretization_;
603  std::vector<DiscretizationMethod> supported_methods_;
604 
618  template <typename T>
619  inline bool lookupParam(const std::string& param, T& val, const T& default_val) const
620  {
621  ros::NodeHandle pnh("~");
622  if (pnh.hasParam(group_name_ + "/" + param))
623  {
624  val = pnh.param(group_name_ + "/" + param, default_val);
625  return true;
626  }
627 
628  if (pnh.hasParam(param))
629  {
630  val = pnh.param(param, default_val);
631  return true;
632  }
633 
634  ros::NodeHandle nh;
635  if (nh.hasParam("robot_description_kinematics/" + group_name_ + "/" + param))
636  {
637  val = nh.param("robot_description_kinematics/" + group_name_ + "/" + param, default_val);
638  return true;
639  }
640 
641  if (nh.hasParam("robot_description_kinematics/" + param))
642  {
643  val = nh.param("robot_description_kinematics/" + param, default_val);
644  return true;
645  }
646 
647  val = default_val;
648 
649  return false;
650  }
651 
660  void storeValues(const moveit::core::RobotModel& robot_model, const std::string& group_name,
661  const std::string& base_frame, const std::vector<std::string>& tip_frames,
662  double search_discretization);
663 
664 private:
665  std::string removeSlash(const std::string& str) const;
666 };
667 } // namespace kinematics
kinematics::KinematicsBase::setRedundantJoints
virtual bool setRedundantJoints(const std::vector< unsigned int > &redundant_joint_indices)
Set a set of redundant joints for the kinematics solver to use. This can fail, depending on the IK so...
Definition: kinematics_base.cpp:130
moveit::core
Core components of MoveIt.
Definition: kinematics_base.h:83
node_handle.h
kinematics::DiscretizationMethods::SOME_DISCRETIZED
@ SOME_DISCRETIZED
Definition: kinematics_base.h:73
kinematics::KinematicsQueryOptions::return_approximate_solution
bool return_approximate_solution
Definition: kinematics_base.h:119
kinematics::KinematicsBase::supported_methods_
std::vector< DiscretizationMethod > supported_methods_
Definition: kinematics_base.h:603
kinematics::DiscretizationMethods::SOME_RANDOM_SAMPLED
@ SOME_RANDOM_SAMPLED
Definition: kinematics_base.h:77
kinematics::KinematicsBase::lookupParam
bool lookupParam(const std::string &param, T &val, const T &default_val) const
Enables kinematics plugins access to parameters that are defined for the private namespace and inside...
Definition: kinematics_base.h:619
kinematics::KinematicsBase::storeValues
void storeValues(const moveit::core::RobotModel &robot_model, const std::string &group_name, const std::string &base_frame, const std::vector< std::string > &tip_frames, double search_discretization)
Definition: kinematics_base.cpp:51
kinematics::KinematicsBase::getDefaultTimeout
double getDefaultTimeout() const
For functions that require a timeout specified but one is not specified using arguments,...
Definition: kinematics_base.h:575
kinematics::KinematicsBase::DEFAULT_SEARCH_DISCRETIZATION
static const MOVEIT_KINEMATICS_BASE_EXPORT double DEFAULT_SEARCH_DISCRETIZATION
Definition: kinematics_base.h:149
moveit::core::JointModelGroup
Definition: joint_model_group.h:134
kinematics::KinematicsBase::setSearchDiscretization
void setSearchDiscretization(const std::map< int, double > &discretization)
Sets individual discretization values for each redundant joint.
Definition: kinematics_base.h:531
kinematics::KinematicsQueryOptions::KinematicsQueryOptions
KinematicsQueryOptions()
Definition: kinematics_base.h:111
kinematics::KinematicsBase::getPositionFK
virtual bool getPositionFK(const std::vector< std::string > &link_names, const std::vector< double > &joint_angles, std::vector< geometry_msgs::Pose > &poses) const =0
Given a set of joint angles and a set of links, compute their pose.
kinematics::KinematicsBase::getSupportedDiscretizationMethods
std::vector< DiscretizationMethod > getSupportedDiscretizationMethods() const
Returns the set of supported kinematics discretization search types. This implementation only support...
Definition: kinematics_base.h:561
kinematics::KinematicsResult::solution_percentage
double solution_percentage
Definition: kinematics_base.h:136
kinematics::KinematicsBase::setValues
virtual void setValues(const std::string &robot_description, const std::string &group_name, const std::string &base_frame, const std::string &tip_frame, double search_discretization)
Set the parameters for the solver, for use with kinematic chain IK solvers.
Definition: kinematics_base.cpp:91
moveit::core::RobotModel
Definition of a kinematic model. This class is not thread safe, however multiple instances can be cre...
Definition: robot_model.h:141
kinematics::KinematicErrors::MULTIPLE_TIPS_NOT_SUPPORTED
@ MULTIPLE_TIPS_NOT_SUPPORTED
Definition: kinematics_base.h:95
kinematics::DiscretizationMethods::ALL_RANDOM_SAMPLED
@ ALL_RANDOM_SAMPLED
Definition: kinematics_base.h:76
kinematics::KinematicsBase::getGroupName
virtual const std::string & getGroupName() const
Return the name of the group that the solver is operating on.
Definition: kinematics_base.h:421
kinematics::KinematicsBase::redundant_joint_discretization_
std::map< int, double > redundant_joint_discretization_
Definition: kinematics_base.h:602
class_forward.h
ROS_ERROR_NAMED
#define ROS_ERROR_NAMED(name,...)
moveit::core::RobotState
Representation of a robot's state. This includes position, velocity, acceleration and effort.
Definition: robot_state.h:155
kinematics::KinematicErrors::KinematicError
KinematicError
Definition: kinematics_base.h:89
kinematics::KinematicsBase::search_discretization_
double search_discretization_
Definition: kinematics_base.h:598
kinematics::KinematicsBase::IKCallbackFn
boost::function< void(const geometry_msgs::Pose &, const std::vector< double > &, moveit_msgs::MoveItErrorCodes &)> IKCallbackFn
Signature for a callback to validate an IK solution. Typically used for collision checking.
Definition: kinematics_base.h:154
kinematics::KinematicsBase::group_name_
std::string group_name_
Definition: kinematics_base.h:590
kinematics::KinematicErrors::UNSUPORTED_DISCRETIZATION_REQUESTED
@ UNSUPORTED_DISCRETIZATION_REQUESTED
Definition: kinematics_base.h:92
kinematics::KinematicsBase::getLinkNames
virtual const std::vector< std::string > & getLinkNames() const =0
Return all the link names in the order they are represented internally.
kinematics::KinematicsBase::searchPositionIK
virtual bool searchPositionIK(const geometry_msgs::Pose &ik_pose, const std::vector< double > &ik_seed_state, double timeout, std::vector< double > &solution, moveit_msgs::MoveItErrorCodes &error_code, const kinematics::KinematicsQueryOptions &options=kinematics::KinematicsQueryOptions()) const =0
Given a desired pose of the end-effector, search for the joint angles required to reach it....
kinematics::KinematicErrors::DISCRETIZATION_NOT_INITIALIZED
@ DISCRETIZATION_NOT_INITIALIZED
Definition: kinematics_base.h:93
kinematics::KinematicsBase::robot_description_
std::string robot_description_
Definition: kinematics_base.h:589
kinematics::KinematicErrors::OK
@ OK
Definition: kinematics_base.h:91
kinematics::KinematicsBase::~KinematicsBase
virtual ~KinematicsBase()
Virtual destructor for the interface.
kinematics::KinematicsBase::redundant_joint_indices_
std::vector< unsigned int > redundant_joint_indices_
Definition: kinematics_base.h:601
kinematics::DiscretizationMethods::DiscretizationMethod
DiscretizationMethod
Definition: kinematics_base.h:69
kinematics::KinematicsBase::KinematicsBase
KinematicsBase()
Definition: kinematics_base.cpp:180
kinematics::KinematicsBase::getTipFrames
virtual const std::vector< std::string > & getTipFrames() const
Return the names of the tip frames of the kinematic tree on which the solver is operating....
Definition: kinematics_base.h:455
kinematics::KinematicsBase
Provides an interface for kinematics solvers.
Definition: kinematics_base.h:146
kinematics::KinematicsBase::initialize
virtual bool initialize(const std::string &robot_description, const std::string &group_name, const std::string &base_frame, const std::string &tip_frame, double search_discretization)
Initialization function for the kinematics, for use with kinematic chain IK solvers.
Definition: kinematics_base.cpp:98
kinematics::MOVEIT_CLASS_FORWARD
MOVEIT_CLASS_FORWARD(KinematicsBase)
kinematics
API for forward and inverse kinematics.
Definition: kinematics_base.h:60
kinematics::KinematicErrors::IK_SEED_OUTSIDE_LIMITS
@ IK_SEED_OUTSIDE_LIMITS
Definition: kinematics_base.h:97
ros::NodeHandle::hasParam
bool hasParam(const std::string &key) const
kinematics::KinematicsBase::removeSlash
std::string removeSlash(const std::string &str) const
Definition: kinematics_base.cpp:160
kinematics::KinematicsResult
Definition: kinematics_base.h:133
kinematics::KinematicsBase::setDefaultTimeout
void setDefaultTimeout(double timeout)
For functions that require a timeout specified but one is not specified using arguments,...
Definition: kinematics_base.h:568
kinematics::KinematicsBase::getJointNames
virtual const std::vector< std::string > & getJointNames() const =0
Return all the joint names in the order they are used internally.
kinematics::KinematicsBase::robot_model_
moveit::core::RobotModelConstPtr robot_model_
Definition: kinematics_base.h:588
kinematics::KinematicsBase::supportsGroup
virtual bool supportsGroup(const moveit::core::JointModelGroup *jmg, std::string *error_text_out=nullptr) const
Check if this solver supports a given JointModelGroup.
Definition: kinematics_base.cpp:165
kinematics::KinematicsQueryOptions::discretization_method
DiscretizationMethod discretization_method
Definition: kinematics_base.h:120
kinematics::KinematicsBase::setSearchDiscretization
void setSearchDiscretization(double sd)
Set the search discretization value for all the redundant joints.
Definition: kinematics_base.h:517
kinematics::KinematicErrors::EMPTY_TIP_POSES
@ EMPTY_TIP_POSES
Definition: kinematics_base.h:96
kinematics::KinematicsQueryOptions::lock_redundant_joints
bool lock_redundant_joints
Definition: kinematics_base.h:118
kinematics::KinematicsBase::default_timeout_
double default_timeout_
Definition: kinematics_base.h:600
kinematics::KinematicsBase::getSearchDiscretization
double getSearchDiscretization(int joint_index=0) const
Get the value of the search discretization.
Definition: kinematics_base.h:545
kinematics::KinematicsBase::tip_frames_
std::vector< std::string > tip_frames_
Definition: kinematics_base.h:592
kinematics::KinematicsBase::getTipFrame
virtual const std::string & getTipFrame() const
Return the name of the tip frame of the chain on which the solver is operating. This is usually a lin...
Definition: kinematics_base.h:441
kinematics::DiscretizationMethods::NO_DISCRETIZATION
@ NO_DISCRETIZATION
Definition: kinematics_base.h:71
moveit
Main namespace for MoveIt.
Definition: background_processing.h:46
kinematics::KinematicsQueryOptions
A set of options for the kinematics solver.
Definition: kinematics_base.h:109
moveit::core::MOVEIT_CLASS_FORWARD
MOVEIT_CLASS_FORWARD(JointModelGroup)
index
unsigned int index
ros::NodeHandle::param
T param(const std::string &param_name, const T &default_val) const
param
T param(const std::string &param_name, const T &default_val)
kinematics::KinematicErrors::NO_SOLUTION
@ NO_SOLUTION
Definition: kinematics_base.h:99
kinematics::KinematicsBase::DEFAULT_TIMEOUT
static const MOVEIT_KINEMATICS_BASE_EXPORT double DEFAULT_TIMEOUT
Definition: kinematics_base.h:150
kinematics::KinematicsBase::getPositionIK
virtual bool 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=kinematics::KinematicsQueryOptions()) const =0
Given a desired pose of the end-effector, compute the joint angles to reach it.
kinematics::KinematicsBase::getBaseFrame
virtual const std::string & getBaseFrame() const
Return the name of the frame in which the solver is operating. This is usually a link name....
Definition: kinematics_base.h:431
kinematics::KinematicsResult::kinematic_error
KinematicError kinematic_error
Definition: kinematics_base.h:135
kinematics::KinematicsBase::getRedundantJoints
virtual void getRedundantJoints(std::vector< unsigned int > &redundant_joint_indices) const
Get the set of redundant joints.
Definition: kinematics_base.h:481
kinematics::KinematicsBase::base_frame_
std::string base_frame_
Definition: kinematics_base.h:591
ros::NodeHandle
kinematics::KinematicErrors::SOLVER_NOT_ACTIVE
@ SOLVER_NOT_ACTIVE
Definition: kinematics_base.h:98
kinematics::DiscretizationMethods::ALL_DISCRETIZED
@ ALL_DISCRETIZED
Definition: kinematics_base.h:72
kinematics::KinematicsBase::searchPositionIK
virtual bool searchPositionIK(const std::vector< geometry_msgs::Pose > &ik_poses, 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=kinematics::KinematicsQueryOptions(), const moveit::core::RobotState *context_state=nullptr) const
Given a set of desired poses for a planning group with multiple end-effectors, search for the joint a...
Definition: kinematics_base.h:297
kinematics::KinematicsBase::tip_frame_
std::string tip_frame_
Definition: kinematics_base.h:597


moveit_core
Author(s): Ioan Sucan , Sachin Chitta , Acorn Pooley
autogenerated on Wed Sep 15 2021 02:23:16