#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.