1 #ifndef IK_TRAJECTORY_HELPER_H 2 #define IK_TRAJECTORY_HELPER_H 3 4 enum IK2_Method 5 { 6 IK2_JACOB_TRANS = 0, 7 IK2_PURE_PSEUDO, 8 IK2_DLS, 9 IK2_SDLS, 10 IK2_DLS_SVD, 11 IK2_VEL_DLS, 12 IK2_VEL_DLS_WITH_ORIENTATION, 13 IK2_VEL_DLS_WITH_NULLSPACE, 14 IK2_VEL_DLS_WITH_ORIENTATION_NULLSPACE, 15 IK2_VEL_SDLS, 16 IK2_VEL_SDLS_WITH_ORIENTATION, 17 }; 18 19 class IKTrajectoryHelper 20 { 21 struct IKTrajectoryHelperInternalData* m_data; 22 23 public: 24 IKTrajectoryHelper(); 25 virtual ~IKTrajectoryHelper(); 26 27 bool computeIK(const double endEffectorTargetPosition[3], 28 const double endEffectorTargetOrientation[4], 29 const double endEffectorWorldPosition[3], 30 const double endEffectorWorldOrientation[4], 31 const double* q_old, int numQ, int endEffectorIndex, 32 double* q_new, int ikMethod, const double* linear_jacobian, const double* angular_jacobian, int jacobian_size, const double dampIk[6]); 33 34 bool computeIK2( 35 const double* endEffectorTargetPositions, 36 const double* endEffectorCurrentPositions, 37 int numEndEffectors, 38 const double* q_current, int numQ, 39 double* q_new, int ikMethod, const double* linear_jacobians, const double dampIk[6]); 40 41 bool computeNullspaceVel(int numQ, const double* q_current, const double* lower_limit, const double* upper_limit, const double* joint_range, const double* rest_pose); 42 bool setDampingCoeff(int numQ, const double* coeff); 43 }; 44 #endif //IK_TRAJECTORY_HELPER_H 45