#include <ros/ros.h>
#include <kinematics_msgs/GetConstraintAwarePositionIK.h>
#include <kinematics_msgs/GetPositionIK.h>
Go to the source code of this file.
Functions | |
bool | getConstraintAwareIk (kinematics_msgs::GetConstraintAwarePositionIK::Request &req, kinematics_msgs::GetConstraintAwarePositionIK::Response &resp) |
int | main (int argc, char **argv) |
Variables | |
ros::ServiceClient | client_ |
bool getConstraintAwareIk | ( | kinematics_msgs::GetConstraintAwarePositionIK::Request & | req, |
kinematics_msgs::GetConstraintAwarePositionIK::Response & | resp | ||
) |
Definition at line 48 of file non_constraint_aware_ik_adapter.cpp.
int main | ( | int | argc, |
char ** | argv | ||
) |
Definition at line 65 of file non_constraint_aware_ik_adapter.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 normal (non-constraint aware) get_ik (kinematics_msgs/GetPositionIK) service instead.
Normally, get_constraint_aware_ik checks the space of potential IK solutions (from get_ik) 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 46 of file non_constraint_aware_ik_adapter.cpp.