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
16
namespace
rbd
17
{
18
class
MultiBody;
19
struct
MultiBodyConfig;
20
21
namespace
ik
22
{
23
24
static
constexpr
int
MAX_ITERATIONS = 50;
25
static
constexpr
double
LAMBDA = 0.9;
26
static
constexpr
double
THRESHOLD = 1e-8;
27
static
constexpr
double
ALMOST_ZERO = 1e-8;
28
29
}
// namespace ik
30
34
class
RBDYN_DLLAPI
InverseKinematics
35
{
36
public
:
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
61
int
max_iterations_
;
62
// @brief Learning rate
63
double
lambda_
;
64
// @brief Stopping criterion
65
double
threshold_
;
66
// @brief Rounding threshold for the Jacobian
67
double
almost_zero_
;
68
69
private
:
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
Jacobian.h
rbd::InverseKinematics
Definition:
IK.h:34
rbd::Jacobian
Definition:
Jacobian.h:38
rbd::MultiBody
Definition:
MultiBody.h:29
rbd::InverseKinematics::almost_zero_
double almost_zero_
Definition:
IK.h:67
rbd::InverseKinematics::max_iterations_
int max_iterations_
Find q that minimizes the distance between ef and ef_target.
Definition:
IK.h:61
rbd
Definition:
common.h:20
rbd::MultiBodyConfig
Definition:
MultiBodyConfig.h:23
rbd::InverseKinematics::lambda_
double lambda_
Definition:
IK.h:63
rbd::InverseKinematics::threshold_
double threshold_
Definition:
IK.h:65
src
RBDyn
RBDyn
IK.h
Generated by
1.8.17