1 #ifndef MOVEIT_OPW_KINEMATICS_PLUGIN_ 2 #define MOVEIT_OPW_KINEMATICS_PLUGIN_ 11 #include <geometry_msgs/PoseStamped.h> 12 #include <moveit_msgs/GetPositionFK.h> 13 #include <moveit_msgs/GetPositionIK.h> 14 #include <moveit_msgs/KinematicSolverInfo.h> 15 #include <moveit_msgs/MoveItErrorCodes.h> 53 getPositionIK(
const geometry_msgs::Pose& ik_pose,
const std::vector<double>& ik_seed_state,
54 std::vector<double>& solution, moveit_msgs::MoveItErrorCodes& error_code,
58 searchPositionIK(
const geometry_msgs::Pose& ik_pose,
const std::vector<double>& ik_seed_state,
double timeout,
59 std::vector<double>& solution, moveit_msgs::MoveItErrorCodes& error_code,
63 searchPositionIK(
const geometry_msgs::Pose& ik_pose,
const std::vector<double>& ik_seed_state,
double timeout,
64 const std::vector<double>& consistency_limits, std::vector<double>& solution,
65 moveit_msgs::MoveItErrorCodes& error_code,
69 const geometry_msgs::Pose& ik_pose,
const std::vector<double>& ik_seed_state,
double timeout,
70 std::vector<double>& solution,
const IKCallbackFn& solution_callback, moveit_msgs::MoveItErrorCodes& error_code,
74 searchPositionIK(
const geometry_msgs::Pose& ik_pose,
const std::vector<double>& ik_seed_state,
double timeout,
75 const std::vector<double>& consistency_limits, std::vector<double>& solution,
76 const IKCallbackFn& solution_callback, moveit_msgs::MoveItErrorCodes& error_code,
79 virtual bool getPositionFK(
const std::vector<std::string>& link_names,
const std::vector<double>& joint_angles,
80 std::vector<geometry_msgs::Pose>& poses)
const override;
83 const std::string& base_frame,
const std::vector<std::string>& tip_frames,
84 double search_discretization)
override;
89 const std::vector<std::string>&
getJointNames()
const override;
94 const std::vector<std::string>&
getLinkNames()
const override;
102 getPositionIK(
const std::vector<geometry_msgs::Pose>& ik_poses,
const std::vector<double>& ik_seed_state,
108 searchPositionIK(
const geometry_msgs::Pose& ik_pose,
const std::vector<double>& ik_seed_state,
double timeout,
109 std::vector<double>& solution,
const IKCallbackFn& solution_callback,
110 moveit_msgs::MoveItErrorCodes& error_code,
const std::vector<double>& consistency_limits,
114 searchPositionIK(
const std::vector<geometry_msgs::Pose>& ik_poses,
const std::vector<double>& ik_seed_state,
115 double timeout,
const std::vector<double>& consistency_limits, std::vector<double>& solution,
116 const IKCallbackFn& solution_callback, moveit_msgs::MoveItErrorCodes& error_code,
119 virtual bool setRedundantJoints(
const std::vector<unsigned int>& redundant_joint_indices)
override;
130 static double distance(
const std::vector<double>& a,
const std::vector<double>& b);
132 const std::vector<std::vector<double>>& candidates);
133 bool getAllIK(
const Eigen::Isometry3d& pose, std::vector<std::vector<double>>& joint_poses)
const;
134 bool getIK(
const Eigen::Isometry3d& pose,
const std::vector<double>& seed_state,
135 std::vector<double>& joint_pose)
const;
151 bool selfTest(
const std::vector<double>& joint_angles);
156 bool comparePoses(Eigen::Isometry3d& Ta, Eigen::Isometry3d& Tb);
static std::size_t closestJointPose(const std::vector< double > &target, const std::vector< std::vector< double >> &candidates)
const std::vector< std::string > & getJointNames() const override
Return all the joint names in the order they are used internally.
const std::vector< std::string > & getVariableNames() const
Return all the variable names in the order they are represented internally.
virtual bool getPositionFK(const std::vector< std::string > &link_names, const std::vector< double > &joint_angles, std::vector< geometry_msgs::Pose > &poses) const override
const std::vector< std::string > & getLinkNames() const override
Return all the link names in the order they are represented internally.
bool getIK(const Eigen::Isometry3d &pose, const std::vector< double > &seed_state, std::vector< double > &joint_pose) const
int num_possible_redundant_joints_
bool comparePoses(Eigen::Isometry3d &Ta, Eigen::Isometry3d &Tb)
check if two poses are the same within an absolute tolerance of 1e-6
robot_state::RobotStatePtr robot_state_
moveit_msgs::KinematicSolverInfo ik_group_info_
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 override
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 override
Specific implementation of kinematics using ROS service calls to communicate with external IK solvers...
bool operator<(const LimitObeyingSol &a) const
bool isRedundantJoint(unsigned int index) const
const robot_model::JointModelGroup * joint_model_group_
static double distance(const std::vector< double > &a, const std::vector< double > &b)
bool timedOut(const ros::WallTime &start_time, double duration) const
boost::function< void(const geometry_msgs::Pose &ik_pose, const std::vector< double > &ik_solution, moveit_msgs::MoveItErrorCodes &error_code)> IKCallbackFn
bool getAllIK(const Eigen::Isometry3d &pose, std::vector< std::vector< double >> &joint_poses) const
int getJointIndex(const std::string &name) const
bool selfTest(const std::vector< double > &joint_angles)
check forward and inverse kinematics consistency
void expandIKSolutions(std::vector< std::vector< double >> &solutions) const
append IK solutions by adding +-2pi
virtual bool setRedundantJoints(const std::vector< unsigned int > &redundant_joint_indices) override
std::vector< double > value
virtual bool initialize(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) override
opw_kinematics::Parameters< double > opw_parameters_
MoveItOPWKinematicsPlugin()
Default constructor.