22 #include <yarp/sig/all.h> 23 #include <iCub/iKin/iKinFwd.h> 29 iCub::iKin::iCubFinger thumb;
30 iCub::iKin::iCubFinger index;
31 iCub::iKin::iCubFinger middle;
37 std::deque<yarp::sig::Vector> normalDirs;
38 std::deque<yarp::sig::Vector> contactPoints;
39 yarp::sig::Vector dimensions;
41 HandIK_Problem(
const std::string &_hand=
"right",
const int fingers=2) :
44 thumb(_hand+
"_thumb"),
45 index(_hand+
"_index"),
46 middle(_hand+
"_middle")
48 nJoints=(nFingers==2)?6:8;
50 dimensions.resize(3,0.0);
56 struct HandIK_Variables
58 yarp::sig::Vector xyz_ee;
59 yarp::sig::Vector rpy_ee;
60 yarp::sig::Vector joints;
64 HandIK_Variables(
const int fingers=2) : nFingers(fingers)
68 joints.resize((nFingers==2)?6:8,0.0);
80 HandIK_Problem &problem;
81 HandIK_Variables guess;
84 HandIK_Solver(HandIK_Problem &_problem) : problem(_problem) { }
85 bool setInitialGuess(
const HandIK_Variables &_guess);
86 bool solve(HandIK_Variables &solution);