#include <ros/ros.h>
#include <urdf/joint.h>
#include <urdf/model.h>
#include <kinematics_msgs/GetConstraintAwarePositionIK.h>
#include <kinematics_msgs/GetPositionIK.h>
#include <kinematics_msgs/GetKinematicSolverInfo.h>
#include <arm_navigation_msgs/JointLimits.h>
#include <orrosplanning/IK.h>
Go to the source code of this file.
Functions | |
bool | get_kinematic_solver_info (kinematics_msgs::GetKinematicSolverInfo::Request &req, kinematics_msgs::GetKinematicSolverInfo::Response &res) |
bool | getOpenRaveIK (kinematics_msgs::GetConstraintAwarePositionIK::Request &req, kinematics_msgs::GetConstraintAwarePositionIK::Response &resp) |
int | main (int argc, char **argv) |
Variables | |
ros::ServiceClient | client_ |
ros::ServiceServer | ikService |
ros::ServiceServer | infoService |
std::vector < arm_navigation_msgs::JointLimits > | joint_limits_ |
std::vector< std::string > | joint_names_ |
bool get_kinematic_solver_info | ( | kinematics_msgs::GetKinematicSolverInfo::Request & | req, |
kinematics_msgs::GetKinematicSolverInfo::Response & | res | ||
) |
Definition at line 95 of file katana_openrave_kinematics.cpp.
bool getOpenRaveIK | ( | kinematics_msgs::GetConstraintAwarePositionIK::Request & | req, |
kinematics_msgs::GetConstraintAwarePositionIK::Response & | resp | ||
) |
Definition at line 56 of file katana_openrave_kinematics.cpp.
int main | ( | int | argc, |
char ** | argv | ||
) |
Definition at line 104 of file katana_openrave_kinematics.cpp.
This node provides the get_constraint_aware_ik (kinematics_msgs/GetConstraintAwarePositionIK) service. It just strips away all the constraint aware stuff and calls a the openrave IK service instead.
Normally, get_constraint_aware_ik checks the space of potential IK solutions for a solution that obeys all constraints (i.e., a solution that is not in self-collision or in collision with the environment). That only really makes sense for a redundant (>6 DoF) robot arm. Since the Katana only has 5 DoF, we only get at most one IK solution, so there is nothing to filter.
If we return a solution that violates constraints - for instance, that is in self-collision - then move_arm will abort with an error code. But if the solution is valid, everything should work.
Definition at line 49 of file katana_openrave_kinematics.cpp.
Definition at line 53 of file katana_openrave_kinematics.cpp.
Definition at line 54 of file katana_openrave_kinematics.cpp.
Definition at line 51 of file katana_openrave_kinematics.cpp.
std::vector<std::string> joint_names_ |
Definition at line 50 of file katana_openrave_kinematics.cpp.