However, if I try to use OpenRAVE from my c++ code, with robot->GetActiveManipulator()->FindIKSolution(..) I never get a solution.
To make sure a solution exists, I set the joints of the robot manually, within the joint limits, using RobotBase->GetJoint(...).push_back(..).
Then I call
IkParameterization param_target = robot->GetActiveManipulator()->GetIkParameterization(IKP_TranslationDirection5D);
and then use the current configuration as target by calling
robot->GetActiveManipulator()->FindIKSolution(param_target, vsolution, IKFO_IgnoreEndEffectorCollisions);
However, the call returns false.
In the figure, the red line indicates the ray direction as obtained from param_target.GetTranslationDirection5D().dir and the target position obtained similarly.
Any hints what I am doing wrong? I assume it might be related to the orientation of the end effector frame or the manipulator direction or something.