Loading...
Searching...
No Matches
IK.h
Go to the documentation of this file.
1/*
2 * Copyright 2012-2019 CNRS-UM LIRMM, CNRS-AIST JRL
3 */
4
5#pragma once
6
7// includes
8// std
9#include <vector>
10
11// SpaceVecAlg
12#include <SpaceVecAlg/SpaceVecAlg>
13
14#include "Jacobian.h"
15
16namespace rbd
17{
18class MultiBody;
19struct MultiBodyConfig;
20
21namespace ik
22{
23
24static constexpr int MAX_ITERATIONS = 50;
25static constexpr double LAMBDA = 0.9;
26static constexpr double THRESHOLD = 1e-8;
27static constexpr double ALMOST_ZERO = 1e-8;
28
29} // namespace ik
30
34class RBDYN_DLLAPI InverseKinematics
35{
36public:
38 InverseKinematics(const MultiBody & mb, int ef_index);
49 bool inverseKinematics(const MultiBody & mb, MultiBodyConfig & mbc, const sva::PTransformd & ef_target);
50
54 bool sInverseKinematics(const MultiBody & mb, MultiBodyConfig & mbc, const sva::PTransformd & ef_target);
60 // @brief Maximum number of iterations
62 // @brief Learning rate
63 double lambda_;
64 // @brief Stopping criterion
65 double threshold_;
66 // @brief Rounding threshold for the Jacobian
68
69private:
70 // @brief ef_index is the End Effector index used to build jacobian
71 int ef_index_;
72 Jacobian jac_;
73 Eigen::JacobiSVD<Eigen::MatrixXd> svd_;
74};
75
76} // namespace rbd
Definition IK.h:35
bool sInverseKinematics(const MultiBody &mb, MultiBodyConfig &mbc, const sva::PTransformd &ef_target)
int max_iterations_
Find q that minimizes the distance between ef and ef_target.
Definition IK.h:61
double almost_zero_
Definition IK.h:67
InverseKinematics(const MultiBody &mb, int ef_index)
bool inverseKinematics(const MultiBody &mb, MultiBodyConfig &mbc, const sva::PTransformd &ef_target)
double threshold_
Definition IK.h:65
double lambda_
Definition IK.h:63
Definition Jacobian.h:39
Definition MultiBody.h:30
Definition common.h:21
Definition MultiBodyConfig.h:24