33 #ifndef DART_DYNAMICS_DETAIL_INVERSEKINEMATICS_HPP_
34 #define DART_DYNAMICS_DETAIL_INVERSEKINEMATICS_HPP_
36 #include <type_traits>
44 template <
class IKErrorMethod,
typename... Args>
47 IKErrorMethod* newMethod
48 =
new IKErrorMethod(
this, std::forward<Args>(args)...);
54 template <
class IKGradientMethod,
typename... Args>
57 IKGradientMethod* newMethod
58 =
new IKGradientMethod(
this, std::forward<Args>(args)...);
69 template <
class DegreeOfFreedomT>
72 std::vector<std::size_t> indices;
73 indices.reserve(_dofs.size());
74 for (
const DegreeOfFreedomT* dof : _dofs)
75 indices.push_back(dof->getIndexInSkeleton());
Analytical is a base class that should be inherited by methods that are made to solve the IK analytic...
Definition: InverseKinematics.hpp:1051
void constructDofMap()
Construct a mapping from the DOFs of getDofs() to their indices within the Node's list of dependent D...
Definition: InverseKinematics.cpp:1267
IKErrorMethod & setErrorMethod(Args &&... args)
Set the ErrorMethod for this IK module.
Definition: InverseKinematics.hpp:45
IKGradientMethod & setGradientMethod(Args &&... args)
Set the GradientMethod for this IK module.
Definition: InverseKinematics.hpp:55
void setDofs(const std::vector< DegreeOfFreedomT * > &_dofs)
Explicitly set which degrees of freedom should be used to solve the IK for this module.
Definition: InverseKinematics.hpp:70
Analytical * mAnalytical
If mGradientMethod is an Analytical extension, then this will have the same value is mGradientMethod.
Definition: InverseKinematics.hpp:509
std::unique_ptr< ErrorMethod > mErrorMethod
The method that this IK module will use to compute errors.
Definition: InverseKinematics.hpp:499
std::unique_ptr< GradientMethod > mGradientMethod
The method that this IK module will use to compute gradients.
Definition: InverseKinematics.hpp:502
Definition: BulletCollisionDetector.cpp:65